Full reference for the Adapty Developer CLI

Using an AI assistant? An Adapty CLI skill is available to help LLMs work with the CLI.

This article lists all Adapty CLI commands with their arguments, flags, and accepted values.

For authentication setup and token management, see Authentication.

Global flags

These flags are available on all commands.

FlagDescription
--jsonOutput as JSON instead of formatted text
--helpShow command help

All list commands also accept pagination flags:

FlagDefaultDescription
--page1Page number
--page-size20Items per page (max: 100)

Apps

Manage the apps in your Adapty account. For Dashboard-based configuration, see App settings.

adapty apps list

List all apps in your Adapty account.

adapty apps list

Accepts pagination flags.

adapty apps get

Get details for a specific app.

adapty apps get <app-id>
ArgumentDescription
app-idApp ID (UUID)

adapty apps create

Create a new app.

adapty apps create --title "My App" --platform ios --apple-bundle-id com.example.app
FlagRequiredDescription
--titleYesApp title
--platformYesPlatform: ios or android. Repeat for both: --platform ios --platform android
--apple-bundle-idRequired with --platform iosApple bundle ID
--google-bundle-idRequired with --platform androidGoogle bundle ID

adapty apps update

Update an existing app.

adapty apps update <app-id> --title "New Name"
ArgumentDescription
app-idApp ID (UUID)
FlagDescription
--titleNew app title
--apple-bundle-idNew Apple bundle ID
--google-bundle-idNew Google bundle ID

At least one flag is required. --platform cannot be changed after creation.

Access levels

adapty access-levels list

List all access levels for an app.

adapty access-levels list --app <app-id>
FlagRequiredDescription
--appYesApp ID (UUID)

Accepts pagination flags.

adapty access-levels get

Get details for a specific access level.

adapty access-levels get --app <app-id> <access-level-id>
ArgumentDescription
access-level-idAccess level ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)

adapty access-levels create

Create a new access level.

adapty access-levels create --app <app-id> --sdk-id "pro" --title "Pro"
FlagRequiredDescription
--appYesApp ID (UUID)
--sdk-idYesIdentifier used in app code to check access (for example, "pro" or "premium")
--titleYesDisplay label for the Adapty dashboard

adapty access-levels update

Update an existing access level.

adapty access-levels update --app <app-id> <access-level-id> --title "Pro Access"
ArgumentDescription
access-level-idAccess level ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)
--titleYesNew display label

--sdk-id cannot be changed after creation.

Products

adapty products list

List all products for an app.

adapty products list --app <app-id>
FlagRequiredDescription
--appYesApp ID (UUID)

Accepts pagination flags.

adapty products get

Get details for a specific product.

adapty products get --app <app-id> <product-id>
ArgumentDescription
product-idProduct ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)

adapty products create

Create a new product.

The store product IDs (--ios-product-id, --android-product-id, --android-base-plan-id) cannot be changed after creation. To use different store product IDs, create a new product.

adapty products create --app <app-id> --title "Monthly" --access-level-id <access-level-id> --period monthly --ios-product-id com.example.monthly
FlagRequiredDescription
--appYesApp ID (UUID)
--titleYesProduct title
--access-level-idYesAccess level ID (UUID) this product unlocks
--periodYesSubscription period: weekly, monthly, 2_months, 3_months, 6_months, yearly, lifetime
--ios-product-idAt least one platform requiredProduct ID from App Store Connect
--android-product-idAt least one platform requiredProduct ID from Google Play Console
--android-base-plan-idRequired with --android-product-id unless --period lifetimeBase plan ID from Google Play Console

adapty products update

Update an existing product.

Store product IDs (--ios-product-id, --android-product-id) cannot be changed after creation and are not available in this command. To use different store product IDs, create a new product.

adapty products update --app <app-id> <product-id> --title "Monthly" --access-level-id <access-level-id>
ArgumentDescription
product-idProduct ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)
--titleNoProduct title
--access-level-idNoAccess level ID (UUID) this product unlocks

Paywalls

adapty paywalls list

List all paywalls for an app.

adapty paywalls list --app <app-id>
FlagRequiredDescription
--appYesApp ID (UUID)

Accepts pagination flags.

adapty paywalls get

Get details for a specific paywall.

adapty paywalls get --app <app-id> <paywall-id>
ArgumentDescription
paywall-idPaywall ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)

adapty paywalls create

Create a new paywall.

adapty paywalls create --app <app-id> --title "Default Paywall" --product-id <product-id>
FlagRequiredDescription
--appYesApp ID (UUID)
--titleYesPaywall title
--product-idYesProduct ID (UUID). Repeat for multiple products: --product-id <id1> --product-id <id2>

adapty paywalls update

Replace all fields of an existing paywall.

Once a paywall is linked to a placement, its products cannot be changed. To use different products in a live paywall, create a new paywall and update the placement to point to it.

adapty paywalls update --app <app-id> <paywall-id> --title "Default Paywall" --product-id <product-id>

This command replaces all paywall fields, including the full product list.

ArgumentDescription
paywall-idPaywall ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)
--titleYesPaywall title
--product-idYesProduct ID (UUID). Repeat for multiple products: --product-id <id1> --product-id <id2>

adapty paywalls placements

List all placements that currently use a given paywall.

adapty paywalls placements --app <app-id> <paywall-id>
ArgumentDescription
paywall-idPaywall ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)

Use this command before swapping a paywall to see which placements would be affected.

Placements

adapty placements list

List all placements for an app.

adapty placements list --app <app-id>
FlagRequiredDescription
--appYesApp ID (UUID)

Accepts pagination flags.

adapty placements get

Get details for a specific placement.

adapty placements get --app <app-id> <placement-id>
ArgumentDescription
placement-idPlacement ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)

The response contains an audiences array. Each entry is {segment_ids, paywall_id, priority}. The default audience has segment_ids: [] and the highest priority value (last evaluated). The formatted human output also shows a top-level Paywall ID derived from the default audience for convenience. --json returns the raw API shape unchanged.

adapty placements create

Create a new placement.

adapty placements create --app <app-id> --title "Main" --developer-id "main" --audiences '[{"segment_ids":[],"paywall_id":"<paywall-id>","priority":0}]'
FlagRequiredDescription
--appYesApp ID (UUID)
--titleYesPlacement title
--developer-idYesString identifier used in app code to request this placement
--audiencesOne of the twoJSON array of {segment_ids, paywall_id, priority} entries. See Audiences shape
--paywall-idOne of the twoDeprecated. Paywall ID (UUID). Wrapped client-side into a single default audience

Pass exactly one of --audiences or --paywall-id. Passing both or neither errors out.

--paywall-id is deprecated and will be removed. When passed, the CLI prints a stderr warning and converts the value into a default audience. Use --audiences for new automation.

adapty placements update

Replace all fields of an existing placement.

adapty placements update --app <app-id> <placement-id> --title "Main" --developer-id "main" --audiences '[{"segment_ids":[],"paywall_id":"<paywall-id>","priority":0}]'

This command replaces all placement fields, including the full audiences list.

ArgumentDescription
placement-idPlacement ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)
--titleYesPlacement title
--developer-idYesString identifier used in app code to request this placement
--audiencesOne of the twoJSON array of {segment_ids, paywall_id, priority} entries. See Audiences shape
--paywall-idOne of the twoDeprecated. Paywall ID (UUID). Replaces all audiences with a single default audience

Passing --paywall-id rewrites all audiences on the placement. Segment-specific audiences are dropped. To preserve them, use --audiences and include all entries you want to keep.

Audiences shape

The --audiences flag takes a JSON array. Each entry has:

FieldTypeDescription
segment_idsstring[]Segment IDs targeted by this audience. Length 0 or 1. Empty array marks the default audience — the fallback for users who match no other segment
paywall_idstringPaywall ID (UUID) shown to users in this audience
prioritynumber0-based, unique within the placement. Audiences are evaluated low-to-high; the default audience must have the highest value

A placement must have exactly one default audience.

Example with one targeted audience and one default:

adapty placements update <placement-id> --app <app-id> --title "Main" --developer-id "main" \
  --audiences '[{"segment_ids":["<vip-segment-id>"],"paywall_id":"<vip-paywall-id>","priority":0},{"segment_ids":[],"paywall_id":"<default-paywall-id>","priority":1}]'

To swap a paywall across multiple placements without losing segment-specific routing:

  1. Find affected placements:

    adapty paywalls placements --app <app-id> <old-paywall-id>
  2. For each, read the full audiences array:

    adapty placements get --app <app-id> <placement-id> --json
  3. Replace the matching paywall_id values client-side.

  4. Write the modified payload back:

    adapty placements update --app <app-id> <placement-id> --title "<title>" --developer-id "<developer-id>" --audiences '<modified-payload>'

Segments

Segments are read-only via the CLI. Create and edit them in the Adapty dashboard. Use these commands to look up segment IDs when composing placement audiences.

adapty segments list

List all segments for an app.

adapty segments list --app <app-id>
FlagRequiredDescription
--appYesApp ID (UUID)

Accepts pagination flags.

adapty segments get

Get details for a specific segment.

adapty segments get --app <app-id> <segment-id>
ArgumentDescription
segment-idSegment ID (UUID)
FlagRequiredDescription
--appYesApp ID (UUID)

The response contains id, title, and description. Filter rules are not exposed via this API.

Auth

CommandDescription
adapty auth loginAuthenticate via browser using device flow
adapty auth logoutClear stored credentials locally
adapty auth whoamiVerify token with the server and show user info
adapty auth statusShow local authentication state without a server call
adapty auth revokeRevoke token server-side and clear locally

See Authentication for full details on each command.