Retrieve a flexible publisher performance report by specifying the fields, filters, and grouping you need.
Retrieve a flexible publisher performance report by specifying the fields, filters, and grouping you need. The date range must not exceed 32 days.
Response flow
This endpoint uses a redirect pattern:
- The endpoint returns 303 See Other with a
Locationheader containing a download URL. - Follow the redirect (most HTTP clients do this automatically) to download the report data as CSV.
Most HTTP clients (including curl, Postman, and browser-based code) follow the redirect automatically, so you will typically receive the CSV response directly.
Status codes
| Code | Description |
|---|---|
200 | Report data returned as CSV (after following the 303 redirect — this is what most clients will show) |
303 | Success — redirects to a URL containing the report data as CSV |
400 | Invalid request parameters (invalid field names, missing required fields, date range exceeds 32 days, etc.) |
401 | Missing or invalid access token, or the token does not have the required scope |
500 | An unexpected error occurred while processing the request |
Required headers
| Header | Value |
|---|---|
Authorization | Bearer <access_token> |
Accept | text/csv |
Query parameters
| Parameter | Required | Description | Format |
|---|---|---|---|
requestedFields | Yes | Comma-separated list of fields to include in results | string |
startInclusive | Yes | Start of the date range (inclusive) | YYYY-MM-DDThh:mm:ssZ |
endExclusive | Yes | End of the date range (exclusive) | YYYY-MM-DDThh:mm:ssZ |
filter | No | Key-value filter pairs | filter[FieldName]=value |
groupBy | No | Comma-separated list of fields to group results by | string |
AllgroupByfields must also be included inrequestedFields.
Date range limitThe time window between
startInclusiveandendExclusivemust not exceed 32 days.
Available fields
Dimension fields (groupable and filterable):
| Field | Description | Format |
|---|---|---|
DateTime | The date/time of the record | datetime |
Day | The day of the record | datetime |
PlacementId | The placement ID | integer |
ContainerId | The container ID | integer |
PublisherAccountId | The publisher account ID | integer |
PublisherCompanyId | The publisher company ID | integer |
DeviceOrProxy | The device or proxy type | string |
Metric fields (aggregatable, not groupable):
| Field | Description | Format |
|---|---|---|
ServedAds | The total number of served ads | integer |
Opens | The total number of opens | integer |
Clicks | The total number of clicks | integer |
Revenue | The total revenue | float |
Opens behaviorWhen grouped by
PlacementId, theOpensfield reports placement-level opens. Otherwise, it reports container-level opens.
Example request
GET /reporting/publisherperformance?requestedFields=DateTime,PlacementId,ContainerId,Opens,Clicks,Revenue&startInclusive=2026-03-01T00:00:00Z&endExclusive=2026-04-01T00:00:00Z&groupBy=DateTime,PlacementId,ContainerId&filter[PlacementId]=152&api-version=1.0
Accept: text/csv
Authorization: Bearer <access_token>Example response
The CSV returned after following the redirect:
"DateTime","PlacementId","ContainerId","Opens","Clicks","Revenue"
"2026-03-01T00:00:00Z",152,300,4820,312,148.50
"2026-03-02T00:00:00Z",152,300,3210,198,96.30 401401 Unauthorized - The request is missing a valid access token, or the token does not have the required scope.
500500 Internal Server Error - An unexpected error occurred while processing the request.

