DEV Community

Aleksander Sekowski
Aleksander Sekowski

Posted on

The RMT OpenRTB Mapping Cheat Sheet Every Video Bid Ops Engineer Needs

On October 15, 2026, IAB held a webinar on Redefining Media Types (RMT) aimed at teams preparing to encode the taxonomy into live transactions. The industry has been here before: a well-motivated video label lands on OpenRTB fields that already drift. We walked the full classifier in RMT Explained last week; this page is the bookmark version for bid ops and SSP integrators who need the OpenRTB paths in one table, not another narrative.

RMT adds a macro bucket (lean back, personal screen, passive and communal viewing) and eight binary attributes on each video impression. Nothing in that list is a new JSON key in the current plan. It is a reducer over imp.video, device, user, regs, and source that already ride every bid request. When two of those paths disagree, RMT does not get a tie-breaker. It gets whatever your adapter populated last.

RMT attribute to OpenRTB field map

Each row is one RMT claim and the primary OpenRTB 2.6 / AdCOM homes the mapping reads today. AdCOM owns the enumerated lists OpenRTB 2.6 references for plcmt, playbackmethod, and related video enums; see what AdCOM changed if you still echo 2.5 integers.

RMT claim OpenRTB / AdCOM path(s) How RMT reads it Typical gap
Sound on at start video.playbackmethod Values 1 or 5: sound on; 2 or 6: off by default Field omitted on CTV and in-feed traffic
Skip-enabled vs completion-required video.skip, video.skipmin, video.skipafter skip = 1 with offsets defines skippable contract skipafter set while skip is 0 or missing
Full-screen presentation video.pos, video.w, video.h, device.w, device.h pos = 7, or geometry match vs device pos unset; CTV portfolio loads extra pos meanings
Addressable impression device.ifa, device.lmt, user.eids ID present and limit flags allow use Stripped IFA, consent, or adapter defaults
Signal availability regs.gpp, source.schain, user.ext Inferred from privacy string and chain completeness Missing schain node or empty GPP section
Measurability video.api, imp.metric api contains 7 (OMID 1.0 capability) Player capability confused with measured delivery
Device class device.devicetype, app / site / DOOH context CTV (3), phone (4), STB (7), etc. Phone web labeled as CTV for deal access
Ad format video.plcmt, video.linearity, imp.mtype In-stream, out-stream, pause, overlay per AdCOM plcmt Legacy video.placement contradicts plcmt
Macro: lean back viewing Derived profile Large screen, lean-back device class, long-form plcmt Same fields as rows above, combined
Macro: personal screen Derived profile Handheld devicetype, personal viewing context Vertical social mis-tagged as lean back
Macro: passive / communal Derived profile Shared screen or ambient contexts per RMT rules FAST and communal CTV without honest device context

The video object guide separates playbackmethod, plcmt, linearity, and pod fields because RMT's format and sound rows read all of them. The placement versus plcmt guide is still the fastest way to see why the ad-format row breaks when both enums appear.

Rows that validate and still mislabel in production

playbackmethod missing, sound bit still reported. OpenRTB does not require the field. JSON Schema and many exchange validators pass the request. An RMT sound-state bit derived from an empty path is not "unknown"; in downstream tools it often becomes a default that looks factual. Audit fill rate before you trust sound splits.

skipafter without skip. OpenRTB only defines offsets when skip is 1. Traffic that ships skipafter: 5 alone is valid JSON with an undefined skip contract. Any completion-required versus skip-enabled label built on that trio is guesswork. openrtb-field-requires_skippable_video catches one common variant when your policy expects skippable declarations.

plcmt and deprecated placement both set and they disagree. We covered the three-year migration in plcmt migration retrospective. RMT's format attribute reads plcmt and AdCOM semantics, not whichever integer your SSP copied from a 2.5 template. Planning tools that bucket "in-stream CTV" from plcmt will split the same impression differently than finance if placement still says out-stream.

How you catch it

An LLM implementing a bidder, a curation agent, or an AdCP-to-OpenRTB mapper can emit plausible video objects and still leave playbackmethod empty, skip offsets orphaned, or plcmt inconsistent with linearity. The auction ACK does not re-derive RMT for you.

RTBlint (cargo install rtblint, npm install rtblint-core, MCP rtblint-mcp) validates the OpenRTB bid request object against dated snapshots and AdCOM rules on the paths RMT reads. It is independent of IAB Tech Lab and of AAO; the spec does not mandate it, but it is the deterministic check on the wire shape agents keep getting wrong.

RMT stops at the bid request. The creative that wins still has to match the format row, especially pause and overlay plcmt values from the CTV Ad Portfolio signaling guide. Paste the served VAST URL into the VAST tag tester for fetch, preview, and tracking, and use the VAST inspector when the adm is a wrapper chain. For SIMID and IAB sample handshake checks on portfolio creatives, the IAB-style VAST tester (an independent fork, not an IAB Tech Lab product) exposes studio transport and protocol logs alongside the tag.

Run rtblint validate on production samples before you wire RMT classification into reporting. Pair it with the OpenRTB 2.5 versus 2.6 guide when adapters still emit deprecated placement enums.

Where to go next

Bookmark the table. RMT adoption is a fill-rate problem on the fields you already own, not a missing schema download.

Top comments (0)