Important
The previous email, password, and Platform ID authentication flow will soon be deprecated and replaced by programmatic authentication using a Moloco-issued API key.
You can use the Publisher Summary API to pull performance data. Learn how to generate performance data reports.
Step 1: Create an API key in Publisher Portal
To create a new API key, click your user profile in the upper-right corner, select **API Key**, and then click Create API Key.
Copy the generated API key and store it securely. API keys generated in Publisher Portal begin with pp_. In the examples below, replace <your-api-key-here> with the complete API key, including the pp_ prefix. The ellipsis in the abbreviated format pp_... is not part of the API key.
Step 2: Generate a bearer token
Exchange your API key for a short-lived bearer token. After the API key has been created, generating a token does not require an email address, password, or an interactive sign-in to Publisher Portal.
curl --request POST \
--url https://sdkpubapi.moloco.com/api/adcloud/publisher/v2/auth/tokens \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data @- <<EOF
{
"api_key": "<your-api-key-here>"
}
EOFUse the bearer token returned in the response to authenticate your Publisher Summary API requests.
Step 3: Make an API request for the Publisher Summary API endpoint.
Send a POST request to the following endpoint:
POST https://sdkpubapi.moloco.com/api/adcloud/publisher/v2/sdk/summaryRequired properties
The following properties must be included in the request body.
| Property | Type | Description |
| publisher_id | string | This is the Publisher ID which you can copy from Moloco Publisher Portal by navigating to Publisher settings > Publisher info. |
| date_range | object |
This is the date range to pull data from. You can specify a date range of up to 31 days. You must specify both start and end dates in the following format.
|
| dimensions | array | This is the dimension(s) you would like to group data by. See the available dimensions for more information. |
| metrics | array | This is the metric(s) you would like to include in the data summary, grouped by the dimension(s) you have specified. See the available metrics for more information. |
| dimension_filters | array of objects |
This is the filter(s) you would like to apply to the data to retrieve only a subset of data. You must use the following format.
|
| order_by | array of objects |
This determines how the data retrieved is organized in the response. Data can be organized by any of the available dimensions and metrics. You must use the following format.
|
Available metrics
You must include one or more of the following metrics in the request body.
| Metric | Type | Description |
| REVENUE | number | This is the estimated revenue amount in USD. |
| IMPRESSIONS | number | This is the total number of impressions, which tells you how many times creative(s) displayed in your inventories have been viewed. |
| REQUESTS | number | This is the total number of bid requests made to Moloco from the mediation platform or bidding layer. |
| CLICKS | number | This is the total number of ad clicks from users. |
| ECPM | string | This is the eCPM, calculated as (revenue x 1000) / impressions. |
| IMP_FILL_RATE | string | This is the ad fill rate, calculated as impressions / requests. |
Available dimensions
You must include one or more of the following dimensions in the request body.
| Dimension | Type | Description |
| UTC_DATE | string |
This is the date in the following format.
e.g.,) |
| PUBLISHER_APP_ID | string |
This is the Moloco-generated App Key you can find on Moloco Publisher Portal by navigating to Apps > app > App Detail. e.g.,) |
| PUBLISHER_APP_TITLE | string |
This is the title you have specified for an app. e.g.,) |
| AD_UNIT_INVENTORY_TYPE | string | Indicates the type of inventory for the ad unit, such as whether it's a rewarded video, interstitial, banner, or native ad. This is defined when setting up the ad unit in the Moloco Publisher Portal. |
| AD_UNIT_TITLE | string |
This is the title you have specified for an ad unit. e.g.,) |
| AD_UNIT_ID | string |
This is the Moloco-generated Ad Unit ID you can find on Moloco Publisher Portal by navigating to Ad Units > ad unit > Ad Unit Detail. e.g.,) |
| DEVICE_OS | enum | This is the OS type of an app. Acceptable values are ANDROID and IOS. |
| GEO_COUNTRY | string |
This is the ISO 3166 Alpha-3 code obtained from a user's IP address. e.g.,) |
| PUBLISHER_APP_STORE_ID | string |
This is the Store ID (for iOS) or the Package Name (for Android) for an app. e.g.,) Store ID: Package Name: |
| PUBLISHER_APP_PACKAGE_NAME | string |
This is the Package Name for an Android app. e.g.,) |
| ADUNIT_AUCTION_METHOD | enum | This is the type of auction method for an ad unit. Acceptable values are IN_APP_BIDDING and WATERFALL. |
Request body
The request body must be formatted as follows.
{
"publisher_id": "<MOLOCO-PUBLISHER-ID>",
"date_range": {
"start": "YYYY-MM-DD",
"end": "YYYY-MM-DD"
},
"dimensions": ["<DIMENSION_NAME>"],
"metrics": ["<METRIC_NAME>"],
"dimension_filters": [
{
"dimension": "<DIMENSION_NAME>",
"values": ["string"]
}
],
"order_by": [
{
"dimension" | "metric": "<DIMENSION_NAME> | <METRIC_NAME>",
"is_descending": true | false
}
]
}Include the bearer token generated in Step 2 in the Authorization header. In the request body, specify the Publisher ID, date range, dimensions, and metrics for the data you want to retrieve.
curl --request POST \
--url https://sdkpubapi.moloco.com/api/adcloud/publisher/v2/sdk/summary \
--header 'content-type: application/json' \
--header 'Authorization: Bearer <your-token-here>' \
--data @- <<EOF
{
"publisher_id": "<your-publisher-id>",
"date_range": {
"start": "YYYY-MM-DD",
"end": "YYYY-MM-DD"
},
"dimensions": ["UTC_DATE"],
"metrics": ["REVENUE"]
}
EOFFilter data
You can apply filter(s) to the data to retrieve only a subset of data. You can specify any of the available dimensions as filters as in the following example.
{
"publisher_id": "<your-publisher-id>",
"date_range": {
"start": "2026-06-10",
"end": "2026-06-15"
},
"dimensions": ["UTC_DATE", "AD_UNIT_ID"],
"metrics": ["REVENUE", "IMPRESSIONS"],
"dimension_filters": [
{
"dimension": "PUBLISHER_APP_ID",
"values": ["<moloco-app-id>"]
},
{
"dimension": "GEO_COUNTRY",
"values": ["USA", "CAN"]
}
]
}This sample request returns in the response the total revenue amount and total number of impressions from June 10, 2026 to June 15, 2026 from Canada and the US for an app with the App Key <moloco-app-id>, grouped by date and Ad Unit ID.
Group and arrange data by one or more dimensions and/or metrics
You can group data by one or more of the available dimensions and/or metrics. The following sample request returns in the response the ad fill rate and total number of clicks by date and App Key, with date displayed from least to most recent and fill rate displayed from greatest to least.
{
"publisher_id": "<your-publisher-id>",
"date_range": {
"start": "2026-06-10",
"end": "2026-06-11"
},
"dimensions": ["UTC_DATE", "PUBLISHER_APP_ID"],
"metrics": ["IMP_FILL_RATE", "CLICKS"],
"order_by": [
{
"dimension": "TIME_BUCKET",
"is_descending": false
},
{
"metric": "IMP_FILL_RATE",
"is_descending": true
}
]
}Response body
The response returned from the API request is formatted as follows. Only the dimensions and/or metrics specified in the API request are returned in the response.
{
"rows": [
{
"utc_time_bucket": "YYYY-MM-DD",
"app": {
"app_id": "<moloco-app-id-in-inventory-sheet>",
"app_title": "<pretty-app-name>"
},
"ad_unit": {
"ad_unit_id": "<moloco-ad-unit-id-in-inventory-sheet>",
"ad_unit_title": "<pretty-ad-unit-name>",
"inventory_type": "BANNER" | "INTERSTITIAL" | "REWARDED",
"bidfloor": string
},
"device": {
"os": "IOS" | "ANDROID"
},
"geo": {
"country": "<ISO 3166-1 alpha-3 country code>"
},
"metric": {
"revenue": float64,
"impressions": int64,
"requests": int64,
"clicks": int64,
"ecpm": float64,
"fill_rate": float64
}
}
]
}Metrics
| Metric | Type | Description |
| REVENUE | number |
This is the estimated revenue amount in USD. e.g.,) |
| IMPRESSIONS | number |
This is the total number of impressions, which tells you how many times creative(s) displayed in your inventories have been viewed. e.g.,) |
| REQUESTS | number |
This is the total number of bid requests made to Moloco from the mediation platform or bidding layer. e.g.,) |
| CLICKS | number |
This is the total number of ad clicks from users. e.g.,) |
| ECPM | string |
This is the eCPM, calculated as (revenue x 1000) / impressions. e.g.,) |
| IMP_FILL_RATE | string |
This is the ad fill rate, calculated as impressions / requests. e.g.,) |
Dimensions
| Dimension | Type | Description |
| UTC_DATE | string |
This is the date in the following format.
e.g.,) |
| PUBLISHER_APP_ID | string |
This is the Moloco-generated App Key you can find on Moloco Publisher Portal by navigating to Apps > app > App Detail. e.g.,) |
| PUBLISHER_APP_TITLE | string |
This is the title you have specified for an app. e.g.,) |
| AD_UNIT_TITLE | string |
This is the title you have specified for an ad unit. e.g.,) |
| AD_UNIT_ID | string |
This is the Moloco-generated Ad Unit ID you can find on Moloco Publisher Portal by navigating to Ad Units > ad unit > Ad Unit Detail. e.g.,) |
| DEVICE_OS | enum | This is the OS type of an app. Valid values are ANDROID and IOS. |
| GEO_COUNTRY | string |
This is the ISO 3166 Alpha-3 code obtained from a user's IP address. e.g.,) |
| PUBLISHER_APP_STORE_ID | string |
This is the Store ID (for iOS) or the Package Name (for Android) for an app. e.g.,) Store ID: Package Name: |
| PUBLISHER_APP_PACKAGE_NAME | string |
This is the Package Name for an Android app. e.g.,) |
| ADUNIT_AUCTION_METHOD | enum | This is the type of auction method for an ad unit. Valid values are IN_APP_BIDDING and WATERFALL. |
The following is a sample request for revenue amount by date and OS type from June 10 2026.
curl --request POST \
--url https://sdkpubapi.moloco.com/api/adcloud/publisher/v2/sdk/summary \
--header 'content-type: application/json' \
--header 'Authorization: Bearer <your-token-here>' \
--data @- <<EOF
{
"publisher_id": "<your-publisher-id>",
"date_range": {
"start": "2026-06-10",
"end": "2026-06-10"
},
"dimensions": ["UTC_DATE", "DEVICE_OS"],
"metrics": ["REVENUE"]
}
EOFThe response returned includes only the information that was requested.
{
"rows": [
{
"utc_time_bucket": "2026-06-10 00:00:00 +0000 UTC",
"device": {
"os": "IOS"
},
"metric": {
"revenue": 100.01
}
},
{
"utc_time_bucket": "2026-06-10 00:00:00 +0000 UTC",
"device": {
"os": "ANDROID"
},
"metric": {
"revenue": 99.99
}
}
]
}Timezones and availability
We use UTC timezone for pulling and displaying datasets. While most data is available in real time, it may take a couple of hours for some of the data to be made available. As a result, you can expect a full day's worth of data to be made available up to 6 hours past midnight UTC of the day data was recorded.
Token expiration and renewal
The bearer token is valid for 16 hours. For recurring or scheduled reporting jobs:
Repeat Step 2 to generate a new token when needed
Do not hardcode or permanently store the short-lived bearer token.
Previous instructions
The previous authentication flow is described in the Moloco Publisher Summary API v1 (Legacy).