RTB Architecture
OpenRTB 2.5 vs 2.6 vs 3.0: what changed, and which version the market actually uses
Published · Last updated
Next scheduled review:
OpenRTB 3.0 is a separate, layered specification that IAB Tech Lab released in November 2018, yet the market still trades on OpenRTB 2.x. OpenRTB 2.6 added CTV ad pods, core fields for supply chain, consent and GPP, and shared AdCOM lists. Its latest release is 2.6-202606.
Contents
Key facts
- 2.6 is the maintained line. IAB Tech Lab publishes OpenRTB 2.6 as dated releases on GitHub. The newest, 2.6-202606, came out on 11 June 2026, and no later release was listed on 9 November 2026 (openrtb2.x releases, checked 9 November 2026).
- 3.0 has been quiet since 2022. The 3.0 change log records the initial release in November 2018 and the last substantive change in March 2022, when
schainwas added to the Source object "to sync with 2.6" (OpenRTB 3.0, Appendix B). - Google moved to OpenRTB 2.x, not 3.0. Google's release notes record that its own RTB protocol "has been sunset" on 1 May 2025 (Google Authorized Buyers release notes). Its OpenRTB guide points buyers to the 2.6 specification (OpenRTB guide, updated 15 October 2026).
- Most Prebid Server adapters still read 2.5 locations. In Prebid Server Go on 30 October 2026, 58 of 281 bidder adapters declared OpenRTB 2.6. For the rest, the server moves the relocated fields back to 2.5
extpaths (our count of bidder-info files; Prebid docs). - IAB Tech Lab asks for the widely deployed version. Its Programmatic Best Practices draft of 16 September 2026 tells companies to support "the most recent, widely deployed, production version of the OpenRTB specification" (IAB Tech Lab, public comment draft).
Definition
OpenRTB version: the release of IAB Tech Lab's real-time bidding protocol that a bid request follows, announced in the x-openrtb-version HTTP header. Since 2.6-202211 the number changes only for breaking changes, and additive changes ship as dated releases such as 2.6-202606 (OpenRTB 2.6, section 2.6). See the glossary entry for OpenRTB.
If you need the auction itself first, read how real-time bidding works. This page compares versions and assumes you know what a request and a response are.
OpenRTB 2.5 vs 2.6 vs 3.0 at a glance
The table compares the three versions on the points that change code. Each row cites the specification text.
15 of 15 rows
Released | December 2016 (2.5 PDF) | April 2022; latest release 2.6-202606, 11 June 2026 (IAB Tech Lab; releases) | November 2018; last change March 2022 (3.0 change log) |
Payload root |
|
|
|
What is for sale |
| Same, plus |
|
Context |
| Same objects |
|
Enumerated lists | Section 5 of the spec | Moved to AdCOM 1.0 | AdCOM 1.0 |
Transport security | HTTP allowed | HTTPS "strongly recommended" (2.6) | HTTPS with TLS 1.2+ required (3.0, Layer-1) |
CTV ad pods | None ( |
| Same fields in AdCOM VideoPlacement since March 2022 (AdCOM change log) |
Supply chain |
|
|
|
GDPR flag and TC String |
|
| AdCOM |
GPP | None |
| AdCOM |
US Privacy String |
|
| Not in AdCOM Regs; use GPP |
Extended IDs |
|
| AdCOM |
Deprecations | None of note |
|
|
Versioning | Minor number for non-breaking changes | Number moves only on breaking changes, dated releases | Same policy (3.0, Appendix D) |
Canonical text |
Released
- OpenRTB 2.5
December 2016 (2.5 PDF)
- OpenRTB 2.6
April 2022; latest release 2.6-202606, 11 June 2026 (IAB Tech Lab; releases)
- OpenRTB 3.0
November 2018; last change March 2022 (3.0 change log)
Payload root
- OpenRTB 2.5
BidRequest- OpenRTB 2.6
BidRequest- OpenRTB 3.0
openrtbwrapper withver,domainspec,domainver, thenrequest
What is for sale
- OpenRTB 2.5
imp[]withbanner,video,audio,native- OpenRTB 2.6
Same, plus
doohandqty(2.6-202211)- OpenRTB 3.0
item[], each withspec.placementfrom AdCOM
Context
- OpenRTB 2.5
siteorapp,device,user,regs- OpenRTB 2.6
Same objects
- OpenRTB 3.0
contextholds AdCOMsite,appordooh,user,device,regs,restrictions
Enumerated lists
- OpenRTB 2.5
Section 5 of the spec
- OpenRTB 2.6
Moved to AdCOM 1.0
- OpenRTB 3.0
AdCOM 1.0
Transport security
- OpenRTB 2.5
HTTP allowed
- OpenRTB 2.6
HTTPS "strongly recommended" (2.6)
- OpenRTB 3.0
HTTPS with TLS 1.2+ required (3.0, Layer-1)
CTV ad pods
- OpenRTB 2.5
None (
sequenceonly)- OpenRTB 2.6
podid,podseq,slotinpod,poddur,maxseq,mincpmpersec,rqddurs- OpenRTB 3.0
Same fields in AdCOM VideoPlacement since March 2022 (AdCOM change log)
Supply chain
- OpenRTB 2.5
source.ext.schain- OpenRTB 2.6
source.schain- OpenRTB 3.0
source.schain(March 2022), plusds,dsmap,cert,digestfor ads.cert 1.0 signing (beta)
GDPR flag and TC String
- OpenRTB 2.5
regs.ext.gdpr,user.ext.consent- OpenRTB 2.6
regs.gdpr,user.consent- OpenRTB 3.0
AdCOM
regs.gdpr,user.consent
GPP
- OpenRTB 2.5
None
- OpenRTB 2.6
regs.gpp,regs.gpp_sid(2.6-202211)- OpenRTB 3.0
AdCOM
regs.gpp,regs.gpp_sid
US Privacy String
- OpenRTB 2.5
regs.ext.us_privacy- OpenRTB 2.6
regs.us_privacy- OpenRTB 3.0
Not in AdCOM Regs; use GPP
Extended IDs
- OpenRTB 2.5
user.ext.eids- OpenRTB 2.6
user.eids;inserter,matcher,mmsince 2.6-202409- OpenRTB 3.0
AdCOM
user.eids
Deprecations
- OpenRTB 2.5
None of note
- OpenRTB 2.6
yob,gender, hashed device IDs,Video.sequence,Bid.api;placementreplaced byplcmtin 2.6-202303- OpenRTB 3.0
yobandgenderdeprecated in AdCOM (March 2022)
Versioning
- OpenRTB 2.5
Minor number for non-breaking changes
- OpenRTB 2.6
Number moves only on breaking changes, dated releases
- OpenRTB 3.0
Same policy (3.0, Appendix D)
Canonical text
- OpenRTB 2.5
PDF
- OpenRTB 2.6
- OpenRTB 3.0
Table by AdSovereign, CC BY 4.0.
Sources for unlinked cells: the 2.5 to 2.6 change log in OpenRTB 2.6, Appendix B, the 2.5 locations as Prebid Server's conversion code names them (convert_down.go), and the AdCOM 1.0 object tables.
One impression, three versions: how the payload structure differs
The fastest way to see the gap is to write the same impression three times. Each example below is a desktop visit to a business news page with one 300x250 slot. The publisher sells through two exchanges, GDPR applies and the user consented. Domains use the reserved .example name, the IP comes from a documentation range, and the consent string was generated for this page (see the appendix).
OpenRTB 2.5. Consent, supply chain and extended IDs all sit in ext objects, because 2.5 had no core fields for them.
{
"id": "4c8e2f1a-9b3d-4a6e-8f20-1d5c7b9e3a64",
"imp": [
{
"id": "1",
"tagid": "markets-mpu",
"banner": { "format": [{ "w": 300, "h": 250 }] },
"bidfloor": 0.5,
"bidfloorcur": "EUR",
"secure": 1
}
],
"site": {
"domain": "news.example",
"page": "https://news.example/markets/rates",
"cat": ["IAB3"],
"publisher": { "id": "88123" }
},
"device": {
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"ip": "192.0.2.0",
"devicetype": 2
},
"user": {
"buyeruid": "dsp-55ab31c9",
"ext": {
"consent": "CQtaoIAQtaoIAAAABBENC4FgAPIAAELAAAYgF5wAgAaALzAvOACAvMAA.IF5wAwAFAA0AXm",
"eids": [
{ "source": "pubcid.org", "uids": [{ "id": "8f0b2c6e-1d4a-4e95-b7c3-2a9e5f1d0c48", "atype": 1 }] }
]
}
},
"source": {
"tid": "0b7d3e9a-6c21-4f58-9e04-3a1c8b5d7f92",
"ext": {
"schain": {
"ver": "1.0",
"complete": 1,
"nodes": [
{ "asi": "ssp-alpha.example", "sid": "pub-1047", "hp": 1 },
{ "asi": "exchange-beta.example", "sid": "88123", "hp": 1 }
]
}
}
},
"regs": { "ext": { "gdpr": 1 } },
"at": 1,
"tmax": 300,
"cur": ["EUR"]
}OpenRTB 2.6. The same signals move into core fields, the category gets an explicit taxonomy, and a GPP string can travel next to the TC String.
{
"id": "4c8e2f1a-9b3d-4a6e-8f20-1d5c7b9e3a64",
"imp": [
{
"id": "1",
"tagid": "markets-mpu",
"banner": { "format": [{ "w": 300, "h": 250 }] },
"bidfloor": 0.5,
"bidfloorcur": "EUR",
"secure": 1
}
],
"site": {
"domain": "news.example",
"page": "https://news.example/markets/rates",
"cattax": 9,
"cat": ["52"],
"publisher": { "id": "88123" }
},
"device": {
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"ip": "192.0.2.0",
"devicetype": 2
},
"user": {
"buyeruid": "dsp-55ab31c9",
"consent": "CQtaoIAQtaoIAAAABBENC4FgAPIAAELAAAYgF5wAgAaALzAvOACAvMAA.IF5wAwAFAA0AXm",
"eids": [
{ "source": "pubcid.org", "uids": [{ "id": "8f0b2c6e-1d4a-4e95-b7c3-2a9e5f1d0c48", "atype": 1 }] }
]
},
"source": {
"tid": "0b7d3e9a-6c21-4f58-9e04-3a1c8b5d7f92",
"schain": {
"ver": "1.0",
"complete": 1,
"nodes": [
{ "asi": "ssp-alpha.example", "sid": "pub-1047", "hp": 1 },
{ "asi": "exchange-beta.example", "sid": "88123", "hp": 1 }
]
}
},
"regs": {
"gdpr": 1,
"gpp": "DBABM~CQtaoIAQtaoIAAAABBENC4FgAPIAAELAAAYgF5wAgAaALzAvOACAvMAA.IF5wAwAFAA0AXm",
"gpp_sid": [2]
},
"at": 1,
"tmax": 300,
"cur": ["EUR"]
}OpenRTB 3.0. The transaction layer wraps everything. The impression becomes an item whose spec holds an AdCOM placement, and all context moves under context.
{
"openrtb": {
"ver": "3.0",
"domainspec": "adcom",
"domainver": "1.0",
"request": {
"id": "4c8e2f1a-9b3d-4a6e-8f20-1d5c7b9e3a64",
"tmax": 300,
"at": 1,
"cur": ["EUR"],
"source": {
"tid": "0b7d3e9a-6c21-4f58-9e04-3a1c8b5d7f92",
"schain": {
"ver": "1.0",
"complete": 1,
"nodes": [
{ "asi": "ssp-alpha.example", "sid": "pub-1047", "hp": 1 },
{ "asi": "exchange-beta.example", "sid": "88123", "hp": 1 }
]
}
},
"item": [
{
"id": "1",
"flr": 0.5,
"flrcur": "EUR",
"spec": {
"placement": {
"tagid": "markets-mpu",
"secure": 1,
"display": { "displayfmt": [{ "w": 300, "h": 250 }] }
}
}
}
],
"context": {
"site": {
"domain": "news.example",
"page": "https://news.example/markets/rates",
"cattax": 9,
"cat": ["52"],
"pub": { "id": "88123" }
},
"device": {
"type": 2,
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"ip": "192.0.2.0"
},
"user": {
"buyeruid": "dsp-55ab31c9",
"consent": "CQtaoIAQtaoIAAAABBENC4FgAPIAAELAAAYgF5wAgAaALzAvOACAvMAA.IF5wAwAFAA0AXm",
"eids": [
{ "source": "pubcid.org", "uids": [{ "id": "8f0b2c6e-1d4a-4e95-b7c3-2a9e5f1d0c48", "atype": 1 }] }
]
},
"regs": {
"gdpr": 1,
"gpp": "DBABM~CQtaoIAQtaoIAAAABBENC4FgAPIAAELAAAYgF5wAgAaALzAvOACAvMAA.IF5wAwAFAA0AXm",
"gpp_sid": [2]
}
}
}
}
}The same field in each version
10 of 10 rows
Slot size |
|
|
| AdCOM renames the format object |
Floor |
| Same |
| Shorter names in 3.0 |
Page category |
|
|
| AdCOM marks taxonomies 1 and 2 deprecated |
Seller account |
| Same |
| Equals the last |
Device type |
| Same |
| 2 = personal computer in both lists |
TC String |
|
|
| Same string in all three |
GDPR flag |
|
|
| Omitted means unknown |
GPP | none |
|
| Section 2 carries the EU TCF string |
Supply chain |
|
|
| Same object, version 1.0 |
Extended IDs |
|
|
|
|
Slot size
- OpenRTB 2.5 path
imp[0].banner.format[0]- OpenRTB 2.6 path
imp[0].banner.format[0]- OpenRTB 3.0 path
request.item[0].spec.placement.display.displayfmt[0]- Note
AdCOM renames the format object
Floor
- OpenRTB 2.5 path
imp[0].bidfloor,bidfloorcur- OpenRTB 2.6 path
Same
- OpenRTB 3.0 path
request.item[0].flr,flrcur- Note
Shorter names in 3.0
Page category
- OpenRTB 2.5 path
site.catwith IAB3 (Content Category 1.0, Business)- OpenRTB 2.6 path
site.cattax9 withcat52 (Content Taxonomy 3.1, Business and Finance)- OpenRTB 3.0 path
context.site.cattax,cat- Note
AdCOM marks taxonomies 1 and 2 deprecated
Seller account
- OpenRTB 2.5 path
site.publisher.id- OpenRTB 2.6 path
Same
- OpenRTB 3.0 path
context.site.pub.id- Note
Equals the last
schainnode'ssid
Device type
- OpenRTB 2.5 path
device.devicetype2- OpenRTB 2.6 path
Same
- OpenRTB 3.0 path
context.device.type2- Note
2 = personal computer in both lists
TC String
- OpenRTB 2.5 path
user.ext.consent- OpenRTB 2.6 path
user.consent- OpenRTB 3.0 path
context.user.consent- Note
Same string in all three
GDPR flag
- OpenRTB 2.5 path
regs.ext.gdpr- OpenRTB 2.6 path
regs.gdpr- OpenRTB 3.0 path
context.regs.gdpr- Note
Omitted means unknown
GPP
- OpenRTB 2.5 path
none
- OpenRTB 2.6 path
regs.gpp,regs.gpp_sid- OpenRTB 3.0 path
context.regs.gpp,gpp_sid- Note
Section 2 carries the EU TCF string
Supply chain
- OpenRTB 2.5 path
source.ext.schain- OpenRTB 2.6 path
source.schain- OpenRTB 3.0 path
request.source.schain- Note
Same object, version 1.0
Extended IDs
- OpenRTB 2.5 path
user.ext.eids- OpenRTB 2.6 path
user.eids- OpenRTB 3.0 path
context.user.eids- Note
atype1 = device or browser ID
Table by AdSovereign, CC BY 4.0.
Every JSON block above parses as written. The field paths come from the OpenRTB 2.6 object tables, the OpenRTB 3.0 request example and AdCOM appendix C. To build or check your own payload, use the OpenRTB bid request builder.
What OpenRTB 2.6 changed from 2.5
Version 2.6 did three things. It gave CTV a real ad pod model, so a seller can offer a whole break and a buyer can bid on slots inside it. It moved signals that the industry had parked in ext objects into named fields: the SupplyChain object schain, plus eids, gdpr, consent and us_privacy. And it deleted its own enumerated lists, pointing every code value to AdCOM 1.0 instead (OpenRTB 2.6, Appendix B).
The dated releases then kept adding fields. Release 2.6-202211 added gpp and gpp_sid for the Global Privacy Protocol, 2.6-202303 replaced placement with plcmt, and 2.6-202606 added the live content flags realtime and firstbroadcast (release notes). Each field is explained in OpenRTB 2.6 explained, field by field, the pod fields in SSAI and CTV ad serving, and the consent fields in GPP and TCF implementation.
The pod fields matter most for streaming TV. A 2.5 request can describe one video slot; it cannot say that three slots form one 90-second break with a floor per second. Under 2.6, podid ties the slots together and mincpmpersec prices them by length, which is how pod bidding works in live sport and FAST channels.
What OpenRTB 3.0 changed, and why it did not take over
OpenRTB 3.0 was a rebuild, not an update. It split the protocol into four layers: transport, format, transaction and domain. OpenRTB itself became only the transaction layer, and AdCOM became the default domain layer that describes the goods (OpenRTB 3.0, Protocol Layers). It made HTTPS mandatory, and it added fields for digitally signed requests under the ads.cert 1.0 scheme.
The new structure broke every parser. A 2.x bidder cannot read a 3.0 payload without new code, and PPC Land's reference entry describes 3.0 as not backward compatible (PPC Land, 29 September 2026). Media.net announced 3.0 adoption in early 2019, but the market stayed on 2.x, according to the same report. It also cites an April 2026 IAB Spain guide saying most platforms still run 2.5 or 2.6.
Four facts explain why 2.x kept the market:
- 2.6 imported the parts people wanted. AdCOM lists,
schainin the Source object and the structured user agent all reached 2.x. The 3.0 change log even recordsschainbeing added "to sync with 2.6" in March 2022 (3.0 Appendix B). - The signing feature moved elsewhere. The ads.cert 1.0 fields in 3.0 stayed in beta. IAB Tech Lab calls ads.cert 2.0 "a complete departure" from that 2018 design, and its Authenticated Connections protocol signs HTTP calls whatever the message format (IAB Tech Lab, ads.cert page, updated 14 February 2024).
- 2.x became a living version. Since 2.6-202211, new fields ship as dated releases and partners must ignore what they do not know, so additive change no longer needs a major upgrade (openrtb2.x README).
- The biggest exchange chose 2.x. Google retired its own protocol on 1 May 2025 and moved buyers to its OpenRTB implementation, documented against the 2.6 specification (Google release notes; Google OpenRTB guide).
What the market runs in 2026: the evidence
Public documentation lets you check which fields real systems read. The table lists what we could verify on 9 November 2026.
4 of 4 rows
Google Authorized Buyers | OpenRTB 2.x in JSON or Protobuf; guide links the 2.6 spec |
| |
Prebid Server (Go) | OpenRTB 2.6 internally; adapters opt in to 2.6 | 58 of 281 adapters declare 2.6; one declares 2.5; 222 declare nothing and receive 2.5 | |
Prebid.js | ORTB 2.x first-party data | TCF signals written to | |
Industry survey | Mostly 2.5 or 2.6 | n/d |
Google Authorized Buyers
- Version it speaks
OpenRTB 2.x in JSON or Protobuf; guide links the 2.6 spec
- Where consent and supply chain go
source.schain,regs.gpp,regs.gpp_sid,user.consent, plususer.ext.consentand a booleanregs.ext.gdpr; ad categories in Content Taxonomy 1.0
Prebid Server (Go)
- Version it speaks
OpenRTB 2.6 internally; adapters opt in to 2.6
- Where consent and supply chain go
58 of 281 adapters declare 2.6; one declares 2.5; 222 declare nothing and receive 2.5
extlocations
Prebid.js
- Version it speaks
ORTB 2.x first-party data
- Where consent and supply chain go
TCF signals written to
regs.ext.gdpranduser.ext.consent; GPP toregs.gppandregs.gpp_sid
Industry survey
- Version it speaks
Mostly 2.5 or 2.6
- Where consent and supply chain go
n/d
Table by AdSovereign, CC BY 4.0.
The Prebid Server figure is our own count. We read every file in static/bidder-info at commit 361cd6c and separated adapters from aliases: 397 files, 281 adapters and 116 aliases. A missing openrtb.version means the server "will downgrade values back to their 2.5 ext locations" for that bidder, according to the Prebid Server developer guide. The conversion code moves schain, gdpr, consent, us_privacy and eids, and clears fields added after 2.5 (convert_down.go).
So the honest answer is "2.6 on the wire, 2.5 in many parsers". A Prebid Server host has to run both shapes, which the Prebid Server self-hosting guide covers. None of the systems above offers a 3.0 endpoint in its public documentation.
What IAB Tech Lab says about version support
IAB Tech Lab has not published a notice that retires OpenRTB 3.0, and we found none on 9 November 2026. Its statements point the same way, though:
- The 2.x README says the version number moves only on breaking changes, so "OpenRTB 2.7 should be considered a distinct version" and releases follow a monthly cycle when there is approved work (openrtb2.x README).
- The OpenRTB page lists 2.6 releases up to September 2023 and says version history "is now fully maintained in Github". It dates 3.0 to September 2017, the year the framework was announced (IAB Tech Lab, OpenRTB page, updated 23 January 2024).
- The 3.0 repository says its master branch "contains the most recent release" and keeps branches for each 3.0 update; the newest is dated March 2022 (openrtb README).
- Programmatic Best Practices v1.0, drafted by IAB Tech Lab's Programmatic Governance Council, asks firms to support the most recent, widely deployed production version and to include an
schainobject in each request. Comments closed on 16 October 2026 (IAB Tech Lab press release, 16 September 2026).
AdCOM still changes. Its file received updates in June and July 2026, which flow into 2.6 because 2.6 reads AdCOM lists (AdCOM commit history). Trade press also reported that IAB Tech Lab made GitHub Markdown, not PDF, the reference text for its standards on 14 September 2026 (PPC Land).
Which version to build for: five steps
- Target the latest 2.6 release. Parse and emit 2.6-202606 field names. Send
x-openrtb-version: 2.6and ask each partner which dated release they test against. - Read both locations for moved fields. Accept
schain,gdpr,consent,us_privacyandeidsin core fields and in their 2.5extpaths. Prefer the core field when both exist and disagree, and log the conflict. - Write what the partner reads. Keep a per-partner output profile. A 2.5-only bidder gets the
extpaths, as Prebid Server does for adapters without a version flag. - Ignore unknown fields. The 2.6 policy requires tolerance of new fields and list values, so do not fail on them.
- Treat 3.0 as a mapping job. Build it only for a partner that requires it, as a translation layer over your 2.6 model. The mapping table above lists the paths that change.
The request path and where this translation layer sits are drawn in RTB architecture explained. The engineering pages on this topic are collected in the RTB architecture hub.
Common mistakes
- Rejecting a request because of an unknown field. OpenRTB 2.6 requires bidders and exchanges to tolerate new fields and values. A strict schema that fails breaks every dated release.
- Writing consent only to
ext, or only to core. Google's exchange sends bothuser.consentanduser.ext.consent; Prebid.js writes theextform. Send both during migration and read both. - Sending
schainin two places with different contents. Ifsource.schainandsource.ext.schaindisagree, buyers cannot know which chain is true. Keep one source of truth and mirror it. - Assuming the version header tells you the release. Every 2.6 release sends
2.6. Agree the release in the integration contract, not in the header. - Mixing category lists. A 2.5 code such as
IAB3sent withoutcattaxreads as Content Category Taxonomy 1.0, which AdCOM now marks deprecated. Setcattaxwhenever you send newer IDs. - Reading
video.placementonly. Release 2.6-202303 replaced it withplcmt. Read both while partners migrate. - Calling 3.0 "the next version of 2.6". It is a different payload with a different root object. Plan it as a new protocol, with its own tests.
- Expecting signatures in a 2.6 request. The
ds,dsmapandcertfields exist only in 3.0, and ads.cert 2.0 signs the HTTP call instead. The SupplyChain checks in schain, ads.txt and sellers.json together are what buyers use today.
FAQ
Is OpenRTB 3.0 used in production?
What is the difference between OpenRTB 2.5 and 2.6?
schain, eids, gdpr, consent and us_privacy from ext objects to core fields, and moves code lists to AdCOM 1.0 (OpenRTB 2.6, Appendix B). A 2.5 parser can read most of a 2.6 request but misses the moved signals.Where is the OpenRTB 3.0 spec?
Will there be an OpenRTB 2.7?
Do OpenRTB 2.6 and 3.0 share AdCOM?
How this works on owned infrastructure
The choice between 2.5, 2.6 and 3.0 is rarely yours alone. It is the sum of what each partner parses, and most stacks end up translating between shapes at the edge. When the exchange runs on infrastructure you control, that translation layer is your code: you decide which partner receives ext paths, which gets core fields, and how conflicts are logged. AdSovereign is an enterprise RTB stack designed to run inside your own perimeter, with an exchange and bidder built on OpenRTB 2.6 and per-partner output profiles. The integrations page lists supported protocol versions, and the architecture page shows where the request mapping sits.
Sources
- IAB Tech Lab, "OpenRTB API Specification Version 2.6" (2.6.md, main branch, accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md
- IAB Tech Lab, openrtb2.x releases, 2.6-202210 (3 November 2022) to 2.6-202606 (11 June 2026), accessed 9 November 2026. https://github.com/InteractiveAdvertisingBureau/openrtb2.x/releases
- IAB Tech Lab, openrtb2.x README (versioning policy and release process, accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/README.md
- IAB Tech Lab, "OpenRTB API Specification Version 2.5" (December 2016). https://iabtechlab.com/wp-content/uploads/2016/07/OpenRTB-API-Specification-Version-2-5-FINAL.pdf
- IAB Tech Lab, "OpenRTB Specification v3.0" (change log November 2018 to March 2022). https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/OpenRTB%20v3.0%20FINAL.md
- IAB Tech Lab, openrtb repository README (OpenRTB 3.0). https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/README.md
- IAB Tech Lab, "AdCOM Specification v1.0" (change log and OpenRTB interfaces, accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/main/AdCOM%20v1.0%20FINAL.md
- IAB Tech Lab, OpenRTB standards page (last updated 23 January 2024). https://iabtechlab.com/standards/openrtb/
- IAB Tech Lab, ads.cert page (last updated 14 February 2024). https://iabtechlab.com/ads-cert/
- IAB Tech Lab, "IAB Tech Lab's Programmatic Standard Practices Available for Public Comment" (16 September 2026). https://iabtechlab.com/press-releases/iab-tech-labs-programmatic-standard-practices-available-for-public-comment/
More sources (9)
- IAB Tech Lab Programmatic Governance Council, "Programmatic Best Practices, Version 1.0, Public Comment" (16 September 2026). https://iabtechlab.com/wp-content/uploads/2026/09/Public-Comment-Programmatic-Best-Practices-v1-1.pdf
- Google, Authorized Buyers "OpenRTB Integration" guide (last updated 15 October 2026). https://developers.google.com/authorized-buyers/rtb/openrtb-guide
- Google, Authorized Buyers RTB release notes (entry of 1 May 2025). https://developers.google.com/authorized-buyers/rtb/relnotes
- Prebid.org, "Adding a New Bidder Adapter" for Prebid Server Go (accessed 9 November 2026). https://docs.prebid.org/prebid-server/developers/add-new-bidder-go.html
- Prebid, prebid-server repository,
static/bidder-infoat commit 361cd6c (30 October 2026). https://github.com/prebid/prebid-server/tree/361cd6c93d7e1212aa41c9584016659c50f0c13d/static/bidder-info - Prebid, prebid-server,
openrtb_ext/convert_down.go(accessed 9 November 2026). https://github.com/prebid/prebid-server/blob/master/openrtb_ext/convert_down.go - Prebid, Prebid.js,
modules/consentManagementTcf.tsandconsentManagementGpp.ts(master, accessed 9 November 2026). https://github.com/prebid/Prebid.js/blob/master/modules/consentManagementTcf.ts - PPC Land, "OpenRTB" (29 September 2026). https://ppc.land/openrtb/
- PPC Land, "IAB Tech Lab drops PDF as the source of truth for its ad standards" (14 September 2026). https://ppc.land/iab-tech-lab-drops-pdf-as-the-source-of-truth-for-its-ad-standards/
Changelog
- 9 November 2026. First edition. Covers OpenRTB 2.5, 2.6 up to release 2.6-202606, and 3.0 up to its March 2022 update; Prebid Server Go adapter count at commit 361cd6c. Next review 9 February 2027.