adjust-icon

SDK secrets endpoint

Use the SDK secrets endpoints to manage SDK secrets for your apps. You can revoke outdated secrets, revoke specific secrets, ensure that a secret is active, and update the scope of a v3 secret.

Revoke outdated secrets

Revoke all SDK secrets that are older than a specified version. This is useful for cleaning up old secrets after migrating to a newer SDK signature version.

API protocol

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

Method: POST

Request body: Revoke Outdated Request

Response: Revoke Outdated Response

Parameters

ParameterData typeInRequiredDescription
app_tokenStringPathYesThe Adjust app token.
min_active_versionIntegerBodyNoMinimum version to keep active. Secrets older than this version are revoked. Default: 3.
forceBooleanBodyNoSet to true to revoke secrets even if it would leave no active secrets. Default: false.

Behavior

  • Secrets with a version less than min_active_version are revoked.
  • If revoking would result in no active secrets remaining, the operation fails unless force: true is set.
  • The default min_active_version of 3 means v1 and v2 secrets are revoked, keeping only v3 secrets active.

Example

Revoke all secrets older than v3

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz/secrets/revoke_outdated' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"min_active_version": 3
}'
Response
{
"combined_secrets": {
"enforce_install_signing": true,
"secrets": [
{
"id": 1001,
"name": "Legacy Secret",
"active": false,
"value": ["secret1", "secret2", "info1", "info2"],
"internal_version": 3,
"version": 2,
"created_at": "2023-01-15T10:30:00Z",
"updated_at": "2024-06-15T14:00:00Z"
},
{
"id": 2001,
"platform": "android",
"label": "Android SDK Secret",
"active": true,
"scope": "all-traffic",
"algorithm": "adj1",
"internal_version": "3.47.0",
"version": 3,
"created_at": "2024-06-01T12:00:00Z",
"updated_at": "2024-06-01T12:00:00Z"
}
]
},
"revoked": 1
}

Force revoke even with no remaining active secrets

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz/secrets/revoke_outdated' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"min_active_version": 3,
"force": true
}'

Revoke a specific secret

Revoke a specific SDK secret by its ID. This deactivates the secret immediately.

API protocol

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

Method: POST

Response: HTTP 202 Accepted on success

Parameters

ParameterData typeInRequiredDescription
app_tokenStringPathYesThe Adjust app token.
secret_idIntegerPathYesThe ID of the secret to revoke.

Example

Request - cURL
curl --location --request POST 'https://automate.adjust.com/app-automation/app/abc123xyz/secrets/1001/revoke' \
--header 'Authorization: Bearer {your-adjust-api-token}'
Response
HTTP/1.1 202 Accepted

Reactivate or update a secret

Use this endpoint to ensure a secret is active. For v3 secrets, you can also update the traffic scope.

API protocol

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

Method: POST

Request body: Reactivate Secret Request

Response: HTTP 202 Accepted on success

Parameters

ParameterData typeInRequiredDescription
app_tokenStringPathYesThe Adjust app token.
secret_idIntegerPathYesThe ID of the secret.
scopeStringBodyNoSecret traffic scope for v3 secrets. One of: all-traffic, post-install.

Behavior

  • For legacy secrets, the endpoint can only reactivate a revoked secret. scope is not supported.
  • For v3 secrets, you can optionally pass scope to update the secret’s traffic scope.
  • For v3 secrets, scope can be used to switch between all-traffic and post-install, even when the secret is already active.
  • When scope is provided for a v3 secret, the API ensures the secret is active and then applies the requested scope.

Example

Request - cURL
curl --location --request POST 'https://automate.adjust.com/app-automation/app/abc123xyz/secrets/1001/reactivate' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"scope": "post-install"
}'
Response
HTTP/1.1 202 Accepted

Viewing all secrets

To view all SDK secrets for an app, use the App Settings endpoint with the combined_secrets section:

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz/settings?sections=combined_secrets' \
--header 'Authorization: Bearer {your-adjust-api-token}'
Response
{
"combined_secrets": {
"enforce_install_signing": true,
"secrets": [
{
"id": 1001,
"name": "Legacy Secret v2",
"active": true,
"value": ["secret1", "secret2", "info1", "info2"],
"internal_version": 3,
"version": 2,
"created_at": "2023-01-15T10:30:00Z",
"updated_at": "2023-01-15T10:30:00Z"
},
{
"id": 2001,
"platform": "android",
"label": "Android SDK Secret",
"active": true,
"scope": "post-install",
"algorithm": "adj1",
"internal_version": "3.47.0",
"version": 3,
"created_at": "2024-06-01T12:00:00Z",
"updated_at": "2024-06-01T12:00:00Z"
},
{
"id": 2002,
"platform": "ios",
"label": "iOS SDK Secret",
"active": true,
"scope": "all-traffic",
"algorithm": "adj1",
"internal_version": "3.47.0",
"version": 3,
"created_at": "2024-06-01T12:00:00Z",
"updated_at": "2024-06-01T12:00:00Z"
}
]
}
}

Data models

Revoke Outdated Request

ParameterData typeDescription
min_active_versionIntegerMinimum version to keep active. Secrets older than this are revoked. Default: 3.
forceBooleanRevoke secrets even if no active secrets would remain. Default: false.

Revoke Outdated Response

ParameterData typeDescription
combined_secrets*ObjectUpdated secrets state after revocation.
revoked*IntegerNumber of secrets that were revoked.

Reactivate Secret Request

ParameterData typeDescription
scopeStringSecret traffic scope for v3 secrets. One of: all-traffic, post-install.

Combined Secrets

ParameterData typeDescription
enforce_install_signing*BooleanWhether to reject unsigned installs.
secrets*Array[Object]List of all SDK secrets including the legacy one.

Legacy Secret

ParameterData typeDescription
id*IntegerSecret ID.
nameStringSecret name/label.
active*BooleanWhether the secret is active.
value*Array[String]Secret values (4 elements).
internal_version*IntegerSDK Signature library version.
version*IntegerSDK secret version (1 or 2).
created_at*StringISO datetime when the secret was created.
updated_at*StringISO datetime when the secret was last updated.

SDK Secret

ParameterData typeDescription
id*IntegerSecret ID.
platform*StringTarget platform (android or ios).
label*StringHuman-readable label for the secret.
active*BooleanWhether the secret is active.
scopeStringActive traffic scope for v3 secrets. One of: all-traffic, post-install.
algorithm*StringSignature algorithm used.
internal_version*StringSDK Signature library version.
version*IntegerSDK secret version (3 or higher).
created_at*StringISO datetime when the secret was created.
updated_at*StringISO datetime when the secret was last updated.