The Axon Campaign Management API is for advertisers who use AppLovin campaigns to promote their websites.
You can create and update both campaigns and creative sets, and can upload new assets, by sending requests to the Axon Campaign Management API.
You must authenticate each API request.
To do so, add an Authorization HTTP header to your request and set its value to your Campaign Management API key.
(This key is different from the Management key that you use for the Ad Unit Management API.)
You can find your Campaign Management API key in the Axon dashboard. Click your account in the top right of the dashboard and select Keys.
You also must add the account_id query parameter to each request.
To find your account_id, click your account in the top right of the Axon dashboard and select Go to settings.
Your account ID is the number that follows your account name.
If this API returns an error, see the x-al-error-code and x-al-error-message response headers for more information.
All responses also include an X-TRACE-ID header.
Please include this Trace ID in all support requests so AppLovin can better locate and track your issue.
This API has a rate limit of 1000 requests per 60 seconds. If you exceed this limit your requests will fail with a 429 response code for 10 minutes.
/campaign/list endpointMake a GET request to this endpoint to retrieve a list of up to 100 campaigns on your account.
This list is a JSON array of Campaign objects.
This endpoint returns an empty array if there are no campaigns on the selected page.
https://api.ads.axon.ai/manage/v1/campaign/list?account_id=«account-ID»
| Name | Description | Default |
|---|---|---|
ids | A comma-separated list of campaign IDs. Use this to filter the results to only those that have the specified IDs. You can specify a maximum of 100 IDs this way. Do not include this alongside hashed_ids. | null |
hashed_ids | A comma-separated list of external campaign IDs. Use this to filter the results to only those with the specified IDs. You can specify a maximum of 100 IDs this way. Do not include this alongside ids. | null |
page | The page number of the results to retrieve. The first page is page 1. | 1 |
size | The number of results to return per page. Maximum 100. | 100 |
curl --location 'https://api.ads.axon.ai/manage/v1/campaign/list?account_id=«account-ID»&size=50&page=10' \
--header 'Authorization: «campaign-API-key»'
curl --location 'https://api.ads.axon.ai/manage/v1/campaign/list?account_id=«account-ID»&ids=12345' \
--header 'Authorization: «campaign-API-key»'
[
{
"id": "1691903",
"name": "maxb_testing_catalog",
"status": "LIVE",
"type": "WEB",
"budget": {
"daily_budget_for_all_countries": "6000",
"country_code_to_daily_budget": {}
},
"goal": {
"goal_value_for_all_countries": "0.99",
"goal_type": "CHK_ROAS",
"roas_day_target": "DAY7",
"country_code_to_goal_value": {},
"event_target": ""
},
"targeting": [
{
"country_code": "US"
}
],
"hashed_id": "7a386e158371f5ae745b4f4a62b6459d",
"created_at": "2025-08-29T12:54:16",
"bidding_strategy": "AUTO_BIDDING_WITH_CPM_BILLING",
"start_date": "2025-08-30T00:00:00",
"end_date": "2039-08-31T00:00:00",
"website_url": "https://www.test.com",
"is_dynamic_ads_enabled": false
}
]
/campaign/create endpointMake a POST request to this endpoint to create a new campaign.
The request body is a Campaign object.
Review the Create column of the Campaign object table to determine which fields you should include in your request.
This endpoint returns a JSON object that contains the Campaign ID (id) of the campaign this endpoint creates.
https://api.ads.axon.ai/manage/v1/campaign/create?account_id=«account-ID»
curl --location 'https://api.ads.axon.ai/manage/v1/campaign/create?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '{
"name": "dynamic_test",
"type": "WEB",
"start_date": "2025-08-30T00:00:00",
"end_date": "2025-08-31T00:00:00",
"targeting": [
{
"country_code": "US"
}
],
"budget": {
"daily_budget_for_all_countries": "6000"
},
"goal": {
"goal_value_for_all_countries": "0.99",
"goal_type": "CHK_ROAS",
"roas_day_target": "DAY7"
},
"bidding_strategy": "AUTO_BIDDING_WITH_CPM_BILLING",
"website_url": "https://www.test.com",
"is_dynamic_ads_enabled": true,
"variant_set_id": "a3f7b2d8-9e54-c1d0-f8b6-4e927ac5d3f1",
"catalog_id": "d4e8a3c2-b7f9-156e-0ac9-f23d84b1e7c5"
}'
{
"id": "12345"
}
/campaign/update endpointMake a POST request to this endpoint to update an existing campaign.
The request body is a Campaign object.
Review the Update column of the Campaign object table to determine which fields you should include in your request.
This endpoint returns a JSON object that contains the Campaign ID (id) of the campaign this endpoint updates.
https://api.ads.axon.ai/manage/v1/campaign/update?account_id=«account-ID»
curl --location 'https://api.ads.axon.ai/manage/v1/campaign/update?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"id": "12345",
"name": "dynamic_test",
"status": "PAUSED",
"type": "WEB",
"website_url": "https://www.test.com",
"is_dynamic_ads_enabled": true,
"variant_set_id": "a3f7b2d8-9e54-c1d0-f8b6-4e927ac5d3f1",
"catalog_id": "d4e8a3c2-b7f9-156e-0ac9-f23d84b1e7c5",
}'
{
"id": "12345"
}
| Name | Type | Description | Create | Update |
|---|---|---|---|---|
audience_strategy | String | The type of audience to optimize towards. Click here for more information. Valid values: UNIVERSAL, PROSPECTING, DISCOVERY. Default: UNIVERSAL. | Optional | Optional |
bidding_strategy | String | Bidding strategy for the campaign. Valid values include:
| Required | Forbidden |
budget | Budget | Budget settings of the campaign. See Budget. | Required | Optional |
catalog_id | String | Catalog ID for dynamic ads. | Optional | Optional |
catalog_type | String | The catalog type to use for dynamic ads in this campaign. Valid values: DPA (Dynamic Product Catalog), DOA (Dynamic Offering Catalog). Default: DPA | Optional | Optional |
created_at | String | The creation time of the campaign, in ISO 8601 format (UTC). | Ignored | Ignored |
end_date | String | The end date of the campaign in ISO 8601 format (UTC). | Optional | Optional |
goal | Goal | Goal settings of the campaign. See Goal. | Required | Optional |
hashed_id | String | The external ID of the campaign. It is the same value as the campaign_id_external in the Reporting API and the {CAMPAIGN_ID} Tracking URL macro. | Forbidden | Ignored |
id | Long | The ID of the campaign. | Forbidden | Required |
is_continuous_delivery | Bool | true if this campaign doesn't have an end date, false otherwise. | Optional | Optional |
is_dynamic_ads_enabled | Boolean | Whether to enable dynamic ads. | Optional | Optional |
name | String | The name of the campaign. | Required | Optional |
start_date | String | The start date of the campaign in ISO 8601 format (UTC). Cannot be earlier than today’s date. | Required | Forbidden |
status | String | The current state of the campaign. Valid values: LIVE, PAUSED. | Ignored | Optional |
targeting | Targeting[ ] | The country targets for the campaign. See Targeting. | Required | Optional |
type | String | The type of the campaign. Must be WEB | Required | Required |
variant_set_id | String | Variant set ID for dynamic ads. | Optional | Optional |
website_url | String | The fully qualified destination URL including tracking parameters. | Required | Optional |
msa_names was renamed to metro_names.
Currently both are functional but msa_names will soon be deprecated.
Please update to use metro_names.
| Name | Type | Description |
|---|---|---|
country_code | String | The ISO 3166-1 alpha-2 code represents the target country. For example, US for the United States, FR for France, or JP for Japan. See Table of country codes below for the full list. |
region_codes | String[ ] | An array of region codes that specify target regions in the specified country. These are optional and only apply when the country_code is US. This array should contain valid U.S. state abbreviations (e.g. CA for California, NY for New York). See Table of region codes below for the full list. |
metro_names | String[ ] | An array of Metropolitan Statistical Areas. These are optional and only apply when the country_code is US. Cannot be combined with region_codes. See Table of Metropolitan Statistical Areas below for the full list of possible values. |
"targeting": [
{
"country_code": "US"
},
{
"country_code": "CA"
}
]
"targeting": [
{
"country_code": "US",
"region_codes": [ "CA", "FL" ]
}
]
"targeting": [
{
"country_code": "US",
"metro_names": [ "DETROIT", "FAIRBANKS", "DAVENPORT_R_ISLAND_MOLINE" ]
}
]
You can set either a global budget or country-level budgets. This is required when you create a campaign.
| Name | Type | Description |
|---|---|---|
daily_budget_for_all_countries | decimal | Specifies a uniform daily budget that you want to apply across all targeted countries. |
"budget": {
"daily_budget_for_all_countries": "6000"
}
| Name | Type | Description |
|---|---|---|
country_code_to_daily_budget | <String, decimal> | Sets individual goal values for specific countries, where each key is a country code (e.g. US, FR) and the value is the goal for that country. See Table of country codes below for a full list of valid country codes. |
"budget": {
"country_code_to_daily_budget": {
"US": "5000"
}
}
The goal value depends on the goal type. For CPE / CPP it represents a cost per event / purchase; for CHK_ROAS it represents the percentage return on the targeted day.
You can set either a global goal or country-level goals.
| Name | Type | Description |
|---|---|---|
goal_value_for_all_countries | decimal | Specifies a uniform goal value that you want to apply across all targeted countries. |
"goal": {
"goal_value_for_all_countries": "0.5",
⋮
}
| Name | Type | Description |
|---|---|---|
country_code_to_goal_value | Map<String, decimal> | Sets individual goal values for specific countries, where each key is a country code (e.g. US, FR) and the value is the goal for that country. See Table of country codes below for a full list of valid country codes. |
"goal": {
"country_code_to_goal_value": {
"US": "0.9",
"FR": "0.2"
},
⋮
}
The goal type defines the optimization goal for the campaign.
You can only set these values when you create a campaign. If you try to set these values when you update a campaign, the endpoint returns an error.
Cost per custom Event.
goal_type value: CPE
| Name | Type | Description |
|---|---|---|
event_target | String | Specifies which event the campaign optimizes for. |
goal_type | String | Defines the optimization goal for the campaign. |
"goal": {
⋮
"goal_type": "CPE",
"event_target": "GENERATE_LEAD"
}
Cost per purchaser.
goal_type value: CPP
| Name | Type | Description |
|---|---|---|
goal_type | String | Defines the optimization goal for the campaign. |
roas_day_target | String | Specifies the time window for calculating the CPP. One of: DAY0, DAY7. |
"goal": {
⋮
"goal_type": "CPP",
"roas_day_target": "DAY0"
}
Return on ad spend.
goal_type value: CHK_ROAS
| Name | Type | Description |
|---|---|---|
goal_type | String | Defines the optimization goal for the campaign. |
roas_day_target | String | Specifies the time window for calculating ROAS. One of: DAY0, DAY7. |
"goal": {
⋮
"goal_type": "CHK_ROAS",
"roas_day_target": "DAY7"
}
/creative_set/list endpointMake a GET request to this endpoint to retrieve a list of up to 100 creative sets on your account.
This list is a JSON array of Creative set objects.
This endpoint returns an empty array if there are no creative sets on the selected page.
https://api.ads.axon.ai/manage/v1/creative_set/list?account_id=«account-ID»
| Name | Description | Default |
|---|---|---|
ids | A comma-separated list of creative set IDs. Use this to filter the results to only those with the specified IDs. You can specify a maximum of 100 IDs this way. Do not include this alongside hashed_ids. | null |
hashed_ids | A comma-separated list of external creative set IDs. Use this to filter the results to only those with the specified IDs. You can specify a maximum of 100 IDs this way. Do not include this alongside ids. | null |
page | The page number of the results to retrieve. The first page is page 1. | 1 |
size | The number of results to return per page. Maximum 100. | 100 |
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/list?account_id=«account-ID»&size=50&page=10' \
--header 'Authorization: «campaign-API-key»'
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/list?account_id=«account-ID»&ids=56789' \
--header 'Authorization: «campaign-API-key»'
[
{
"id": "56789",
"campaign_id": "12345",
"type": "WEB",
"name": "test",
"assets": [
{
"id": "63085821",
"name": "playable.html",
"status": "ACTIVE",
"url": "https://res1.applovin.com/r83948939/playable_raw.html",
"type": "HOSTED_HTML",
"resource_type": "HTML",
},
{
"id": "62453682",
"name": "test1.mp4",
"status": "ACTIVE",
"url": "https://res1.applovin.com/r83948939/test1.mp4",
"asset_type": "VID_LONG_P",
"resource_type": "VIDEO",
}
],
"countries": [
"US"
]
}
]
/creative_set/list_by_campaign_id endpointMake a GET request to this endpoint to retrieve information about creative sets that are included in a set of campaign IDs on your account.
This endpoint returns up to 100 results at a time.
https://api.ads.axon.ai/manage/v1/creative_set/list_by_campaign_id?account_id=«account-ID»
| Name | Description | Default |
|---|---|---|
ids | A comma-separated list of campaign IDs. Use this to filter the results to only creative sets with the specified campaign IDs. You can specify a maximum of 100 IDs this way. | null |
page | The page number of the results to retrieve. The first page is page 1. | 1 |
size | The number of results to return per page. Maximum 100. | 100 |
| Name | Description |
|---|---|
campaign_count | The number of campaigns in the campaigns object. |
creative_set_count | The total number of creative sets across returned in this response across all campaigns. |
campaigns | A dictionary containing information about the returned campaigns. The keys are campaign IDs. The values are arrays of Creative set objects. |
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/list_by_campaign_id?account_id=«account-ID»&ids=56789,1648980&size=50&page=10' \
--header 'Authorization: «campaign-API-key»'
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/list_by_campaign_id?account_id=«account-ID»&ids=56789' \
--header 'Authorization: «campaign-API-key»'
{
"campaign_count": 2,
"creative_set_count": 2,
"campaigns": {
"12345": [
{
"id": "56789",
"type": "WEB",
"name": "test",
"assets": [
{
"id": "63085821",
"name": "playable.html",
"status": "ACTIVE",
"url": "https://res1.applovin.com/r83948939/playable_raw.html",
"type": "HOSTED_HTML",
"resource_type": "HTML",
},
{
"id": "62453682",
"name": "test1.mp4",
"status": "ACTIVE",
"url": "https://res1.applovin.com/r83948939/test1.mp4",
"asset_type": "VID_LONG_P",
"resource_type": "VIDEO",
}
],
"countries": [
"US"
],
"campaign_id": "56789",
"created_at": "2025-07-18T10:56:05"
}
],
"1648980": [
{
"id": "27227280",
"type": "WEB",
"name": "Test_1",
"assets": [
{
"id": "63085821",
"name": "playable.html",
"status": "ACTIVE",
"url": "https://res1.applovin.com/r83948939/playable_raw.html",
"type": "HOSTED_HTML",
"resource_type": "HTML",
},
{
"id": "62453682",
"name": "test1.mp4",
"status": "ACTIVE",
"url": "https://res1.applovin.com/r83948939/test1.mp4",
"asset_type": "VID_LONG_P",
"resource_type": "VIDEO",
}
],
"status": "PAUSED",
"countries": [],
"campaign_id": "1648980",
"created_at": "2025-06-03T23:23:12"
}
]
}
}
/creative_set/create endpointMake a POST request to this endpoint to create a new creative set.
The request body is a Creative set object.
Review the Create column of the Creative set object table to determine which fields you should include in your request.
This endpoint returns a JSON object that contains the Creative set ID (id) of the creative set this endpoint creates.
https://api.ads.axon.ai/manage/v1/creative_set/create?account_id=«account-ID»
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/create?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"campaign_id": "12345",
"type": "WEB",
"name": "test",
"assets": [
{
"id": "62453682"
}
],
"countries": [
"US"
]
}
{
"id": "56789",
"version": "V2"
}
/creative_set/update endpointMake a POST request to this endpoint to update an existing creative set.
The request body is a Creative set object.
Review the Update column of the Creative set object table to determine which fields you should include in your request.
This endpoint returns a JSON object that contains the Creative set ID (id) of the creative set this endpoint updates.
https://api.ads.axon.ai/manage/v1/creative_set/update?account_id=«account-ID»
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/update?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"id": "56789",
"campaign_id": "12345",
"type": "WEB",
"name": "test",
"assets": [
{
"id": "63085821"
},
{
"id": "62453682"
}
],
"countries": [
"US"
]
}
{
"id": "56789",
"version": "V2"
}
AppLovin supports two different creative set versions:
V1: You may upload only a single asset of each asset type.V2: You may upload up to 10 assets for each asset type.When you create a new creative set, its version is always V2 unless you clone it from an existing creative set that is V1.
| Name | Type | Description | Create | Update |
|---|---|---|---|---|
assets | CreativeSetAsset[ ] | Assets to include in the creative set. See CreativeSetAsset. May contain the following types: HOSTED_HTML, VID_LONG_P, VID_SHORT_P, IMG_BANNER, IMG_INTER_PMust contain either a HOSTED_HTML, or an IMG_INTER_P and a video (VID_LONG_P or VID_SHORT_P). | Required | Optional |
campaign_id | String | The ID of the campaign this creative set belongs to. If no value is set at creation, creates a standalone creative set. | Optional | Optional |
campaign_ids | String[ ] | List of campaign IDs the creative set is included in. Only included in the /list and /list_by_campaign_id endpoints. | Ignored | Ignored |
| of the campaign this creative set belongs to. | Required | Required | ||
creative_set_url | String | The fully qualified destination URL including tracking parameters. Overrides the campaign level URL. | Optional | Optional |
id | String | ID of the creative set. | Forbidden | Required |
hashed_id | String | The external ID of the creative set. It is the same value as the creative_set_id in the Reporting API and the {CREATIVE_SET_ID} Tracking URL macro. | Forbidden | Ignored |
name | String | The name of the creative set. | Required | Optional |
status | String | Status of the creative set: LIVE or PAUSED | Ignored | Optional |
type | String | The type of the campaign. Must be WEB. | Required | Required |
version | String | The creative set version. V1 for older creative sets that only support a single asset per type, V2 for new creative set that support multiple assets per type. | Ignored | Ignored |
| Name | Type | Description | Create Creative set |
|---|---|---|---|
id | String | ID of the asset. You use this ID when you create or update a creative set. | Required |
name | String | Asset name. | Ignored |
status | String | Asset status. Possible values are: IN_REVIEW, REJECTED, ACTIVE, PAUSED, UNKNOWN. | Ignored |
type | String | Creative asset type. Possible values are: VID_LONG_P, VID_SHORT_P, HOSTED_HTML, IMG_BANNER, IMG_INTER_P. | Ignored |
url | String | The URL of the asset, for example: https://res1.applovin.com/r83948939/test1.mp4 | Ignored |
/creative_set/clone endpointMake a POST request to this endpoint to clone an existing creative set to a different campaign.
This endpoint returns a JSON object that contains the Creative set ID (id) of the resulting cloned creative set.
A creative set must be associated with at least one campaign to be cloned using this endpoint.
https://api.ads.axon.ai/manage/v1/creative_set/clone?account_id=«account-ID»
| Name | Type | Description |
|---|---|---|
campaign_id | Integer | The ID of the campaign into which you want to clone the creative set. |
creative_set_id | Integer | ID of the creative set you want to clone. |
status | String | Status of the cloned creative set: LIVE or PAUSED. |
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/clone?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"campaign_id": "12345",
"creative_set_id": "39823",
"status": "LIVE"
}
{
"id": "56795",
"version": "V1"
}
/creative_set/add-to-campaigns endpointMake a POST request to this endpoint to add an existing creative set to one or more campaigns.
This API does not return a body.
https://api.ads.axon.ai/manage/v1/creative_set/add-to-campaigns?account_id=«account-ID»
| Name | Type | Description |
|---|---|---|
campaign_ids | Integer[ ] | The IDs of the campaigns into which you want to add the creative set. Maximum 20 IDs. |
creative_set_ids | Integer[ ] | IDs of the creative sets you want to add. Maximum 50 IDs. |
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/remove-from-all-campaigns?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"creative_set_ids": [39823, 49320]
}
/creative_set/remove-from-campaigns endpointMake a POST request to this endpoint to remove existing creative sets from one or more campaigns.
This API does not return a body.
https://api.ads.axon.ai/manage/v1/creative_set/remove-from-campaigns?account_id=«account-ID»
| Name | Type | Description |
|---|---|---|
campaign_ids | Integer[ ] | The IDs of the campaigns from which you want to remove the creative set. Maximum 20 IDs. |
creative_set_id | Integer | ID of the creative sets you want to remove. |
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/remove-from-campaigns?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"campaign_ids": [12345, 12456],
"creative_set_id": 39823
}
/creative_set/remove-from-all-campaigns endpointMake a POST request to this endpoint to remove one or more creative sets from all campaigns.
This API does not return a body.
https://api.ads.axon.ai/manage/v1/creative_set/remove-from-all-campaigns?account_id=«account-ID»
| Name | Type | Description |
|---|---|---|
creative_set_ids | Integer[] | The IDs of the creative sets to disassociate from all campaigns. Maximum 50 IDs. |
curl --location 'https://api.ads.axon.ai/manage/v1/creative_set/remove-from-all-campaigns?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"creative_set_ids": [39823, 49320]
}
/asset/list endpointMake a GET request to this endpoint to retrieve a list of up to 100 assets on your account.
This list is a JSON array of Asset objects.
This endpoint returns an empty array if there are no assets on the selected page.
https://api.ads.axon.ai/manage/v1/asset/list?account_id=«account-ID»
| Name | Description | Default |
|---|---|---|
ids | A comma-separated list of asset IDs. Use this to filter the results to only those with the specified IDs. You can specify a maximum of 100 IDs this way. | null |
page | The page number of the results to retrieve. The first page is page 1. | 1 |
resource_type | An asset resource type variety. Use this to filter the results to only those with that resource type. Possible values are image, html, video | null |
size | The number of results to return per page. Maximum 100. | 100 |
| Name | Type | Description |
|---|---|---|
asset_type | String | Creative asset type. Possible values are VID_LONG_P, VID_SHORT_P, HOSTED_HTML, IMG_BANNER, IMG_INTER_P. |
id | String | ID of the asset. Use this when you create or update a creative set. |
name | String | Asset name. |
resource_type | String | The resource type of the asset. Possible values are IMAGE, VIDEO, or HTML. |
status | String | Asset status. Possible values are IN_REVIEW, REJECTED, ACTIVE, or PAUSED. |
upload_time | String | The uploaded time of the asset, for example: 2025-04-27T23:34:06 |
url | String | The URL of the uploaded asset, for example: https://res1.applovin.com/r83948939/test1.mp4 |
violation_reasons | String[ ] | For REJECTED assets this contains an array listing the reasons for the rejection. |
curl --location 'https://api.ads.axon.ai/manage/v1/asset/list?account_id=«account-ID»&size=50&page=10' \
--header 'Authorization: «campaign-API-key»'
curl --location 'https://api.ads.axon.ai/manage/v1/asset/list?account_id=«account-ID»&ids=12345' \
--header 'Authorization: «campaign-API-key»'
[
{
"id": "65061535",
"name": "playable.html",
"status": "ACTIVE",
"url": "https://res1.applovin.com/r83948939/playable_raw.html",
"asset_type": "HOSTED_HTML",
"resource_type": "HTML",
"upload_time": "2025-07-04T07:25:30"
},
{
"id": "65061052",
"name": "test1.mp4",
"status": "ACTIVE",
"url": "https://res1.applovin.com/r83948939/test1.mp4",
"asset_type": "VID_LONG_P",
"resource_type": "VIDEO",
"upload_time": "2025-07-04T07:24:57"
}
]
/asset/upload endpointMake a POST request to this endpoint to upload new asset files.
You can upload up to 40 files at once.
The total size must not exceed 10 GB and the size of a single file should not exceed 1 GB.
After the upload, AppLovin processes, optimizes, and reviews the assets.
This endpoint returns a JSON object with an upload_id.
You can use this ID to query the status of the uploaded assets.
See The /asset/upload_result endpoint below.
https://api.ads.axon.ai/manage/v1/asset/upload?account_id=«account-ID»
| Name | Type | Description |
|---|---|---|
files | File[ ] | Each filename must be unique in the batch and each file must have a Content-Type. Supported Content-Type values are text/html, image/gif, image/jpeg, image/png, video/mp4, and video/quicktime. |
curl --location 'https://api.ads.axon.ai/manage/v1/asset/upload?account_id=«account-ID»' \
--header 'Authorization: «campaign-API-key»' \
--form 'files=@"/path/to/playable.html"' \
--form 'files=@"/path/to/video.mp4"'
{
"upload_id": "c7a3db4226b24bd8bb0b38c46654aa54"
}
/asset/upload_result endpointMake a GET request to this endpoint to check the status of an upload request.
This endpoint returns a JSON object containing information about the given upload_id.
https://api.ads.axon.ai/manage/v1/asset/upload_result?account_id=«account-ID»&upload_id=«upload-ID»
| Name | Type | Description |
|---|---|---|
upload_id | String | The upload_id returned by the /asset/upload endpoint. |
| Name | Type | Description |
|---|---|---|
details | AssetUploadDetail[ ] | Details about each of the uploaded files. See AssetUploadDetail. |
summary | AssetUploadSummary | Overview of the status of the uploaded files. See AssetUploadSummary. |
upload_status | String | The status of upload asset request: PENDING if any files are still processing, otherwise FINISHED. |
| Name | Type | Description |
|---|---|---|
failed | Integer | Count of failed assets. |
pending | Integer | Count of pending assets. |
success | Integer | Count of successfully processed assets. |
total | Integer | Count of all assets in upload request. |
| Name | Type | Description |
|---|---|---|
error_message | String | If the upload fails, this contains the reason for the failure. |
file_status | String | The upload status of the asset. Possible values are PENDING, FAILURE, or SUCCESS. |
id | String | The ID of the asset. |
name | String | The name of the asset. |
resource_type | String | The resource type of the asset. Possible values are IMAGE, VIDEO, or HTML. |
uploadTime | String | The upload time of the asset, for example: 2025-04-27T23:34:06 |
url | String | The URL of the uploaded asset, for example: https://res1.applovin.com/r83948939/test1.mp4 |
curl --location 'https://api.ads.axon.ai/manage/v1/asset/upload_result?account_id=«account-ID»&upload_id=«upload-ID»' \
--header 'Authorization: «campaign-API-key»' \
{
"summary": {
"total": 2,
"success": 2,
"failed": 0,
"pending": 0
},
"details": [
{
"id": "66218554",
"name": "playable.html",
"uploadTime": "2025-07-19T08:24:29",
"url": "https://res1.applovin.com/r0186867/b30361c076022e02ea3cc1b80a6855f5491a6d70_raw.raw",
"resource_type": "HTML",
"file_status": "SUCCESS"
},
{
"id": "65061052",
"name": "test1.mp4",
"uploadTime": "2025-07-19T08:24:29",
"url": "https://res1.applovin.com/r83948939/test1.mp4",
"resource_type": "VIDEO",
"file_status": "SUCCESS",
}
],
"upload_status": "FINISHED"
}
/asset/add-to-creative-sets endpointMake a POST request to this endpoint to add one or more assets to multiple creative sets.
This endpoint returns no body.
https://api.ads.axon.ai/manage/v1/asset/add-to-creative-sets?account_id=«account-ID»&upload_id=«upload-ID»
| Name | Type | Description |
|---|---|---|
asset_ids | Integer[ ] | The IDs of the assets to add to the creative sets. Only active assets are allowed. Maximum 10 IDs. |
creative_set_ids | Integer[ ] | The IDs of the creative sets to add the assets to. Maximum 50 IDs. |
curl --location 'https://api.ads.axon.ai/manage/v1/asset/add-to-creative-sets?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"asset_ids": [11345, 11456],
"creative_set_ids": [39823, 24953]
}
'
/asset/remove-from-creative-sets endpointMake a POST request to this endpoint to remove an asset from multiple creative sets.
This endpoint returns no body.
https://api.ads.axon.ai/manage/v1/asset/remove-from-creative-sets?account_id=«account-ID»&upload_id=«upload-ID»
| Name | Type | Description |
|---|---|---|
asset_id | Integer | The ID of the assets to remove from the creative sets. |
creative_set_ids | Integer[ ] | The IDs of the creative sets to remove the asset from. Maximum 50 IDs. |
curl --location 'https://api.ads.axon.ai/manage/v1/asset/remove-from-creative-sets?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"asset_id": 11345,
"creative_set_ids": [39823, 24953]
}'
/asset/remove-from-all-creative-sets endpointMake a POST request to this endpoint to remove one or more assets from all creative sets.
This endpoint returns no body.
https://api.ads.axon.ai/manage/v1/asset/remove-from-all-creative-sets?account_id=«account-ID»&upload_id=«upload-ID»
| Name | Type | Description |
|---|---|---|
asset_ids | Integer[ ] | The IDs of the assets to remove from all creative sets. Maximum 10 IDs. |
curl --location 'https://api.ads.axon.ai/manage/v1/asset/remove-from-all-creative-sets?account_id=«account-ID»' \
--header 'Content-Type: application/json' \
--header 'Authorization: «campaign-API-key»' \
--data '
{
"asset_ids": [11345, 23245],
}'
/campaign/catalog_info endpointMake a GET request to this endpoint to retrieve catalog and variant set information available for dynamic ads configuration.
This endpoint is only relevant for Ecommerce/Web accounts.
https://api.ads.axon.ai/manage/v1/campaign/catalog_info?account_id=«account-ID»
curl --location 'https://api.ads.axon.ai/manage/v1/campaign/catalog_info?account_id=«account-ID»' \
--header 'Authorization: «campaign-API-key»'
{
"catalogs": [
{
"id": "d4e8a3c2-b7f9-156e-0ac9-f23d84b1e7c5",
"name": "My Catalog",
"variant_sets": [
{
"id": "a3f7b2d8-9e54-c1d0-f8b6-4e927ac5d3f1",
"name": "[Default] All Variants",
"catalog_id": "d4e8a3c2-b7f9-156e-0ac9-f23d84b1e7c5",
"total_variants": "497",
"total_items": "105"
},
{
"id": "7c9a5e2b-1f04-d8e3-a6b7-c49f2d1350ea",
"name": "Variants above $20",
"catalog_id": "d4e8a3c2-b7f9-156e-0ac9-f23d84b1e7c5",
"total_variants": "245",
"total_items": "63"
}
]
}
]
}
| Name | Type | Description |
|---|---|---|
id | String | The unique catalog ID used as the catalog_id in campaigns. |
name | String | The name of this catalog. |
variant_sets | VariantSet[ ] | The list of variant sets in this catalog. |
| Name | Type | Description |
|---|---|---|
id | String | The unique catalog identifier used as the catalog_id in campaigns. |
name | String | The name of this variant set. |
catalog_id | String | The ID of the catalog that this variant set is in. |
total_variants | Integer | The number of poduct variants availabe for dynamic ad generation. |
total_items | Integer | The number of unique items/products included in this variant. |
ADAEAFAGAIALAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBWBYBZCACDCFCGCHCICKCLCMCNCOCRCVCWCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGTGUGWGYHKHNHRHTHUIDIEILIMINIQISITJEJMJOJPKEKGKHKIKMKNKRKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNQNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSESGSHSISJSKSLSMSNSOSRSSSTSVSXSZTCTDTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUSUYUZVAVCVEVGVIVNVUWFWSXKYEYTZAZMZWAK (Alaska)AL (Alabama)AR (Arkansas)AZ (Arizona)CA (California)CO (Colorado)CT (Connecticut)DC (District of Columbia)DE (Delaware)FL (Florida)GA (Georgia)HI (Hawaii)IA (Iowa)ID (Idaho)IL (Illinois)IN (Indiana)KS (Kansas)KY (Kentucky)LA (Louisiana)MA (Massachusetts)MD (Maryland)ME (Maine)MI (Michigan)MN (Minnesota)MO (Missouri)MS (Mississippi)MT (Montana)NC (North Carolina)ND (North Dakota)NE (Nebraska)NH (New Hampshire)NJ (New Jersey)NM (New Mexico)NV (Nevada)NY (New York)OH (Ohio)OK (Oklahoma)OR (Oregon)PA (Pennsylvania)PR (Puerto Rico)RI (Rhode Island)SC (South Carolina)SD (South Dakota)TN (Tennessee)TX (Texas)UT (Utah)VA (Virginia)VT (Vermont)WA (Washington)WI (Wisconsin)WV (West Virginia)WY (Wyoming)| Metropolitan Statistical Area | Value |
|---|---|
| Abilene–Sweetwater, TX | ABILENE_SWEETWATER |
| Albany–Schenectady–Troy, NY | ALBANY_SCHENECTADY_TROY |
| Albany, GA | ALBANY_GA |
| Albuquerque–Santa Fe, NM | ALBUQUERQUE_SANTA_FE |
| Alexandria, LA | ALEXANDRIA_LA |
| Alpena, MI | ALPENA |
| Amarillo, TX | AMARILLO |
| Anchorage, AK | ANCHORAGE |
| Atlanta, GA | ATLANTA |
| Augusta–Aiken, GA | AUGUSTA |
| Austin, TX | AUSTIN |
| Bakersfield, CA | BAKERSFIELD |
| Baltimore, MD | BALTIMORE |
| Bangor, ME | BANGOR |
| Baton Rouge, LA | BATON_ROUGE |
| Beaumont–Port Arthur, TX | BEAUMONT_PORT_ARTHUR |
| Bend, OR | BEND_OR |
| Billings, MT | BILLINGS |
| Biloxi–Gulfport, MS | BILOXI_GULFPORT |
| Binghamton, NY | BINGHAMTON |
| Birmingham–Anniston–Tuscaloosa, AL | BIRMINGHAM_ANN_TUSC |
| Bluefield–Beckley–Oak Hill, WV | BLUEFIELD_BECKLEY_OAK_HILL |
| Boise, ID | BOISE |
| Boston (Manchester), MA–NH | BOSTON_MANCHESTER |
| Bowling Green, KY | BOWLING_GREEN |
| Buffalo, NY | BUFFALO |
| Burlington–Plattsburgh, VT–NY | BURLINGTON_PLATTSBURGH |
| Butte–Bozeman, MT | BUTTE_BOZEMAN |
| Casper–Riverton, WY | CASPER_RIVERTON |
| Cedar Rapids–Waterloo–Iowa City–Dubuque, IA | CEDAR_RAPIDS_WTRLO_IWC_DUB |
| Champaign–Springfield–Decatur, IL | CHAMPAIGN_SPRNGFLD_DECATUR |
| Charleston–Huntington, WV | CHARLESTON_HUNTINGTON |
| Charleston, SC | CHARLESTON_SC |
| Charlotte, NC | CHARLOTTE |
| Charlottesville, VA | CHARLOTTESVILLE |
| Chattanooga, TN–GA | CHATTANOOGA |
| Cheyenne–Scottsbluff, WY | CHEYENNE_SCOTTSBLUF |
| Chicago, IL–IN | CHICAGO |
| Chico–Redding, CA | CHICO_REDDING |
| Cincinnati, OH–KY–IN | CINCINNATI |
| Clarksburg–Weston | CLARKSBURG_WESTON |
| Cleveland–Akron (Canton) | CLEVELAND_AKRON_CANTON |
| Colorado Springs–Pueblo | COLORADO_SPRINGS_PUEBLO |
| Columbia–Jefferson City | COLUMBIA_JEFFERSON_CITY |
| Columbia, SC | COLUMBIA_SC |
| Columbus–Tupelo–W Pnt–Hstn | COLUMBUS_TUPELO_WEST_POINT |
| Columbus, GA (Opelika, Al) | COLUMBUS_GA |
| Columbus, OH | COLUMBUS_OH |
| Corpus Christi, TX | CORPUS_CHRISTI |
| Dallas–Ft. Worth, TX | DALLAS_FT_WORTH |
| Davenport–Rock Island–Moline, IA–IL | DAVENPORT_R_ISLAND_MOLINE |
| Dayton, OH | DAYTON |
| Denver, CO | DENVER |
| Des Moines–Ames, IA | DES_MOINES_AMES |
| Detroit, MI | DETROIT |
| Dothan, AL | DOTHAN |
| Duluth–Superior, MN–WI | DULUTH_SUPERIOR |
| El Paso–Las Cruces, TX | EL_PASO_LAS_CRUCES |
| Elmira–Corning, NY | ELMIRA_CORNING |
| Erie, PA | ERIE |
| Eugene, OR | EUGENE |
| Eureka, CA | EUREKA |
| Evansville, IN | EVANSVILLE |
| Fairbanks, AK | FAIRBANKS |
| Fargo–Valley City, ND—MN | FARGO_VALLEY_CITY |
| Flint–Saginaw–Bay City, MI | FLINT_SAGINAW_BAY_CITY |
| Fresno–Visalia, CA | FRESNO_VISALIA |
| Ft. Myers–Naples, FL | FT_MYERS_NAPLES |
| Ft. Smith–Fay–Springdale–Rogers, AR | FT_SMITH_FAY_SPRNGDL_RGRS |
| Ft. Wayne, IN | FT_WAYNE |
| Gainesville, FL | GAINESVILLE |
| Glendive, MT | GLENDIVE |
| Grand Junction–Montrose, CO | GRAND_JUNCTION_MONTROSE |
| Grand Rapids–Kalamazoo–Battle Creek, MI | GRAND_RAPIDS_KALMZOO_B_CRK |
| Great Falls, MT | GREAT_FALLS |
| Green Bay–Appleton, WI | GREEN_BAY_APPLETON |
| Greensboro–High Point–Winston-Salem, NC | GREENSBORO_H_POINT_W_SALEM |
| Greenville–New Bern–Washington, NC | GREENVILLE_N_BERN_WASHNGTN |
| Greenville–Spartanburg–Asheville–Anderson, SC | GREENVLL_SPART_ASHEVLL_AND |
| Greenwood–Greenville, MS | GREENWOOD_GREENVILLE |
| Harlingen–Weslco–Brownsville–McAllen, TX | HARLINGEN_WSLCO_BRNSVL_MCA |
| Harrisburg–Lancaster–Lebanon–York, PA | HARRISBURG_LNCSTR_LEB_YORK |
| Harrisonburg, VA | HARRISONBURG |
| Hartford–New Haven, CT | HARTFORD_NEW_HAVEN |
| Hattiesburg–Laurel, MS | HATTIESBURG_LAUREL |
| Helena, MT | HELENA |
| Honolulu, HI | HONOLULU |
| Houston, TX | HOUSTON |
| Huntsville–Decatur–Florence, AL–TN | HUNTSVILLE_DECATUR_FLOR |
| Idaho Falls–Pocatello–Jackson, ID–WY | IDAHO_FALLS_POCATELLO |
| Indianapolis, IN | INDIANAPOLIS |
| Jackson, MS | JACKSON_MS |
| Jackson, TN | JACKSON_TN |
| Jacksonville, FL | JACKSONVILLE |
| Johnstown–Altoona–Stata College, PA | JOHNSTOWN_ALTOONA |
| Jonesboro, AR | JONESBORO |
| Joplin–Pittsburg, MO–KS | JOPLIN_PITTSBURG |
| Juneau, AK | JUNEAU |
| Kansas City, MO–KS | KANSAS_CITY |
| Knoxville, TN | KNOXVILLE |
| La Crosse–Eau Claire, MN–WI | LA_CROSSE_EAU_CLAIRE |
| Lafayette, IN | LAFAYETTE_IN |
| Lafayette, LA | LAFAYETTE_LA |
| Lake Charles, LA | LAKE_CHARLES |
| Lansing, MI | LANSING |
| Laredo, TX | LAREDO |
| Las Vegas, NV | LAS_VEGAS |
| Lexington, KY | LEXINGTON |
| Lima, OH | LIMA |
| Lincoln–Hastings–Kearney, NE | LINCOLN_HSTNGS_KRNY |
| Little Rock–Pine Bluff, AR | LITTLE_ROCK_PINE_BLUFF |
| Los Angeles, CA | LOS_ANGELES |
| Louisville, KY | LOUISVILLE |
| Lubbock, TX | LUBBOCK |
| Macon, GA | MACON |
| Madison, WI | MADISON |
| Mankato, MN | MANKATO |
| Marquette, MI | MARQUETTE |
| Medford–Klamath Falls, OR | MEDFORD_KLAMATH_FALLS |
| Memphis, TN | MEMPHIS |
| Meridian, ID | MERIDIAN |
| Miami–Ft. Lauderdale, FL | MIAMI_FT_LAUDERDALE |
| Milwaukee, WI | MILWAUKEE |
| Minneapolis–St. Paul, MN–WI | MINNEAPOLIS_ST_PAUL |
| Minot–Bismarck–Dickinson–Williston, ND | MINOT_BISMARCK_DICKINSON |
| Missoula, MT | MISSOULA |
| Mobile–Pensacola–Ft. Walton, AL–FL | MOBILE_PENSACOLA_FT_WALT |
| Monroe–El Dorado, MI | MONROE_EL_DORADO |
| Monterey–Salinas, CA | MONTEREY_SALINAS |
| Montgomery–Selma, AL | MONTGOMERY_SELMA |
| Myrtle Beach–Florence, SC | MYRTLE_BEACH_FLORENCE |
| Nashville, TN | NASHVILLE |
| New Orleans, LA | NEW_ORLEANS |
| New York, NY | NEW_YORK |
| Norfolk–Portsmouth–Newport News, VA–NC | NORFOLK_PORTSMTH_NEWPT_NWS |
| North Platte, NE | NORTH_PLATTE |
| Odessa–Midland, TX | ODESSA_MIDLAND |
| Oklahoma City, OK | OKLAHOMA_CITY |
| Omaha, NE–IA | OMAHA |
| Orlando–Daytona Beach–Melbourne, FL | ORLANDO_DAYTONA_BCH_MELBRN |
| Ottumwa–Kirksville, IA | OTTUMWA_KIRKSVILLE |
| Paducah–Cape Girard–Harrisburg, KY–IL | PADUCAH_CAPE_GIRAR_D_HARSBG |
| Palm Springs, CA | PALM_SPRINGS |
| Panama City, FL | PANAMA_CITY |
| Parkersburg, WV | PARKERSBURG |
| Peoria–Bloomington, IL | PEORIA_BLOOMINGTON |
| Philadelphia, PA | PHILADELPHIA |
| Phoenix–Prescott, AZ | PHOENIX_PRESCOTT |
| Pittsburgh, PA | PITTSBURGH |
| Portland–Auburn, ME | PORTLAND_AUBURN |
| Portland, OR | PORTLAND_OR |
| Presque Isle, PA | PRESQUE_ISLE |
| Providence–New Bedford, RI–MA | PROVIDENCE_NEW_BEDFORD |
| Quincy–Hannibal–Keokuk, IL/MO/IA | QUINCY_HANNIBAL_KEOKUK |
| Raleigh–Durham–Fayetville, NC | RALEIGH_DURHAM_FAYETVLLE |
| Rapid City, SD | RAPID_CITY |
| Reno, NV | RENO |
| Richmond–Petersburg, VA | RICHMOND_PETERSBURG |
| Roanoke–Lynchburg, VA | ROANOKE_LYNCHBURG |
| Rochester–Mason City–Austin, MN–IA | ROCHESTR_MASON_CITY_AUSTIN |
| Rochester, NY | ROCHESTER_NY |
| Rockford, IL | ROCKFORD |
| Sacramento–Stockton–Modesto, CA | SACRAMNTO_STKTN_MODESTO |
| Salisbury, MD | SALISBURY |
| Salt Lake City, UT | SALT_LAKE_CITY |
| San Angelo, TX | SAN_ANGELO |
| San Antonio, TX | SAN_ANTONIO |
| San Diego, CA | SAN_DIEGO |
| San Francisco–Oakland–San Jose, CA | SAN_FRANCISCO_OAK_SAN_JOSE |
| Santa Barbara–Santa Maria–San Luis Obispo, CA | SANTABARBRA_SANMAR_SANLUOB |
| Savannah, GA | SAVANNAH |
| Seattle–Tacoma, WA | SEATTLE_TACOMA |
| Sherman–Denison, TX | SHERMAN_ADA |
| Shreveport, LA | SHREVEPORT |
| Sioux City, IA | SIOUX_CITY |
| Sioux Falls–Mitchell, SD–MN | SIOUX_FALLS_MITCHELL |
| South Bend–Elkhart, IN–MI | SOUTH_BEND_ELKHART |
| Spokane, WA | SPOKANE |
| Springfield–Holyoke, MA | SPRINGFIELD_HOLYOKE |
| Springfield, MO | SPRINGFIELD_MO |
| St. Joseph, MO–KS | ST_JOSEPH |
| St. Louis, MO–IL | ST_LOUIS |
| Syracuse, NY | SYRACUSE |
| Tallahassee–Thomasville, FL | TALLAHASSEE_THOMASVILLE |
| Tampa–St. Petersburg–Sarasota, FL | TAMPA_ST_PETE_SARASOTA |
| Terre Haute, IN | TERRE_HAUTE |
| Toledo, OH | TOLEDO |
| Topeka, KS | TOPEKA |
| Traverse City–Cadillac, MI | TRAVERSE_CITY_CADILLAC |
| Tri-Cities, TN–VA | TRI_CITIES_TN_VA |
| Tucson–Sierra Vista, AZ | TUCSON_SIERRA_VISTA |
| Tulsa, OK | TULSA |
| Twin Falls, ID | TWIN_FALLS |
| Tyler–Longview–Lufkin–Nacogdoches, TX | TYLER_LONGVIEW_LFKN_NCGD |
| Utica, NY | UTICA |
| Victoria, TX | VICTORIA |
| Waco–Temple–Bryan, TX | WACO_TEMPLE_BRYAN |
| Washington DC–Hagerstown, MD | WASHINGTON_DC_HAGRSTWN |
| Watertown, NY | WATERTOWN |
| Wausau–Rhinelander, WI | WAUSAU_RHINELANDER |
| West Palm Beach–Ft. Pierce, FL | WEST_PALM_BEACH_FT_PIERCE |
| Wheeling–Steubenville, WV–OH | WHEELING_STEUBENVILLE |
| Wichita Falls–Lawton, TX | WICHITA_FALLS_LAWTON |
| Wichita–Hutchinson Plus, KS | WICHITA_HUTCHINSON_PLUS |
| Wilkes Barre–Scranton–Hazelton, PA | WILKES_BARRE_SCRANTON |
| Wilmington, NC | WILMINGTON |
| Yakima–Pasco–Richland–Kennewick, WA | YAKIMA_PASCO_RCHLND_KNNWCK |
| Youngstown, OH | YOUNGSTOWN |
| Yuma–El Centro, AZ | YUMA_EL_CENTRO |
| Zanesville, OH | ZANESVILLE |