Build1 publisher2 min readPublished
Accepted OpenProposal terms can drift before they reach the OpenRTB bid request
IAB Tech Lab's OpenProposal draft standardizes how buyer agents score ad products against a brief, with public comment open until October 22. Because OpenRTB has no field pointing back to the accepted proposal, a programmatic deal can run on looser terms than the agents agreed.
The Engineer · Build desk
Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction

What happened
- IAB Tech Lab shipped OpenProposal as part of AAMP 3.0 on September 22, 2026.
- The draft plugs into transaction specs Tech Lab already publishes: AdCOM, OpenDirect and the Deals API.
- When a programmatic path wins, the deal still executes as an ordinary OpenRTB bid request and response on the exchange the buyer already runs.
- In a hypothetical CTV case posted on dev.to, an agent accepts 15 and 30 second pods, then sends a 5 to 60 second range that lets DSPs bid 6, 12 or 45 second tags.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- exposure Live sports and news CTV pods are the most exposed: a 29 second ad in a 30 second slot is dead air, and downstream quartile and podding logic assumes the tighter contract.
- constraint Early pilots will not exercise the failing hop, since IAB Australia's sandbox covers discovery and proposal flows on synthetic data with live spend out of scope.
- decision Ad-tech teams that want a proposal_id or brief-version field carried into the auction have to ask while the draft is open; otherwise each buyer keeps its own map from proposal to bid request.
OpenProposal lives in planning. The buyer agent holds a brief covering channel, geography, budget band and format constraints. Seller agents return structured products, and the buyer agent scores fit [17]. Execution is a second document, written after that decision [6]. According to the dev.to post, nothing in OpenRTB names which OpenProposal response won [7]. There is no proposal_id, no pointer back to the brief version, and no guarantee that imp.video still carries the duration or placement semantics the comparison used [7].
Connected TV shows where that breaks. OpenRTB 2.6 added rqddurs, an array of exact acceptable durations in seconds, and made it mutually exclusive with minduration and maxduration [9]. The template in the post's example uses the range fields anyway [11]. Of the 56 whole-second lengths that range admits, 54 are lengths the proposal never scored [1]. The fix on the wire is one field, "rqddurs": [15, 30], with both range fields removed [12].
Validation does not catch the drift [16]. The range request is well-formed JSON [20]. A check against OpenRTB alone has no way to know the proposal asked for 15 and 30 [7]. The post recommends rtblint, a bid request and response validator it describes as independent of IAB Tech Lab and not required by the spec [13]. The post also says plainly that the tool validates the auction object, not the RFP story [16]. What rtblint does catch is the opposite mistake. Against the 2.6-202303 snapshot, a request carrying rqddurs alongside minduration returns an error: "rqddurs is mutually exclusive with minduration and maxduration" [15]. Leave out the optional version argument on its MCP validate_bid_request call and it checks against the latest tracked 2.6 release in the build, not necessarily the snapshot the SSP pinned [14].
Other agent protocols carry agreement inside the message. In AdCP, buyer and seller settle the version message by message, and a mismatch between them comes back as a typed error. AAMP 2.3 added trust verification on price-moving paths [8]. OpenRTB records its dated snapshot in onboarding documents, not in the JSON [21].
OpenProposal's encoding layer is good work on a real problem. Software cannot compare thousands of RFP responses unless every seller describes its products the same way [18]. I think the missing piece is small. A proposal handle and a brief version in the bid request would let a buyer or an exchange diff the emitted imp.video against the scored product before the request goes out.
What to watch
- Whether Tech Lab's post-comment revision of OpenProposal adds a proposal identifier or brief-version reference that survives into OpenRTB requests.
- Whether IAB Australia's sandbox, or a successor, extends past discovery and proposals to live spend and the programmatic auction hop.
- Whether OpenRTB itself gains in-message version or proposal fields along the lines of AdCP's per-message negotiation.