How to read OpenRTB top-level control fields
Purpose
This document explains the top-level control fields in an OpenRTB BidRequest that shape auction behavior, response timing, buyer restrictions, and blocking policy. Unlike site, app, device, or user, these fields are not primarily about context. They are about how the transaction itself should be controlled.
Key Takeaways
test,at, andtmaxdefine the runtime behavior and time limits of the auction.wseat,bseat,bcat,badv, andbappdefine who may bid and what kinds of ads should be restricted.cur,wlang, andallimpshelp describe currency, language, and packaging scope.- These fields are easy to overlook, but they matter a great deal in real exchange operations.
One-Page View
1. Why these fields matter
imp,site, andappdescribe what is being sold.- Top-level control fields describe under what rules that opportunity is being transacted.
- If they are absent or ambiguous, bidders often react conservatively or skip the opportunity altogether.
2. Auction control fields
| Field | Spec Status | Practical Importance | Practical Interpretation |
|---|---|---|---|
test | Optional, default 0 | Medium | Distinguishes test traffic from billable production traffic. |
at | Optional, default 2 | Very high | Defines the auction type. It directly affects pricing strategy and billing interpretation. |
tmax | Optional | Very high | Sets the maximum response time allowed for bidders. It directly influences timeout behavior and fill rate. |
Implementation Notes
testis not just a debug flag. It is also important for separating operational reporting from test traffic.atis essential for interpreting whether the market is behaving like first-price or second-price-plus logic.tmaxthat is too short hurts response rates.tmaxthat is too long can hurt user experience and render timing.
3. Buyer seat restriction fields
| Field | Spec Status | Practical Importance | Practical Interpretation |
|---|---|---|---|
wseat | Optional | High | Allows only specific buyer seats to bid. |
bseat | Optional | High | Blocks specific buyer seats from bidding. |
Implementation Notes
wseatandbseatare generally not used together.- These fields only make sense when buyer seat identity is coordinated in advance.
- They often connect to PMP, agency seat, and reseller seat control.
4. Blocking policy fields
| Field | Spec Status | Practical Importance | Practical Interpretation |
|---|---|---|---|
bcat | Optional | High | Blocks advertiser categories. |
badv | Optional | High | Blocks advertiser domains. |
bapp | Optional | Medium to high | Blocks application identifiers and is especially relevant in app and CTV contexts. |
Implementation Notes
bcatshould be read together with the category taxonomy in use. In 2.6,cattaxbecomes part of the interpretation.badvconnects domain-based advertiser policy to brand safety and inventory controls.bappdepends on correct app store ID and bundle or package conventions.
5. Supporting control fields
| Field | Spec Status | Practical Importance | Practical Interpretation |
|---|---|---|---|
allimps | Optional, default 0 | Medium | Indicates whether the imp[] array represents all relevant opportunities in the current context. Important for road-blocking interpretation. |
cur | Optional | Medium to high | Declares allowed bid currencies. Important when an exchange accepts multiple currencies. |
wlang | Optional | Medium | Restricts the allowed creative language set. Important when language policy matters. |
Implementation Notes
allimpsdoes not appear in every implementation, but it can matter in multi-slot and pod-style contexts.curbecomes much more important when the exchange accepts multiple currencies.- In OpenRTB 2.6,
wlangbalso exists as a more modern language encoding path alongsidewlang.
6. How to think about these fields
- These fields are less about object modeling and more about transaction policy.
- Their presence may look secondary, but misinterpreting them can have outsized operational consequences.
- In practice,
at,tmax,bcat, andbadvoften have immediate effects on bidder behavior and policy compliance.
Implementation Notes
- It is useful to group these fields in logs and configuration under
auction policy,buyer policy, andcontent policy. test,at, andtmaxshould be visible in request-level logs.bcat,badv, andbappshould be traceable back to their originating supply-side policy configuration.