---
title: "Update Retention Configuration"
method: PATCH
path: "/v2/retention-configurations/{id}"
tags: ["Retention Configurations V2"]
---

# Update Retention Configuration

`PATCH /v2/retention-configurations/{id}`

Updates a retention configuration in Superwall. Apple and App Store Connect may be queried for validation, but no Apple-side configuration is written. Requires retention_messages:write scope.

## Path parameters

- `id` string, required — Retention configuration ID

## Request body

- object
  - `name` string — Display name
  - `type` 'message' | 'alternate_product' | 'promotional_offer' — Type of retention offer
  - `retention_message_id` integer — ID of the retention message to use
  - `alternate_product_id` string, nullable — Alternate product ID
  - `offer_identifier` string, nullable — Promotional offer identifier
  - `offer_product_id` string, nullable — Product ID the offer applies to

## Response `200`

Success

- object
  - `id` string, required — Unique identifier
  - `object` 'retention_configuration', required — Object type, always `retention_configuration`
  - `application_id` string, required — Application ID
  - `configuration_group_id` integer, nullable, required — an integer
  - `name` string, required — Display name of the configuration
  - `environment` 'sandbox' | 'production', required — Environment this configuration applies to
  - `product_id` string, required — Apple product ID
  - `locale` string, required — Locale code for this configuration
  - `type` 'message' | 'alternate_product' | 'promotional_offer', required — Type of retention offer: message, alternate_product, or promotional_offer
  - `retention_message_id` integer, required — ID of the linked retention message
  - `alternate_product_id` string, nullable, required — Alternate product ID (for alternate_product type)
  - `offer_identifier` string, nullable, required — Promotional offer identifier (for promotional_offer type)
  - `offer_product_id` string, nullable, required — Product ID the offer applies to (for promotional_offer type)
  - `created_at` string, required — ISO 8601 timestamp
  - `updated_at` string, required — ISO 8601 timestamp

## Other responses

- `400` — The request did not match the expected schema
- `401` — No API key was provided in the request
- `403` — The API key does not have permission to perform this action
- `404` — The requested resource was not found
- `429` — Too many requests have been made in a short period
- `500` — A required post-operation side effect failed
- `502` — The upstream retention provider request failed

---

[API](https://skmtc.dev/superwall/apis/superwall-api-v2.md) · [All operations](https://skmtc.dev/superwall/apis/superwall-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/superwall/superwall-api-v2/revisions/e04f76c478af/schema)
