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
- Admin or Editor permissions in Adjust.
- A valid Adjust API token. See the authentication guide for details.
- 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:
https://automate.adjust.com/app-automationAuthentication
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:
- Select the account (user) icon.
- Select Account settings.
- Select the My profile tab.
- 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:
- Select the account (user) icon.
- Select Account settings.
- Select the My Profile tab.
- Your API Token is shown with your User details.
- Select Reset API token.
- 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.
- 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:
- 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.
- Update existing apps: Apply settings changes across multiple apps by updating your template app and triggering a migration.
- Manage events programmatically: Create and update events across single or multiple apps without using the dashboard.
- Configure SDK signatures: Automatically set up certificate fingerprints for Android apps and manage signature enforcement.
- 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:
-
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.
-
Create or update apps: Send a POST request to the
/appendpoint 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
-
Track progress: Use the ticket token to check the status of the settings migration via the
/statusendpoint. -
Override settings: Pass app-specific values in
override_settingsorchannel_setupto customize individual apps while still inheriting most settings from the template.
Available endpoints
| Endpoint | Description |
|---|---|
POST /app | Create 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 /app | Retrieve app details by store ID and platform |
GET /app/{app_token} | Retrieve app details by app token |
GET /app/{app_token}/settings | Get detailed app settings by section |
GET /apps/list | List all apps in your account |
GET /status/{ticket_token} | Check the status of a background job |
POST /events | Create or update events for one or more apps |
GET /settings/csv | Export app settings in CSV format |
POST /app/{app_token}/secrets/revoke_outdated | Revoke outdated SDK secrets |
POST /app/{app_token}/secrets/{secret_id}/revoke | Revoke a specific SDK secret |
POST /app/{app_token}/secrets/{secret_id}/reactivate | Reactivate 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.
| Section | Description |
|---|---|
app_info | Basic app information |
attribution_privacy_model | Attribution privacy model settings (iOS only) |
attribution_settings | Click and impression attribution windows and reattribution settings |
callbacks | Server callback URLs |
csv_upload_settings | Cloud storage upload configuration |
events | Event definitions and settings |
external_data_forwarding | Revenue and parameter forwarding settings |
fraud_prevention_settings | Fraud prevention configuration |
partners | Partner module configurations and event linking |
purchase_verification | Purchase verification settings |
signature | Android certificate fingerprints and signature enforcement |
sdk_secrets | SDK secrets configuration |
skad_network | SKAdNetwork v3 settings (iOS only) |
skad_network_v4 | SKAdNetwork v4 settings (iOS only) |
preview_link_settings | Social sharing preview configuration |
s2s | Server-to-server security settings |
trackers | Tracker (link) configurations |
Quick start
1. Create your first app
Send a POST request to create a new app based on your template:
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"}'{ "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:
curl --location 'https://automate.adjust.com/app-automation/status/e5b07bb3-b5f3-40a8-8a2d-197d30b6beff' \--header 'Authorization: Bearer {your-adjust-api-token}'{ "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:
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz' \--header 'Authorization: Bearer {your-adjust-api-token}'{ "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 code | Description |
|---|---|
200 | Request successful |
400 | Bad request - check your request parameters |
401 | Unauthorized - invalid or missing API token |
403 | Forbidden - you do not have access to this resource |
422 | Validation error - request body contains invalid data |
500 | Internal server error |
{ "error_code": "validation_error", "error_desc": "Human-readable error description", "error_desc_details": [ { "loc": ["body", "platform"], "msg": "field required" } ]}Error codes
| Error code | Description |
|---|---|
request_error | General request error |
auth_error | Authentication failed |
validation_error | Request validation failed |
service_error | Internal service error |