Version 2026.01 Release Notes - Criteo Docs

Version 2026.01 Release Notes

Version 2026.01 of the Criteo Retail Media API is live as of January 20th, 2026 and will be supported until January 27th, 2027. A new Postman collection for 2026.01 is also available in the Criteo Postman workspace.

New SDK Release: A new SDK version will be available for the 2026.01 release.

This version introduces new capabilities to Criteo Retail Media API and changes to existing endpoints. This page aims at listing all changes that happened endpoint per endpoint. **Only endpoints with changes are listed here.**The changes of versions 2026.01 are:

New Base URL

With the introduction of this new version, the base URL will now change from the old base URL:

https://api.criteo.com/2025-10/retail-media/{endpoint}

to the new base URL:

https://api.criteo.com/2026-01/retail-media/{endpoint}

What’s New

API Authorization Controls

We are introducing Proof Key for Code Exchange (PKCE), which is a security enhancement to the OAuth 2.0 Authorization Code flow designed for public clients that cannot securely store a client secret. PKCE makes this possible by enabling clients to add a verification step to prevent intercepted authorization codes from being misused. When PKCE is enabled, the authorization (consent) request must include a code_challenge (derived from a client-generated code_verifier) and optionally a code_challenge_method (with S256 recommended), and the subsequent token exchange must include the original code_verifier for validation. PKCE is optional to enable but once enabled, PKCE becomes mandatory for the application, and authorization requests without PKCE parameters will fail.

You can find the documentation for the PKCE OAuth Flow here.

Sponsored Product Line Item Updates

In version 2026.01, we’ve introduced new capabilities to the sponsored products line item endpoints:

Conquesting: A keyword targeting strategy that allows line items to target search queries associated with competing products relative to the products being promoted. Availability is retailer-dependent and must be explicitly enabled by the retailer.
Ad Scheduling: Enables time-based delivery controls for line-items, allowing advertisers to schedule when a campaign runs by specific days of the week and hours of the day, rather than running continuously. Ad Scheduling provides greater control over budget allocation, delivery timing, and exposure efficiency.
Adaptive CPC: Adaptive CPC dynamically adjusts bids in real time based on predicted conversion probability, pacing requirements, and forecasted traffic. This model operates in collaboration with bidding strategies such as Clicks, Conversions, and Revenue by optimizing for overall performance and efficiency.
Flexible Start/End Date Timestamps: Line items now support dateTimeOffset values, allowing users to specify dates and times according to the time zone of their choice, rather than being restricted to the account-level time zone used in previous stable versions. This update follows the ISO 8601 standard (YYYY-MM-DDThh:mm:ss±hh:mm) to ensure consistent and explicit time zone handling. If a request includes only a date without a dateTimeOffset, the value will be interpreted and submitted in the UTC time zone by default.
Together, these features provide advertisers with more precise control over targeting, delivery timing, and bid optimization.

You can find the documentation for the Sponsored Product Line Item endpoints here.

Updated Endpoints

The following new endpoint can be found below:

Verb Endpoint Description
POST /retail-media/campaigns/:campaignId/auction-line-items Create an Open Auction Line item
PUT /retail-media/auction-line-items/:lineItemId Update a specific Open Auction Line item
GET /retail-media/auction-line-items/:lineItemId Get a specific Open Auction Line item
GET /retail-media/campaigns/:campaignId/auction-line-items Get all Open Auction Line items from a specific Campaign

Sample Requests

For POST retail-media/campaigns/{campaignId}/auction-line-items:

cURL

curl -L -X POST "https://api.criteo.com/2026-01/retail-media/campaigns/1234567890/auction-line-items" \ 
    -H "Authorization: Bearer <MY_ACCESS_TOKEN>" \ 
    -H "Content-Type: application/json" \ 
    -H "Accept: application/json" \ 
    -d '{\n            "data": {\n                "attributes": {\n                    "name": "Product ABC Sponsored Weekend Conversions",\n                    "targetRetailerId": "12345",\n                    "status": "draft",\n                    "startDate": "2025-09-01T00:00:00-04:00",\n                    "endDate": "2025-12-31T23:59:59-04:00",\n                    "budget": 1000.0,\n                    "monthlyPacing": null,\n                    "isAutoDailyPacing": false,\n                    "targetBid": null,\n                    "maxBid": 5,\n                    "bidStrategy": "automated",\n                    "optimizationStrategy": "conversion",\n                    "flightSchedule": {\n                        "legs": [\n                            {\n                                "dayOfWeek": "Weekends",\n                                "startTime": "00:00",\n                                "endTime": "23:59"\n                            }\n                        ]\n                    },\n                    "keywordStrategy": "genericBrandedAndConquesting"\n                }\n            }\n        }'

Sample Response

For POST retail-media/campaigns/{campaignId}/auction-line-items:

{
    "data": {
        "id": "764555166286000000",
        "type": "SponsoredProductsLineItem",
        "attributes": {
            "name": "Product ABC Sponsored Weekend Conversions",
            "startDate": "2025-09-01T04:00:00+00:00",
            "endDate": "2026-01-01T03:59:59+00:00",
            "status": "draft",
            "targetBid": null,
            "targetRetailerId": "12345",
            "budget": 10.00,
            "campaignId": "1234567890",
            "budgetSpent": 0.00,
            "budgetRemaining": 10.00,
            "createdAt": "2025-10-10T18:29:16.3861275+00:00",
            "updatedAt": "2025-10-10T18:29:16.3861275+00:00",
            "maxBid": 0.0,
            "monthlyPacing": 1000.00,
            "dailyPacing": 0.00,
            "bidStrategy": "automated",
            "optimizationStrategy": "conversion",
            "isAutoDailyPacing": false,
            "flightSchedule": {
                "legs": [
                    {
                        "dayOfWeek": "weekends",
                        "startTime": "18:00",
                        "endTime": "23:59"
                    }
                ]
            },
            "keywordStrategy": "genericAndBranded"
        }
    },
    "warnings": [],
    "errors": []
}

Fill Rate Reporting

In version 2026.01, we’ve introduced new fill rate reporting endpoints that provide retailers with a comprehensive view of how effectively their available ad placements are being monetized. Retailers can request either a standard fill rate report or a more granular unfilled placements report that breaks down the specific reasons inventory went unfilled.

You can find the documentation for Fill Rate reporting endpoints here.

Updated Endpoints

Verb Endpoint Description
POST /reports/fillrate Request a fill rate report creation
POST /reports/unfilled-placements Request an unfilled reasons report

Sample Request

For /retail-media/reports/unfilled-placements:

curl -X 'POST' \
  'https://api.criteo.com/2026-01/retail-media/reports/unfilled-placements' \
  -H 'accept: text/plain' \
  -H 'Content-Type: application/json-patch+json' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -d '{\n  "data": {\n    "type": "string",\n    "attributes": {\n      "supplyAccountIds": [\n        "8639134211138xxxx"\n      ],\n      "dimensions": [\n        "adServerType", "date"\n      ],\n      "metrics": [\n              "totalUnfilledPlacements",\n              "unfilledNotEnoughDemand",\n              "nonDeliverableUnmappedCategories",\n              "nonDeliverablePagesWithUnknownProducts",\n              "nonDeliverableBlockedOptOut",\n              "nonDeliverableBlockedPageCategory",\n              "nonDeliverableInsufficientOrganicResults",\n              "nonDeliverableTestPlacement",\n              "uncoveredSearchTermWithoutCategory",\n              "uncoveredNoDemandBrandedKeywordConquestingEnabled",\n              "uncoveredNoDemandBrandedKeywordConquestingDisabled",\n              "uncoveredNoDemandUnbrandedInventory",\n              "uncoveredFilteredOutDemand",\n              "uncoveredBrokenPlacement",\n              "uncoveredNotPainted",\n              "availablePlacements",\n              "fillRate",\n              "placementImpressions",\n              "productImpressions",\n              "placementClicks",\n              "productClicks",\n              "clicks",\n              "placementImpressionsCTR",\n              "productImpressionsCTR",\n              "cpm",\n              "cpc",\n              "placementImpressionsRevenue",\n              "productClicksRevenue",\n              "revenue",\n              "nonDeliverablePlacements",\n              "placementsWithCandidates",\n              "coveredPlacements",\n              "coverageRate"\n      ],\n      "format": "csv",\n      "startDate": "2025-09-08",\n      "endDate": "2025-09-09",\n      "timezone": "America/New_York"\n    }\n  }\n}'

Sample Response

For /retail-media/reports/unfilled-placements:

{
  "data": {
    "attributes": {
      "status": "pending",
      "rowCount": 0,
      "fileSizeBytes": 0,
      "md5CheckSum": null,
      "createdAt": "2025-09-15T19:45:55.758Z",
      "expiresAt": null,
      "message": null,
      "id": "4dcd1f71-77f0-4bf2-b225-3e7a0dxxxxx"
    },
    "id": "4dcd1f71-77f0-4bf2-b225-3e7a0ddxxxxxx",
    "type": "StatusResponse"
  },
  "warnings": [],
  "errors": []
}