IAB's Redefining Media Types (RMT) standard gives media planning a shared vocabulary: Lean Back Viewing, Personal Screen Viewing, Passive and Communal Viewing. The pitch is experience, not pipe names. A living-room CTV session and a vertical social feed are not the same product, even when both are "video."
The operational half of RMT is different. It wants eight impression-level attributes on the wire, mostly derived from OpenRTB fields you already send. The macro label is what gets bought in a cross-platform package. The reduction step is what your SSP actually has in JSON when the auction fires.
Those two layers are not the same object. Treating the label as if it were a field is how classification drifts back into the plcmt problem RMT was written to fix.
What the macro label promises
RMT's first layer sorts environments by how someone is watching, not by whether the inventory arrived over IP or an app wrapper. Lean Back Viewing covers the couch: full attention, sound likely on, completion-style placements common. Personal Screen Viewing is the phone-in-hand case: portrait feeds, skip contracts, sound often off by policy. Passive and Communal Viewing catches shared screens and ambient contexts where addressability and measurability claims get squishy fast.
That language is useful in a brief. It is useless as a literal key in a bid request because OpenRTB never defined imp.video.lean_back. Project Eidos and buyer tools can attach the macro bucket upstream. The exchange still receives imp, device, user, and regs.
So the standard's plan is inference: derive the macro bucket from operational attributes, or derive operational attributes from fields that already exist. Both directions assume those fields tell a consistent story. On live traffic they often do not.
What the bid request actually carries
The second RMT layer names eight binaries: sound state, skip versus completion, full-screen presentation, addressability, signal availability, measurability, device class, and ad format. Read that list against OpenRTB 2.6 and most items are not new keys. They are assertions spread across imp.video, device, and user.
Sound state is the cleanest example. RMT's sound bit is supposed to align with video.playbackmethod. Values 1 and 5 mean the placement starts with sound on; 2 and 6 mean sound off by default. A bidder that keys off RMT's sound attribute is really keying off whether the seller populated playbackmethod honestly and whether every adapter in the chain preserved the array.
Skip versus completion maps to video.skip, skipmin, and skipafter. Device class maps to device.devicetype plus whether the impression is app, site, or DOOH. Ad format maps to video.plcmt, video.linearity, and imp.mtype, the same cluster the industry spent three years migrating while old placement values still ride along on a fraction of requests.
The RMT-to-OpenRTB walkthrough lays out the full attribute table. Four attributes have plausible homes today. Four do not: full-screen is a weak proxy from pos and width/height math; addressability and signal availability are inferred from device.ifa, device.lmt, and user.eids rather than declared; measurability conflates video.api containing OMID with "this impression was measured."
Macro Lean Back Viewing, in practice, is a bundle of those operational bits: lean-back inventory is supposed to mean connected TV or large screen, sound on or completion-heavy, measurable when OMID is declared. None of that is one enum. A single devicetype of 3 (connected TV) with playbackmethod [2] (mute on start) is a Lean Back label in the sales deck and a Personal Screen sound contract on the wire.
Where the two sides disagree
Buy-side planners trade macro buckets because DSP reporting and finance systems want one row per "type of video." Sell-side ad servers still emit whatever their legacy mapping produced last quarter. The macro label is negotiated above the auction. The OpenRTB object is whatever survived normalization.
plcmt is the cautionary tale. IAB replaced video.placement with tighter definitions so "instream" meant something inspectable. Years later, contradictory pairs still show up, and empty fields still clear validation because unknown enums do not fail the hop. RMT's macro layer adds a second taxonomy on top of that enforcement gap. If thirty percent of your video imps omit playbackmethod today, thirty percent of your Lean Back sound claims are fiction the day RMT reports go live.
CTV makes the mismatch worse. AdCOM plcmt and the CTV signaling doc extended format enums for pause, overlay, and squeezeback. video.pos picked up geometry values that have nothing to do with "full screen" in the living-room sense. An imp can read as Lean Back in planning while plcmt and pos describe an interactive overlay the macro bucket never contemplated.
Cross-SSP deal routing adds noise that has nothing to do with RMT but everything to do with whether the underlying fields are trustworthy. When inventory splits across European and non-European pipes, the bid request quality on the path that actually wins can differ from the package name on the insertion order. That is a different failure mode, but it shares the same root cause: the label moved; the JSON did not.
How you catch it
An LLM drafting bid-request patches, ARTF mutations, or agentic buy objects can emit JSON that validates and still mis-labels Lean Back inventory. The RPC or tool call can return OK while playbackmethod and devicetype tell different stories. rtblint is the deterministic check on the OpenRTB object: same paths RMT wants to derive from, profile rules for buyers like DV360, and version-aware enums for AdCOM fields.
$ rtblint validate bid.json
Run it on production-shaped samples before you trust a derived RMT column in reporting. rtblint is independent of IAB Tech Lab and of AgenticAdvertising.org; it is not an official conformance harness and the spec does not require it. It is the package that still has to disagree with a hallucinated field when the model does not.
RMT's measurability bit keys off video.api, but buyers still verify delivery on the VAST that wins. Use the VAST tag tester on live tag URLs or pasted XML, and the VAST inspector when wrappers hide whether AdVerifications survived the chain. For OMID handshake QA on sample creatives, the IAB-style VAST tester is an independent fork, not an IAB Tech Lab product.
Where to go next
- Redefining Media Types on OpenRTB: attribute-by-attribute mapping and the four gaps without real fields.
- plcmt three years in: why a good taxonomy without enforcement becomes planner fiction.
- CTV capacity and bid-request quality: when the pipe splits before classification matters.
- Pinterest programmatic deals and SSP geography: deal labels versus the request that actually clears.
Fix the operational fields first. The macro label will follow, or it will keep lying politely in dashboards while fill dies on the mismatch no one logs.
Top comments (0)