Skip to main content

AppLovin Asset Reporting API

Last updated 10/05/2026
tip

Note that data generated by third-party data integration counts toward the cluster's data consumption

Summary​

Interface overview​

InterfaceTypeGranularityAttributionCostRevenueImpressionsClicksConversions
Asset Reporting APIAPIAggregated asset data✅✅✅

AppLovin Asset Reporting API gets asset-level aggregated campaign data, including assets, campaigns, ad groups, impressions, clicks, and cost.

The current integration uses AppLovin's date-based Asset Reporting API:

GET https://r.applovin.com/assetAnalyticsReport

According to AppLovin, the previous day's data becomes stable after 06:00 UTC. The API only allows requests for data from the last 45 days.

Integration process​

  1. Log in to the AppLovin dashboard and get the Report Key.
  2. Log in to the AE backend, go to the Third-party Integration module, and create and configure an AppLovin Asset Reporting API plan.
  3. Run a single pull or wait for the scheduled task, and confirm that the event table receives the data.
  4. Build analysis reports based on fields such as asset, campaign, ad group, cost, impressions, and clicks.

1. Get the Report Key​

Before connecting the Asset Reporting API, you need to get the Report Key. Log in to the AppLovin dashboard, get the key under Account > Keys, and keep it safe.

2. Plan configuration​

2.1 Authorization information configuration​

Click the Configure authorization information button under Authorization Information and enter the AppLovin Report Key in the pop-up.

2.2 Sync Schedule​

You can set the data pull policy in the Sync Schedule module. We recommend that you pull the past 1 day of data at 16:00 UTC+8 every day. By then, AppLovin's previous-day data has passed the 06:00 UTC stabilization time.

2.3 Event Data Configuration​

Asset Reporting API data is used for event table analysis. Turn on Event Data Configuration when you create the plan. The pulled data is written to the configured event name.

2.4 Configuration​

The configuration is a JSON object in which you can set the ingested event name, requested columns, numeric field types, and API filter parameters.

ModuleNameTypeDescription
sink_eventevent_nameStringEvent name after ingestion; customizable
sourcegroup_byString listRequested asset-level and ad-level dimensions
sourcemetricsString listRequested numeric metrics
transferdouble_columnsString listMetric fields written as numeric types
Top-level parameterlimitStringMaximum number of rows returned per date request
Top-level parameteroffsetStringOffset at which each date request starts reading data
Top-level parameternot_zeroIntegerWhen set to 1, excludes results in which all numeric metrics are 0
Top-level parameterallPurposeJSON stringDimension filters, exclusion filters, and numeric threshold filters

Default template​

{
"sink_event": {
"event_name": "applovin_asset_report"
},
"sink_user": [],
"source": {
"group_by": [
"asset_id",
"asset_name",
"asset_url",
"campaign",
"campaign_id",
"campaign_package_name",
"creative_set",
"creative_set_id"
],
"metrics": [
"clicks",
"cost",
"ctr",
"impressions"
]
},
"transfer": {
"double_columns": [
"clicks",
"cost",
"ctr",
"impressions"
]
}
}

Template notes:

  • source.group_by and source.metrics are merged into the columns parameter of the AppLovin request.
  • clicks, cost, ctr, and impressions should also be configured in transfer.double_columns so that they are written as numeric types.
  • The template event name is applovin_asset_report. You can change it as needed.
  • The system always requests format=json and always uses sort_impressions=DESC to sort by impressions in descending order.

Complete example with filter and pagination parameters​

The following example filters for two specified asset names, keeps only data where cost > 10 and impressions > 2000, excludes results in which all numeric metrics are 0, and reads up to 100 rows for each date starting from row 1.

{
"limit": "100",
"offset": "0",
"not_zero": 1,
"allPurpose": "{\"asset_name\":\"AssetA.mp4,AssetB.html\",\"greater_than_cost\":10,\"greater_than_impressions\":2000}",
"sink_event": {
"event_name": "applovin_asset_report"
},
"sink_user": [],
"source": {
"group_by": [
"asset_id",
"asset_name",
"asset_url",
"campaign",
"campaign_id",
"campaign_package_name",
"creative_set",
"creative_set_id"
],
"metrics": [
"clicks",
"cost",
"ctr",
"impressions"
]
},
"transfer": {
"double_columns": [
"clicks",
"cost",
"ctr",
"impressions"
]
}
}

2.5 Optional dimensions and metrics​

Optional dimensions​

Write the dimensions you need to source.group_by.

Field nameDefaultDescription
asset_idYesAsset ID
asset_nameYesAsset name
asset_urlYesURL of the original asset before processing
campaignYesCampaign name
campaign_idYesUnique identifier of the campaign, corresponding to campaign_id_external in the Basic Reporting API
campaign_package_nameYesPackage name of the app promoted by the campaign
creative_setYesCreative Set name, that is, the ad group name
creative_set_idYesCreative Set ID, which stays the same when the name changes

Optional metrics​

Write the metrics you need to source.metrics, and also write numeric fields to transfer.double_columns.

Field nameDefaultDescription
clicksYesNumber of clicks
costYesAdvertiser spend
ctrYesClicks divided by impressions
impressionsYesNumber of impressions

3. Standardized fields​

The following fields are written to the corresponding platform standard fields in te_ads_object:

Original fieldStandardized fieldTypeDescription
campaignte_ads_object.campaign_namestringCampaign name
campaign_idte_ads_object.campaign_idstringCampaign ID
campaign_package_namete_ads_object.app_namestringPackage name of the promoted app
creative_sette_ads_object.ad_group_namestringAd group name
creative_set_idte_ads_object.ad_group_idstringAd group ID
costte_ads_object.costdoubleAd cost
clickste_ads_object.clicksdoubleClicks
impressionste_ads_object.impressionsdoubleImpressions
Was this page helpful?