---
title: "List Promotional Offer Options"
method: GET
path: "/v2/retention-configurations/promotional-offers"
tags: ["Retention Configurations V2"]
---

# List Promotional Offer Options

`GET /v2/retention-configurations/promotional-offers`

## Request

- Base URL: `https://api.superwall.com`
- URL: `https://api.superwall.com/v2/retention-configurations/promotional-offers`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `accounts_superwall_token`
  - HTTP bearer

Returns App Store Connect promotional offers for the specified offer product. Requires retention_messages:read scope.

## Query parameters

- `application_id` string, required
- `offer_product_id` string, required: Subscription product ID the promotional offer applies to

## Response `200`

Success

- object
  - `object` 'list', required
  - `data` object[], required
    - `object` 'retention_promotional_offer_option', required: Object type, always `retention_promotional_offer_option`
    - `offer_identifier` string, required: Promotional offer identifier from App Store Connect
    - `name` string, nullable, required: Promotional offer display name in App Store Connect
    - `duration` string, nullable, required: Promotional offer duration enum from App Store Connect
    - `offer_mode` string, nullable, required: Promotional offer mode enum from App Store Connect
    - `number_of_periods` number, nullable, required: Number of billing periods configured for the offer

## Other responses

- `400`: The request did not match the expected schema | The request was invalid or malformed
- `401`: No API key was provided in the request | The API key does not have a valid format | The API key is invalid or has been revoked | An error occurred while validating the API key | The session cookie is invalid or expired
- `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 | An unexpected error occurred on the server
- `502`: The upstream retention provider request failed

## Changes

- **2026-10-29** `778a11cd2c15`: 5 warning, 4 info
  - added the new `credentials_missing` enum value to the `anyOf[subschema #2]/code` response property for the response status `400`
  - added the new `credentials_missing` enum value to the `code/anyOf[subschema #1]/` response property for the response status `403`
  - added the new `credentials_missing` enum value to the `code/anyOf[subschema #1]/` response property for the response status `404`
  - added the new `credentials_missing` enum value to the `code/anyOf[subschema #1]/` response property for the response status `429`
  - …5 more
- **2026-09-09** `217c96dc9a29`: 22 breaking
  - the `code` response's property type changed from `string` to no type for status `403`
  - the `code` response's property type changed from `string` to no type for status `404`
  - the `code` response's property type changed from `string` to no type for status `429`
  - the `code` response's property type changed from `string` to no type for status `502`
  - …18 more
  - …this revision’s changelog is incomplete

[Operation history](https://skmtc.dev/superwall/apis/superwall-api-v2/changes/v2/retention-configurations/promotional-offers/get.md)

---

[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.dev/superwall/apis/superwall-api-v2/revisions/523b4734dfab?raw)
