OpenRTB and programmatic advertising glossary
141 terms, grouped by topic. Each definition links to the page that covers the term in depth: a glossary entry, a field reference page, or a guide.
Industry and standards
- AAMP
- AAMP, the Agentic Advertising Management Protocols, is IAB Tech Lab's umbrella program for agentic advertising standards. It groups the work into foundations, protocols, and trust, ships buyer and seller agent SDKs, and builds on OpenRTB, AdCOM, VAST, and GPP instead of replacing them. Version 1.0 arrived in January 2026 and version 2.0 in June 2026.
- Ad exchange
- An ad exchange is the marketplace that runs real-time auctions for ad impressions. It receives an impression from a publisher or SSP, sends bid requests to connected bidders, applies floors and blocks, picks the winner, and returns the ad. In OpenRTB the exchange is the party that sends requests and sets the auction rules, such as
BidRequest.atandBidRequest.tmax. - Ad server
- An ad server is the system that decides which ad fills a slot and records that it was shown. A publisher ad server, such as Google Ad Manager, holds direct-sold campaigns, priorities, and pacing, and weighs them against programmatic demand. An advertiser ad server hosts creatives and counts impressions and clicks independently of the seller. Neither is an OpenRTB role, though both shape what bidders see.
- AdCOM
- AdCOM, the Advertising Common Object Model, is the IAB Tech Lab companion specification that defines objects and enumerated lists shared across its standards. OpenRTB 2.6 moved all of its value lists there, such as device types, API frameworks, and creative attributes, so the lists can change faster than the protocol. OpenRTB 3.0 also uses AdCOM as its full domain model.
- AdCP
- AdCP, the Ad Context Protocol, is an open protocol that lets AI agents discover, negotiate, and buy media from each other. It launched in October 2025, is governed by AgenticAdvertising.org, and runs over the Model Context Protocol with Agent2Agent as a second transport. A negotiated AdCP buy still executes in the auction as an ordinary OpenRTB request, usually as a deal.
- Agentic buying
- Agentic buying is media buying in which software agents, usually built on large language models, plan and negotiate campaigns on behalf of buyers and sellers. The agents mostly work at planning and negotiation time over protocols such as AdCP or IAB Tech Lab's AAMP, and what they agree on still executes as an ordinary OpenRTB bid request, typically carrying a deal ID.
- ARTF
- ARTF, the Agentic RTB Framework, is IAB Tech Lab's specification for running third-party agent services inside the auction path. A host exchange or DSP runs agent containers next to its auction and calls them over gRPC with Protocol Buffers, and the agents return typed mutations that change the bid request or response in flight. Version 1.0 went to public comment in November 2025.
- DSP
- A DSP (demand-side platform) is software that buys ad impressions for advertisers and agencies, deciding for each bid request whether to bid and how much based on targeting, budget, and the signals in the request. In OpenRTB a DSP is the bidder: it receives bid requests, returns bid responses for the seats it represents, and receives win, billing, and loss notices.
- Header bidding
- Header bidding is a publisher technique that asks several exchanges and demand sources to bid on an impression at the same time, before the primary ad server decides, so they compete on price instead of being called in a fixed order. It runs client-side in the browser or app, or server-side, and Prebid is the most widely used implementation.
- IAB Tech Lab
- IAB Tech Lab is the nonprofit technical standards body of the digital advertising industry, funded by member companies and set up by the Interactive Advertising Bureau. It maintains OpenRTB, AdCOM, VAST, ads.txt, sellers.json, the supply chain object, and the Global Privacy Platform, and more recently its agentic standards, AAMP and ARTF. Member working groups write and revise the specifications.
- OpenRTB
- OpenRTB is the IAB Tech Lab standard for real-time bidding: the JSON bid request an exchange sends to bidders, the bid response they return, and the win, billing, and loss notices that follow. It began as an industry pilot in 2010 and now ships as dated 2.6 snapshots, with its value lists kept in AdCOM and a separate, rarely deployed 3.0 line.
- OpenRTB 3.0
- OpenRTB 3.0 is a layered redesign of the protocol, first released in November 2018, that wraps a thin Request and Response in an Openrtb envelope and moves every domain object, such as placements, ads, and context, into AdCOM. It was designed with ads.cert signed requests built in. It is not backward compatible with 2.x, and most production traffic still runs 2.6.
- Prebid Server
- Prebid Server is the open-source server-side header bidding engine from Prebid.org, with separate Go and Java implementations. It accepts an OpenRTB bid request, splits it into one request per configured bidder, calls them in parallel, and returns the combined bids. Prebid.js, the Prebid Mobile SDKs, AMP pages, and long-form video integrations use it to move auctions off the device.
- Prebid.js
- Prebid.js is the open-source JavaScript library, maintained by Prebid.org, that runs header bidding auctions in the browser. Publishers configure ad units and bidder adapters; Prebid.js calls each demand partner in parallel, collects bids within a timeout, and passes the winners to the ad server as targeting keys. It can also route some bidders through Prebid Server instead of calling them from the page.
- Programmatic advertising
- Programmatic advertising is the automated buying and selling of digital ads, where software decides which ad to show and at what price, often through an auction that runs while a page or app loads. It covers open auctions, private marketplaces, and fixed-price deals carried over the same connections. OpenRTB is the shared message format that lets exchanges and buyers trade.
- SSP
- An SSP (supply-side platform) is software that sells a publisher's ad inventory programmatically, managing floors, deals, and demand connections to get the best price for each impression. Many SSPs also run their own ad exchange. In OpenRTB terms an SSP usually plays the exchange role: it builds the bid request, sends it to bidders, runs the auction, and fires the notices.
- Waterfall
- A waterfall is the older way of selling remnant inventory, in which the publisher's ad server calls demand partners one at a time in a fixed priority order, usually ranked by their historical average price, and passes the impression down the list until someone fills it. Header bidding largely replaced it on the web by letting partners bid at the same time.
Auction and pricing
- Auction type
- Auction type is the rule that sets what the winning bidder pays, carried in
BidRequest.at: 1 for first price, 2 for second price plus, and 500 or higher for exchange-specific rules. The default is 2, so a first-price exchange must send 1 explicitly. A deal can override the request value throughDeal.at, where 3 means the deal floor is the fixed agreed price. - Bid density
- Bid density is the number of competing bids an auction receives for an impression, usually reported as an average per auction. More bids push the clearing price up and make floors matter less; thin auctions clear near the floor or not at all. It is mostly an exchange and publisher metric, because a single bidder sees only its own bid and whatever price feedback the exchange returns.
- Bid floor
- A bid floor is the minimum CPM a seller will accept for an impression, sent in
Imp.bidfloorwith its currency inImp.bidfloorcur, which defaults to USD. Bids below it are rejected, and exchanges report that with loss reason 100. Deals carry their own floor inDeal.bidfloor, and video or audio slots can add duration-based floors or a per-second minimum inVideo.mincpmpersec. - Bid multiplier
- A bid multiplier is a factor a DSP applies to a base bid to raise or lower it for a slice of traffic, for example 1.2 for a valuable audience or 0.5 for a weak placement. It is buyer-side configuration, not an OpenRTB field. People often confuse it with the impression multiplier in
Qty.multiplier, which says how many impressions one digital out-of-home play counts as. - Bid rate
- Bid rate is the share of bid requests to which a bidder responds with at least one bid, calculated as requests bid on divided by requests received. Exchanges track it per bidder to decide how much traffic to send, and bidders track it to see whether their campaigns match the supply. A low bid rate means most requests are being passed on, for good reasons or bad ones.
- Bid shading
- Bid shading is a buy-side pricing technique that submits less than the buyer's full valuation, estimating the lowest bid that still wins. It became standard when exchanges moved to first-price auctions, where the winner pays its own bid. OpenRTB carries no shading field. DSPs train shading models on auction feedback, chiefly the clearing price, the
${AUCTION_MIN_TO_WIN}macro, and loss reason codes. - Clearing price
- The clearing price is what the winning bidder actually pays for an impression. In a first-price auction it equals the winning bid; in a second-price auction it is set just above the runner-up, or at the floor. The exchange reports it to the winner by substituting the
${AUCTION_PRICE}macro in the win or billing notice, in the bid's currency and CPM units. - Curation
- Curation is the packaging of inventory and data into a ready-to-buy deal, assembled on the sell side by a curator such as a data company, an agency, or an SSP. The buyer receives one deal ID, and the audience and inventory filters behind it are applied before the request is sent. In OpenRTB a curated deal looks like any other entry in
Pmp.deals, with nothing marking it as curated. - Deal
- A deal is a prearranged agreement between a seller and a buyer to trade impressions on agreed terms, such as a fixed price, a floor, a list of allowed seats, or a commitment to buy. In OpenRTB each eligible deal appears as a
Dealobject insideImp.pmp, named byDeal.id, and a bid that uses the deal echoes that ID inBid.dealid. - Deal ID
- A deal ID is the string both sides agree on in advance to name a deal. The seller sends it in
Deal.idinsideImp.pmp, and a buyer bidding on that deal must return the identical value inBid.dealid. When the two differ, the deal never triggers: the bid either falls back to open-auction treatment or is rejected, often with loss reason 4 (Invalid Deal ID). - Fill rate
- Fill rate is the share of a publisher's ad requests that end with an ad served, calculated as filled impressions divided by ad requests. It is a sell-side metric that an SSP or ad server reports per placement, deal, or demand partner. Low fill means bidders saw the inventory and passed, or that their bids were filtered out before any could win.
- First-price auction
- A first-price auction is an auction in which the highest bid wins and the winner pays exactly the amount it bid. OpenRTB signals it by setting
BidRequest.atto 1. Because nothing discounts the price toward the runner-up, buyers lower their bids toward the expected clearing price, a practice called bid shading. Most open-market programmatic auctions now run this way. - Floor optimization
- Floor optimization is the sell-side practice of setting each impression's minimum price from data, moving
Imp.bidfloorup or down by placement, buyer signals, time, or other context to earn more than one static floor would. SSPs, publisher ad servers, and header bidding wrappers all do it. Done well, it takes more from high-value impressions without killing fill on the rest. - Loss reason
- A loss reason is the code an exchange sends a bidder to explain why its bid did not win, substituted into the
${AUCTION_LOSS}macro in the loss notice URL inBid.lurl. The list is maintained with OpenRTB 3.0 and covers exchange errors and invalid bids, auction outcomes such as floors, higher bids, and blocked seats (100 to 104), and creative filtering (200 to 215), with 500 and above left to exchanges. - Minimum bid to win
- Minimum bid to win is the lowest price that would have won or tied an auction, reported to bidders through the
${AUCTION_MIN_TO_WIN}macro added in OpenRTB 2.6. A losing bidder learns how far below the winner it was; a winning bidder learns the next-closest bid, or the floor if it bid alone. Exchanges may leave it empty when their policy forbids sharing prices. - No-bid
- A no-bid is a bidder's decision not to bid on a request. The usual forms are an empty HTTP 204 response or a
BidResponsethat carries only the request ID and a reason code inBidResponse.nbr. A no-bid is a valid, on-time answer, unlike a response that arrives afterBidRequest.tmax, which the exchange treats as a timeout and discards. - No-bid reason
- A no-bid reason is the integer a bidder returns in
BidResponse.nbrto explain why it passed on a request. Codes 0 to 17 come from the No-Bid Reason Codes list kept with OpenRTB 3.0 and cover technical errors, invalid requests, suspected invalid traffic, unmatched users, ads.txt and supply chain failures, and insufficient auction time. Values of 500 and above are exchange-specific. - Open auction
- The open auction is the public tier of programmatic, where any buyer the exchange admits can bid on an impression without a prior agreement. In OpenRTB it is the default: a request with no
Imp.pmp, or withPmp.private_auctionat 0, accepts bids that carry no deal ID. The floor comes fromImp.bidfloorand the pricing rule fromBidRequest.at. - Preferred deal
- A preferred deal is a fixed-price agreement in which one buyer gets first look at a seller's inventory before it goes to auction, with no obligation to buy. In OpenRTB it is usually a
DealwithDeal.atset to 3, so thatDeal.bidflooris the agreed price, and withDeal.guarleft at 0. Exact encodings vary by exchange. - Private auction
- A private auction is a closed auction in which only invited buyers, named through deals, can compete for an impression; the term is often used interchangeably with PMP. OpenRTB expresses the restriction with
Pmp.private_auction: 1 means only bids for the listed deals are eligible, while 0, the default, means open bids are accepted alongside them. - Private marketplace
- A private marketplace (PMP) is an invitation-only auction in which a seller offers inventory to selected buyers, usually at a higher floor than the open market. In OpenRTB it is expressed through
Imp.pmp: theDealobjects listed there name the eligible deals and their terms, andPmp.private_auctionset to 1 limits bidding to those deals. - Programmatic guaranteed
- Programmatic guaranteed (PG) is a deal with a fixed price and a committed volume that the buyer must purchase, executed through the bid stream instead of a manual insertion order. In OpenRTB a PG deal is typically a
DealwithDeal.guarset to 1, meaning the bidder is expected to bid, andDeal.atset to 3 so the deal floor is the fixed price. - Real-time bidding
- Real-time bidding (RTB) is the sale of a single ad impression through an auction that runs while the page or app is loading. An exchange describes the impression in a bid request, sends it to many bidders at once, collects priced responses within a deadline of a few hundred milliseconds or less, and picks a winner. OpenRTB is the message format most of these auctions use.
- Second-price auction
- A second-price auction is an auction in which the highest bid wins but pays only slightly more than the second-highest bid, or the floor when no other bid competes. OpenRTB calls this Second Price Plus and encodes it as
BidRequest.atvalue 2, which is also the default when the field is absent. Most exchanges moved away from it toward first price as header bidding spread. - Timeout rate
- Timeout rate is the share of bid requests for which a bidder's response did not reach the exchange before the auction deadline in
BidRequest.tmax. A timed-out response is discarded whatever it contains, so the bidder loses the auction without the exchange counting a bid. Rising timeouts point at network distance, slow decisioning, or a deadline set too tight, not at pricing. - Win rate
- Win rate is the share of a bidder's bids that win their auctions, calculated as wins divided by bids submitted. It is the main feedback signal for buy-side pricing: too low and the bidder wastes compute and misses delivery, too high and it is probably overpaying. Some reports divide wins by bid requests received instead, so check which denominator a number uses before comparing it.
Request and response
- Ad markup
- Ad markup is the creative payload a winning bid delivers: HTML for display, a VAST XML document for video and audio, or a native response for native ads. It travels inline in
Bid.admor as the body returned by the win notice URL inBid.nurl; when both are present,Bid.admtakes precedence. The exchange expands substitution macros in the markup before serving it. - allimps
- allimps is a
BidRequestflag that tells bidders whether the impressions offered are every impression available in that context, such as all the ad slots on a page or all the breaks in a video. A value of 1 supports roadblocking, where one advertiser takes every slot; 0, the default, means no or unknown. Bidders that want all or nothing can answer withSeatBid.groupset to 1. - Bid
- A bid is a
Bidobject in a bid response: an offer to buy one impression at a stated price. It requires its ownBid.id, aBid.impidmatching anImp.idfrom the request, and a CPMBid.price. It usually also carries the markup inBid.adm, notice URLs, advertiser domains, creative IDs, and the markup type inBid.mtype. - Bid request
- A bid request is the JSON message an exchange sends to bidders to offer one or more impressions for sale. Its top-level
BidRequestobject needs only anidand at least oneImp, but a useful request also describes the site, app, or DOOH screen, the device, the user, privacy signals inBidRequest.regs, and the supply path inBidRequest.source. - Bid response
- A bid response is a bidder's answer to a bid request. The
BidResponseechoes the request ID, groups bids by buyer seat inBidResponse.seatbid, and gives each bid a CPM price for one impression inBid.price. A bidder that passes returns HTTP 204 or a response carrying only a no-bid reason inBidResponse.nbr. - Billing notice
- A billing notice is the call an exchange makes to the URL in
Bid.burlwhen a winning bid becomes billable under the exchange's own policy, typically when the ad is delivered or rendered. Added in OpenRTB 2.5, it separates spend from auction wins. The spec advises firing it server-side, as close as possible to where the exchange books revenue, so both parties count the same events. - Currency
- Currency in OpenRTB is always an ISO-4217 alphabetic code such as USD or EUR. The request lists the bid currencies it accepts in
BidRequest.cur, floors carry their own inImp.bidfloorcurandDeal.bidfloorcur, and the response states its single currency inBidResponse.cur. Floors and responses default to USD when omitted, and a deal floor never inherits the impression's currency. - Extensions
- Extensions are the
extobjects OpenRTB places on nearly every object as a container for fields the spec does not define. Exchanges and bidders put agreed custom data there, and several standard fields, including GDPR consent and the supply chain, lived inextbefore later versions promoted them. Readers must tolerate unknown extension content and should check the promoted location first. - Impression
- An impression is one opportunity to show an ad to a viewer, and in OpenRTB it is the unit being auctioned. Each opportunity in a bid request is an
Impobject with anImp.idunique within that request, and every bid points back to one throughBid.impid. The offered impression becomes a counted, billable impression only later, when the ad actually renders under the exchange's rules. - JSON dialect
- A JSON dialect is one of the two ways OpenRTB payloads get written as JSON. The specification encodes flags as the integers 0 and 1 under snake_case names, while JSON produced from the IAB protobuf schema writes many of those flags as true or false and may switch names to lowerCamelCase. Nothing in a payload says which dialect it uses, so a mismatch drops fields or rejects whole messages.
- Loss notice
- A loss notice is the call an exchange makes to the URL in
Bid.lurlwhen it knows a bid lost. Added in OpenRTB 2.5, it usually carries a loss reason code through${AUCTION_LOSS}and, where the exchange shares prices, the${AUCTION_MIN_TO_WIN}value. Exchange policy may skip loss notices entirely or blank out the price macros in them. - Protobuf JSON
- Protobuf JSON is the JSON produced when an OpenRTB message defined in a Protocol Buffers schema is serialized with the standard protobuf JSON mapping. It differs from spec JSON in ways that break parsers: flags the spec types as integers become booleans, bool fields reject 0 and 1, and names can switch to lowerCamelCase. It is common wherever OpenRTB travels over gRPC, including ARTF.
- QPS
- QPS (queries per second) is the rate of bid requests an exchange sends to a bidder, and the main capacity limit in an RTB integration. Bidders agree a QPS cap with each exchange based on what their infrastructure and budgets can absorb, and the exchange throttles or filters traffic to stay under it. OpenRTB does not define QPS; it is an operational term.
- Seat
- A seat is a buyer account, usually an advertiser or agency, on whose behalf a bidder places bids. A DSP serves many seats, each with its own budget and terms, and seat IDs are agreed between exchange and bidder in advance. In OpenRTB, seats appear in allow and block lists on the request and in
SeatBid.seaton the response. - Seatbid
- A seatbid is the
SeatBidobject in a bid response that groups one or more bids made on behalf of a single buyer seat. A response holds an array of them inBidResponse.seatbid, with at least one entry whenever a bid is made. Each names its seat inSeatBid.seat, holds its bids inSeatBid.bid, and can useSeatBid.groupto require all-or-nothing wins. - Substitution macro
- A substitution macro is a placeholder such as
${AUCTION_PRICE}that a bidder writes into its notice URLs or ad markup and the exchange replaces with live auction data before use. OpenRTB 2.6 defines fourteen of them, covering IDs, the clearing price, currency, loss reason, minimum bid to win, and seller discounts. A macro whose value is unknown becomes an empty string. - Test flag
- The test flag is
BidRequest.test, an integer that marks an auction as test traffic when set to 1. Test auctions are not billable, so both sides can exercise an integration without spending budget; the default, 0, means live. Bidders should still parse and answer test requests normally but keep them out of reported wins, spend, and delivery. - tmax
- tmax is the bid request field that sets the auction deadline: the maximum time, in milliseconds, the exchange will wait for a bid response, network latency included. A response that arrives later is discarded. The value in
BidRequest.tmaxoverrides any timeout agreed earlier, and a bidder's real compute budget is tmax minus the round trip to the exchange. - Win notice
- A win notice is the HTTP call an exchange makes to the URL in
Bid.nurlwhen that bid wins its auction, after replacing macros such as${AUCTION_PRICE}with auction data. A win does not prove the ad was delivered or is billable; that is the billing notice's job. The win notice response can also return the ad markup when the bid did not include it.
Inventory and formats
- App
- In OpenRTB, an app is non-browser application inventory, such as a mobile game, a news app, or a streaming app on a connected TV, described by the
BidRequest.appobject. It identifies the app by its store ID and store URL and names the publisher. A request should carry exactly one of app, site, or dooh. - Blocked advertisers
- Blocked advertisers are the brands a seller refuses for a request, listed by domain in
BidRequest.badv, for example ford.com. Bidders compare the list with the advertiser domains they declare inBid.adomainand should not bid on behalf of a blocked brand. A bid withoutBid.adomaincannot be checked against the list at all. - Blocked categories
- Blocked categories are the ad categories a seller refuses for a request, listed in
BidRequest.bcat. The codes come from the taxonomy named inBidRequest.cattax, which defaults to IAB Content Category Taxonomy 1.0 with codes such as IAB25 and IAB26. OpenRTB 2.6-202309 addedBidRequest.acatas an allowlist alternative, and a request should use one or the other. - Bundle ID
- A bundle ID is the identifier an app store assigns to an app, carried in OpenRTB as
App.bundle. On Google Play it is the package name, such as com.example.game; on the Apple App Store it is the numeric store ID; CTV stores use their own formats. Buyers use it for app-ads.txt checks,BidRequest.bappblocklists, and brand safety. - Connection type
- Connection type is the network a device uses to reach the internet, sent as an integer in
Device.connectiontypefrom the AdCOM Connection Types list: 1 Ethernet, 2 Wi-Fi, 3 cellular of unknown generation, and 4 to 7 for 2G, 3G, 4G, and 5G. Buyers use it to choose creative weight and bitrate and to tell home traffic from mobile traffic. - Content taxonomy
- A content taxonomy is a standard list of categories for describing what content is about, and in OpenRTB it usually means the IAB Tech Lab Content Taxonomy. Its codes fill fields such as
Site.cat,App.cat, andContent.cat, and a matchingcattaxfield says which taxonomy and version the codes come from, since codes differ between versions. - Device type
- Device type is the class of device an ad will show on, sent as an integer in
Device.devicetypefrom the AdCOM Device Types list: 1 mobile or tablet (general), 2 personal computer, 3 connected TV, 4 phone, 5 tablet, 6 connected device, 7 set top box, and 8 out-of-home device. Buyers use it to separate CTV, mobile, and desktop demand. - Digital out-of-home
- Digital out-of-home (DOOH) is advertising on screens in public places, such as roadside billboards, transit displays, and screens in shops and venues. OpenRTB 2.6-202211 added
BidRequest.doohas a third inventory context next to site and app, with venue type fields and an impression multiplier inImp.qty, because one play of an ad is seen by many people. - Geolocation
- Geolocation in OpenRTB is the location of the device or user, described by a
Geoobject atdevice.geo, for where the device is now, and atuser.geo, for the user's home base. It can carry coordinates, country, region, metro, city, and postal code, plus fields that say where the location came from and how precise it is. - Interstitial
- An interstitial is an ad that covers the full screen or most of it, shown at a natural pause such as between game levels or page transitions, and closed by the user. In OpenRTB,
Imp.instl= 1 marks any impression as interstitial. For video,Video.plcmtvalue 3 also describes interstitial placements that play without surrounding video content. - IP truncation
- IP truncation is removing the lowest bits of the device IP address before a bid request goes out, so the address points to a network block rather than one household. OpenRTB 2.3 to 2.5 described it for COPPA requests: drop the last 8 bits of
Device.ipand the last 32 bits ofDevice.ipv6. It also lowers the precision of IP-based geolocation and fraud checks. - MRAID
- MRAID (Mobile Rich Media Ad Interface Definitions) is an IAB Tech Lab standard that defines how rich media ads talk to an app's ad container, so a creative can expand, resize, close, or ask whether it is visible. In OpenRTB, a seller signals MRAID support with API framework values 3, 5, and 6 (MRAID 1.0, 2.0, and 3.0) in the impression's api array.
- Multi-format impression
- A multi-format impression is a single
Impthat offers more than one media type at once, for example a banner and a video, or a native ad and a banner, so buyers with different creative types can compete for the same slot. The exchange picks one winner, and in OpenRTB 2.6 each bid states which media type it is inBid.mtype. - Native ads
- Native ads are ads assembled from components such as a title, an image, a description, and a call to action, which the publisher renders to match the look of the surrounding content. In OpenRTB the offer is
Imp.native, whoseNative.requestfield holds a separate Native Ads request encoded as a JSON string, and the bid returns native response JSON inBid.adm. - Native asset
- A native asset is one component of a native ad, such as a title, an image, a data element like a rating or price, or a video, declared in the Native Ads request inside
Native.request. Each asset has a numeric ID that the response must echo and can be marked as required. Image and data assets take a type from their own lists, for example icon or main image. - OMID
- OMID (Open Measurement Interface Definition) is the interface of IAB Tech Lab's Open Measurement SDK, which lets third-party verification vendors measure viewability and ad events through one shared integration instead of each vendor shipping its own SDK. In OpenRTB, a seller signals that its environment runs Open Measurement with API framework value 7 (OMID 1.0) in the impression's api array.
- Rewarded ads
- A rewarded ad is one the user chooses to watch in exchange for something of value, such as an extra life in a game, a free article, or a session of ad-free listening, usually granted after the ad completes. OpenRTB 2.6 signals it with
Imp.rwdd= 1. Before 2.6 the flag lived in exchange-specific extensions underimp.ext. - Seat allow and block lists
- Seat allow and block lists restrict which buyer seats may bid on a request.
BidRequest.wseatlists the only seats allowed,BidRequest.bseatlists seats that are barred, and a request should use at most one of them. A seat is a buyer account, such as an agency or an advertiser, whose ID the exchange and the bidder agree on in advance. - SIMID
- SIMID (Secure Interactive Media Interface Definition) is an IAB Tech Lab standard for interactive video ads that leaves the media file under the player's control and runs the interactive layer separately in its own iframe. It takes over the interactivity role VPAID used to play. In OpenRTB, a player signals support with API framework values 8 (SIMID 1.0) and 9 (SIMID 1.1) in
Video.api. - Site
- In OpenRTB, a site is web inventory: an ad opportunity on a page rendered in a browser, described by the
BidRequest.siteobject. It carries the page URL, the domain, content categories, and the publisher. Site is one of three inventory contexts, next to app and dooh, and a request should carry exactly one of them. - Store URL
- The store URL is the address of an app's listing in its app store, carried in OpenRTB as
App.storeurlsince version 2.1. Buyers follow it to the developer website named in the listing, which is where app-ads.txt lives, so a missing or wrong store URL makes app inventory hard to authorize. It should describe the same app asApp.bundle. - Structured user agent
- A structured user agent is the
Device.suaobject added in OpenRTB 2.6, which describes the browser and platform as separate fields instead of one string. It lists browser brands and versions inUserAgent.browsersand the platform inUserAgent.platform, adds mobile, architecture, bitness, and model, and usesUserAgent.sourceto say whether the data came from client hints or a parsed UA string. - User agent
- The user agent is the string a browser or app sends to identify its software, version, and operating system, carried in OpenRTB as
Device.ua. Buyers parse it for device targeting and fraud checks. Chrome's User-Agent reduction froze much of that detail, so OpenRTB 2.6 addedDevice.suafor structured data, and the spec says to trust sua when both are present. - User-agent client hints
- User-Agent Client Hints are HTTP headers, such as Sec-CH-UA, Sec-CH-UA-Mobile, and Sec-CH-UA-Platform, that Chromium browsers send in place of the detail removed from the User-Agent string. Low-entropy hints arrive by default, while high-entropy ones such as the full version list and device model must be requested. OpenRTB 2.6 maps them into
Device.sua.
Video and CTV
- Accompanying content
- Accompanying content is
Video.plcmtvalue 2: video ads that play before, during, or after video content in a player that sits alongside the page's main text or images instead of being the reason for the visit. Playback starts only when the player enters the viewport, and the player may float as the user scrolls. LegacyVideo.placementvalue 2 meant in-banner, which is a different thing. - Ad pod
- An ad pod is a group of ads played back to back in one break, like a TV commercial break. OpenRTB 2.6 describes pods with fields on the video and audio objects:
Video.podidgroups imps into one pod,Video.poddurandVideo.maxseqbound a dynamic pod,Video.slotinpodtargets a position, andVideo.rqddurslists exact allowed durations. - API frameworks
- API frameworks are the creative interfaces an ad slot supports, listed as integers in the api arrays of Banner, Video, Audio, and Native from the AdCOM API Frameworks list: 1 and 2 for VPAID, 3, 5, and 6 for MRAID, 4 for ORMMA, 7 for OMID, and 8 and 9 for SIMID. A framework that is not listed is assumed unsupported, and bids declare their needs in
Bid.apis. - Companion ads
- Companion ads are display units shown alongside a video or audio ad, such as a banner next to the player or an end card after the video, that extend the same campaign. In OpenRTB they are offered through
Video.companionadandAudio.companionad, arrays ofBannerobjects, andVideo.companiontypesays which VAST companion resource formats the player can render. - Connected TV
- Connected TV (CTV) is video watched on a television through an internet connection, using smart TVs, streaming sticks, game consoles, and set-top boxes. OpenRTB has no CTV object. A request reads as CTV through
Device.devicetype(3 for connected TV or 7 for set top box), app inventory with a CTV store bundle, and video fields for ad pods and server-side insertion. - Duration floors
- Duration floors are price floors that depend on how long the creative is, so a 30-second spot can be required to clear a higher price than a 15-second one in the same slot. OpenRTB 2.6-202309 added them as
durfloors, an array ofDurFloorsobjects onImp.video,Imp.audio, andDeal, each with a duration range and a CPM floor. - FAST channels
- FAST (free ad-supported streaming television) channels are scheduled, linear channels delivered over the internet and paid for by ads, such as the channel guides inside Samsung TV Plus, Pluto TV, or The Roku Channel. Viewers tune in instead of choosing an episode. In OpenRTB, FAST ad breaks arrive as CTV app inventory with ad pods, usually stitched into the stream on a server.
- Instream video
- Instream video is a video ad that plays before, during, or after video content the viewer chose to watch: pre-roll, mid-roll, or post-roll. In OpenRTB 2.6 it is
Video.plcmtvalue 1. Under the IAB video guidelines, instream also requires sound on by default or a clear intent to watch, and the video content must be the main focus of the screen. - Live event ad insertion
- Live event ad insertion is ad delivery into a live broadcast, such as a sports game, where breaks start on the producer's cue and every viewer reaches the same break at once. That creates request bursts and strict timing. In OpenRTB it relies on pod fields, exact durations in
Video.rqddurs,Imp.ssai, and, from 2.6-202606,Content.realtimeto mark content happening live. - MIME types
- MIME types are the media file formats a player can play, listed in
Video.mimesas content type strings such as video/mp4 or video/webm. It is the one required field on the Video object, and the Audio object has its own requiredAudio.mimes. A bid whose VAST media files use none of the listed types cannot play in that player. - Outstream video
- Outstream video is a market term for video ads that play outside of video content, for example in a player that opens between paragraphs of an article, inside a social feed, or as a full-screen interstitial. It is not a value in OpenRTB. Under
Video.plcmtsuch ads are usually 4 (no content or standalone) or 3 (interstitial), depending on how much of the screen they take. - plcmt
- plcmt is the OpenRTB 2.6 field
Video.plcmtthat classifies a video placement under the updated IAB digital video guidelines: 1 instream, 2 accompanying content, 3 interstitial, and 4 no content or standalone. It replaced the deprecatedVideo.placement, whose values mean different things, so a copied integer is a common bug. Newer AdCOM revisions add values such as pause and overlay ads. - Pod ID
- A pod ID is the string in
Video.podid(andAudio.podid), added in OpenRTB 2.6, that marks an impression as part of an ad pod. Imps in one request that share a pod ID belong to the same break, which lets a seller offer each slot as its own imp while buyers still see the pod as a whole for competitive separation and frequency. - Required durations
- Required durations,
Video.rqddursin OpenRTB 2.6, is a list of the exact creative lengths in seconds that a slot accepts, for example 15 and 30. It exists for live TV and radio, where an ad that runs short leaves dead air. It cannot be combined withVideo.mindurationorVideo.maxduration; a request uses one approach or the other. - Server-side ad insertion
- Server-side ad insertion (SSAI), also called ad stitching, is a delivery method in which a server splices ads directly into the video or audio stream, so the player receives one continuous stream instead of fetching ads itself. It is standard on CTV and live streams. OpenRTB 2.6 signals it with
Imp.ssai, which says how much of the ad and its tracking runs on the server. - Skippable video
- Skippable video is a video ad the viewer can end early after a set time, usually by pressing a skip button. In OpenRTB the player's skip policy is described by
Video.skip,Video.skipmin, andVideo.skipafter, added in version 2.4. A creative that draws its own skip button is flagged separately in the bid with creative attribute 16. - Slot in pod
- Slot in pod is the OpenRTB 2.6 field
Video.slotinpod, which says which position in an ad pod a seller can guarantee: 1 for the first slot, -1 for the last, 2 for first or last, and 0 for any. Bids answer withBid.slotinpodto say a creative is eligible only for that position, which buyers use for premium first-in-break placements. - VAST
- VAST (Video Ad Serving Template) is the IAB Tech Lab XML format that tells a video or audio player which ad to play, where its media files are, and which tracking URLs to call. OpenRTB does not define VAST; it carries it. A request lists the VAST versions a player accepts in
Video.protocols, and a winning bid returns the VAST document inBid.admor throughBid.nurl. - Video placement (legacy)
- Video placement,
Video.placement, is the legacy OpenRTB field that classified video placements before plcmt: 1 in-stream, 2 in-banner, 3 in-article, 4 in-feed, and 5 interstitial, slider, or floating. It was added in OpenRTB 2.5 and deprecated in 2023 in favor ofVideo.plcmt. The two lists do not map one to one, so copying the integer across changes its meaning. - Video protocols
- Video protocols are the VAST versions a player accepts, listed as integers in
Video.protocolsfrom the AdCOM creative subtypes list for audio and video: for example 3 for VAST 3.0, 7 for VAST 4.0, and 6 and 8 for the 3.0 and 4.0 wrappers. A seller that lists inline versions without the matching wrapper values blocks bidders that return wrapper tags. - VPAID
- VPAID (Video Player-Ad Interface Definition) is an older IAB standard that let a video ad run as executable code inside the player, so the ad could be interactive or load measurement scripts. It appears as API framework values 1 and 2 (VPAID 1.0 and 2.0). IAB Tech Lab has since moved its two jobs to SIMID for interactivity and Open Measurement for verification.
Identity and privacy
- Advertising ID
- An advertising ID is the resettable device identifier that a mobile or TV operating system provides for advertising, such as Apple's IDFA, Google's advertising ID, or Roku's RIDA. OpenRTB carries it unhashed in
Device.ifa, added in version 2.2. When the user limits tracking, the OS returns an all-zero ID, andDevice.lmtshould be 1. - Buyer user ID
- The buyer user ID is
User.buyeruid, the bidder's own identifier for the user, which the exchange inserts into the request after looking it up in a match table built by cookie syncing. It is the ID a DSP can use directly for targeting and frequency capping. UnlikeUser.id, each bidder receives its own value. - CCPA
- CCPA, the California Consumer Privacy Act, is a California law that gives residents rights over the personal information businesses collect about them, including the right to opt out of its sale or sharing. It took effect in 2020 and was expanded by the CPRA. In OpenRTB its signals travel in the legacy US Privacy string or in the California and US national sections of GPP.
- Consent string
- In OpenRTB, the consent string is
User.consent, which holds the TCF consent string a consent management platform produced for a user covered by GDPR. It became a core field in OpenRTB 2.6; before that it traveled asuser.ext.consent. Other privacy strings, such as GPP and the US Privacy string, have their own fields onBidRequest.regs. - COPPA
- COPPA, the US Children's Online Privacy Protection Act, restricts collecting personal information online from children under 13. OpenRTB flags requests subject to it with
Regs.coppa= 1, a field on the Regs object since version 2.2. On such requests buyers should not use behavioral targeting, and sellers should strip identifiers and coarsen location and IP data before sending. - Digital Services Act
- The Digital Services Act (DSA) is an EU regulation that, among other duties, requires online platforms to show users who an ad is for, who paid for it, and why they are seeing it. OpenRTB carries DSA transparency through an IAB Tech Lab community extension:
regs.ext.dsain the request says whether disclosure is required, andbid.ext.dsanames the advertiser and the payer. - Do not track
- Do Not Track is a browser setting that sends a DNT header asking sites not to track the user, carried in OpenRTB as
Device.dntsince version 2.0, where 1 means the header was set. The W3C effort to standardize what sites must do with it was abandoned, so buyers treat it as a weaker signal than consent strings or GPP. - Extended IDs
- Extended IDs (EIDs) are identifiers from identity providers other than the exchange, such as UID2, ID5, or RampID, carried in
User.eids. Each EID object names its provider by domain inEID.sourceand holds one or more IDs inEID.uids, each with an agent type. OpenRTB 2.6 made eids a core field; earlier versions useduser.ext.eids. - GDPR
- GDPR, the General Data Protection Regulation, is the European Union's data protection law, which governs how personal data, including the identifiers in a typical bid request, may be processed. OpenRTB 2.6 flags whether it applies with
Regs.gdpr(1 applies, 0 does not, absent means unknown) and carries the TCF consent string inUser.consent. Before 2.6 both lived under ext. - GPP
- GPP, the IAB Tech Lab Global Privacy Platform, is a single encoded string that can carry privacy signals for several jurisdictions at once, in numbered sections for the EU TCF, Canada, the US as a whole, and individual US states. OpenRTB 2.6-202211 added
Regs.gppfor the string andRegs.gpp_sidfor the sections that apply to the request. - GPP section ID
- A GPP section ID is the number that identifies one privacy framework inside a GPP string, such as 2 for the EU TCF, 6 for the legacy US Privacy string, 7 for the US national section, and 8 for California. OpenRTB carries the applicable IDs in
Regs.gpp_sid, an integer array that usually holds one value. The header and signal integrity sections, 3 and 4, need not be listed. - ID bridging
- ID bridging is filling a bid request's user or device identifier with one that was not observed on that impression, for example reusing a stale advertising ID or presenting a probabilistic household match as a deterministic ID. Buyers pay for an addressable impression they did not get. The provenance fields
EID.inserter,EID.matcher, andEID.mm, added in 2.6-202409, make an ID's origin inspectable. - ID5
- ID5 is a shared identifier from the company of the same name, built so publishers and buyers can recognize a user across sites without third-party cookies. It combines deterministic signals such as hashed emails with probabilistic ones where they are permitted. In OpenRTB it travels as an entry in
User.eidswith the source id5-sync.com, next to any other providers. - Limit ad tracking
- Limit ad tracking is the operating system signal that a user has restricted the use of their device for ad tracking, carried in OpenRTB as
Device.lmtsince version 2.3: 1 means tracking must be limited under the platform's rules, and 0 means it is not. On iOS it follows App Tracking Transparency, and a limited device usually sends a zeroed advertising ID. - RampID
- RampID is LiveRamp's people-based identifier, which resolves authenticated signals such as hashed emails to a pseudonymous ID that buyers can match to their own data. Publishers expose it through LiveRamp's Authenticated Traffic Solution, and earlier integrations knew it as IdentityLink. In OpenRTB it travels as an entry in
User.eidswith the source liveramp.com. - Regulations object
- The regulations object,
BidRequest.regs, is where an OpenRTB request states which legal regimes apply to it. In OpenRTB 2.6 it holds the COPPA flag, the GDPR flag, the US Privacy string, and the GPP string with its section IDs, while the TCF consent string sits onUser.consent. Extensions such as the DSA object live inregs.ext. - TCF
- TCF, the IAB Europe Transparency and Consent Framework, is the industry standard for recording a user's GDPR choices about purposes and vendors in a compact encoded string produced by a consent management platform. In OpenRTB 2.6 the TC string goes in
User.consentalongsideRegs.gdpr= 1, and inside a GPP string it appears as section 2. - UID2
- UID2 (Unified ID 2.0) is an open-source identity framework, started by The Trade Desk, that turns a hashed and salted email address or phone number into an encrypted, regularly rotated token for advertising. In OpenRTB it travels as an entry in
User.eidswith the source uidapi.com. Users can opt out through a central portal, and participants must honor that. - US Privacy string
- The US Privacy string is a four-character IAB code, such as 1YNN, that records a California consumer's notice and opt-out-of-sale status: spec version, notice given, opted out of sale, and whether the publisher is covered by the IAB's LSPA. OpenRTB 2.6 carries it in
Regs.us_privacy, formerlyregs.ext.us_privacy. IAB Tech Lab has deprecated it in favor of GPP. - User ID
- In OpenRTB, the user ID is
User.id, the exchange's own identifier for the person behind a request, usually read from the exchange's cookie. It means little to a buyer that has not mapped it. The buyer's own ID for the same user goes inUser.buyeruid, and identifiers from third-party providers such as UID2 go inUser.eids.
Supply chain and trust
- ads.cert
- ads.cert is IAB Tech Lab's standard for cryptographically signing programmatic traffic so buyers can verify where it came from. Version 1.0 signed OpenRTB 3.0 bid requests through signature fields on the Source object. Version 2.0, announced in 2021, moved to Call Signs, public keys published in DNS, and Authenticated Connections for any server-to-server call. Production adoption remains thin.
- ads.txt
- ads.txt is a plain text file a publisher hosts at the root of its website, for example example.com/ads.txt, listing every advertising system authorized to sell its inventory and the publisher's account ID in each. Published by IAB Tech Lab, it lets buyers reject inventory offered through an exchange or account the publisher never named. App inventory uses the parallel app-ads.txt file.
- app-ads.txt
- app-ads.txt is the version of ads.txt for mobile and CTV apps. The app developer hosts it at the root of the developer website named on the app's store listing, using the same line format to list the advertising systems and account IDs authorized to sell the app's inventory. Buyers find it through the store listing rather than through the app itself.
- Bidstream data
- Bidstream data is the information carried in bid requests and seen by every bidder that receives them, whether or not it bids: the page or app, device details, location, user identifiers, consent signals, and the supply path. Because one request fans out to many bidders, sending a field means publishing it widely, which is why regulators and publishers scrutinize what goes into it.
- Direct versus reseller
- Direct versus reseller is the distinction ads.txt draws between an account the publisher controls itself, labeled DIRECT, and an account a third party controls with the publisher's permission, labeled RESELLER. Buyers read it as a signal of how many intermediaries take a cut, and use sellers.json and the supply chain object to check whether the label matches the actual path.
- Invalid traffic
- Invalid traffic (IVT) is ad traffic that does not represent a legitimate opportunity for a person to see an ad: bots, data-center traffic, crawlers, hidden or stacked ads, and spoofed devices, apps, or domains. The Media Rating Council splits it into general IVT, caught by lists and routine filters, and sophisticated IVT, which needs deeper analysis. Bidders try to filter it before bidding.
- Inventory partner domain
- An inventory partner domain is the domain of a content owner allowed to sell part of another company's ad inventory, common when a CTV app or site shares ad breaks with a programmer. OpenRTB carries it in
App.inventorypartnerdomainorSite.inventorypartnerdomain, promoted fromextin 2.6-202211, so buyers know to check authorization in the partner's own ads.txt. - Made-for-advertising sites
- Made-for-advertising (MFA) sites are sites and apps built to monetize bought traffic rather than to serve an audience, with heavy ad density, auto-refreshing slots, and thin or clickbait content. Nothing in OpenRTB marks a request as MFA, and such inventory usually passes ads.txt and validation, so buyers filter it with inventory lists and quality vendors, using signals such as
Imp.refresh. - sellers.json
- sellers.json is a JSON file an SSP or exchange hosts at its own domain, for example ssp.example/sellers.json, listing each seller account on its platform with the seller's name, business domain, and type: publisher, intermediary, or both. IAB Tech Lab published it alongside the supply chain object so buyers can learn who stands behind each account ID in a bid request.
- Supply chain node
- A supply chain node is one
SupplyChainNodeentry inSupplyChain.nodes, describing a single system that handled the bid request. It names the advertising system's domain inSupplyChainNode.asi, the seller account inSupplyChainNode.sid, and inSupplyChainNode.hpwhether that node takes part in the flow of payment. The last node is always the system sending the request. - Supply chain object
- The supply chain object, usually called schain, is the OpenRTB
SupplyChainobject inSource.schainthat lists, in order, every system that handled a bid request from the inventory owner to the sender. Each node names an advertising system and a seller account, andSupplyChain.completestates whether the chain reaches all the way back to the owner. Before OpenRTB 2.6 it traveled insource.ext.schain. - Supply path optimization
- Supply path optimization (SPO) is a buyer's practice of choosing which intermediaries to buy an impression through and dropping the rest. The same impression often arrives through several exchanges and resellers at different prices and fees, so buyers compare paths on cost, win rate, and how verifiable the seller chain is. The evidence comes from
Source.schain, ads.txt, and sellers.json.