Skip to main content

Introduction

Welcome! This document will explain how to integrate with Criteo’s SSAI server-to-server solution.

Purpose

This specification is intended for Supply-Side platforms who want to integrate with Criteo and sell inventory. Complying with this specification, will allow for a faster and more efficient integration to Criteo’s production environment.

If you have any question about this document, please reach out to rtbspecs@criteo.com.

Auction Definition

What is often referred to as an “auction” consists of:

  1. A bid request being sent to Criteo (among other buyers),

  2. Criteo returning a bid response,

  3. The partner selecting a winner (if any),

  4. The partner allowing the winner to display an ad to the user,

  5. The partner returning feedback to Criteo.

Each of these steps will be specified in this document, along with parallel but equally important operations such as user matching and billing.

Server-to-Server Protocol

Criteo uses JSON and the HTTP POST method.

Criteo returns HTTP 204 to signal that it doesn’t want to enter the auction.

User Sync

Please note that user sync can be set up by reaching out to your technical account manager.

Filtering

If you have the ability to do it, please filter out any traffic corresponding to the sections below.

User filtration

Unless instructed otherwise, Criteo should only receive bid requests containing an addressable ID from a Criteo perspective:

  • the user is matched with a Criteo UID provided in user.buyeruid

  • the EIDS array contains an ID which source contains criteo (ex: criteo.com, esp.criteo.com)

  • the EIDS array contains a RampID which source is liveramp.com (the RampID needs to be decrypted by the partner using Sidecar)

  • the EIDS array contains a UID2.0 which source is uidapi.com

  • the EIDS array contains a NetID which source is netid.de

  • a Criteo RTUS ID is available and passed in user.ext.rtusid

  • an hashed email is available and included following these specs

  • an IFA is available (IDFA or GAID) and included in device.ifa

Privacy restrictions (DNT/LMT/COPPA)

Please filter out traffic corresponding to at least one of the followings:

  • "device.dnt" = 1

  • "device.lmt" = 1

  • "regs.coppa" = 1

Mobile-web interstitial

Please filter out traffic corresponding to the combination of the 3 followings:

  • Mobile (ex: "device.os" = "iOS" or "Android")

  • Web (ex: "site.page" exists)

  • Interstitial (ex: "instl" = 1)

Blocklisting API

Please filter out traffic which is linked to the list stored in blocklisting API. For more details, please refer to the Blocklisting API section.

Bid Request

To invite Criteo to enter an auction, the partner will be provided with a set of URLs (“endpoints”), each of them pointing to a different Criteo datacenter. The general intent is that the datacenter closest to the user should be used, please reach out to Criteo for more details.

Only one bid request should be sent for a given auction, but multiple auction slots can be included within a bid request. The JSON file should have the structure below and top-level content.

Note:

  • Mandatory fields must be included.

  • Recommended fields have positive impact on bidding pattern when implemented properly.

  • Optional fields have positive impact on operations and reporting.

Bid Request - Top Level Object

Field

Type

Status

Comment

id

String

Mandatory

An identifier for the request, it can be used to connect the bid request to the bid response outside of the HTTP protocol.

imp

Object Array

Mandatory

See Imp object.

app

Object

Mandatory for In-App

See App object.

device

Object

Mandatory

See Device object.

user

Object

Mandatory

See User object.

tmax

Integer

Recommended

In milliseconds, the time after which bid responses will not enter the auction. Note that Criteo prefers no “throttling” mechanisms (reducing the volume of bid requests sent to relieve a host in case of timeouts) be used when timeouts occur. If they are enabled on your platform, please document them and share the documentation with your Criteo representatives.

wseat

String Array

Optional

Criteo specific: please contact your account manager if you need support on this field.

cur

String Array

Mandatory

Criteo specific: Mandatory. Array of allowed currencies for bids on this bid request using ISO-4217 alpha codes. The unique currency used by Criteo for all the slots contained in the bid requests will always be included in the bid response (CF "Response Top-Level Object" section below).

bcat

String Array

Optional

Blocked advertiser categories using the IAB content categories. If you want to use bcat, please contact us.

badv

String Array

Recommended

Block list of advertisers by their domains.

bapp

String Array

Recommended

Block list of advertisers by their bundle id.

source

Object

Mandatory

See Source object

regs

Object

Mandatory for EU users (Recommended otherwise)

See Regs object

at

Integer

Mandatory

Auction type, where 1 = First Price, 2 = Second Price Plus

Fields not supported:

Field

Comment

test

Not supported

bseat

Criteo is the only buyer

allimps

Not supported

wlang

Criteo relevant for Retargeting

Bid Request - Source Object

Field

Type

Status

Comment

fd

Integer

Mandatory

Entity responsible for the final impression sale decision, 0 = exchange / 1 = upstream source

tid

String

Mandatory

Unique identifier for the impression generated by whoever originates the impression; Whenever a partner also generates opportunities (through its own wrapper for example, or if it calls other partners, regardless of method), it needs to generate it. Whenever the partner is downstream from a player that generates the tid (though PreBid.js for example, or Exchange bidding), the partner should read it and transmit it to Criteo unaltered.

pchain

String

Recommended

TAG payment ID chain string.

ext.sourcetype

Integer

Mandatory

Criteo specific: Indicates the context of the bid request 1 if the request doesn't come from a header-bidding context, 2 if the request comes from a client-side header bidding auction, 3 if the request comes from a server-side header bidding auction

ext.sourceorigin

Integer

Mandatory

Criteo specific: Indicates the source of the request: Own tag on Page: 1, other partner: 2, Amazon TAM: 3, EBDA: 4, Prebid: 5, Index HB: 6, Other HB solution: 7

ext.schain

Object

Mandatory

Enable buyers to see all parties who are selling or reselling a given bid request. More information can be found here.

Bid Request - Regs Object

Field

Type

Status

Comment

coppa

Integer

Recommended

Flag indicating if this request is subject to COPPA regulations, where 0 = no, 1 = yes.

gdpr

Integer

Mandatory for EU users (Recommended otherwise)

Criteo specific: Flag indicating if this request is subject to the GDPR regulations, where 0 = no, 1 = yes. This can be also provided as a Regs extension object.

us_privacy

String

Mandatory for Californian citizens

Criteo specific: Flag indicating is this request is subject to the CCPA (California Consumer Privacy Act) regulations. CCPA field should be exactly 4 chars length, with first char must be 1 (correspond to version), the 3 remaining chars must be either 'Y' or 'y', 'N or 'n', '-'. More information can be found here

Bid Request - Imp Object

Imp must describe separate opportunities to show an ad. In other words, it must be possible to display as many ads as there are elements on the imps array.

Please note that the imp.exp value is hardcoded to 3 hours.

Field

Type

Status

Comment

id

String

Mandatory

A unique identifier for this impression within the context of the bid request (typically, starts with 1 and increments).

metric

Object Array

Recommended

See Metric object.

video

Object

Mandatory for video

A Video object required.

pmp

Object

Optional

See PMP object. This details whether the ad opportunity is eligible to multiple deals with different terms.

displaymanager

String

Mandatory for App and Video

Criteo specific: Name of ad mediation partner, SDK technology, or player responsible for rendering ad. Criteo specific

displaymanagerver

String

Mandatory for App and Video

Criteo specific: version of the display manager

instl

Integer

Mandatory

Set to 1 when the impression is destined to be an interstitial or full-page. Criteo specific

tagid

String

Mandatory

Unique identifier for the placement of the ad (typically the tag provided by the partner to the publisher). Meant as the most granular representation of a placement. Criteo specific

bidfloor

Float

Mandatory

Criteo specific: Mandatory, default to 0. The minimum amount for which the impression can be sold, expressed in the currency set in the Request Top-Level Object.

bidfloorcur

String

Optional

Currency specified using ISO-4217 alpha codes. This may be different from bid currency returned by bidder if this is allowed by the exchange.

Imp ext fields:

Field

Type

Status

Comment

ext.bidder.uid

Integer

Optional

Custom optional parameter for Cgrid ad unit id, for cases where ad unit integration is needed

Fileds not supported:

Field

Comment

audio

Not supported

secure

Criteo will always consider secure = 1

iframebuster

Not supported

Bid Request - Metric Object

Field

Type

Status

Comment

type

String

Mandatory

Type of metric being presented using exchange. Eg: "viewability"

value

Float

Mandatory

The value, from 0.0 to 1.0

vendor

String

Mandatory

Source of the value. Eg: "moat.com"

Fields not supported:

Field

Comment

ext

Not supported

Bid Request - Video Object

Field

Type

Status

Comment

mimes

String Array

Mandatory

Content MIME types supported (e.g., “video/x-ms-wmv”,“video/mp4”)

minduration

Integer

Mandatory

Minimum video ad duration in seconds.

maxduration

Integer

Mandatory

Maximum video ad duration in seconds.

protocols

Integer Array

Mandatory

Array of supported video protocols. Refer to list 5.8

w

Integer

Mandatory

Width in pixels

h

Integer

Mandatory

Height in pixels

startdelay

Integer

Recommended

Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll ad placements.

placement

Integer

Mandatory

Placement type for the impression. Refer to List 5.9

linearity

Integer

Recommended

1 = Linear, 2 = Non-linear.

skip

Integer

Mandatory

0 = Not skippable, 1 = Skippable.

playbackmethod

String Array

Mandatory

Playback method that may be in use. Only first element of Array will be used

api

Integer Array

Mandatory

List of supported API frameworks for this impression. 1 = VPAID 1.0, 2 = VPAID 2.0.

ext.rewarded

Integer

Recommended

Criteo specific: 1 if rewarded video type, 0 otherwise. This field can be provided on the video extension object

Fields not supported:

Field

Comment

protocol

Not supported

skipmin

Not supported

skipafter

Not supported

sequence

Not supported

battr

Not supported

maxextended

Not supported

minbitrate

Not supported

maxbitrate

Not supported

boxingallowed

Not supported

playbackend

Not supported

delivery

Not supported

pos

Not supported

companionad

Not supported

companiontype

Not supported

Bid Request - Format Object

Field

Type

Status

Comment

w

Integer

Mandatory

Criteo specific Width in pixels of a supported size.

h

Integer

Mandatory

Criteo specific Height in pixels of the same supported size.

Fields not supported:

Field

Comment

wratio

Not supported

hratio

Not supported

wmin

Not supported

ext

Not supported

Bid Request - PMP Object

Field

Type

Status

Comment

private_auction

Integer

Mandatory for deals

Indicator of auction eligibility to seats named in the Direct Deals object, where 0 = all bids are accepted, 1 = bids are restricted to the deals specified and the terms thereof.

deals

Object array

Mandatory for deals

Array of Deal (see below) objects that convey the specific deals applicable to this impression

Fields not supported:

Field

Comment

ext

Not supported

Bid Request - Deal Object

Note:

  • They must be explicitly approved by Criteo, either via a UI or an email, before being present in a bid request.

  • Criteo will then return the deal ID in the bid response when it wants the bid to be evaluated under the terms of the deal.

  • If Criteo doesn’t want to leverage the terms of the deal, the bid (which will not contain the deal ID and can be of any value) must remain eligible to win the auction.

Field

Type

Status

Comment

id

String

Mandatory

A unique identifier for the deal.

bidfloor

Float

Mandatory

The minimum amount for a bid to be part of the deal, expressed in the currency set in the auction object.

at

Integer

Optional

Optional override of the overall auction type of the bid request, where 1 = First Price, 2 = Second Price Plus, 3 = the value passed in bidfloor is the agreed upon deal price. Additional auction types can be defined by the exchange.

Fields not supported:

Field

Comment

bidfloorcur

Deal currency must match the bid currency

wseat

Criteo is the only buyer

wadomain

Criteo is the only buyer

ext

Not supported

Bid Request - App Object

Field

Type

Status

Comment

id

String

Mandatory for exchange

Exchange-specific app ID.

name

String

Recommended

The application’s name; null when unknown.

bundle

String

Mandatory

Application bundle or package name (e.g. "com.foo.mygame" on Android and numeric on iOS). This is intended to be a unique ID across multiple exchanges.

domain

String

Recommended

Application domain (e.g. "mysupergame.com").

storeurl

String

Recommended

Application store URL (e.g. iTunes store URL or Android store URL).

cat

String Array

Recommended

Array of IAB content categories of the site/page.

publisher

Object

Mandatory for exchange

See Publisher Object.

paid

Integer

Optional

0 = app is free, 1 = the app is a paid version.

content

Object

Optional

See Content object.

Fields not supported:

Field

Comment

sectioncat

Not supported

pagecat

Not supported

ver

Not supported

privacypolicy

Not supported

keywords

Not supported

ext

Not supported

Bid Request - Content Object

Field

Type

Status

Comment

title

String

Optional

Content title.

series

String

Optional

Content series.

genre

String

Optional

Genre that best describes the content (e.g., rock, pop, etc).

producer

Object

Optional

Only support field producer.name (string). Content producer or originator name (e.g., “Warner Bros”).

cat

String Array

Optional

Array of IAB content categories that describe the content producer.

contentrating

String

Optional

Content rating (e.g., MPAA).

userrating

String

Optional

User rating of the content (e.g., number of stars, likes, etc.).

qagmediarating

Integer

Optional

Media rating per IQG guidelines.

livestream

Integer

Optional

0 = not live, 1 = content is live (e.g., stream, live blog).

len

Integer

Optional

Length of content in seconds; appropriate for video or audio.

language

String

Optional

Content language using ISO-639-1-alpha-2.

Bid Request - Publisher Object

Field

Type

Status

Comment

id

String

Mandatory

The publisher’s unique Id; it should be sufficient to identify the party ultimately being paid for the impression auctioned. Cannot be null. Needs to be mapped on CGrid platform.

name

String

Recommended

Name of the publisher

domain

String

Recommended

Highest-level domain of the publisher

Publisher.ext fields

Field

Type

Status

Comment

ext.networkId

Integer

Mandatory

Mandatory publisher network Id to map the request to the proper account. Alternatively the ID can be passed via endpoint query param &networkid=.

Fields not supported:

Field

Comment

cat

Not supported

Bid Request - Device Object

Field

Type

Status

Comment

ua

String

Mandatory

The browser user agent string.

geo

Object

Mandatory

Criteo specific: mandatory to retrieve the user country. See geo object.

dnt

Integer

Mandatory

The user’s intent regarding tracking. If a dnt value was sent in the header by the client application when calling the partner, the value 1 should be passed in this field; if no value was sent, it should be 0.

lmt

Integer

Mandatory

The user’s expressed intent regarding ad tracking. Implemented depending on the operating system, should be 1 when limited ad tracking is required, 0 when it is not or the intent cannot be retrieved.

ip

String

Mandatory

The user's IP address.

os

String

Mandatory for In-App

The device OS: "iOS" for iOS, "Android" for Android.

language

String

Optional

The user’s browser language using ISO-639-1-alpha-2.

carrier

String

Recommended

Carrier or Internet Service Provider; we do not offer an exhaustive list, but will be learning performance based on the content of the field.

connectiontype

Integer

Recommended

Network connection type; we will be learning performance based on the content of the field.

ifa

String

Mandatory for inApp

The device’s advertising ID.

Fields not supported:

Field

Comment

ipv6

Not supported

devicetype

Not supported

make

Not supported

model

Not supported

osv

Not supported

hwv

Not supported

h

Not supported

w

Not supported

ppi

Not supported

pxratio

Not supported

js

Not supported

geofetch

Not supported

flashver

Not supported

mccmnc

Not supported

didsha1

Not supported

didmd5

Not supported

dpidsha1

Not supported by default, please contact your technical account manager to discuss potential integration

dpidmd5

Not supported by default, please contact your technical account manager to discuss potential integration

macsha1

Not supported

macmd5

Not supported

ext

Not supported

Bid Request - Geo Object

Field

Type

Status

Comment

country

String

Mandatory

Criteo specific: The user’s country at the time of the display, using ISO-3166-1-alpha-3.

Fields not supported:

Field

Comment

lat

Not supported

lon

Not supported

type

Not supported

accuracy

Not supported

lastfix

Not supported

ipservice

Not supported

region

Not supported

regionfips104

Not supported

metro

Not supported

city

Not supported

zip

Not supported

utcoffset

Not supported

ext

Not supported

Bid Request - User Object

Field

Type

Status

Comment

id

String

Recommended

The user's ID (partner wide).

buyeruid

String

Mandatory for Web

The Criteo's user ID. See user matching section below for comments on how it is obtained.

yob

Integer

Optional

Year of birth as a 4-digit integer.

geo

Object

Recommended

See geo object.

consent

String

Recommended

Criteo specific: When the request is subject to GDPR regulations, this field is used to indicate the user's consent string. This can be also provided under user.ext.consent.

ext.eids

EID Array

Mandatory if existing

Contains the different IDs provided by the publishers or added on-the-fly by the partner. More on this in the dedicated "User ID Collection" section

Fields not supported:

Field

Comment

gender

Not supported

keywords

Not supported

customdata

Not supported

data

Not supported

Bid Request - Skadn Object

Apple’s iOS 14 release changes how attribution is done across the mobile performance marketing landscape. An iOS user will have to provide consent in order for third-party companies to track their IDFA. SKAdNetwork is Apple’s solution to on-device attribution, which reduces the reliance on third party measurement partners. Criteo registered for SKAdNetwork with Apple and Criteo SKAdNetwork ID is : hs6bdukanm.skadnetwork

SKAdNetwork Support Flow (based on IAB)

  1. Partner SDK retrieves the SKAdNetworkItems from the publisher app’s Info.plist

  2. SDK makes ad request to ad server including SKAdNetworkItems

  3. Partner determines from Info.plist which DSPs have SKAdNetwork capabilities. Bid request to eligible DSPs includes the imp.ext.skadn object, defined above

  4. Criteo responds, including BidResponse.seatbid.bid.ext.skadn if the campaign requires SKAdNetwork support

  5. Ad response to SDK includes skadn object

  6. If the impression is shown and the user clicks, partner calls loadProduct() with the appropriate data, including the Criteo-signed signature. If valid, Apple will consider the app for install attribution

  7. Target app must register that user for SKAdNetwork attribution on app launch.

  8. (Optional). Target app can choose to provide an additional 6 bits of conversion value information.

  9. If SKAdNetwork determines that the DSP’s click led to the install, Apple will send a postback to the Criteo’s registered endpoint with the ids of the source app, target app and campaign, and conversion value if provided by the target app.

Field

Type

Status

Comment

version

String

Mandatory

Version of skadnetwork supported. Dependent on both the OS version and the SDK version.

sourceapp

String

Mandatory

ID of publisher app in Apple’s App Store. Should be equal to app.bundle value

skadnetids

String Array

Mandatory

A subset of SKAdNetworkItem entries in the publisher app’s Info.plist that are relevant to the DSP. Be aware that Criteo SKAdNetwork ID is : hs6bdukanm.skadnetwork

Bid Request Samples

Bid Response

Each bid response generated by Criteo is unique and must be used only once, on the same context of the original bid request. Criteo forbids the usage of bid-caching.

Bid Response - Top Level Object

Field

Type

Comment

id

String

Criteo returns here the identifier present in the corresponding bid request; this is not necessary for the protocol but allows to match the request and response outside of the HTTP bidding protocol.

seatbid

Object Array

See seatbid object.

cur

String

The currency of the bid using ISO-4217 alphabetic codes.

Fields not supported:

Field

Comment

bidid

Not supported

customdata

Not supported

nbr

Not supported

ext

Not supported

Bid Response - Seatbid Object

Field

Type

Comment

bid

Object Array

See bid object.

seat

String

An identifier, commonly used to reflect Criteo’s billing requirement in the bidding process. Please refer to the billing section.

Fields not supported:

Field

Comment

group

Not supported

ext

Not supported

Bid Response - Bid Object

Bid being an array of objects, it explicitly allows for several bids to be present in the bid response. Though this will not be enabled in the general case, note that if several Criteo bids enter an auction, they cannot be used concurrently in the second-pricing mechanism.

Field

Type

Comment

id

String

Bidder generated bid ID to assist with logging/tracking.

impid

String

Criteo returns here the imp identifier passed in the bid request.

price

Float

Criteo’s bid in CPM value (1 means that Criteo is willing to pay 0.001 for this single impression).

nurl

String

Mandatory: contains the win notification url to be called when 'nurl' method is used. Please refer to the Notifications section for more information.

burl

String

Mandatory: contains the billing notification url to be called when 'burl' method is used. Please refer to the Notifications section for more information. This field is used for monitoring purposes, billing figures will still be based on creatives callouts via adm (vast for video).

lurl

String

Mandatory: contains the loss notification url to be called when 'lurl' method is used. Please refer to the Notifications section for more information.

adm

String

Criteo specific: only for Video inventories. The creative ad markup to pass to the browser if the bid wins the auction; the markup includes a macro that must be replaced by the partner with the price it will be charged, in CPM value. This macro will be sent for video markups. Video adm will be an URL which will returns the video tag.

adid

String

ID of a preloaded ad to be served if the bid wins.

adomain

String Array

The domain of the advertiser Criteo is placing a bid for.

bundle

String

If applicable, a platform-specific application identifier intended to be unique to the app and independent of the exchange. On Android, this should be a bundle or package name (e.g., com.foo.mygame). On iOS, it is a numeric ID.

cid

String

Campaign ID to assist with ad quality checking.

crid

String

A unique identifier for the creative, internal to Criteo.

attr

Integer Array

Set of attributes describing the creative.

api

Integer

API required by the markup if applicable.

protocol

Integer

Video response protocol of the markup if applicable.

dealid

String

If present, it signals that Criteo wants the bid to be evaluated under the terms of the deal. It will only be used with a bidprice above the deal’s floorprice.

w

Integer

Video only, the width of the ad.

h

Integer

Video only, the height of the ad.

traceid

String

Criteo specific: A Criteo id used for debugging.

payload

String

Criteo specific: A unique string to be returned in the notification JSON under "payload" field; it can be up to 1024 characters long.

clickbrowser

Integer

Criteo specific: Indicates the type of browser which should be opened upon clicking the creative in an app.

Fields not supported:

Field

Comment

iurl

URL without cache-busting to an image that is representative of the content of the campaign for ad quality/safety checking.

tactic

Not supported

cat

IAB content categories of the creative.

qagmediarating

Not supported

language

Not supported

wratio

Not supported

hratio

Not supported

exp

Not supported

Bid Response - Privacy Object (Criteo specific)

Privacy Object (Criteo specific)

Field

Type

Comment

imageurl

String

URL of the AdChoices icon.

clickurl

String

Link to the custom privacy page.

longlegaltext

String

Legal text mandatory in Russia.

Bid Response - Demand Object (Criteo specific)

Field

Type

Comment

productid

String

ID of the product

campaignid

Integer

ID of the campaign

advertiserid

Integer

ID of the advertiser

Bid Response - Skadn Object

Field

Type

Comment

version

String

Version of SKAdNetwork.

network

String

Ad network identifier used in signature.

campaign

String

Campaign ID compatible with Apple’s spec.

nonce

String

An id unique to each ad response.

sourceapp

String

ID of publisher’s app in Apple’s app store.

timestamp

String

Unix time in millis string used at the time of signature.

signature

String

SKAdNetwork signature as specified by Apple.

Bid Response Samples