Reporting API v2

  • Updated

 

Adikteev provides a dashboard for monitoring your campaign performance. If you prefer to work in your own reporting tools, you can pull the same campaign data directly from the Reporting API.

Data retention: The API returns up to 2 years (24 months) of historical data.

 

1. Getting access

You need an Adikteev account to use the API. If you don't have one, ask your Adikteev Account Manager to create it — you'll receive an email to set your password.

  • If you already use the Adikteev Audiences API or User Deletion API, the same credentials work here.
  • To reset your password at any time, use the password recovery link.

     

2. Authentication

The API uses OAuth 2.0. Exchange your credentials for a bearer access token, then send that token on every subsequent request.

 

POST /token

Item Value
URL https://public-api.adikteev.com/token
Required header Authorization: Basic cmVwb3J0aW5nX2Rhc2hib2FyZDo=
Body (form-encoded) username={your_email}&password={your_password}&grant_type=password

If your email and password are recognized, you will receive a JSON response containing a token valid for 30 days.

Sample Request:

curl -X POST 'https://public-api.adikteev.com/token' \
  -H 'authorization: Basic cmVwb3J0aW5nX2Rhc2hib2FyZDo=' \
  --data 'username=you@example.com&password=your_password&grant_type=password'

Sample Response:

{
  "access_token": "123456789",
  "token_type": "bearer",
  "expires_in": 2592000
}

 

3. Making requests

Send the token as a bearer header on every request. All data endpoints use GET and return JSON.

Item Value
Base URL https://public-api.adikteev.com
Required header Authorization: Bearer {your_access_token}
Optional header Accept-Encoding: gzip to compress responses

Timeout: requests time out after 7 minutes. Use date ranges and campaign lists that keep responses reasonably sized.

Sample Request:

curl 'https://public-api.adikteev.com/profile' \
  -H 'authorization: Bearer 123456789'

 

4. How the endpoints fit together

A typical integration walks down this chain — each call returns the IDs you need for the next:

  1. /profile → your company_id.
  2. /apps → your apps and their app_ids.
  3. /client_campaigns → campaigns for an app and their campaign_ids.
  4. /report/v2/company/… → cost and performance metrics for those campaigns.

 

5. Account & catalog endpoints

 

GET /profile

Returns your account details, including the company_id used by /apps.

Field Type Description
id integer Your user ID
email string Your account email
role string Account role
company_id integer Your company ID

Sample Request:

GET /profile
Authorization: Bearer {your_access_token}

Sample Response:

{
  "id": 123,
  "email": "you@example.com",
  "role": "client",
  "company_id": 789
}

 

GET /apps

Lists the applications on your account.

Required parameter: 

Field Type Description
id integer ID of a client application returned by the app route (later referred as app_id in client campaigns and report routes)
name string Application name
bundle_identifier string iOS / Android package identifier
app_store_id string Apple App Store ID (null for Android apps)
platform string ios or android
company_id integer Your company ID (from /profile)

Sample Request:

GET /apps?company_id=789
Authorization: Bearer {your_access_token}

Sample Response:

[
  {
    "id": 1928,
    "name": "My Awesome App - iOS",
    "bundle_identifier": "com.myawesomeapp.iphone",
    "platform": "ios",
    "company_id": 789,
    "app_store_id": "123456789"
  },
  {
    "id": 9182,
    "name": "My Awesome App - Android",
    "bundle_identifier": "com.myawesomeapp.android",
    "platform": "android",
    "company_id": 789,
    "app_store_id": null
  }
]

 

GET /client_campaigns

Lists the campaigns running for one of your apps.

Request parameters:

Parameter Required Description
app_id Yes App ID from /apps.
channels No

Comma-separated list of channels to include. Possible values: mobile, ctv.

- Defaults to both mobile and ctv.

- CTV campaigns are only returned when ctv is requested.

Example: channels=mobile,ctv

Sample Request: — include both mobile and CTV campaigns

GET /client_campaigns?app_id=1928&channels=mobile,ctv
Authorization: Bearer {your_access_token}

Response fields:

Field Type Description
id integer Campaign ID (used as campaign_ids in reports)
name string Campaign name
app_id integer App the campaign belongs to
country_id integer Set only when the campaign targets a single country (reference table); otherwise null
platform string ios or android
countries array Country IDs for multi-country campaigns
channel string Channel the campaign runs on: mobile or ctv

Sample Response:

{
  "total": 3,
  "items": [
    {
      "id": 18565,
      "name": "Campaign 1",
      "app_id": 1928,
      "country_id": 236,
      "platform": "android",
      "countries": [],
      "channel": "mobile"
    },
    {
      "id": 18232,
      "name": "Campaign 2",
      "app_id": 1928,
      "country_id": null,
      "platform": "android",
      "countries": [40, 236],
      "channel": "mobile"
    },
    {
      "id": 19044,
      "name": "CTV Campaign - Q1",
      "app_id": 1928,
      "country_id": 236,
      "platform": "android",
      "countries": [],
      "channel": "ctv"
    }
  ]
}

 

6. Reporting endpoints

All reporting endpoints share the same parameters and the same response envelope. They differ only in the breakdown dimension they add. Choose the endpoint that matches the granularity you need:

Endpoint Breakdown
/report/v2/company/daily/client by date and campaign
/report/v2/company/country/daily/client by date, campaign and country
/report/v2/company/creative/daily/client by date, campaign and creative
/report/v2/company/creative-country/daily/client by date, campaign, creative and country

 

Parameters

Parameter Required Type Description
campaign_ids Yes integer Comma-separated campaign IDs from /client_campaigns, e.g. campaign_ids=12345,67890
start_date No date UTC date YYYY-MM-DD. Defaults to 7 days ago.
end_date No date UTC date YYYY-MM-DD. Defaults to yesterday.
currency No string

3-letter currency code. Defaults to USD. Many currencies are supported (e.g. EUR, GBP, JPY, KRW); costs are converted using Adikteev's exchange rates. 

Example: &currency=EUR

app_id No integer ID of a client application returned by the app route

NB1. Final billable costs for a given UTC day are available on the next day around 3:00 AM UTC.

NB2. If the app_id query parameter is provided, the response will return only the data associated with that app_id. If it is omitted, the response will include all app_ids promoted by the campaign. Note that multiple app_ids are returned only when the campaign runs in a cross-platform environment.

 

Mobile-only vs cross-platform responses

Every report row includes an app_id field. The difference between campaign types is how many app_ids appear:

  • Mobile-only campaigns (single OS) — all rows carry the same single app_id (the application the campaign runs on).
  • Cross-platform campaigns (the same campaign delivering installs and costs for both iOS and Android) — the campaign returns one row per app_id for each breakdown. Pass the app_id query parameter to restrict the response to a single application if needed.

 

Response envelope

Every reporting endpoint returns the same top-level structure. The shape of each object in data depends on the endpoint (see below).

{
  "start_date": "2024-01-01",
  "end_date": "2024-01-07",
  "currency": "USD",
  "data": [ ...report rows... ]
}

 

Common report row fields

Field Type Description
date string UTC date, formatted YYYY-MM-DDT00:00:00.000Z
app_id integer Application the metrics belong to. Always present. Mobile-only campaigns return a single app_id across all rows; cross-platform campaigns return one row per app_id (see NB2).
campaign_id integer Campaign ID
campaign_name string Campaign name
impressions integer Impression count
clicks integer Click count
installs integer Install count
reopens integer Reopen count
client_cost float Billable amount, in the requested currency
custom_action array

In-app events attributed to Adikteev:

- name (string) : event name

- amount (integer) : count of events

- total_value (float) : sum of event values if any (for purchases for instance)

 

6.1 GET /report/v2/company/daily/client

Metrics by date and campaign.

Sample Request:

GET /report/v2/company/daily/client?campaign_ids=17215&start_date=2024-01-01&end_date=2024-01-02&currency=USD
Authorization: Bearer {your_access_token}

Sample Response — mobile-only campaign (single app_id):

{
  "start_date": "2024-01-01",
  "end_date": "2024-01-02",
  "currency": "USD",
  "data": [
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "impressions": 42198,
      "clicks": 3064,
      "installs": 16,
      "reopens": 2900,
      "client_cost": 1225.69,
      "custom_action": [
        { "name": "purchase", "amount": 171, "total_value": 1126.69 },
        { "name": "add_to_cart", "amount": 5128, "total_value": 0 }
      ]
    },
    {
      "date": "2024-01-02T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "impressions": 45786,
      "clicks": 3267,
      "installs": 15,
      "reopens": 1786,
      "client_cost": 2154.80,
      "custom_action": [
        { "name": "purchase", "amount": 211, "total_value": 2208.08 },
        { "name": "add_to_cart", "amount": 2801, "total_value": 0 }
      ]
    }
  ]
}

Sample Response — cross-platform campaign (one row per app_id):

{
  "start_date": "2024-01-01",
  "end_date": "2024-01-01",
  "currency": "USD",
  "data": [
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "impressions": 42198,
      "clicks": 3064,
      "installs": 16,
      "reopens": 2900,
      "client_cost": 1225.69,
      "custom_action": [
        { "name": "purchase", "amount": 171, "total_value": 1126.69 }
      ]
    },
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 9182,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "impressions": 38104,
      "clicks": 2718,
      "installs": 13,
      "reopens": 2451,
      "client_cost": 1043.22,
      "custom_action": [
        { "name": "purchase", "amount": 149, "total_value": 981.40 }
      ]
    }
  ]
}

 

6.2 GET /report/v2/company/country/daily/client

Same as the daily report, with an added breakdown per country. Each row adds country (ISO 3166-1 alpha-2 code, or null if unknown) and country_id.

Sample Request:

GET /report/v2/company/country/daily/client?campaign_ids=17215&start_date=2024-01-01&end_date=2024-01-01&currency=USD
Authorization: Bearer {your_access_token}

Sample Response — mobile-only campaign (single app_id):

{
  "start_date": "2024-01-01",
  "end_date": "2024-01-01",
  "currency": "USD",
  "data": [
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "country": "US",
      "country_id": 236,
      "impressions": 42198,
      "clicks": 3064,
      "installs": 16,
      "reopens": 2900,
      "client_cost": 1225.69,
      "custom_action": [
        { "name": "purchase", "amount": 140, "total_value": 1126.69 }
      ]
    },
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "country": "FR",
      "country_id": 76,
      "impressions": 41738,
      "clicks": 2972,
      "installs": 11,
      "reopens": 1589,
      "client_cost": 1188.80,
      "custom_action": [
        { "name": "purchase", "amount": 245, "total_value": 2365.52 }
      ]
    }
  ]
}

Sample Response — cross-platform campaign (one row per app_id and country):

{
  "start_date": "2024-01-01",
  "end_date": "2024-01-01",
  "currency": "USD",
  "data": [
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "country": "US",
      "country_id": 236,
      "impressions": 42198,
      "clicks": 3064,
      "installs": 16,
      "reopens": 2900,
      "client_cost": 1225.69,
      "custom_action": [
        { "name": "purchase", "amount": 140, "total_value": 1126.69 }
      ]
    },
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 9182,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "country": "US",
      "country_id": 236,
      "impressions": 35921,
      "clicks": 2544,
      "installs": 12,
      "reopens": 2213,
      "client_cost": 998.14,
      "custom_action": [
        { "name": "purchase", "amount": 121, "total_value": 964.10 }
      ]
    }
  ]
}

 

6.3 GET /report/v2/company/creative/daily/client

Same as the daily report, with an added breakdown per creative. Each row adds creative_id, creative_name, creative_url, creative_group_id and creative_group_name.

Sample Request:

GET /report/v2/company/creative/daily/client?campaign_ids=17215&start_date=2024-01-01&end_date=2024-01-01&currency=EUR
Authorization: Bearer {your_access_token}

Sample Response — mobile-only campaign (single app_id):

{
  "start_date": "2024-01-01",
  "end_date": "2024-01-01",
  "currency": "EUR",
  "data": [
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "creative_id": 147852369,
      "creative_name": "PrivateSale_Playable_320x480",
      "creative_url": "https://cdn-creatives.adikteev.com/147852369/creative.png",
      "creative_group_id": 152382,
      "creative_group_name": "PrivateSale_Playable",
      "impressions": 42198,
      "clicks": 3064,
      "installs": 16,
      "reopens": 2900,
      "client_cost": 1225.69,
      "custom_action": [
        { "name": "purchase", "amount": 140, "total_value": 1126.69 }
      ]
    },
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "creative_id": 987654321,
      "creative_name": "PrivateSale_Video_Infeed",
      "creative_url": "https://cdn-creatives.adikteev.com/987654321/video_asset.mp4",
      "creative_group_id": 152383,
      "creative_group_name": "PrivateSale_Video",
      "impressions": 41738,
      "clicks": 2972,
      "installs": 11,
      "reopens": 1589,
      "client_cost": 1188.80,
      "custom_action": [
        { "name": "purchase", "amount": 245, "total_value": 2365.52 }
      ]
    }
  ]
}

Sample Response — cross-platform campaign (one row per app_id and creative):

{
  "start_date": "2024-01-01",
  "end_date": "2024-01-01",
  "currency": "EUR",
  "data": [
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "creative_id": 147852369,
      "creative_name": "PrivateSale_Playable_320x480",
      "creative_url": "https://cdn-creatives.adikteev.com/147852369/creative.png",
      "creative_group_id": 152382,
      "creative_group_name": "PrivateSale_Playable",
      "impressions": 42198,
      "clicks": 3064,
      "installs": 16,
      "reopens": 2900,
      "client_cost": 1225.69,
      "custom_action": [
        { "name": "purchase", "amount": 140, "total_value": 1126.69 }
      ]
    },
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 9182,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "creative_id": 147852369,
      "creative_name": "PrivateSale_Playable_320x480",
      "creative_url": "https://cdn-creatives.adikteev.com/147852369/creative.png",
      "creative_group_id": 152382,
      "creative_group_name": "PrivateSale_Playable",
      "impressions": 36502,
      "clicks": 2610,
      "installs": 12,
      "reopens": 2402,
      "client_cost": 1004.37,
      "custom_action": [
        { "name": "purchase", "amount": 118, "total_value": 948.02 }
      ]
    }
  ]
}

 

6.4 GET /report/v2/company/creative-country/daily/client

Same as the daily report, broken down by both creative and country. Each row includes all creative fields plus country and country_id.

Sample Request:

GET /report/v2/company/creative-country/daily/client?campaign_ids=17215&start_date=2024-01-01&end_date=2024-01-01&currency=USD
Authorization: Bearer {your_access_token}

Sample Response — mobile-only campaign (single app_id):

{
  "start_date": "2024-01-01",
  "end_date": "2024-01-01",
  "currency": "USD",
  "data": [
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "creative_id": 147852369,
      "creative_name": "PrivateSale_Playable_320x480",
      "creative_url": "https://cdn-creatives.adikteev.com/147852369/creative.png",
      "creative_group_id": 152382,
      "creative_group_name": "PrivateSale_Playable",
      "country": "US",
      "country_id": 236,
      "impressions": 42198,
      "clicks": 3064,
      "installs": 16,
      "reopens": 2900,
      "client_cost": 1225.69,
      "custom_action": [
        { "name": "purchase", "amount": 140, "total_value": 1126.69 }
      ]
    },
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "creative_id": 987654321,
      "creative_name": "PrivateSale_Video_Infeed",
      "creative_url": "https://cdn-creatives.adikteev.com/987654321/video_asset.mp4",
      "creative_group_id": 152383,
      "creative_group_name": "PrivateSale_Video",
      "country": "FR",
      "country_id": 76,
      "impressions": 41738,
      "clicks": 2972,
      "installs": 11,
      "reopens": 1589,
      "client_cost": 1188.80,
      "custom_action": [
        { "name": "purchase", "amount": 245, "total_value": 2365.52 }
      ]
    }
  ]
}

Sample Response — cross-platform campaign (one row per app_id, creative and country):

{
  "start_date": "2024-01-01",
  "end_date": "2024-01-01",
  "currency": "USD",
  "data": [
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 1928,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "creative_id": 147852369,
      "creative_name": "PrivateSale_Playable_320x480",
      "creative_url": "https://cdn-creatives.adikteev.com/147852369/creative.png",
      "creative_group_id": 152382,
      "creative_group_name": "PrivateSale_Playable",
      "country": "US",
      "country_id": 236,
      "impressions": 42198,
      "clicks": 3064,
      "installs": 16,
      "reopens": 2900,
      "client_cost": 1225.69,
      "custom_action": [
        { "name": "purchase", "amount": 140, "total_value": 1126.69 }
      ]
    },
    {
      "date": "2024-01-01T00:00:00.000Z",
      "app_id": 9182,
      "campaign_id": 17215,
      "campaign_name": "RTG_New_Purchase_15d",
      "creative_id": 147852369,
      "creative_name": "PrivateSale_Playable_320x480",
      "creative_url": "https://cdn-creatives.adikteev.com/147852369/creative.png",
      "creative_group_id": 152382,
      "creative_group_name": "PrivateSale_Playable",
      "country": "US",
      "country_id": 236,
      "impressions": 34980,
      "clicks": 2489,
      "installs": 12,
      "reopens": 2190,
      "client_cost": 972.41,
      "custom_action": [
        { "name": "purchase", "amount": 116, "total_value": 933.75 }
      ]
    }
  ]
}

 

7. Errors

Status Meaning
400 Bad request — e.g. missing campaign_ids, or an unsupported currency.
401 Missing, invalid, or expired access token.
403 You requested data for an app or campaign that isn't on your account.
5xx Temporary server error — retry after a short delay.

 

Need help? Contact your Adikteev Account Manager.

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request