adjust-icon

App Automation API

Use the App Automation API to programmatically create, update, and manage your apps at scale. This API enables you to automate app setup by cloning settings from a template app, eliminating the need for repetitive manual configuration when managing multiple applications.

Before you begin

Here is what you need to know before getting started.

Availability

  • The App Automation API is available to accounts that have the feature enabled. Contact your Technical Account Manager for access.
  • You need a template app configured in your account before using this API. Your Technical Account Manager can help you set this up.

Requirements

  1. Admin or Editor permissions in Adjust.
  2. A valid Adjust API token. See the authentication guide for details.
  3. A template app token configured in your account. This app serves as the source for settings to be copied to new or existing apps.

Base URL

All API requests should be sent to:

Base URL
https://automate.adjust.com/app-automation

Authentication

Access to the App Automation API requires providing an Adjust API token via the Authorization header (Bearer token).

If your organization has enabled Single Sign-On (SSO), contact your Adjust representative or email support@adjust.com for help with finding your API token.

For non-SSO accounts, API tokens are located in a user’s profile. To find your token, follow these steps:

  1. Select the account (user) icon.
  2. Select Account settings.
  3. Select the My profile tab.
  4. Your API Token is shown with your User Details. Select the copy button to copy the token to your system clipboard.

Reset your Adjust API token

You can reset your Adjust API token at any time. When you do so, the previous token becomes invalid. Make sure to update the token everywhere it is used, as any requests made with an invalidated token will be rejected by Adjust.

To reset your Adjust API token:

  1. Select the account (user) icon.
  2. Select Account settings.
  3. Select the My Profile tab.
  4. Your API Token is shown with your User details.
  5. Select Reset API token.
  6. Enter your account password in the modal that appears and select Reset to reset your API token. A confirmation appears in the top right of the screen.
  7. Select the copy button next to the API Token to copy the token to your system clipboard.

Use cases

The App Automation API is most useful if you manage a large number of applications. Setting up each new app manually creates significant overhead. This API enables you to minimize this as follows:

  1. Create apps at scale: Clone settings from a template app to create new apps with a single API request. All partner integrations, events, attribution settings, and other configurations are automatically copied.
  2. Update existing apps: Apply settings changes across multiple apps by updating your template app and triggering a migration.
  3. Manage events programmatically: Create and update events across single or multiple apps without using the dashboard.
  4. Configure SDK signatures: Automatically set up certificate fingerprints for Android apps and manage signature enforcement.
  5. Track operation status: Monitor the progress of background jobs that handle settings migration.

How it works

The App Automation API uses a template app approach:

  1. Set up a template app: Work with your Technical Account Manager to configure a template app in your account. This app contains all the settings you want to apply to your other apps.

  2. Create or update apps: Send a POST request to the /app endpoint with your app details. The API will:

    • Create a new app if it does not exist
    • Queue a background job to copy settings from your template app
    • Return a ticket token for tracking the operation status
  3. Track progress: Use the ticket token to check the status of the settings migration via the /status endpoint.

  4. Override settings: Pass app-specific values in override_settings or channel_setup to customize individual apps while still inheriting most settings from the template.

Available endpoints

EndpointDescription
POST /appCreate a new app or update an existing app using template app settings
POST /app/{app_token}Update app name, store ID, or bundle ID
GET /appRetrieve app details by store ID and platform
GET /app/{app_token}Retrieve app details by app token
GET /app/{app_token}/settingsGet detailed app settings by section
GET /apps/listList all apps in your account
GET /status/{ticket_token}Check the status of a background job
POST /eventsCreate or update events for one or more apps
GET /settings/csvExport app settings in CSV format
POST /app/{app_token}/secrets/revoke_outdatedRevoke outdated SDK secrets
POST /app/{app_token}/secrets/{secret_id}/revokeRevoke a specific SDK secret
POST /app/{app_token}/secrets/{secret_id}/reactivateReactivate a revoked SDK secret

App sections

When creating or updating apps, you can specify which settings sections to migrate from your template app. If you do not specify sections, all sections are migrated by default.

SectionDescription
app_infoBasic app information
attribution_privacy_modelAttribution privacy model settings (iOS only)
attribution_settingsClick and impression attribution windows and reattribution settings
callbacksServer callback URLs
csv_upload_settingsCloud storage upload configuration
eventsEvent definitions and settings
external_data_forwardingRevenue and parameter forwarding settings
fraud_prevention_settingsFraud prevention configuration
partnersPartner module configurations and event linking
purchase_verificationPurchase verification settings
signatureAndroid certificate fingerprints and signature enforcement
sdk_secretsSDK secrets configuration
skad_networkSKAdNetwork v3 settings (iOS only)
skad_network_v4SKAdNetwork v4 settings (iOS only)
preview_link_settingsSocial sharing preview configuration
s2sServer-to-server security settings
trackersTracker (link) configurations

Quick start

1. Create your first app

Send a POST request to create a new app based on your template:

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 New App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android"
}'
Response
{
"adjust_app_token": "abc123xyz",
"name": "My New App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"ticket_token": "e5b07bb3-b5f3-40a8-8a2d-197d30b6beff",
"sk_app_id": null
}

2. Check the migration status

Use the ticket_token from the response to check the status:

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/status/e5b07bb3-b5f3-40a8-8a2d-197d30b6beff' \
--header 'Authorization: Bearer {your-adjust-api-token}'
Response
{
"status": "completed",
"kind": "migration",
"result": {
"events": { "successes": ["purchase", "registration"], "failures": [] },
"partners": { "successes": ["facebook", "google"], "failures": [] }
}
}

3. Retrieve your app details

Once the migration is complete, retrieve your app details:

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

Error handling

The API returns standard HTTP status codes and JSON error responses:

Status codeDescription
200Request successful
400Bad request - check your request parameters
401Unauthorized - invalid or missing API token
403Forbidden - you do not have access to this resource
422Validation error - request body contains invalid data
500Internal server error
Error response format
{
"error_code": "validation_error",
"error_desc": "Human-readable error description",
"error_desc_details": [
{ "loc": ["body", "platform"], "msg": "field required" }
]
}

Error codes

Error codeDescription
request_errorGeneral request error
auth_errorAuthentication failed
validation_errorRequest validation failed
service_errorInternal service error