adjust-icon

App endpoint

Use the /app endpoint to create new apps, update existing apps, and retrieve app information. This is the primary endpoint for automating app management at scale.

Create or update app via template

This endpoint creates a new app or updates an existing app using settings from your template app. It’s the main entry point for automating app setup.

How it works

  1. The API looks for an existing app matching the store_id and platform.
  2. If no app exists, a new app is created with the provided details.
  3. A background job is queued to copy settings from your template app.
  4. The response includes a ticket_token to track the migration progress.

A background job is triggered when any of the following conditions are met:

  • The app is newly created
  • channel_setup, override_settings, editors, or ios_pv_shared_secrets fields are updated
  • force_update is set to true

API protocol

Endpoint: https://automate.adjust.com/app-automation/app

Method: POST

Request body: Create/Update App Payload

Response: App Migration Response

Parameters

ParameterData typeRequiredDescription
store_idStringYesiOS apps: iTunes Store ID (numeric). Android apps: Bundle ID (e.g., com.example.app).
platformStringYesTarget platform. One of: android, ios.
bundle_idStringYesBundle ID of the app (e.g., com.example.app).
nameStringYesDisplay name of the app.
template_app_tokenStringNoApp token to copy settings from. If not provided, uses the token configured in your account.
sectionsArray[String]NoList of app sections to migrate. If empty, all sections are migrated.
force_updateBooleanNoSet to true to force a migration job even if the app hasn’t changed. Default: false.
channel_setupObjectNoPartner-specific configuration. See Channel setup for details.
override_settingsObjectNoSettings to override from the template app. See Override settings for details.
editorsArray[String]NoEmail addresses of custom users who should have access to the app. Admin, editor, and reader role users get access automatically.
ios_pv_shared_secretStringNoiOS Purchase Verification shared secret for this app.
verificationBooleanNoSet to true to verify an iOS app. Only applies to iOS apps with verification enabled for your account. Default: false.

Sections

Use the sections parameter to migrate only specific settings:

{
"sections": ["partners", "events", "fraud_prevention_settings"]
}

For a complete list of available sections, see App sections.

Override settings

Use override_settings to customize specific settings for an app instead of using the template app values. Override settings are saved and applied to subsequent migrations automatically.

Override settings example
{
"override_settings": {
"signature": {
"android_signature_hash": [
"AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD"
],
"enforce_signature": true
}
}
}

Examples

Create a new Android app

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android"
}'
Response
{
"adjust_app_token": "abc123xyz",
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"ticket_token": "e5b07bb3-b5f3-40a8-8a2d-197d30b6beff",
"sk_app_id": null
}

Create an iOS app with channel setup

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My iOS App",
"bundle_id": "com.example.myiosapp",
"store_id": "123456789",
"platform": "ios",
"channel_setup": {
"facebook": { "app_id": "987654321" },
"google": { "link_id": "google_link_123" }
}
}'
Response
{
"adjust_app_token": "xyz789abc",
"name": "My iOS App",
"bundle_id": "com.example.myiosapp",
"store_id": "123456789",
"ticket_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"sk_app_id": "86372991152"
}

Migrate only specific sections

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My App",
"bundle_id": "com.example.app",
"store_id": "com.example.app",
"platform": "android",
"sections": ["events", "partners", "callbacks"]
}'

Force update an existing app

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My App",
"bundle_id": "com.example.app",
"store_id": "com.example.app",
"platform": "android",
"force_update": true
}'

SDK signature configuration

If you use the Adjust Signature library to secure your Android app traffic, you can use the App Automation API to enforce signature validation and manage your app’s certificate fingerprints (android_signature_hash).

How it works

Signature configuration is handled via the template app method:

  • All active certificate fingerprints (android_signature_hash) from your template app are copied to the target apps.
  • The enforce_signature setting from your template app is also applied.
  • No action from an Account Manager is required—this is available immediately.

For instructions on adding certificate fingerprints to your template app and enabling signature validation, see the SDK signature setup guide.

Override signature settings

You can use the override_settings field to override the android_signature_hash, enforce_signature, or both for your target app:

  • To override only the Android signature hashes, specify android_signature_hash in override_settings.
  • To override only the enforcement setting, specify enforce_signature in override_settings.
  • To override both, include both fields in override_settings.

Examples

Migrate signatures from the template app

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android",
"sections": ["signature"],
"force_update": true
}'

Override only android_signature_hash

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android",
"sections": ["signature"],
"override_settings": {
"signature": {
"android_signature_hash": [
"AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AB"
]
}
}
}'

Override only enforce_signature

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android",
"sections": ["signature"],
"override_settings": {
"signature": {
"enforce_signature": true
}
},
"force_update": true
}'

Override both android_signature_hash and enforce_signature

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android",
"sections": ["signature"],
"override_settings": {
"signature": {
"android_signature_hash": [
"AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AB",
"BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BC"
],
"enforce_signature": true
}
},
"force_update": true
}'

Update app settings

Update the name, store ID, or bundle ID of an existing app. This endpoint is useful when app identifiers change after initial setup.

API protocol

Endpoint: https://automate.adjust.com/app-automation/app/{app_token}

Method: POST

Response: Update App Response

Parameters

ParameterData typeInRequiredDescription
app_tokenStringPathYesThe Adjust app token.
nameStringBodyYesNew display name for the app.
store_idStringBodyNoNew store ID. iOS: iTunes Store ID. Android: Bundle ID.
bundle_idStringBodyNoNew bundle ID.

Example

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Renamed App",
"store_id": "com.example.newapp"
}'
Response
{
"store_id": "com.example.newapp",
"name": "My Renamed App",
"ticket_token": "f1e2d3c4-b5a6-7890-1234-567890abcdef"
}

Get app by store ID

Retrieve app details using the store ID and platform.

API protocol

Endpoint: https://automate.adjust.com/app-automation/app

Method: GET

Response: Get App Response

Parameters

ParameterData typeInRequiredDescription
store_idStringQueryYesiOS: iTunes Store ID. Android: Bundle ID.
platformStringQueryYesTarget platform. One of: android, ios.

Example

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app?store_id=com.example.myapp&platform=android' \
--header 'Authorization: Bearer {your-adjust-api-token}'
Response
{
"name": "My Android App",
"store_id": "com.example.myapp",
"platform": "android",
"adjust_app_token": "abc123xyz",
"additional_info": { "overrides": {} },
"channel_setup": {
"facebook": { "app_id": "123456789" },
"google": { "link_id": "adwords_link_id" }
},
"cross_promo_token": "hgj3li1"
}

Get app by token

Retrieve app details using the Adjust app token.

API protocol

Endpoint: https://automate.adjust.com/app-automation/app/{app_token}

Method: GET

Response: Get App Response

Parameters

ParameterData typeInRequiredDescription
app_tokenStringPathYesThe Adjust app token.

Example

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz' \
--header 'Authorization: Bearer {your-adjust-api-token}'
Response
{
"name": "My Android App",
"store_id": "com.example.myapp",
"platform": "android",
"adjust_app_token": "abc123xyz",
"additional_info": { "overrides": {} },
"channel_setup": {
"facebook": { "app_id": "123456789" }
},
"cross_promo_token": "hgj3li1"
}

List all apps

Retrieve a list of all apps in your account. You can optionally filter by creation date.

API protocol

Endpoint: https://automate.adjust.com/app-automation/apps/list

Method: GET

Response: Array of App Name Token objects

Parameters

ParameterData typeInRequiredDescription
start_dateStringQueryNoFilter apps created on or after this date. ISO 8601 format (e.g., 2024-01-01T00:00:00Z).
end_dateStringQueryNoFilter apps created on or before this date. ISO 8601 format.

Example

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/apps/list' \
--header 'Authorization: Bearer {your-adjust-api-token}'
Response
[
{
"name": "My Android App",
"token": "abc123xyz"
},
{
"name": "My iOS App",
"token": "xyz789abc"
},
{
"name": "Another App",
"token": "def456uvw"
}
]

Filter by date range

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/apps/list?start_date=2024-01-01T00:00:00Z&end_date=2024-06-30T23:59:59Z' \
--header 'Authorization: Bearer {your-adjust-api-token}'

Data models

Create/Update App Payload

ParameterData typeDescription
store_id*StringiOS apps: iTunes Store ID. Android apps: Bundle ID.
platform*StringTarget platform. One of: android, ios.
bundle_id*StringBundle ID of the app.
name*StringDisplay name of the app.
template_app_tokenStringApp token to copy settings from. Uses configured default if not provided.
sectionsArray[String]App sections to migrate. Migrates all sections if not provided.
force_updateBooleanForce migration even if the app hasn’t changed. Default: false.
channel_setupObjectPartner-specific configuration. See Channel setup.
override_settingsObjectSettings to override from the template app.
editorsArray[String]Email addresses of users who should have access to the app.
ios_pv_shared_secretStringiOS Purchase Verification shared secret.
verificationBooleanWhether to verify the iOS app. Default: false.

App Migration Response

ParameterData typeDescription
adjust_app_token*StringThe Adjust app token for the created/updated app.
name*StringDisplay name of the app.
bundle_id*StringBundle ID of the app.
store_id*StringStore ID of the app.
ticket_token*StringUUID to track the migration job status. Use with the status endpoint.
sk_app_idStringStoreKit app ID for verified iOS apps. null if not applicable.

Get App Response

ParameterData typeDescription
name*StringDisplay name of the app.
store_id*StringStore ID of the app.
platform*StringTarget platform: android or ios.
adjust_app_token*StringThe Adjust app token.
additional_info*ObjectAdditional app information including override settings.
channel_setupObjectPartner-specific configuration.
cross_promo_tokenStringCross-promotion link token.

Update App Response

ParameterData typeDescription
store_id*StringUpdated store ID.
name*StringUpdated display name.
ticket_token*StringUUID to track the update job status.

App Name Token

ParameterData typeDescription
name*StringDisplay name of the app.
token*StringAdjust app token.