# Analytics API

<style>
  tr, td {
    border: 0px;
    text-align: left; 
    vertical-align: top;
  }
</style>

## Before you get started

<div class="alert alert-info" role="alert">
  <b>Note:</b> In June 2024, Chartboost introduces API <b>version 5</b> (<code>api.chartboost.com/v5/analytics</code>) which uses an OAuth2 standard protocol as opposed to the older HTTP methods. Support for <b>WHAPI</b> (<code>v2.whapi.chartboost.com</code>) will be sunsetting soon. Any new API endpoints will only be available for version 5 moving forwards.
</div>

### Authentication

#### Version 5 API
To start using the version 5 API (`api.chartboost.com/v5/analytics`), complete the [API Access & Authentication](/en/monetization/reference/api-access-authentication/#api-access-url-endpoint) process. You will not be able to access your analytics programmatically until this step is completed.

#### WHAPI
Your account's user ID and user signature are required to authenticate your API request for `v2.whapi.chartboost.com`.

1. Log in to your [Chartboost platform](https://platform.chartboost.com/)
2. Navigate to **Mediation**. You will be redirected to the Helium Dashboard (<https://helium.chartboost.com/>).
3. From the left navigation, go to **Resources > API Explorer**.
4. Your **user ID** and **user signature** is listed under **Authentication**

<div class="alert alert-info" role="alert">
  <b>Note:</b> Chartboost is hard at work redesigning, migrating, and improving dashboards & platform services. Please bear with us as some tools, features, and information may be in odd areas.
</div>

### Request and response examples

The example shows two queries: (1) an initial request to queue the job and (2) a follow-up query that uses the job ID to retrieve the results. For WHAPI endpoints, all requests should be made via HTTPS.

<ul class="tab" data-tab="6ebf4041-d037-420d-a719-f410f8d4bd1b" data-name="apiAnalyticsExampleURL">
  
      <li class="active">
          <a href="#">Version 5 Endpoint </a>
      </li>
  
      <li>
          <a href="#">WHAPI Endpoint </a>
      </li>
  
</ul>
<ul class="tab-content" id="6ebf4041-d037-420d-a719-f410f8d4bd1b" data-name="apiAnalyticsExampleURL">
  
      <li class="active">
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://api.chartboost.com/v5/analytics/jobs/[jobId]
</code></pre></div></div>
</li>
  
      <li>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/jobs/[jobId]
</code></pre></div></div>
</li>
  
</ul>




<ul class="tab" data-tab="4679fa49-68c9-439b-b5f1-487a137f5083" data-name="apiAnalyticsExampleRequest">
  
      <li class="active">
          <a href="#">Version 5 Example Request </a>
      </li>
  
      <li>
          <a href="#">WHAPI Example Request </a>
      </li>
  
</ul>
<ul class="tab-content" id="4679fa49-68c9-439b-b5f1-487a137f5083" data-name="apiAnalyticsExampleRequest">
  
      <li class="active">
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/campaign HTTP/1.1
Host: api.chartboost.com
Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/json;charset=UTF-8

{
  "dateMin": "2024-01-01",
  "dateMax": "2024-03-01",
  "groupBy": "app,creative"
}
</code></pre></div></div>
</li>
  
      <li>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// pseudo-code example for initial query request
query_url = "https://v2.whapi.chartboost.com/metrics/campaign?" + query_params
query_params = "... groupBy=app,creative ..."


response = get(query_url);
if (response.status = 202) {
  jobId = response.parse('jobId');
  // capture the jobId for retrieve() function
  file.write(jobId);
  }
else {
  // handle failure
};
</code></pre></div></div>
</li>
  
</ul>



<ul class="tab" data-tab="22cebc95-7359-4ed0-9d2f-50dced67d953" data-name="apiAnalyticsExampleResponse">
  
      <li class="active">
          <a href="#">Version 5 Example Response </a>
      </li>
  
      <li>
          <a href="#">WHAPI Example Response </a>
      </li>
  
</ul>
<ul class="tab-content" id="22cebc95-7359-4ed0-9d2f-50dced67d953" data-name="apiAnalyticsExampleResponse">
  
      <li class="active">
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// pseudo-code example of retrieving the result by jobId
query_url = "https://api.chartboost.com/v5/analytics/jobs/" + jobId
query_params = ""
created = get(query_url + “?status=true”); if (created.status == 201) { response = get(query_url); if (response.status == 200) { // get nerdy with data } else { // handle failure } };
</code></pre></div></div>
</li>
  
      <li>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// pseudo-code example of retrieving the result by jobId
query_url = "https://v2.whapi.chartboost.com/metrics/jobs/" + jobId
query_params = ""
created = get(query_url + “?status=true”); if (created.status == 201) { response = get(query_url); if (response.status == 200) { // get nerdy with data } else { // handle failure } };
</code></pre></div></div>
</li>
  
</ul>



1. After receiving `GET /campaign` and `GET /install` queries that use the groupBy parameter, the Chartboost API will respond with a job ID that serves as a confirmation that the request has been accepted and queued for processing.
2. You can then use the ID to check the job’s status in a subsequent request, using this new endpoint: `GET /metrics/jobs/{jobId}?status=true`.
3. The query will return 201 `{status: "created"}` if the job results are ready to be collected. Once your system receives that response, you can pull the data like so: `GET /metrics/jobs/{jobId}`.
4. If you try to retrieve your data before the job is finished, you will either receive a 404 response if the job was not initialized yet, or a 200 response with an appropriate message that the job is not finished yet.

Query results are stored and available for 60 minutes before deletion. The default content-type is `text/tab-separated-values;charset=UTF-16LE` where results are returned in TSV form, but `text/csv;charset=utf-8` is also available and it is returned when the request has the parameter `csv_format` set to `CSV`.



## Endpoints

| Description          | Version 5 Endpoints | `v2.whapi.chartboost.com` Endpoint |
| ------------------- | :------------------ | :--------------------------------- |
| [Campaign analytics](#campaign-analytics) | `GET https://api.chartboost.com/v5/analytics/campaign` | https://v2.whapi.chartboost.com/metrics/campaign |
| [App analytics](#app-analytics) | `GET https://api.chartboost.com/v5/analytics/app` | https://v2.whapi.chartboost.com/metrics/app |
| [Export installs](#export-installs) | `GET https://api.chartboost.com/v5/analytics/install` |  https://v2.whapi.chartboost.com/metrics/install |
| [App analytics grouped by country](#app-analytics-grouped-by-country) | `GET https://api.chartboost.com/v5/analytics/appcountry` | https://v2.whapi.chartboost.com/metrics/appcountry |
| [Monetization ](#monetization) | `GET https://api.chartboost.com/v5/analytics/monetization` | https://v2.whapi.chartboost.com/metrics/monetization |
| [Jobs ](#jobs) | `GET https://api.chartboost.com/v5/analytics/jobs/[jobId]` | https://v2.whapi.chartboost.com/metrics/jobs/[jobId] |
| [All Time](#all-time) | `GET https://api.chartboost.com/v5/analytics/alltime` | https://v2.whapi.chartboost.com/metrics/alltime |

***

### Campaign Analytics

The campaign analytics endpoint provides detailed reports that can be grouped by app, campaign, campaign type, campaign target, date, target creative, creative or country. Be advised that when setting the `groupBy` field to app, creative, or country, a job ID will be returned by the Queued Analytics System. The result can then be retrieved by sending the job `ID` to the `/jobs` endpoint documented below.

<ul class="tab" data-tab="b6d1a173-5405-4607-8f5a-b1e07ef4019c" data-name="apiAnalyticsCampaignURL">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="b6d1a173-5405-4607-8f5a-b1e07ef4019c" data-name="apiAnalyticsCampaignURL">
  
      <li class="active">
<pre><code class="language-url">GET https://api.chartboost.com/v5/analytics/campaign
</code></pre>
</li>
  
      <li>
<pre><code class="language-url">https://v2.whapi.chartboost.com/metrics/campaign
</code></pre>
</li>
  
</ul>



For version 5 and WHAPI endpoint,
- data is available from January 1, 2018 when `groupBy=app, country, creative`
- data is available from January 1, 2018 when `timezone=pst` and `groupBy=campaign (default), campaign_target, campaign_type, date`
- data is available from March 1, 2020 when `timezone=utc` and `groupBy=campaign (default), campaign_target, campaign_type, date`
- data is available from June 16, 2020 when `groupBy=target_creative`

#### Request Parameter

| Parameter      | Request Type | Required? | Default | Description     |
| :------------- | :----------- | :-------- | :------ | :-------------- |
| `aggregate`    | String       | Optional  | Daily   | Aggregate the results over time (daily, weekly, monthly)                                                                   |
| `campaignId`   | String       | Optional  | N/A     | Campaign ID (can be either **To Campaign ID** or **From Campaign ID** based on groupBy and role)                           |
| `campaignType` | String       | Optional  | network | Either `all`, or one or more of the following: `network`, `direct_deal`, `cross_promo`, `exchange`, `helium`. <br><br>Note: If a network is chosen, then the exchange data will automatically be returned. <br><br>The old WHAPI allows filtering by one network. The new WHAPI allows a list of campaign types to be filtered by.|
| `dateMin`      | String       | Required  | N/A     | The minimum date (YYYY-MM-DD)                                                                                              |
| `dateMax`      | String       | Required  | N/A     | The maximum date (YYYY-MM-DD)                                                                                              |
| `groupBy`      | String       | Optional  | None    | One of the following: `country`, `app`, `app,creative`, `target_creative`, `date`, `campaign`, `campaign_target`, `campaign_type` |
| `platform`     | String       | Optional  | All     | Filter by specific platforms (iOS, Google Play, Amazon)                                                                    |
| `role`         | String       | Optional  | Both    | `advertiser`, `publisher`                                                                                             |
| `adTypeId`     | String       | Optional  | None    | **Old endpoint**: Returns the first ad type id encountered and does not group by ad type id. <br><br>**New endpoint**: 1, 4, 5, 7, 8, 9, 10|
| `timezone`     | String       | Optional  | PST     | UTC / PST |
| `appID`        | String       | Optional  | None    | Filter by one or more app ids |

#### Example Request

<ul class="tab" data-tab="4ae77609-42e9-499c-af4d-8bb0b449bd4f" data-name="analyticsCampaignRequest">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="4ae77609-42e9-499c-af4d-8bb0b449bd4f" data-name="analyticsCampaignRequest">
  
      <li class="active">
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/campaign HTTP/1.1
Host: api.chartboost.com
Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/json;charset=UTF-8

{
"dateMin": "2024-01-01",
"dateMax": "2024-03-01"
}
</code></pre></div></div>
</li>
  
      <li>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/campaign?dateMin={Minimum date}&amp;dateMax={Maximum date}&amp;userId={Chartboost customer’s user ID}&amp;userSignature={CB customer’s user signature}
</code></pre></div></div>
</li>
  
</ul>




#### Response Fields

<div class="alert alert-light" role="alert">
  <details>
  <summary><b>groupBy = campaign</b></summary>
  <br>
    <b>Synchronous</b> response, <b>JSON</b> result
    <br><br>
    <table>
      <tr>
        <th>Parameter</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
        <td><code>adTypeId</code></td>
        <td>String</td>
        <td>1=<code>interstitial</code>, 2=<code>more_apps</code>, 3=<code>in_play</code>, 4=<code>rewarded_video</code>, 5=<code>video_interstitial</code>, 8=<code>intersitial placement</code>, 9=<code>rewarded placement</code>, 10=<code>banner</code></td>
      </tr>
      <tr>
        <td><code>campaign</code></td>
        <td>String</td>
        <td>Campaign name</td>
      </tr>
      <tr>
        <td><code>campaignId</code></td>
        <td>String</td>
        <td>Campaign ID</td>
      </tr>
      <tr>
        <td><code>campaignSubType</code></td>
        <td>String</td>
        <td>Campaign subtype</td>
      </tr>
      <tr>
        <td><code>campaignTarget</code></td>
        <td>String</td>
        <td>Campaign target; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignType</code></td>
        <td>String</td>
        <td>Campaign type</td>
      </tr>
      <tr>
        <td><code>clicksDelivered</code></td>
        <td>Integer</td>
        <td>Clicks delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>clicksReceived</code></td>
        <td>Integer</td>
        <td>Clicks received; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>cpcvEarned</code></td>
        <td>Float</td>
        <td>Ratio of money earned from completed video views to completed video views; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>cpcvSpent</code></td>
        <td>Float</td>
        <td>Ratio of money spent on completed video views to the number of completed video views; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>creative</code></td>
        <td>String</td>
        <td>Creative; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>ctrDelivered</code></td>
        <td>Float</td>
        <td>Click through rate for delivered impressions; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>ctrReceived</code></td>
        <td>Float</td>
        <td>Click through rate for received impressions; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>dt</code></td>
        <td>String</td>
        <td>Date (YYYY-MM-DD)</td>
      </tr>
      <tr>
        <td><code>ecpmEarned</code></td>
        <td>Float</td>
        <td>Earnings per 1000 impressions; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>ecpmSpent</code></td>
        <td>Float</td>
        <td>Cost per 1000 impressions; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>impressionsDelivered</code></td>
        <td>Integer</td>
        <td>Impressions delivered by the publisher; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>impressionsReceived</code></td>
        <td>Integer</td>
        <td>Impressions received by the advertiser; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>installDelivered</code></td>
        <td>Integer</td>
        <td>Installs delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>installRateDelivered</code></td>
        <td>Float</td>
        <td>Install rate; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>installRateReceived</code></td>
        <td>Float</td>
        <td>Install rate; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>installReceived</code></td>
        <td>Integer</td>
        <td>Installs received; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>moneyEarned</code></td>
        <td>Float</td>
        <td>Money earned; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>moneySpent</code></td>
        <td>Float</td>
        <td>Money spent; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>role</code></td>
        <td>String</td>
        <td>Role: advertiser or publisher</td>
      </tr>
      <tr>
        <td><code>videoCompletedDelivered</code></td>
        <td>Integer</td>
        <td>Completed video views delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>videoCompletedReceived</code></td>
        <td>Integer</td>
        <td>Completed video views received; 0 for publishers</td>
      </tr>
    </table>
  </details>
</div>

<div class="alert alert-light" role="alert">
  <details>
  <summary><b>groupBy = campaign_target</b></summary>
  <br>
    <b>Synchronous</b> response, <b>JSON</b> result
    <br><br>
        <table>
      <tr>
        <th>Parameter</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
        <td><code>adTypeId</code></td>
        <td>String</td>
        <td>1=<code>interstitial</code>, 2=<code>more_apps</code>, 3=<code>in_play</code>, 4=<code>rewarded_video</code>, 5=<code>video_interstitial</code>, 8=<code>intersitial placement</code>, 9=<code>rewarded placement</code>, 10=<code>banner</code></td>
      </tr>
      <tr>
        <td><code>campaign</code></td>
        <td>String</td>
        <td>Campaign name</td>
      </tr>
      <tr>
        <td><code>campaignId</code></td>
        <td>String</td>
        <td>Campaign ID</td>
      </tr>
      <tr>
        <td><code>campaignSubType</code></td>
        <td>String</td>
        <td>Campaign subtype</td>
      </tr>
      <tr>
        <td><code>campaignTarget</code></td>
        <td>String</td>
        <td>Campaign target</td>
      </tr>
      <tr>
        <td><code>campaignType</code></td>
        <td>String</td>
        <td>Campaign type</td>
      </tr>
      <tr>
        <td><code>clicksDelivered</code></td>
        <td>Integer</td>
        <td>Clicks delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>clicksReceived</code></td>
        <td>Integer</td>
        <td>Clicks received; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>cpcvEarned</code></td>
        <td>Float</td>
        <td>Ratio of money earned from completed video views to completed video views; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>cpcvSpent</code></td>
        <td>Float</td>
        <td>Ratio of money spent on completed video views to the number of completed video views; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>creative</code></td>
        <td>String</td>
        <td>Creative; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>ctrDelivered</code></td>
        <td>Float</td>
        <td>Click through rate for delivered impressions; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>ctrReceived</code></td>
        <td>Float</td>
        <td>Click through rate for received impressions; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>dt</code></td>
        <td>String</td>
        <td>Date (YYYY-MM-DD)</td>
      </tr>
      <tr>
        <td><code>ecpmEarned</code></td>
        <td>Float</td>
        <td>Earnings per 1000 impressions; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>ecpmSpent</code></td>
        <td>Float</td>
        <td>Cost per 1000 impressions; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>impressionsDelivered</code></td>
        <td>Integer</td>
        <td>Impressions delivered by the publisher; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>impressionsReceived</code></td>
        <td>Integer</td>
        <td>Impressions received by the advertiser; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>installDelivered</code></td>
        <td>Integer</td>
        <td>Installs delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>installRateDelivered</code></td>
        <td>Float</td>
        <td>Install rate; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>installRateReceived</code></td>
        <td>Float</td>
        <td>Install rate; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>installReceived</code></td>
        <td>Integer</td>
        <td>Installs received; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>moneyEarned</code></td>
        <td>Float</td>
        <td>Money earned; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>moneySpent</code></td>
        <td>Float</td>
        <td>Money spent; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>role</code></td>
        <td>String</td>
        <td>Role: advertiser or publisher</td>
      </tr>
      <tr>
        <td><code>videoCompletedDelivered</code></td>
        <td>Integer</td>
        <td>Completed video views delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>videoCompletedReceived</code></td>
        <td>Integer</td>
        <td>Completed video views received; 0 for publishers</td>
      </tr>
    </table>
  </details>
</div>

<div class="alert alert-light" role="alert">
  <details>
  <summary><b>groupBy = campaign_type</b></summary>
  <br>
    <b>Synchronous</b> response, <b>JSON</b> result
    <br><br>
        <table>
      <tr>
        <th>Parameter</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
        <td><code>adTypeId</code></td>
        <td>String</td>
        <td>Ad type ID; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaign</code></td>
        <td>String</td>
        <td>Campaign name; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignId</code></td>
        <td>String</td>
        <td>Campaign ID; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignSubType</code></td>
        <td>String</td>
        <td>Campaign subtype</td>
      </tr>
      <tr>
        <td><code>campaignTarget</code></td>
        <td>String</td>
        <td>Campaign target; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignType</code></td>
        <td>String</td>
        <td>Campaign type</td>
      </tr>
      <tr>
        <td><code>clicksDelivered</code></td>
        <td>Integer</td>
        <td>Clicks delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>clicksReceived</code></td>
        <td>Integer</td>
        <td>Clicks received; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>cpcvEarned</code></td>
        <td>Float</td>
        <td>Ratio of money earned from completed video views to completed video views; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>cpcvSpent</code></td>
        <td>Float</td>
        <td>Ratio of money spent on completed video views to the number of completed video views; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>creative</code></td>
        <td>String</td>
        <td>Creative; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>ctrDelivered</code></td>
        <td>Float</td>
        <td>Click through rate for delivered impressions; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>ctrReceived</code></td>
        <td>Float</td>
        <td>Click through rate for received impressions; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>dt</code></td>
        <td>String</td>
        <td>Date (YYYY-MM-DD)</td>
      </tr>
      <tr>
        <td><code>ecpmEarned</code></td>
        <td>Float</td>
        <td>Earnings per 1000 impressions; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>ecpmSpent</code></td>
        <td>Float</td>
        <td>Cost per 1000 impressions; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>impressionsDelivered</code></td>
        <td>Integer</td>
        <td>Impressions delivered by the publisher; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>impressionsReceived</code></td>
        <td>Integer</td>
        <td>Impressions received by the advertiser; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>installDelivered</code></td>
        <td>Integer</td>
        <td>Installs delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>installRateDelivered</code></td>
        <td>Float</td>
        <td>Install rate; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>installRateReceived</code></td>
        <td>Float</td>
        <td>Install rate; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>installReceived</code></td>
        <td>Integer</td>
        <td>Installs received; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>moneyEarned</code></td>
        <td>Float</td>
        <td>Money earned; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>moneySpent</code></td>
        <td>Float</td>
        <td>Money spent; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>role</code></td>
        <td>String</td>
        <td>Role: advertiser or publisher</td>
      </tr>
      <tr>
        <td><code>videoCompletedDelivered</code></td>
        <td>Integer</td>
        <td>Completed video views delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>videoCompletedReceived</code></td>
        <td>Integer</td>
        <td>Completed video views received; 0 for publishers</td>
      </tr>
    </table>
  </details>
</div>

<div class="alert alert-light" role="alert">
  <details>
  <summary><b>groupBy = date</b></summary>
  <br>
    <b>Synchronous</b> response, <b>JSON</b> result
    <br><br>
        <table>
      <tr>
        <th>Parameter</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
        <td><code>adTypeId</code></td>
        <td>String</td>
        <td>Ad type ID; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaign</code></td>
        <td>String</td>
        <td>Campaign name; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignId</code></td>
        <td>String</td>
        <td>Campaign ID; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignSubType</code></td>
        <td>String</td>
        <td>Campaign subtype; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignTarget</code></td>
        <td>String</td>
        <td>Campaign target; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignType</code></td>
        <td>String</td>
        <td>Campaign type; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>clicksDelivered</code></td>
        <td>Integer</td>
        <td>Clicks delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>clicksReceived</code></td>
        <td>Integer</td>
        <td>Clicks received; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>cpcvEarned</code></td>
        <td>Float</td>
        <td>Ratio of money earned from completed video views to completed video views; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>cpcvSpent</code></td>
        <td>Float</td>
        <td>Ratio of money spent on completed video views to the number of completed video views; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>creative</code></td>
        <td>String</td>
        <td>Creative; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>ctrDelivered</code></td>
        <td>Float</td>
        <td>Click through rate for delivered impressions; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>ctrReceived</code></td>
        <td>Float</td>
        <td>Click through rate for received impressions; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>dt</code></td>
        <td>String</td>
        <td>Date (YYYY-MM-DD)</td>
      </tr>
      <tr>
        <td><code>ecpmEarned</code></td>
        <td>Float</td>
        <td>Earnings per 1000 impressions; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>ecpmSpent</code></td>
        <td>Float</td>
        <td>Cost per 1000 impressions; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>impressionsDelivered</code></td>
        <td>Integer</td>
        <td>Impressions delivered by the publisher; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>impressionsReceived</code></td>
        <td>Integer</td>
        <td>Impressions received by the advertiser; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>installDelivered</code></td>
        <td>Integer</td>
        <td>Installs delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>installRateDelivered</code></td>
        <td>Float</td>
        <td>Install rate; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>installRateReceived</code></td>
        <td>Float</td>
        <td>Install rate; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>installReceived</code></td>
        <td>Integer</td>
        <td>Installs received; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>moneyEarned</code></td>
        <td>Float</td>
        <td>Money earned; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>moneySpent</code></td>
        <td>Float</td>
        <td>Money spent; 0 for publishers</td>
      </tr>
      <tr>
        <td><code>role</code></td>
        <td>String</td>
        <td>Role: advertiser or publisher; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>videoCompletedDelivered</code></td>
        <td>Integer</td>
        <td>Completed video views delivered; 0 for advertisers</td>
      </tr>
      <tr>
        <td><code>videoCompletedReceived</code></td>
        <td>Integer</td>
        <td>Completed video views received; 0 for publishers</td>
      </tr>
    </table>
  </details>
</div>

<div class="alert alert-light" role="alert">
  <details>
  <summary><b>groupBy = target_creative</b></summary>
  <br>
    <b>Synchronous</b> response, <b>JSON</b> result
    <br><br>
    <table>
      <tr>
        <th>Parameter</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
        <td><code>app</code></td>
        <td>String</td>
        <td>App ID</td>
      </tr>
      <tr>
        <td><code>campaign</code></td>
        <td>String</td>
        <td>Campaign name; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignSubType</code></td>
        <td>String</td>
        <td>Campaign subtype; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignTarget</code></td>
        <td>String</td>
        <td>Campaign target; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>campaignType</code></td>
        <td>String</td>
        <td>Campaign type; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>clicksReceived</code></td>
        <td>Integer</td>
        <td>Clicks received</td>
      </tr>
      <tr>
        <td><code>cpcvSpent</code></td>
        <td>Float</td>
        <td>Ratio of money spent on completed video views to the number of completed video views</td>
      </tr>
      <tr>
        <td><code>creative</code></td>
        <td>String</td>
        <td>Creative; always empty string on this groupBy</td>
      </tr>
      <tr>
        <td><code>ctrReceived</code></td>
        <td>Float</td>
        <td>Click through rate for received impressions</td>
      </tr>
      <tr>
        <td><code>dt</code></td>
        <td>String</td>
        <td>Date (YYYY-MM-DD)</td>
      </tr>
      <tr>
        <td><code>ecpmSpent</code></td>
        <td>Float</td>
        <td>Cost per 1000 impressions</td>
      </tr>
      <tr>
        <td><code>impressionsReceived</code></td>
        <td>Integer</td>
        <td>Impressions received by the advertiser</td>
      </tr>
      <tr>
        <td><code>installRateReceived</code></td>
        <td>Float</td>
        <td>Install rate</td>
      </tr>
      <tr>
        <td><code>installReceived</code></td>
        <td>Integer</td>
        <td>Installs received</td>
      </tr>
      <tr>
        <td><code>moneySpent</code></td>
        <td>Float</td>
        <td>Money spent</td>
      </tr>
      <tr>
        <td><code>platform</code></td>
        <td>String</td>
        <td>Platform: iOS, Google Play or Amazon</td>
      </tr>
      <tr>
        <td><code>videoCompletedReceived</code></td>
        <td>Integer</td>
        <td>Completed video views received</td>
      </tr>
    </table>
  </details>
</div>

<div class="alert alert-light" role="alert">
  <details>
  <summary><b>groupBy = app</b></summary>
  <br>
    <b>Asynchronous</b> response, <b>CSV</b> result
    <br><br>
    The endpoint will return a simple JSON object containing a job ID like <br>
    <code>{“jobId”: “abbfc348916av461aavb125a“}</code><br>
    This job id can then be used in conjunction with the <code>/jobs</code> endpoint to retrieve the resulting CSV file. 
    <br><br>
    <table>
      <tr>
        <th>Parameter</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
        <td>Ad Type</td>
        <td>String</td>
        <td>1=<code>interstitial</code>, 2=<code>more_apps</code>, 3=<code>in_play</code>, 4=<code>rewarded_video</code>, 5=<code>video_interstitial</code>, 8=<code>intersitial placement</code>, 9=<code>rewarded placement</code>, 10=<code>banner</code></td>
      </tr>
      <tr>
        <td>Campaign Type</td>
        <td>String</td>
        <td>Campaign Type</td>
      </tr>
      <tr>
        <td>Clicks</td>
        <td>Integer</td>
        <td>Clicks</td>
      </tr>
      <tr>
        <td>Completed View</td>
        <td>Integer</td>
        <td>Completed video views</td>
      </tr>
      <tr>
        <td>CTR</td>
        <td>Float</td>
        <td>Click through rate</td>
      </tr>
      <tr>
        <td>Date</td>
        <td>String</td>
        <td>Date (YYYY-MM-DD)</td>
      </tr>
      <tr>
        <td>eCPM Earned</td>
        <td>Float</td>
        <td>Earnings per 1000 impressions</td>
      </tr>
      <tr>
        <td>eCPM Spent</td>
        <td>Float</td>
        <td>Cost per 1000 impressions</td>
      </tr>
      <tr>
        <td>From App Bundle</td>
        <td>String</td>
        <td>From app bundle</td>
      </tr>
      <tr>
        <td>From App ID</td>
        <td>String</td>
        <td>From app ID</td>
      </tr>
      <tr>
        <td>From App Name</td>
        <td>String</td>
        <td>From app name</td>
      </tr>
      <tr>
        <td>From App Platform</td>
        <td>String</td>
        <td>From app platform</td>
      </tr>
      <tr>
        <td>From Campaign ID</td>
        <td>String</td>
        <td>From campaign ID</td>
      </tr>
      <tr>
        <td>From Campaign Name</td>
        <td>String</td>
        <td>From campaign name</td>
      </tr>
      <tr>
        <td>Impressions</td>
        <td>Integer</td>
        <td>Impressions</td>
      </tr>
      <tr>
        <td>Installs</td>
        <td>Integer</td>
        <td>Installs</td>
      </tr>
      <tr>
        <td>IR</td>
        <td>Float</td>
        <td>Install rate</td>
      </tr>
      <tr>
        <td>Money Earned</td>
        <td>Integer</td>
        <td>Money earned</td>
      </tr>
      <tr>
        <td>Money Spent</td>
        <td>Integer</td>
        <td>Money spent</td>
      </tr>
      <tr>
        <td>To App Bundle</td>
        <td>String</td>
        <td>To app bundle</td>
      </tr>
      <tr>
        <td>To App ID</td>
        <td>String</td>
        <td>To app id</td>
      </tr>
      <tr>
        <td>To App Name</td>
        <td>String</td>
        <td>To app name</td>
      </tr>
      <tr>
        <td>To App Platform</td>
        <td>String</td>
        <td>To app platfrom</td>
      </tr>
      <tr>
        <td>To Campaign ID</td>
        <td>String</td>
        <td>To campaign ID</td>
      </tr>
      <tr>
        <td>To Campaign Name</td>
        <td>String</td>
        <td>To campaign name</td>
      </tr>
    </table>
  </details>
</div>

<div class="alert alert-light" role="alert">
  <details>
  <summary><b>groupBy = country</b></summary>
  <br>
    <b>Asynchronous</b> response, <b>CSV</b> result
    <br><br>
    The endpoint will return a simple JSON object containing a job ID like <br>
    <code>{“jobId”: “abbfc348916av461aavb125a“}</code><br>
    This job id can then be used in conjunction with the <code>/jobs</code> endpoint to retrieve the resulting CSV file. 
    <br><br>
    <table>
      <tr>
        <th>Parameter</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
        <td>Ad Type</td>
        <td>String</td>
        <td>1=<code>interstitial</code>, 2=<code>more_apps</code>, 3=<code>in_play</code>, 4=<code>rewarded_video</code>, 5=<code>video_interstitial</code>, 8=<code>intersitial placement</code>, 9=<code>rewarded placement</code>, 10=<code>banner</code></td>
      </tr>
      <tr>
        <td>App Bundle</td>
        <td>String</td>
        <td>App bundle</td>
      </tr>
      <tr>
        <td>App ID</td>
        <td>String</td>
        <td>App id</td>
      </tr>
      <tr>
        <td>App Name</td>
        <td>String</td>
        <td>App name</td>
      </tr>
      <tr>
        <td>Campaign ID</td>
        <td>String</td>
        <td>Campaign ID</td>
      </tr>
      <tr>
        <td>Campaign Name</td>
        <td>String</td>
        <td>Campaign name</td>
      </tr>
      <tr>
        <td>Campaign Subtype</td>
        <td>String</td>
        <td>Campaign subtype</td>
      </tr>
      <tr>
        <td>Campaign Type</td>
        <td>String</td>
        <td>Campaign Type</td>
      </tr>
      <tr>
        <td>Clicks</td>
        <td>Integer</td>
        <td>Clicks</td>
      </tr>
      <tr>
        <td>Completed Views</td>
        <td>Integer</td>
        <td>Completed video views</td>
      </tr>
      <tr>
        <td>Country</td>
        <td>String</td>
        <td>Country</td>
      </tr>
      <tr>
        <td>CTR</td>
        <td>Float</td>
        <td>Click through rate</td>
      </tr>
      <tr>
        <td>Date</td>
        <td>String</td>
        <td>Date (YYYY-MM-DD)</td>
      </tr>
      <tr>
        <td>eCPM Earned</td>
        <td>Float</td>
        <td>Earnings per 1000 impressions</td>
      </tr>
      <tr>
        <td>eCPM Spent</td>
        <td>Float</td>
        <td>Cost per 1000 impressions</td>
      </tr>
      <tr>
        <td>Impressions</td>
        <td>Integer</td>
        <td>Impressions</td>
      </tr>
      <tr>
        <td>Installs</td>
        <td>Integer</td>
        <td>Installs</td>
      </tr>
      <tr>
        <td>IR</td>
        <td>Float</td>
        <td>Install rate</td>
      </tr>
      <tr>
        <td>Money Earned</td>
        <td>Integer</td>
        <td>Money earned</td>
      </tr>
      <tr>
        <td>Money Spent</td>
        <td>Integer</td>
        <td>Money spent</td>
      </tr>
      <tr>
        <td>Platform</td>
        <td>String</td>
        <td>Platfrom: iOS, Google Play or Amazon</td>
      </tr>
      <tr>
        <td>Role</td>
        <td>String</td>
        <td>publisher or advertiser</td>
      </tr>
    </table>
  </details>
</div>

<div class="alert alert-light" role="alert">
  <details>
  <summary><b>groupBy = creative</b></summary>
  <br>
    <b>Asynchronous</b> response, <b>CSV</b> result
    <br><br>
    The endpoint will return a simple JSON object containing a job ID like <br>
    <code>{“jobId”: “abbfc348916av461aavb125a“}</code><br>
    This job id can then be used in conjunction with the <code>/jobs</code> endpoint to retrieve the resulting CSV file. 
    <br><br>
    <table>
      <tr>
        <th>Parameter</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
        <td>Ad Type</td>
        <td>String</td>
        <td>1=<code>interstitial</code>, 2=<code>more_apps</code>, 3=<code>in_play</code>, 4=<code>rewarded_video</code>, 5=<code>video_interstitial</code>, 8=<code>intersitial placement</code>, 9=<code>rewarded placement</code>, 10=<code>banner</code></td>
      </tr>
      <tr>
        <td>Campaign Type</td>
        <td>String</td>
        <td>Campaign Type</td>
      </tr>
      <tr>
        <td>Clicks</td>
        <td>Integer</td>
        <td>Clicks</td>
      </tr>
      <tr>
        <td>Completed View</td>
        <td>Integer</td>
        <td>Completed video views</td>
      </tr>
      <tr>
        <td>Creative</td>
        <td>String</td>
        <td>Creative</td>
      </tr>
      <tr>
        <td>CTR</td>
        <td>Float</td>
        <td>Click through rate</td>
      </tr>
      <tr>
        <td>Date</td>
        <td>String</td>
        <td>Date (YYYY-MM-DD)</td>
      </tr>
      <tr>
        <td>eCPM Earned</td>
        <td>Float</td>
        <td>Earnings per 1000 impressions</td>
      </tr>
      <tr>
        <td>eCPM Spent</td>
        <td>Float</td>
        <td>Cost per 1000 impressions</td>
      </tr>
      <tr>
        <td>From App Bundle</td>
        <td>String</td>
        <td>From app bundle</td>
      </tr>
      <tr>
        <td>From App ID</td>
        <td>String</td>
        <td>From app ID</td>
      </tr>
      <tr>
        <td>From App Name</td>
        <td>String</td>
        <td>From app name</td>
      </tr>
      <tr>
        <td>From App Platform</td>
        <td>String</td>
        <td>From app platform</td>
      </tr>
      <tr>
        <td>From Campaign ID</td>
        <td>String</td>
        <td>From campaign ID</td>
      </tr>
      <tr>
        <td>From Campaign Name</td>
        <td>String</td>
        <td>From campaign name</td>
      </tr>
      <tr>
        <td>Impressions</td>
        <td>Integer</td>
        <td>Impressions</td>
      </tr>
      <tr>
        <td>Installs</td>
        <td>Integer</td>
        <td>Installs</td>
      </tr>
      <tr>
        <td>IR</td>
        <td>Float</td>
        <td>Install rate</td>
      </tr>
      <tr>
        <td>Money Earned</td>
        <td>Integer</td>
        <td>Money earned</td>
      </tr>
      <tr>
        <td>Money Spent</td>
        <td>Integer</td>
        <td>Money spent</td>
      </tr>
      <tr>
        <td>Role</td>
        <td>String</td>
        <td>publisher or advertiser</td>
      </tr>
      <tr>
        <td>To App Bundle</td>
        <td>String</td>
        <td>To app bundle</td>
      </tr>
      <tr>
        <td>To App ID</td>
        <td>String</td>
        <td>To app id</td>
      </tr>
      <tr>
        <td>To App Name</td>
        <td>String</td>
        <td>To app name</td>
      </tr>
      <tr>
        <td>To App Platform</td>
        <td>String</td>
        <td>To app platfrom</td>
      </tr>
      <tr>
        <td>To Campaign ID</td>
        <td>String</td>
        <td>To campaign ID</td>
      </tr>
      <tr>
        <td>To Campaign Name</td>
        <td>String</td>
        <td>To campaign name</td>
      </tr>
    </table>
  </details>
</div>

***

### App Analytics

The app analytics endpoint provides detailed reports that can be grouped by app, ad type,  ad location, campaign type, county date, or platform.

<ul class="tab" data-tab="a4c6ec69-4529-4038-87e5-0705abbed3ba" data-name="apiAppAnalyticsURL">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="a4c6ec69-4529-4038-87e5-0705abbed3ba" data-name="apiAppAnalyticsURL">
  
      <li class="active">
<pre><code class="language-url">GET https://api.chartboost.com/v5/analytics/app HTTP/1.1
Host: api.chartboost.com
Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/json;charset=UTF-8

{
"dateMin": "2024-01-01",
"dateMax": "2024-03-01"
}
</code></pre>
</li>
  
      <li>
<pre><code class="language-url">https://v2.whapi.chartboost.com/metrics/app
</code></pre>
</li>
  
</ul>



For the version 5 and WHAPI endpoint, 
- data is available from January 1, 2018 when `groupBy=ad_location, ad_type, app (default), campaign, date, platform`
- data is available from June 16, 2020 when `groupBy=country`

#### Request Parameters

| Parameter   | Request type | Required? | Description                                                                                                   | Default |
| :---------- | :----------- | :-------- | :------------------------------------------------------------------------------------------------------------ | :------ |
| `aggregate` | String       | Optional  | Aggregate the results over time (daily, weekly, monthly)                                                      | Daily   |
| `appId`     | String       | Optional  | One or more (comma-separated) app IDs                                                                         | All     |
| `dateMax`   | String       | Required  | The maximum date (YYYY-MM-DD)                                                                                 | N/A     |
| `dateMin`   | String       | Required  | The minimum date (YYYY-MM-DD)                                                                                 | N/A     |
| `groupBy`   | String       | Optional  | One of the following: `app`, `ad_type`, `date`, `ad_location` (Publishers only), `platform`, `campaign_type`, `country` | None    |
| `platform`  | String       | Optional  | Any of the following: iOS, Google Play, Amazon<br><br>Note: For `groupBy=ad_type`, the old WHAPI can only accept one platform to filter by. The new WHAPI can accept a list of platforms to filter by.     | All     |
| `role`      | String       | Optional  | `advertiser `or `publisher`                                                                                   | Both    |
| `adTypeId` | String        | Optional  | Filter by ad type id with one or more of the following: 1, 4, 5, 7, 8, 9, 10 | N/A |

#### Example Request

<ul class="tab" data-tab="c358bed5-4b10-4967-9fd1-ab7b6addcc0d" data-name="apiAppAnalyticsRequest">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="c358bed5-4b10-4967-9fd1-ab7b6addcc0d" data-name="apiAppAnalyticsRequest">
  
      <li class="active">
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/app HTTP/1.1
Host: api.chartboost.com
Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/json;charset=UTF-8

{
"dateMin": "2024-01-01",
"dateMax": "2024-03-01"
}
</code></pre></div></div>
</li>
  
      <li>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/app?dateMin={Minimum date}&amp;dateMax={Maximum date}&amp;userId={Chartboost customer’s user ID}&amp;userSignature={CB customer’s user signature}
</code></pre></div></div>
</li>
  
</ul>




#### Response Fields

The API response will return a JSON with the following schema:

| Parameter                 | Description                                                                                                               | Returned for...                            |
| :------------------------ | :------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------- |
| `dt`                      | Date (YYYY-MM-DD)                                                                                                         | Everyone                                   |
| `appId`                   | Chartboost app ID                                                                                                         | Everyone                                   |
| `app`                     | App name                                                                                                                  | Everyone                                   |
| `appBundleId`             | Deprecated                                                                                                                | Everyone, not on `groupBy=country`         |
| `platform`                | iOS, Google Play, or Amazon                                                                                               | Everyone                                   |
| `campaignType`            | Campaign Type                                                                                                             | Everyone, not on `groupBy=country`         |
| `eventLocation`           | Event Location                                                                                                            | Everyone, not on `groupBy=country`         |
| `ad_type`                 | 1=`interstitial`, 4=`rewarded_video`, 5=`video_interstitial`, 7=`prefetch` 8=`interstitial_placement`, 9=`rewarded_placement`, 10=`banner`  | Everyone, not on `groupBy=date, app, campaign_type, country` |
| `bootups`                 | Number of times a user launches your app on a device                                                                      | Everyone, not on `groupBy=campaign_type, country` |
| `uniques`                 | Number of unique users                                                                                                    | Everyone, not on `groupBy=campaign_type, country` |
| `impressions`             | Impressions                                                                                                               | Everyone, not on `groupBy=campaign_type, country` |
| `impressionsDelivered`    | Impressions delivered by the publisher                                                                                    | Publishers, not on `groupBy=country`       |
| `impressionsReceived`     | Impressions received by the advertiser                                                                                    | Advertisers, not on `groupBy=country`      |
| `money`                   | Total money earned for publishers, spent for advertisers         | Everyone, only on `groupBy=country`        |
| `moneyEarned`             | Total money earned by publisher                          | Publishers   |
| `moneySpent`              | Total money spent by advertisers                         | Advertisers                                |
| `ecpm`                    | Earnings per 1,000 impressions | Everyone, only on `groupBy=country` |
| `ecpmEarned`              | Earnings per 1,000 impressions | Publishers, not on `groupBy=country` |
| `ecpmSpent`               | Cost per 1,000 impressions     | Advertisers, not on `groupBy=country`  |
| `cpcv`                    | Ratio of money earned from completed video views to the number of completed video views | Everyone, only on `groupBy=country` |
| `cpcvEarned`              | Ratio of money earned from completed video views to the number of completed video views | Publishers, not on `groupBy=country` |
| `cpcvSpent`               | Ratio of money spent on completed video views to the number of completed video views | Advertisers, not on `groupBy=country` |
| `clicks` | Total number of clicks | Everyone, only on `groupBy=country` |
| `clicksDelivered`         | Clicks delivered to publishers         | Publishers, not on `groupBy=country`  |
| `clicksReceived`          | Clicks received by advertisers  | Advertisers, not on `groupBy=country`        |
| `installs` | Converted installs | Everyone, only on `groupBy=country` |
| `allInstalls`             | Number of total installs accrued regardless of source (Chartboost or otherwise)  | Everyone  |
| `installDelivered`        | Installs delivered to publisher | Publishers, not on `groupBy=country` |
| `installReceived`         | Installs received by advertiser  | Advertisers, not on `groupBy=country` |
| ctr | Clickthrough rate | Everyone, only on `groupBy=country` |
| `ctrlDelivered`           | Clickthrough rate for delivered impressions | Publishers, not on `groupBy=country` |
| `ctrReceived`             | Clickthrough rate for received impressions  | Advertisers, not on `groupBy=country` |
| `videoCompleted`          | Total completed video | Everyone, only on `groupBy=country` |
| `videoCompletedDelivered` | Completed video views delivered | Publishers, not on `groupBy=country` |
| `VideoCompletedReceived`  | Completed video views received  | Advertisers, not on `groupBy=country` |
| `installRate`             | Install rate | Everyone, only on `groupBy=country` |
| `installRateDelivered`    | Install rate delivered| Publishers, not on `groupBy=country` |
| `installRateReceived`     | Install rate received | Advertisers, not on `groupBy=country` |

***

### Export Installs

The export installs endpoint provides a full list of all installs received and/or provided. Please note that this endpoint will always return a Job ID from the Queued Analytics system. The result can be retrieved by sending the job ID to the `/jobs` endpoint.

<ul class="tab" data-tab="a446f32f-826a-42b9-a50c-cb10cf79cd9d" data-name="apiAnalyticsExportInstallURL">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="a446f32f-826a-42b9-a50c-cb10cf79cd9d" data-name="apiAnalyticsExportInstallURL">
  
      <li class="active">
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/install
</code></pre></div></div>
</li>
  
      <li>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/install
</code></pre></div></div>
</li>
  
</ul>



For the version 5 and WHAPI endpoint, data is available from January 1, 2018.

#### Request Parameters

| Parameter      | Request type | Required? | Description                                    | Default       |
| :------------- | :----------- | :-------- | :--------------------------------------------- | :------------ |
| `campaignIds`  | String       | Optional  | One or more (comma-separated) campaign IDs     | All campaigns |
| `campaignType` | String       | Optional  | Campaign type. One or more of the following: `network`, `direct_deal`, `cross_promo`, `exchange`, `helium` | All           |
| `appIds` | String | Optional | Filter by App Id | N/A |
| `dateMax`      | String       | Required  | The maximum date (YYYY-MM-DD)                  | N/A           |
| `dateMin`      | String       | Required  | The minimum date (YYYY-MM-DD)                  | N/A           |
| `platform`     | String       | Optional  | Any of the following: iOS, Google Play, Amazon | All           |
| `role`         | String       | Optional  | `advertiser` or `publisher`                    | Both          |
| `adTypeId` |  String       | Optional  | Filter by Ad Type Id. One or more of the following: 1, 4, 5, 7, 8, 9, 10 | None |

#### Example Request

<ul class="tab" data-tab="1789fca2-5784-45ca-bb6e-9d0a504ae6dc" data-name="apiAnalyticsExportInstallsRequest">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="1789fca2-5784-45ca-bb6e-9d0a504ae6dc" data-name="apiAnalyticsExportInstallsRequest">
  
      <li class="active">
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/install HTTP/1.1
Host: api.chartboost.com
Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/json;charset=UTF-8

{
  "dateMin": "2024-01-01",
  "dateMax": "2024-03-01"
}
</code></pre></div></div>
</li>
  
      <li>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/install?dateMin={Minimum date}&amp;dateMax={Maximum date}&amp;userId={Chartboost customer’s user ID}&amp;userSignature={CB customer’s user signature}
</code></pre></div></div>
</li>
  
</ul>





#### Response Fields

For asynchronous response, a CSV will be returned.

The export installs endpoint will return a JSON object containing a job ID (e.g. `{“jobId”: “abbfc348916av461aavb125a“}`). This job ID can be used in conjunction with the `/jobs` endpoint to retrieve the resulting CSV file.

| Parameter          | Description                                                                                            | Returned for…                                                 |
| :----------------- | :----------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |
| Ad Type            | 1=interstitial, 4=rewarded video, 5=video interstitial, 7=prefetch 8=intersitial placement, 9=rewarded placement, 10=banner | Everyone                                                      |
| Country            | Two-letter country code of device                                                                      | Everyone                                                      |
| Click Timestamp    | Date & time (DD-MM-YYYY HH:MM:SS)                                                                      | Everyone                                                      |
| Date               | Date & time (DD-MM-YYYY HH:MM:SS)                                                                      | Everyone                                                      |
| From App Bundle    | Publishing app bundle ID                                                                               | Everyone                                                      |
| From App ID        | Publishing app ID                                                                                      | Everyone                                                      |
| From App Name      | Publishing app name                                                                                    | Everyone                                                      |
| From App Platform  | Publishing app platform                | Everyone |
| From Campaign ID   | Publishing campaign ID                                                                                 | Publishers                                                    |
| From Campaign Name | Publishing campaign name                                                                               | Publishers                                                    |
| From Campaign Type | Campaign type. One or more of the following: `network`, `direct_deal`, `cross_promo`, `exchange`, `helium`  | Publishers                                                    |
| To App Bundle      | Advertising app bundle ID                                                                              | Everyone                                                      |
| To App ID          | Advertising app ID                                                                                     | Everyone                                                      |
| To App Name        | Advertising app name                                                                                   | Everyone                                                      |
| To App Platform | App platform. Any of the following: iOS, Google Play, Amazon | Everyone |
| To Campaign ID     | Advertising campaign ID                                                                                | Advertisers                                                   |
| To Campaign Name   | Advertising campaign name                                                                              | Advertisers                                                   |
| To Campaign Target | Advertising campaign target ID                                                                         | Everyone                                                      |
| To Campaign Type   | Campaign type. One or more of the following: `network`, `direct_deal`, `cross_promo`, `exchange`, `helium` | Advertisers                                                   |
| UUID               | Device Universal Unique Identifier (if available)                                                      | Everyone (Publisher only if Behavioral Targeting is disabled) |
| IFA                | iOS Identifier for Advertisers (if iOS 10 Limit Ad Tracking is disabled)                               | Everyone (Publisher only if Behavioral Targeting is disabled) |
| MAC                | MAC address (Deprecated; nothing will be returned)                                                     | N/A |
| GAID               | Google Advertising ID      | Everyone (Publisher only if Behavioral Targeting is disabled) |
| Model              | Device model                                                                                           | Everyone                                                      |
| OS                 | Device operating system                                                                                | Everyone                                                      |
| Cost Type          | Advertising bid type [Learn more about bid types](/en/faq/advertising/)  | Everyone                                                      |
| Cost Value         | Advertising bid amount                                                                                 | Everyone                                                      |

***

### App Analytics grouped by country

The `appcountry` endpoint is a specially designed endpoint to return clean analytics data at the app, date, and country level and can also be used on behalf of Chartboost customers by third-party attribution and mediation services that require country-level data.

<ul class="tab" data-tab="c2d30305-9726-475f-8720-932f117566fc" data-name="apiAppAnalyticsByCountryURL">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="c2d30305-9726-475f-8720-932f117566fc" data-name="apiAppAnalyticsByCountryURL">
  
      <li class="active">
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/appcountry
</code></pre></div></div>
</li>
  
      <li>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/appcountry
</code></pre></div></div>
</li>
  
</ul>



For the version 5 and WHAPI endpoint, data is available from June 16, 2020.

<div class="alert alert-warning" role="alert">
  <b>Caution:</b><br>
  <li>You can expect the full data for a previous calendar day to be available 2 hours after that date is completed in most cases. For example, you can expect that the data for a day ending 0:00 AM PST (7:00 AM UTC) will be completely available after 2:00 AM PST (9:00 AM UTC).</li>
  <li><b>Note for mediation networks:</b> We strongly recommend that you omit the <code>campaignType</code> field, as the API will automatically return results for <code>network</code>.</li>
  <li>Please note that there might be a discrepancy between app and campaign endpoints and your dashboard analytics. Use the campaign endpoint and group by <code>country</code> to retrieve <code>app</code>, <code>country</code>, and <code>ad_type data</code>.</li>
  <li>While data returned by this endpoint is typically only 1-3 hours delayed, in extreme cases it may take up to 9 hours after a day has ended for that day’s complete data to become available to this API.</li>
  <li>By default, data from this API segments calendar days by UTC time.</li>
  <li>Any <code>adLocation</code> sent with empty <code>""</code> string value via SDK are aggregated under <code>Default</code>.</li>
</div>

#### Request Parameters

|Parameter|Request Type|Required?|Description|Default|
|--|--|--|--|--|
|`appIds`|String|Optional|One or more (comma-separated) app IDs|All apps|
|`dateMin`|String|Required|The minimum date (YYYY-MM-DD)|N/A|
|`dateMax`|String|Required|The maximum date (YYYY-MM-DD)|N/A|
|`campaignType`|String|Optional|Campaign type. One or more of the following: `network`, `direct_deal`, `cross_promo`, `exchange`, `helium`|`network`|
|`adTypeIds`|String|Optional|One or more (comma-separated) ad type IDs: 1,4,5,7,8,9,10 | N/A |
|`role`|String|Optional|`advertiser` or `publisher`|`publisher`|
|`timezone`|String|Optional|`utc` or `pst`|`pst`|
|`adLocation`|String|Optional|Filter by platform. One or more of the following: iOS, Google Play, Amazon.  {::nomarkdown} <br><b>Case #1:</b> <code>(adLocation=\<value which is not 'all'>)</code> shows results aggregated by each adLocation presented ONLY for the specified adLocation(s). Information for any adLocation(s) is only available if the adLocation(s) is one of the Top 100 adLocations used by the Publisher App. No data is returned for the remaining adLocation(s).  <br> <b>Case #2:</b> <code>(adLocation='all')</code> shows results broken down by the Top 100 adLocation(s) for a Publisher App with the remaining data being aggregated under <code>adLocation='Default' </code>  <br> <b>Case #3:</b> <code>(adLocation= empty or not-passed)</code> aggregates all data under <code>adLocation='overall'</code>. No breakdown by adLocation is provided.{:/}|see case #3|

<div class="alert alert-warning" role="alert">
  <b>Caution:</b> <code>adLocation</code> values must cross a small threshold of activity (generally around 10 different ad creatives displayed), otherwise they will not be broken out and instead aggregated under <code>Default</code>.
</div>

#### Example Request

<ul class="tab" data-tab="91710a9c-dc1c-4c71-8f9e-f3b5ae41acb1" data-name="apiAppAnalyticsByCountryRequest">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="91710a9c-dc1c-4c71-8f9e-f3b5ae41acb1" data-name="apiAppAnalyticsByCountryRequest">
  
      <li class="active">
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/appcountry HTTP/1.1
Host: api.chartboost.com
Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/json;charset=UTF-8

{
  "dateMin": "2024-01-01",
  "dateMax": "2024-03-01"
}
</code></pre></div></div>
</li>
  
      <li>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/appcountry?dateMin={Minimum date}&amp;dateMax={Maximum date}&amp;userId={Chartboost customer’s user ID}&amp;userSignature={CB customer’s user signature}
</code></pre></div></div>
</li>
  
</ul>





#### Response Fields

| Parameter                 | Description                                                                                                               | Returned for… |
| :------------------------ | :------------------------------------------------------------------------------------------------------------------------ | :------------ |
| `adLocation`              | The location of the ad being published in the app. Advertisers will see `default` in the response field. | Everyone      |
| `adType`                  | 1=Interstitial Static; 4=Rewarded Video; 5=Interstitial Video; 7= Prefetch; 8= Unified Interstitial; 9= Unified Rewarded; 10= Banner | Everyone      |
| `app`                     | App name                                                                                                                  | Everyone      |
| `appId`     |               App ID | Everyone |
| `campaignType`            | Campaign type. One or more of the following: `network`, `direct_deal`, `cross_promo`, `exchange`, `helium`  | Everyone      |
| `clicksDelivered`         | Clicks delivered to publishers                                                                                     | Publishers    |
| `clicksReceived`          | Clicks received by advertisers                                                                             | Advertisers   |
| `CountryCode`             | Two-letter country code, or “unknown”                                                                                     | Everyone      |
| `cpcvEarned`              | Ratio of money earned from completed video views to the number of completed video views                            | Publishers    |
| `cpcvSpent`               | Ratio of money spent on completed video views to the number of completed video views                                          | Advertisers   |
| `ctrDelivered`            | Click-through rate delivered to publishers                                                                           | Publishers    |
| `ctrReceived`             | Click-through rate received by advertisers                                                                              | Advertisers   |
| `dt`                      | Date (YYYY-MM-DD)                                                                                                         | Everyone      |
| `ecpmEarned`              | Earnings per 1000 impressions                                                                                             | Publishers    |
| `ecpmSpent`               | Cost per 1000 impressions                                                                                                 | Advertisers   |
| `impressionsDelivered`    | Impressions delivered to publisher                                                                              | Publishers    |
| `impressionsReceived`     | Impressions received by advertiser                                                                                        | Advertisers   |
| `installRateDelivered`    | Install rate delivered to publisher                                                                                       | Publishers    |
| `InstallRateReceived`     | Install rate received by advertiser                                                                                      | Advertisers   |
| `installsDelivered`       | Installs delivered to publisher                                                                                            | Publishers    |
| `installsReceived`        | Installs received by advertiser                                                                                         | Advertisers   |
| `moneyEarned`             | Money earned                                                                                                              | Publishers    |
| `moneySpent`              | Money spent                                                                                                               | Advertisers   |
| `platform`                | iOS, Google Play, or Amazon                                                                                               | Everyone      |
| `videoCompletedDelivered` | Completed video views delivered to publisher                                                                           | Publishers    |
| `videoCompletedReceived`  | Completed video views received by advertiser                                                                               | Advertisers   |

***

### Monetization

<ul class="tab" data-tab="a64dcd12-790e-4a18-836b-3c89eb911daf" data-name="apiAnalyticsMonetizationURL">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="a64dcd12-790e-4a18-836b-3c89eb911daf" data-name="apiAnalyticsMonetizationURL">
  
      <li class="active">
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/monetization
</code></pre></div></div>
</li>
  
      <li>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/monetization
</code></pre></div></div>
</li>
  
</ul>



For the version 5 and WHAPI endpoint, data is available from January 1, 2018.

#### Request Parameters

|Parameter|Request Type|Required?|Description|Default|
|--|--|--|--|--|
| `appIds` | String | Optional | One or more (comma-separated) app IDs | All apps |
| `dateMin` | String | Required | The minimum date (YYYY-MM-DD) | N/A |
| `dateMax` | String | Required | The maximum date (YYYY-MM-DD) | N/A |
| `role` | String | Optional | `advertiser` or `publisher` | `advertiser` |

#### Example Request

<ul class="tab" data-tab="c0ba6fb6-bbcb-4aac-b2fb-1b13e1eb8f5c" data-name="apiAnalyticsMonetizationRequest">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="c0ba6fb6-bbcb-4aac-b2fb-1b13e1eb8f5c" data-name="apiAnalyticsMonetizationRequest">
  
      <li class="active">
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/monetization HTTP/1.1
Host: api.chartboost.com
Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/json;charset=UTF-8

{
  "dateMin": "2024-01-01",
  "dateMax": "2024-03-01"
}
</code></pre></div></div>
</li>
  
      <li>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/monetization?dateMin={Minimum date}&amp;dateMax={Maximum date}&amp;userId={Chartboost customer’s user ID}&amp;userSignature={CB customer’s user signature}
</code></pre></div></div>
</li>
  
</ul>



#### Response Fields

| Parameter                 | Description                                                                                                               | Returned for… |
| :------------------------ | :------------------------------------------------------------------------------------------------------------------------ | :------------ |
| `dt` | Date (YYYY-MM-DD) | Everyone |
| `app_id` | App ID | Everyone |
| `ad_spend` | The total amount of money spent on the last day of the reporting period (Today) [d0]. | Advertisers |
| `ad_spend_relative` | The relative change in ad spending from the first day to the previous day [d1]. , expressed as a percentage. | Advertisers |
| `ad_spend_d1` | Money spent on the second day of the reporting period (Yesterday) [d1]. | Advertisers |
| `ad_spend_d1_relative` | The relative change in ad spending on the second day of the reporting period (yesterday) compared to the same day of the previous week (7 days prior). | Advertisers |
| `ad_spend_d7_sum` | The total amount of money spent over the last 7 days, starting from the current day.  | Advertisers | 
| `ad_spend_d7_sum_relative` | The relative change in the total ad spending over the last 7 days, starting from yesterday, compared to the total ad spending during the same days of the previous week. | Advertisers |
| `ad_spend_d28_sum` | The total amount of money spent over the last 28 days, starting from the current day.  | Advertisers |
| `ad_spend_d28_sum_relative` |The relative change in the total ad spending over the last 28 days, starting from yesterday, compared to the total ad spending during the same days of the previous month (28 days prior to the last day of the current 28-day period).| Advertisers |
| `impressions` | The total amount of impressions on the last day of the reporting period (Today). | Everyone |
| `impressions_relative` | The relative change in impressions from the first day to the previous day [d1] , expressed as a percentage. | Everyone |
| `impressions_d7_sum` | The total number of ad impressions over the last 7 days, starting from the current day. | Everyone |
| `impressions_d7_sum_relative` | The relative change in the total ad impressions over the last 7 days, starting from yesterday, compared to the total impressions during the same days of the previous week (7 days prior to the last day of the current 7-day period). | Everyone |
| `revenue` | The total amount of money earned  on the last day of the reporting period (Today) [d0]. | Publishers |
| `revenue_relative` | The relative change in money earned on the second day of the reporting period (yesterday) compared to the same day of the previous week (7 days prior). | Publishers |
| `revenue_d1` | Money earned on the second day of the reporting period (Yesterday) [d1]. | Publishers |
| `revenue_d1_relative` | The relative change in money earned on the second day of the reporting period (yesterday) compared to the same day of the previous week (7 days prior). | Publishers |
| `revenue_d7_sum` | The total amount of money earned over the last 7 days, starting from the current day. | Publishers |
| `revenue_d7_sum_relative` | The relative change in the money earned over the last 7 days, starting from yesterday, compared to the total ad spending during the same days of the previous week. | Publishers |
| `revenue_d28_sum` | The total amount of money earned over the last 28 days, starting from the current day.  | Publishers |
| `revenue_d28_sum_relative` | The relative change in the total money earned over the last 28 days, starting from yesterday, compared to the total ad spending during the same days of the previous month (28 days prior to the last day of the current 28-day period). | Publishers |

***

### Jobs

After receiving `GET /campaign` and `GET /install` queries that use the `groupBy` parameter, the Chartboost API will respond with a job ID that serves as a confirmation that the request has been accepted and queued for processing.

<ul class="tab" data-tab="50bb2c00-25e9-4b59-ac19-46c57e7d199c" data-name="apiAnalyticsJobsURL">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="50bb2c00-25e9-4b59-ac19-46c57e7d199c" data-name="apiAnalyticsJobsURL">
  
      <li class="active">
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/jobs/[jobId]
</code></pre></div></div>
</li>
  
      <li>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/jobs/[jobId]
</code></pre></div></div>
</li>
  
</ul>


#### Request Parameters

| Parameter | Request Type | Requirement | Default | Description |
|-----------|--------------|-------------|---------|-------------|
| `status`  | String | Required | false | Whether the job's status is needed. Enter `true` for yes or `false` for no. |
| `csv_format` | String | Required | TSV | The format of the resulting file. One of the following: `CSV`, `TSV` |

#### Example Request

<ul class="tab" data-tab="8dbc5e82-b419-40f8-883d-b0c475490130" data-name="apiAnalyticsJobsRequest">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="8dbc5e82-b419-40f8-883d-b0c475490130" data-name="apiAnalyticsJobsRequest">
  
      <li class="active">
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/jobs HTTP/1.1
Host: api.chartboost.com
Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/json;charset=UTF-8

{
  "status": "true",
  "csv_format": "CSV"
}
</code></pre></div></div>
</li>
  
      <li>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/jobs?status={true or false}&amp;csv_format={CSV or TSV}&amp;userId={Chartboost customer’s user ID}&amp;userSignature={CB customer’s user signature}
</code></pre></div></div>
</li>
  
</ul>




#### Response Fields

**`status=true`**
**Synchronous** response, **JSON** result

| Parameter | Type | Description |
|-----------|------|-------------|
| status | String | Any of: `not found`, `failed, pending`, `expired`, `created` |
| message | String | Extra information on the status, not returned if `status=created` |

**`status=false`**
**Synchronous** response, **CSV** result

##### `groupBy=app`

**Asynchronous** response, **CSV** result  

The endpoint will return a JSON object containing a job ID (e.g. `{“jobId”: “abbfc348916av461aavb125a“}`). This job id can then be used in conjunction with the `/jobs` endpoint to retrieve the resulting CSV file.

| Parameter | Type | Description |
|-----------|------|-------------|
| Date | String | Date (YYYY-MM-DD) |
| To Campaign Name | String | To campaign name |
| To Campaign ID | String | To campaign ID |
| To App Name | String | To app name |
| To App ID | String | To app id |
| To App Bundle | String | To app bundle |
| To App Platform | String | To app platfrom  |
| From Campaign Name | String | From campaign name |
| From Campaign ID | String | From campaign ID |
| From App Name | String | From app name |
| From App ID | String | From app ID |
| From App Bundle | String | From app bundle |
| From App Platform | String | From app platform |
| Campaign Type | String | Campaign Type |
| Ad Type | String | 1=`interstitial`, 2=`more_apps`, 3=`in_play`, 4=`rewarded_video`, 5=`video_interstitial`, 8=`intersitial placement`, 9=`rewarded placement`, 10=`banner` |
| Impressions | Integer | Impressions |
| Clicks | Integer | Clicks |
| Installs | Integer | Installs |
| CTR | Float | Click through rate |
| IR | Float | Install rate |
| Money Earned | Integer | Money earned |
| eCPM Earned | Float | Earnings per 1000 impressions |
| Money Spent | Integer | Money spent |
| eCPM Spent | Float | Cost per 1000 impressions |
| Completed View | Integer | Completed video views |

##### `groupBy=country`

**Asynchronous** response, **CSV** result  

The endpoint will return a JSON object containing a job ID (e.g. `{“jobId”: “abbfc348916av461aavb125a“}`). This job id can then be used in conjunction with the `/jobs` endpoint to retrieve the resulting CSV file.

| Parameter | Type | Description |
|-----------|------|-------------|
| Date | String | Date (YYYY-MM-DD) |
| Country | String | Country |
| Campaign Name | String | Campaign name |
| Campaign ID | String | Campaign ID |
| Campaign Type | String | Campaign Type |
| Campaign Subtype | String | Campaign subtype |
| App Name | String | App name |
| App ID | String | App id |
| App Bundle | String | App bundle |
| Platform | String | Platfrom: iOS, Google Play or Amazon |
| Role | String | publisher or advertiser |
| Ad Type | String | 1=`interstitial`, 2=`more_apps`, 3=`in_play`, 4=`rewarded_video`, 5=`video_interstitial`, 8=`intersitial placement`, 9=`rewarded placement`, 10=`banner` |
| Impressions | Integer | Impressions |
| Clicks | Integer | Clicks |
| Installs | Integer | Installs |
| Completed Views | Integer | Completed video views |
| CTR | Float | Click through rate |
| IR | Float | Install rate |
| Money Earned | Integer | Money earned |
| eCPM Earned | Float | Earnings per 1000 impressions |
| Money Spent | Integer | Money spent |
| eCPM Spent | Float | Cost per 1000 impressions |

##### `groupBy=creative`

**Asynchronous** response, **CSV** result  

The endpoint will return a JSON object containing a job ID (e.g. `{“jobId”: “abbfc348916av461aavb125a“}`). This job id can then be used in conjunction with the `/jobs` endpoint to retrieve the resulting CSV file.

| Parameter | Type | Description |
|-----------|------|-------------|
| Date | String | Date (YYYY-MM-DD) |
| To Campaign Name | String | To campaign name |
| To Campaign ID | String | To campaign ID |
| To App Name | String | To app name |
| To App ID | String | To app id |
| To App Bundle | String | To app bundle |
| To App Platform | String | To app platfrom  | 
| From Campaign Name | String | From campaign name |
| From Campaign ID | String | From campaign ID | 
| From App Name | String | From app name |
| From App ID | String | From app ID |
| From App Bundle | String | From app bundle |
| From App Platform | String | From app platform |
| Campaign Type | String | Campaign Type |
| Creative | String | Creative |
| Role | String | publisher or advertiser |
| Ad Type | String | 1=`interstitial`, 2=`more_apps`, 3=`in_play`, 4=`rewarded_video`, 5=`video_interstitial`, 8=`intersitial placement`, 9=`rewarded placement`, 10=`banner` |
| Impressions | Integer | Impressions |
| Clicks | Integer | Clicks |
| Installs | Integer | Installs |
| CTR | Float | Click through rate |
| IR | Float | Install rate |
| Money Earned | Integer | Money earned |
| eCPM Earned | Float | Earnings per 1000 impressions |
| Money Spent | Integer | Money spent |
| eCPM Spent  | Float | Cost per 1000 impressions |
| Completed View | Integer | Completed video views |

##### Response

**Asynchronous** response, **CSV** result  

The endpoint will return a JSON object containing a job ID (e.g. `{“jobId”: “abbfc348916av461aavb125a“}`). This job id can then be used in conjunction with the `/jobs` endpoint to retrieve the resulting CSV file.

| Parameter | Type | Description |
|-----------|------|-------------|
| Date | String | Date (YYYY-MM-DD) |
| Click Timestamp | String | Timestamp |
| From Campaign Name | String | From campaign name |
| From Campaign ID | String | From campaign ID |
| From Campaign Type | String | From campaign type |
| From App Name | String | From app name |
| From App ID | String | From app ID |
| From App Bundle | String | From app bundle |
| From App Platform | String | From app platform |
| To Campaign Name | String | To campaign name |
| To Campaign ID | String | To campaign ID | 
| To Campaign Type | String | To campaign type | 
| To App Name | String | To app name |
| To App ID | String | To app id |
| To App Bundle | String | To app bundle |
| To App Platform | String | To app platfrom  |
| To Campaign Target | String | To campaign target |
| UUID | String | UUID |
| IFA | String |ID for advertisers |
|MAC | String | MAC address |
| GAID | String | Google Advertising ID |
| Model | String | Device model |
| OS | String | Device OS |
| Country | String | Country |
| Cost Type | String | Cost Type |
| Cost Value | Float | Cost Value |
| Ad Type | String | 1=`interstitial`, 2=`more_apps`, 3=`in_play`, 4=`rewarded_video`, 5=`video_interstitial`, 8=`intersitial placement`, 9=`rewarded placement`, 10=`banner` |

***

### All Time

<ul class="tab" data-tab="16c5e44f-1839-4503-bfaa-4812d3d63e75" data-name="apiAnalyticsAllTimeURL">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="16c5e44f-1839-4503-bfaa-4812d3d63e75" data-name="apiAnalyticsAllTimeURL">
  
      <li class="active">
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/alltime
</code></pre></div></div>
</li>
  
      <li>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/alltime
</code></pre></div></div>
</li>
  
</ul>



#### Request Fields

| Parameter | Request Type | Requirement | Default | Description |
| --------- | ------------ | ----------- | ------- | ------------ |
| `category` | String | Optional | `app` | One of the following: `app`, `campaign` |

#### Example Request

<ul class="tab" data-tab="c23cd487-542e-4be1-99ee-b24c67c2ae12" data-name="apiAnalyticsJobsRequest">
  
      <li class="active">
          <a href="#">Version 5 </a>
      </li>
  
      <li>
          <a href="#">WHAPI </a>
      </li>
  
</ul>
<ul class="tab-content" id="c23cd487-542e-4be1-99ee-b24c67c2ae12" data-name="apiAnalyticsJobsRequest">
  
      <li class="active">
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GET https://api.chartboost.com/v5/analytics/alltime HTTP/1.1
Host: api.chartboost.com
Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/json;charset=UTF-8
</code></pre></div></div>
</li>
  
      <li>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://v2.whapi.chartboost.com/metrics/alltime?userId={Chartboost customer’s user ID}&amp;userSignature={CB customer’s user signature}
</code></pre></div></div>
</li>
  
</ul>


#### Response Fields

**`category=app`**
**Synchronous** response, **JSON** result

| Parameter | Type | Description |
|-----------|------|-------------|
| `appId` | String | App ID |
| `appName` | String | App name | 
| `totalInstalls` | Integer | Total Installs |
| `revenue` | Float | Revenue |
| `expenditure` | Float | Expenditure |


**`category=campaign`**
**Synchronous** response, **JSON** result

| Parameter | Type | Description |
|-----------|------|-------------|
| `campaignId` | String | Campaign ID |
| `campaignName` | String | Campaign name |
| `revenue` | Float | Revenue |
| `expenditure` | Float | Expenditure |

