OpenRTB 2.6 cheat sheet

The fields and codes you look up most, on a few printed pages. Fields marked * are required. Print this page, or download the PDF. Every name links to its full reference page.

Bid request skeleton

{
  "id": "req-1",
  "imp": [{ "id": "1", "banner": { "w": 300, "h": 250 }, "bidfloor": 0.5, "bidfloorcur": "USD" }],
  "site": { "domain": "news.example", "page": "https://news.example/a", "publisher": { "id": "pub-1" } },
  "device": { "ua": "...", "ip": "203.0.113.0", "devicetype": 2 },
  "user": { "id": "u-1" },
  "regs": { "gdpr": 0 },
  "source": { "schain": { "complete": 1, "ver": "1.0", "nodes": [{ "asi": "ssp.example", "sid": "1", "hp": 1 }] } },
  "at": 1, "tmax": 300, "cur": ["USD"]
}

Bid request

BidRequestTypeWhat it carries
acatstring arrayAn allow list of advertiser categories in the taxonomy named by BidRequest.cattax.
allimpsinteger = 0Flag for whether the impressions in this request are all the impressions available in that context, such as every slot on a page or every spot in a...
appobjectAn App object describing the non-browser application where the impression appears: bundle, store URL, publisher, and content.
atinteger = 2The auction type: 1 for first price, 2 for second price plus.
badvstring arrayA block list of advertiser domains, such as competitors of the publisher.
bappstring arrayA block list of advertised apps by app store ID.
bcatstring arrayA block list of advertiser categories in the taxonomy named by BidRequest.cattax, which defaults to IAB Content Taxonomy 1.0 codes such as IAB25 and...
bseatstring arrayA block list of buyer seat IDs that may not bid on this request.
cattaxinteger = 1The category taxonomy used by BidRequest.bcat and BidRequest.acat, as a value from the AdCOM Category Taxonomies list.
curstring arrayThe currencies bids may use, as ISO 4217 codes.
deviceobjectA Device object describing the device that will show the ad: user agent, IP address, device type, operating system, identifiers, and location.
doohobjectA DOOH object describing a digital out-of-home screen or group of screens.
id *stringThe exchange's ID for this bid request, used to track the responses that come back.
imp *object arrayThe array of Imp objects, one per impression on offer.
regsobjectA Regs object listing the legal and regulatory signals that apply, such as COPPA, GDPR, US Privacy, and GPP.
siteobjectA Site object describing the website where the impression appears: domain, page URL, publisher, and content.
sourceobjectA Source object describing the upstream origin of the request and who makes the final sale decision, including the transaction ID and, since 2.6,...
testinteger = 0Test mode flag: 0, the default, means a live auction, and 1 means the auction is a test and not billable.
tmaxintegerThe maximum time in milliseconds the exchange will wait for bids, network latency included.
userobjectA User object describing the person using the device, who is the advertising audience.
wlangstring arrayAn allow list of creative languages as ISO 639-1 two-letter codes.
wlangbstring arrayAn allow list of creative languages as IETF BCP 47 tags, which can name regional and script variants such as pt-BR or zh-Hant.
wseatstring arrayAn allow list of buyer seat IDs, such as advertiser or agency accounts, permitted to bid on this request.

Impression

ImpTypeWhat it carries
audioobjectAn Audio object, present when the impression is offered as audio, such as a streaming radio or podcast ad break.
bannerobjectA Banner object, present when the impression is offered as display.
bidfloorfloat = 0The minimum acceptable bid for this impression, as a CPM in the currency named by Imp.bidfloorcur.
bidfloorcurstring = USDCurrency of Imp.bidfloor as an ISO-4217 alphabetic code such as USD or EUR.
clickbrowserintegerWhich browser opens when a user clicks the ad in an app: 0 for an embedded in-app browser, 1 for the device's native browser.
displaymanagerstringName of the SDK, mediation partner, or player that will render the ad, typically in apps and video players.
displaymanagerverstringVersion of the SDK, mediation partner, or player named in Imp.displaymanager.
dtfloatEstimated time the impression will be delivered, as Unix epoch milliseconds in a float.
expintegerAdvisory number of seconds that may pass between the auction and the moment the impression is actually shown.
id *stringIdentifier for this impression, unique within the bid request.
iframebusterstring arrayNames of the iframe buster files the publisher supports.
instlinteger = 0Interstitial flag: 1 when the ad is shown full screen or as an interstitial, 0 when it is not.
metricobject arrayAn array of Metric objects reporting measured properties of the impression, such as recent viewability or click-through rate, so buyers can price it.
nativeobjectA Native object, present when the impression is offered as native.
pmpobjectA Pmp object listing the private marketplace deals that apply to this impression, with a flag saying whether open-market bids are still accepted.
qtyobjectA Qty object stating how many impressions one play of the ad counts as, for screens seen by more than one person at once.
refreshobjectA Refresh object describing how this ad slot reloads automatically: what triggers it, the minimum interval, and how many times it has refreshed...
rwddinteger = 0Rewarded flag: 1 when the user receives something for watching the ad, such as an extra game life or a free article, 0 otherwise.
secureintegerWhether the impression requires HTTPS for all creative assets and markup: 1 for secure, 0 for not.
ssaiinteger = 0How server-side ad insertion affects asset and tracker retrieval: 0 unknown, 1 all client-side, 2 assets stitched server-side with tracking fired...
tagidstringThe seller's identifier for the ad placement or tag that started the auction.
videoobjectA Video object, present when the impression is offered as video.

Key enum values

device.devicetype

  • 1 Mobile/Tablet - General
  • 2 Personal Computer
  • 3 Connected TV
  • 4 Phone
  • 5 Tablet
  • 6 Connected Device
  • 7 Set Top Box
  • 8 OOH Device

device.connectiontype

  • 1 Ethernet; Wired Connection
  • 2 WIFI
  • 3 Cellular Network - Unknown Generation
  • 4 Cellular Network - 2G
  • 5 Cellular Network - 3G
  • 6 Cellular Network - 4G
  • 7 Cellular Network - 5G

video.plcmt

  • 1 Instream
  • 2 Accompanying Content
  • 3 Interstitial
  • 4 No Content/Standalone
  • 5 Pause
  • 6 Screensaver
  • 7 Overlay
  • 8 Squeezeback
  • 9 In-scene

api

  • 1 VPAID 1.0
  • 2 VPAID 2.0
  • 3 MRAID 1.0
  • 4 ORMMA
  • 5 MRAID 2.0
  • 6 MRAID 3.0
  • 7 OMID 1.0
  • 8 SIMID 1.0
  • 9 SIMID 1.1

video.protocols

  • 1 VAST 1.0
  • 2 VAST 2.0
  • 3 VAST 3.0
  • 4 VAST 1.0 Wrapper
  • 5 VAST 2.0 Wrapper
  • 6 VAST 3.0 Wrapper
  • 7 VAST 4.0
  • 8 VAST 4.0 Wrapper
  • 9 DAAST 1.0
  • 10 DAAST 1.0 Wrapper
  • 11 VAST 4.1
  • 12 VAST 4.1 Wrapper
  • 13 VAST 4.2
  • 14 VAST 4.2 Wrapper
  • 15 VAST 4.3
  • 16 VAST 4.3 Wrapper

pos

  • 0 Unknown
  • 1 Above The Fold
  • 2 Locked (fixed position)
  • 3 Below The Fold
  • 4 Header
  • 5 Footer
  • 6 Sidebar
  • 7 Fullscreen
  • 8 Partial Screen
  • 9 Top Left
  • 10 Top Right
  • 11 Frame the content
  • 12 Double box
  • 13 Double box with background
  • 14 Bottom Left
  • 15 Bottom Right
  • 16 L shape
  • 17 Reversed L shape

Bid response

BidResponseTypeWhat it carries
bididstringA response ID the bidder generates for its own logging and tracking.
curstring = USDThe currency of every bid price in this response, as an ISO 4217 code.
customdatastringAn optional string the bidder asks the exchange to store in the exchange's own cookie for this user, written in base85 cookie-safe characters.
id *stringThe ID of the bid request this response answers, copied from BidRequest.id.
nbrintegerA code explaining why the bidder is not bidding, such as 2 for an invalid request or 8 for an unmatched user.
seatbidobject arrayThe array of SeatBid objects, one per buyer seat, that carries the actual bids.
SeatBidTypeWhat it carries
bid *object arrayThe array of Bid objects made for this seat, each tied to one impression in the request.
groupinteger = 0Whether the seat's bids must be won together: 0, the default, lets each impression be won on its own, while 1 means the seat wants all of them or...
seatstringThe ID of the buyer seat, such as an advertiser or agency account, on whose behalf these bids are made.
BidTypeWhat it carries
admstringThe ad markup, sent in the bid so the exchange can serve it if the bid wins: HTML for banners, a VAST document for video and audio, or a native...
adomainstring arrayThe advertiser's domain, used to check the bid against the publisher's advertiser block list.
burlstringThe billing notice URL, which the exchange calls when a winning bid becomes billable under its own policy, typically on delivery or view.
catstring arrayCategories describing the creative, in the taxonomy named by Bid.cattax, or IAB Content Taxonomy 1.0 when that field is absent.
cridstringThe bidder's creative ID, used by exchanges for ad quality checks, creative approval, and reporting problems back to the bidder.
dealidstringThe ID of the private marketplace deal this bid is made under, copied from Deal.id in the impression's Imp.pmp.
hintegerThe height of the creative in device-independent pixels.
id *stringThe bidder's ID for this bid, used for logging and tracking.
impid *stringThe ID of the impression this bid is for, copied from Imp.id in the request.
lurlstringThe loss notice URL, which the exchange calls when it knows this bid lost.
mtypeintegerThe type of markup in this bid, so the exchange can match it to the right media object on the impression: 1 banner, 2 video, 3 audio, 4 native.
nurlstringThe win notice URL, which the exchange calls when this bid wins the auction.
price *floatThe bid price as a CPM, the price per thousand impressions, even though the bid buys a single impression.
wintegerThe width of the creative in device-independent pixels.

Substitution macros

No-bid reasons (nbr)

  • 0 Unknown Error
  • 1 Technical Error
  • 2 Invalid Request
  • 3 Known Web Crawler
  • 4 Suspected Non-Human Traffic
  • 5 Cloud, Data Center, or Proxy IP
  • 6 Unsupported Device
  • 7 Blocked Publisher or Site
  • 8 Unmatched User
  • 9 Daily User Cap Met
  • 10 Daily Domain Cap Met
  • 11 Ads.txt Authorization Unavailable
  • 12 Ads.txt Authorization Violation
  • 13 Ads.cert Authentication Unavailable
  • 14 Ads.cert Authentication Violation
  • 15 Insufficient Auction Time
  • 16 Incomplete SupplyChain
  • 17 Blocked SupplyChain Node
  • 500+ Exchange-specific