Account Level Report - Criteo Docs
Introduction
This endpoint enables Retail Media DSP partners to request flexible reporting at the account level. This expands on existing Line Item and Campaign reporting capabilities by allowing reporting across one or more Account IDs, up to five at a time. The endpoint supports asynchronous report generation and provides access to the same set of metrics and dimensions.
You can find the list of DSP endpoints available here: Demand Side Analytics Endpoints.
Filter Parity This endpoint supports the same filters as the Campaign and Line Item endpoints, with one key difference: it introduces the accountIds attribute, allowing up to 5 account IDs per request for account-level reporting. It also only supports date ranges of up to 31 days at a time.
Endpoint
| Verb | Endpoint | Description |
|---|---|---|
| POST | /retail-media/reports/accounts |
Request flexible reporting at the account level |
Reporting Asynchronous Workflow
- First, create a request for the account report with the desired attributes.
- This generates a
reportIdrepresenting the report. - Next, use the
reportIdto poll the report status endpoint until one is successfully computed. - Finally, download the report using the report output endpoint.
- Report outputs are cached for at least 1 hour before expiration. Exact expiration is indicated by the
expiresAtfield in the /status response.
Report Request Attributes
| Attribute | Data Type | Description |
|---|---|---|
accountIds* |
string | Account ID(s) of the desired report Examples: accountIds: "12345" accountIds: ["12345", "67890"]When a supply account ID is included, other IDs in the request will be ignored. The report will include Commerce Max retailer-billed campaigns in addition to the campaigns running on that account. Use budgetModel to separate campaign types within the same report.Accepted values: single or list of string/int64 (max 5 IDs per call) Writeable? N / Nullable? N |
aggregationLevel |
enum | Accepted values: campaign, lineItem |
reportType |
enum | Report types are pre-packaged reports that allow the specification of the report breakdown. See Report Types for more details about each of them. - Note*: when metrics and dimensions are used, the reportType is ignored.Accepted values: refer to Report Types page for a complete list of available values Writeable? N / Nullable? N |
dimensions |
list |
Dimension attributes desired for metrics breakdown for the custom report of the campaign(s) / line item(s). - Note: when metrics and dimensions are used, the reportType is automatically ignoredAccepted values: refer to Metrics and Dimensions page for a complete list of available values Writeable? N / Nullable? N |
metrics |
list |
Quantitative metrics desired in the custom report of the campaign(s) / line item(s). - Note*: - when metrics and dimensions are used, the reportType is automatically ignored- when including winRate metric, it is required to either define campaignType as sponsoredProducts or include campaignTypeName in the list of dimensionsAccepted values: refer to Metrics and Dimensions page for a complete list of available values Writeable? N / Nullable? N |
startDate* |
date | Start date to report (inclusive) Accepted values: YYYY-MM-DD Writeable? N / Nullable? N |
endDate* |
date | End date to report (inclusive) Accepted values: YYYY-MM-DD Writeable? N / Nullable? N |
campaignType |
enum | Campaign type Accepted values: sponsoredProducts, onSiteDisplays Writeable? N / Nullable? N |
timeZone |
string | Time zone to consider in the report Accepted values: IANA (TZ database) time zones (example: America/New_York, Europe/Paris, Asia/Tokyo, UTC) Writeable? N / Nullable? Y |
clickAttributionWindow |
enum | The post-click attribution window, defined as the maximum number of days considered between a click and a conversion for attribution; conversions are attributed to the date of conversion, not the date of click; defaults to campaign settings if omitted; must be specified if viewAttributionWindow is one of the accepted values.Accepted values: none, 7D, 14D, 30D Writeable? N / Nullable? Y |
viewAttributionWindow |
enum | The post-view attribution window, defined as the maximum number of days considered between an impression and a conversion for attribution; conversions are attributed to the date of conversion, not the date of impression; defaults to campaign settings if omitted; must be less than or equal to clickAttributionWindow; must be specified if clickAttributionWindow is one of the accepted values.Accepted values: none, 1D, 7D, 14D, 30D Writeable? N / Nullable? Y |
salesChannel |
enum | Filter on specific sales channel: online or offline Accepted values: online, offline Writeable? N / Nullable? Y |
format |
enum | Format of the report data returned Accepted values: json, json-compact, json-newline, csv Default: json Writeable? N / Nullable? N |
searchTermTypes |
string | The match type used to associate a search term and keywords entered for the campaign. Accepted values: Entered: exact match, Searched: matches what a shopper searched, Null: All other cases. |
searchTermTargeting |
string | Indicates how the keyword was targeted — either manually by the user or automatically by the platform. |
targetedKeywordType |
string | Specifies the conquesting strategy used with the keyword. |
mediaType |
string | The type of creative asset used in the ad, such as Display or Video. |
budgetModels |
[string] | Identifies the funding source for the campaign’s media spend. Values: CriteoBudget, RetailerBudget |
activationPlatforms |
[string] | Platform through which the campaign was activated Values: CommerceMax, PrivateMarket |
(*) Required
Create an Account Level Report
Sample request
cURL
curl -X POST https://api.criteo.com/{version}/retail-media/reports/accounts \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"data": {
"attributes": {
"accountIds": [\
"505471171905413120"\
],
"startDate": "2026-05-01",
"endDate": "2026-05-28",
"aggregationLevel": "campaign",
"campaignType": "all",
"format": "csv",
"mediaType": "all",
"reportType": "summary",
"salesChannel": "all",
"timezone": "UTC",
"budgetModels": ["RetailerBudget"],
"activationPlatforms": ["CommerceMax"]
},
"type": "<string>"
}
}'
Sample response
{
"data": {
"attributes": {
"status": "success",
"rowCount": 20,
"fileSizeBytes": 2655,
"md5CheckSum": "18796a1e29c0f94ac63a709a9adb4bb9",
"createdAt": "2026-06-02T14:34:09.000Z",
"expiresAt": "2026-06-09T14:34:50.000Z",
"message": "rows_count=20",
"id": "acc33cef-b36e-4eaf-a421-58078ef3f071"
},
"id": "acc33cef-b36e-4eaf-a421-58078ef3f071",
"type": "StatusResponse"
},
"warnings": [],
"errors": []
}
Responses
| Response | Description |
|---|---|
🔵200 |
Call executed with success - Report Type has been ignored* - Report Type has been ignored since Dimensions and Metrics have been provided. Please remove them if you want to use one of the templates. When generating a report type using the metrics and dimensions filters for multi dimension reporting, a warning message will be presented in the 200 to inform that reportType is ignored. This is because multi dimension takes priority in this scenario. |
🔴400 |
Common Validation Errors - endDate cannot be more than 100 days from startDate- Using a date range with more than 100 days apart - reportType invalid- calling an unsupported report type will throw a 400 error- timeZone must be a valid timezone- using a time zone value that is not listed in the list tz database time zones - format invalid - using an unsupported file format |
🔴410 |
Expired or Lost Report Error The report is expired, lost, or failed to create. Re-create the report through a new request. |