Pivot Report Service provides an API to get aggregated data from different sources: KPI Service metrics, KPI Service cohorts, SKAdNetwork, and Ad Spend.
The reports endpoint enables you to combine data from many services in a single report. Request installs, revenue, ad spend, and SKAdNetwork data divided by day, app, and ad network.
Fetch pivot report
GET https://automate.adjust.com/reports-service/pivot_reportThe GET method returns filtered data from the report service in JSON format.
Filters
| Filter | Type | Description | Example | 
|---|---|---|---|
dimensions* | String | Comma-separated values used to group parameters. See the dimensions table below for more information. | dimensions=app,os_name,week,campaign_id_network | 
metrics* | String | Comma-separated KPIs. See the metrics table below for more information. | metrics=cost,installs,ecpi_network | 
date_period* | String | Start and end dates for the report with 3 supported formats:
  | 
  | 
cohort_maturity | String | 
  | cohort_maturity=immature | 
utc_offset | String | The timezone used in the report. | utc_offset=+01:00 | 
attribution_types | String | The type of engagement the attribution awards.
  | attribution_types=click,engaged_ad | 
attribution_source | String | Whether in-app activity is assigned to the user’s install source (first) or divided among the install source and subsequent sources of reattribution (dynamic). Defaults to dynamic. | attribution_source=first | 
reattributed | String | Filter for reattributed users only. Reattribution is when a user who has already installed your app returns to it through a new Adjust-measured source.
  | reattributed=false | 
iap_revenue_mode | String | The percentage of gross ad revenue returned by the endpoint. Available options are:
  | iap_revenue_mode=GROSS_70 | 
ad_revenue_sources | String | Comma-separated list of ad revenue sources. | ad_revenue_sources=unknown | 
os_names | String | Comma-separated list of operating system names. | os_names=ios,android | 
ad_spend_mode | String | Determines the ad spend source applied in calculations. See How ad spend source affects your data for more information.
  | ad_spend_mode=network | 
sandbox | Boolean | Whether to use sandbox data or production data. Defaults to false. | sandbox=true | 
sort | String | Comma-separated list of metrics/dimensions to sort the report by. Use - to order descending. | sort=-clicks,installs | 
drilldown | String | List of parameters to drill down into. Formatted as pipe-separated tuples. | drilldown=campaign:123|adgroup:234 | 
focus | String | List of parameters to focus on. Formatted as pipe-separated tuples. Differs from drilldown as it doesn’t add extra dimensions to the results. | focus=campaign:123|adgroup:234 | 
index | String | Comma-separated list of dimensions used to index the report. | index=network,campaign,adgroup | 
format_dates | Boolean | If set to false, all date dimensions are returned in ISO format. | format_dates=false | 
period_over_period | String | The period for comparing report data. | period_over_period=previous_week | 
currency | String | Currency used for conversion of money related metrics. | currency=USD | 
[dimension]__in | String | Comma-separated list of values to filter dimension’s values (exact match) for any dimension. | campaign__in=abc,def | 
[dimension]__not_in | String | Comma-separated list of values to filter dimension’s values (exclude exact match) for any dimension | campaign__not_in=abc,def | 
[dimension]__contains | String | Substring search in dimension’s values (case insensitive) for any dimension. | campaign__contains=ios | 
[dimension]__exclude | String | Excluding substring search in dimension’s values (case insensitive) for any dimension. | campaign__exclude=ios | 
[dimension]__starts_with | String | Substring search matching dimensions starting with specified prefix (case insensitive). | campaign__starts_with=ios | 
[dimension]__not_starts_with | String | Substring search matching dimensions not starting with specified prefix (case insensitive). | campaign__not_starts_with=ios | 
[dimension]__ends_with | String | Substring search matching dimensions ending with specified suffix (case insensitive). | campaign__ends_with=ios | 
[dimension]__not_ends_with | String | Substring search matching dimensions not ending with specified suffix (case insensitive). | campaign__not_ends_with=ios | 
[metric]__lt | String | ”Less than” filter for metric’s values any metric. | skad_installs__lt=100 | 
[metric]__lte | String | ”Less than or equal” filter for metric’s values for any metric. | skad_installs__lte=100 | 
[metric]__gt | String | ”Greater than” filter for metric’s values for any metric. | skad_installs__gt=100 | 
[metric]__gte | String | ”Greater than or equal” filter for metric’s values for any metric. | skad_installs__gte=100 | 
[metric]__eq | String | ”Equal” filter for metric’s values for any metric. | skad_installs__eq=100 | 
[metric]__ne | String | ”Not equal” filter for values relating to any metric. | skad_installs__ne=100 | 
Dimensions
Dimensions allow a user to break down metrics into groups using one or several parameters. For example, the number of installs by date, country and network.
| Dimension | Data type | Description | Example | 
|---|---|---|---|
hour | Date | Use format_dates=false to return the value in ISO format.YYYY-MM-DDTHH:MM:SS | 2021-05-11T17:00:45 | 
day | Date | Use format_dates=false to return the value in ISO format.YYYY-MM-DD | 2021-05-11 | 
week | Date | Use format_dates=false to return the value in ISO format.YYYY-MM-DD - YYYY-MM-DD | 2021-05-09 - 2021-05-15 | 
month | Date | Use format_dates=false to return the value in ISO format.YYYY-MM | 2021-05 | 
year | Date | Use format_dates=false to return the value in ISO format.YYYY | 2021 | 
quarter | String | Use format_dates=false to return the value in ISO format.Q<quarter_number> YYYY | Q2 2021 | 
os_name | String | Possible values:
  | |
device_type | String | Possible values:
  | |
app | String | Name of the app. | |
app_token | String | App ID in the Adjust system. | |
ad_account_id | String | The ID of the advertising account. | |
store_id | String | Store App ID. | com.random.app | 
store_type | String | Store from where the app was installed. | google_play | 
currency | String | Currency name. | Euro | 
currency_code | String | 3-character value ISO 4217. | EUR | 
network | String | The name of the advertising network. | Organic, AppLovin, Facebook Installs, Instagram Installs. | 
campaign | String | Link sub-level 1. String value usually contains campaign name and id.  | |
campaign_network | String | Campaign name from the network. | |
campaign_id_network | String | Campaign ID from the network. | |
adgroup | String | Link sub-level 2. String value usually contains adgroup name and id.  | |
adgroup_network | String | Adgroup name from the network. | |
adgroup_id_network | String | Adgroup ID from the network. | |
source_network | String | Name of the source network. Optional value dependent on the network. | |
source_id_network | String | ID of the source network. | |
creative | String | Link sub-level 3. String value usually contains creative name and id.  | |
creative_network | String | Creative name from the network. | |
creative_id_network | String | Creative ID from the network. | |
country | String | Country name. | United States of America | 
country_code | String | 2-character value ISO 3166. | US | 
region | String | Business region. | APAC | 
partner_name | String | Partner’s name in the Adjust system. | AppLovin | 
partner_id | String | Partner’s id in the Adjust system. | 34 | 
partner | String | The unique slug of the partner. | applovin | 
channel | String | A combination of partner_name and network. | |
platform | String | The device platform type, e.g. mobile_app, web or undefined. | mobile_app | 
Metrics
Metrics are used to assess and compare the performance of campaigns you run and measure with Adjust.
At least 1 metric is required in each API request. The most common metrics are:
installsclicksimpressions
A full list of metrics is available in the Datascape metrics glossary. You can also use the Filters Data endpoint to search for metrics.
Response format
{   "rows": [      {         "attr_dependency": {},         "app": "App Name",         "partner_name": "AppLovin",         "campaign": "Campaign Name (Campaign ID)",         "campaign_id_network": "Campaign ID",         "campaign_network": "Campaign Name",         "installs": "64",         "cost": "1000"      }   ],   "totals": {      "installs": 64,      "cost": 1000   },   "warnings": [],   "totals_per_dimension": {}}Response codes
This endpoint returns the following responses:
| Response | Description | Notes | 
|---|---|---|
200 | Success | Returns report information | 
204 | No content | Returned if the response object is empty | 
400 | Bad request | Returned if your request is malformed or contains unsupported parameters | 
401 | Unauthorized | Returned if your credentials are incorrect or absent | 
403 | Forbidden | Returned if you try to access information you don’t have permission to view | 
429 | Too many requests | Returned if you exceed 50 simultaneous requests | 
503 | Service unavailable | Returned if the server can’t be reached | 
504 | Gateway timeout | Returned if the query takes too long to return a response | 
Example
$ curl \--header 'Authorization: Bearer <adjust_api_token>' \-L -X GET 'https://automate.adjust.com/reports-service/pivot_report?ad_spend_mode=network&app_token__in={app_token1},{app_token2}&date_period=2021-05-01:2021-05-02&dimensions=app,partner_name,campaign,campaign_id_network,campaign_network&metrics=installs,network_installs,network_cost,network_ecpi&index=app' \{   "rows": [      {         "Test App": {            "rows": [               {                  "attr_dependency": {                     "app_network": ["google_play:com.test.app"]                  },                  "campaign_id_network": "123",                  "campaign_network": "Campaign Name",                  "campaign": "Campaign Name (123)",                  "partner_name": "MyPartner",                  "installs": 10,                  "network_installs": 0,                  "network_cost": 0,                  "network_ecpi": 0               }            ]         }      }   ],   "totals": {      "installs": 10,      "network_installs": 0,      "network_cost": 0,      "network_ecpi": 0   },   "totals_per_dimension": {      "campaign_id_network": {         "Organic": {            "installs": 10,            "network_installs": 0,            "network_cost": 0,            "network_ecpi": 0         }      },      "campaign_network": {         "Organic": {            "installs": 10,            "network_installs": 0,            "network_cost": 0,            "network_ecpi": 0         }      },      "app": {         "adjust Demo App": {            "installs": 10,            "network_installs": 0,            "network_cost": 0,            "network_ecpi": 0         }      },      "campaign": {         "Organic": {            "installs": 10,            "network_installs": 0,            "network_cost": 0,            "network_ecpi": 0         }      },      "partner_name": {         "Organic": {            "installs": 10,            "network_installs": 0,            "network_cost": 0,            "network_ecpi": 0         }      }   }}