Skip to main content
This endpoint enables Retail Media DSP partners to request flexible performance reporting across any level of granularity. Provide a scope filter under filters to define the data returned — the output granularity is then determined by the dimensions you include in the request. The endpoint supports asynchronous report generation and provides access to the full set of performance metrics and dimensions, including video, new-to-brand, and keyword data. Submit a request, poll for status, and download the output when ready.

Request

POST /2026-07/retail-media/reports/performance

Required fields

filters is required and must include exactly one scope filter. Requests with none or more than one scope filter will return 400 Bad Request.
FieldTypeDescription
filtersobjectRequired. Must contain exactly one of the scope filters below.
filters.accountIds[]array of stringsScope the report to all campaigns under this account. Mutually exclusive with campaignIds and lineItemIds.
filters.campaignIds[]array of stringsScope the report to all line items under this campaign. Mutually exclusive with accountIds and lineItemIds.
filters.lineItemIds[]array of stringsScope the report to this line item. Mutually exclusive with accountIds and campaignIds.

Optional fields

FieldTypeDefaultDescription
startDatestringStart of the reporting period. ISO 8601 date (YYYY-MM-DD).
endDatestringEnd of the reporting period. ISO 8601 date (YYYY-MM-DD).
metricsarray of stringsOne or more metric names. See Metrics below.
dimensionsarray of stringsOne or more dimension names. See Dimensions below.
timezonestringUTCTimezone for date bucketing. IANA format (e.g. America/New_York).
formatstringjson-compactOutput format: json, json-compact, json-newline, or csv.
clickAttributionWindowstringAttribution window for click-based conversions: none, 7D, 14D, or 30D.
viewAttributionWindowstringAttribution window for view-based conversions: none, 1D, 7D, 14D, or 30D.
clickMatchLevelstringMatch level for click attribution.
viewMatchLevelstringMatch level for view attribution.
filters.campaignTypes[]array of stringsFilter by campaign type. Values constrain eligible campaigns and may affect metric eligibility.
filters.salesChannels[]array of stringsFilter by sales channel.
filters.mediaTypes[]array of stringsFilter by media type.
filters.buyTypes[]array of stringsFilter by buy type.
filters.budgetModels[]array of stringsFilter by budget model.
filters.activationPlatforms[]array of stringsFilter by activation platform.
filters.searchTermTypes[]array of stringsFilter by search term type.
filters.searchTermTargetings[]array of stringsFilter by search term targeting strategy.
filters.targetedKeywordTypes[]array of stringsFilter by targeted keyword type.

Example request

POST /2026-07/retail-media/reports/performance
Authorization: Bearer {token}
Content-Type: application/json

{
  "data": {
    "type": "RetailMediaReportRequest",
    "attributes": {
      "filters": {
        "campaignIds": ["123456"]
      },
      "startDate": "2026-05-01",
      "endDate": "2026-05-07",
      "timezone": "America/New_York",
      "metrics": ["impressions", "clicks", "spend", "roas"],
      "dimensions": ["date", "campaignName", "lineItemName"]
    }
  }
}

Response

A successful request returns 202 Accepted with a reportId. Use this ID to poll for status and retrieve the output.
{
  "data": {
    "type": "RetailMediaReportResponse",
    "id": "rpt_abc123",
    "attributes": {
      "status": "pending"
    }
  }
}
Poll for status until status is success or failure:
GET /2026-07/retail-media/reports/{reportId}/status
Authorization: Bearer {token}
Download the output when status is success:
GET /2026-07/retail-media/reports/{reportId}/output
Authorization: Bearer {token}

Metrics

MetricDescription
impressionsCounted once per ad creative render on a page.
clicksCounted when an ad creative is clicked.
spendTotal media spend. Includes platform fees for Criteo-billed; media only for retailer-billed.
roasReturn on ad spend — revenue per unit of currency spent.
ctrClick-through rate: clicks / impressions.
cpcAverage cost per click. Sponsored products only.
cpmAverage cost per 1,000 impressions. Onsite display only.
cpoCost per order: spend / attributed orders.
attributedSalesSales revenue directly attributed to the campaign per your attribution settings.
attributedUnitsUnits sold attributed to the campaign. Excludes assisted units.
attributedOrdersOrders attributed per your attribution settings.
assistedSalesRevenue from ads that were not the final ad before purchase but contributed to the conversion.
assistedUnitsUnits sold through assisted conversions. Excluded from attributedUnits.
newToBrandAttributedSalesAttributed sales from customers who had not purchased from this brand in the prior 12 months.
newToBrandAttributedSalesRatenewToBrandAttributedSales / attributedSales.
newToBrandAttributedUnitsAttributed units from new-to-brand customers.
newToBrandAttributedUnitsRatenewToBrandAttributedUnits / attributedUnits.
frequencyAverage number of times the same user saw an impression in the reporting period.
uniqueVisitorsDistinct shoppers exposed to an ad in the reporting period.
winRateBids won divided by bids participated. Based on a 25% sample. Sponsored products only.
sampledBidsWonBids won across auctions. Based on a 25% sample.
sampledBidsParticipatedBids participated in auctions. Based on a 25% sample.
videosStartedCount of videos that started playing.
videoStartingRatePercentage of printed videos that started playing.
videoViewsVideos meeting the MRC viewability standard (50% visible for 2+ continuous seconds).
videoViewabilityPercentage of video ads considered viewable per MRC standards.
videoCompletionRatePercentage of started videos that played to completion.
videosPlayedTo25Videos that played at least 25% of their duration.
videosPlayedTo50Videos that played at least 50% of their duration.
videosPlayedTo75Videos that played at least 75% of their duration.
videosPlayedTo100Videos that played to 100% of their duration.
videoPlayingRateAverage played percentage of a started video.
videoMutedCount of video mute button clicks.
videoUnmutedCount of video unmute button clicks.
videoPausedCount of video pause activations.
videoResumedCount of video resume activations.
videoImpressionsCount of video ad impressions.
videoAvgInteractionRateAverage interaction rate across video engagements.
videoCPCAverage cost per video click.
videoCPCVCost per completed video view.
The winRate metric is only supported for Sponsored Products campaigns. Include campaignType in your dimensions or filter by Sponsored Products in your request.

Dimensions

DimensionDescription
dateDate events occurred (YYYY-MM-DD).
hourHour events occurred (0–23).
accountIdAccount ID.
accountNameAccount name.
campaignIdCampaign ID.
campaignNameCampaign name.
campaignTypeCampaign type.
lineItemIdLine item ID.
lineItemNameLine item name.
retailerIdRetailer ID where the line item served.
retailerNameRetailer name where the line item served.
brandIdBrand ID of the advertised product.
brandNameBrand name of the advertised product.
productCategoryCategory of the advertised product. Standardized categories.
productIdAdvertised product ID. References the Catalogs product ID.
productNameName of the advertised product.
salesChannelPurchase channel: online or offline.
mediaTypeMedia type of the line item.
buyTypeBuy type of the line item.
budgetModelBudget model of the line item.
activationPlatformActivation platform of the line item.
environmentType of environment: web, mobile, app.
pageTypeType of retailer page where the ad rendered: home, search, category, productDetail, merchandising, deals, checkout, confirmation.
pageCategoryRetailer-defined category of the page where ads rendered.
servedCategoryCategory of the page where the ad was served. Retailer-specific taxonomy.
taxonomyBreadcrumbCategory breadcrumb using retailer product taxonomies (L1 > L2 > L3).
keywordKeyword or phrase used on the search page where the ad rendered.
searchTermKeyword or phrase searched by the shopper on the retailer site.
searchTermTypeMatch type: Entered, Searched, or Null.
searchTermTargetingTargeting strategy: Manual or Automatic.
creativeIdCreative ID. Onsite display only.
creativeNameCreative name. Onsite display only.
creativeTypeCreative type: Commerce Display, Commerce Video, Standard Display, Standard Video. Onsite display only.
creativeTemplateIdCreative template ID. Onsite display only.
creativeTemplateNameAd format: Flagship, Showcase, SponsoredProducts, Butterfly, BundleBoost, IAB, DisplayPanel, DigitalShelfTalker, CommerceVideoSpotlight, Custom.
targetedKeywordTypeConquesting strategy: Conquesting, Branded, Generic, or Unknown.

Data Retention

This endpoint supports a lookback window of up to 36 months. Requests beyond this limit will return a 400 Bad Request error indicating the maximum allowed date range.

Migrating from legacy endpoints

Old patternNew equivalent
POST /reports/campaignsPOST /reports/performance with campaignId; drop reportType; add explicit metrics + dimensions
POST /reports/line-itemsPOST /reports/performance with lineItemId
POST /reports/accountsPOST /reports/performance with accountId
reportType: summaryUse POST /reports/performance with: impressions, clicks, spend, roas, ctr, attributedSales, attributedUnits
reportType: flexibleUse POST /reports/performance — behavior is identical; only the endpoint path changes
reportType: keywordAdd keyword to dimensions
reportType: pageTypeAdd pageType to dimensions
reportType: productCategoryAdd productCategory to dimensions
reportType: productAdd productId and productName to dimensions
reportType: servedCategoryAdd servedCategory to dimensions
reportType: environmentAdd environment to dimensions
reportType: capoutUse POST /reports/missed-opportunities — also note metric renames
reportType: attributedTransactionsUse POST /reports/attributed-transactions