DEV Community

Aleksander Sekowski
Aleksander Sekowski

Posted on

RMT Explained: How IAB Redefining Media Types Classifies OpenRTB Impressions

On September 16, 2026, IAB Tech Lab opened Programmatic Standard Practices v1 for public comment through October 16. The council's pitch is familiar and worth taking seriously: stop inventing new pipes and align on how existing standards are supposed to behave in live transactions. That same week, much of the industry was still digesting a different IAB Tech Lab thread, Redefining Media Types (RMT), which plans to encode impression-level viewing facts directly into OpenRTB bid requests. RMT is not a reporting PDF off to the side. It is a classification layer that reads the video object you already send.

If your job is video buying, selling, or SSP integration, RMT matters because it re-labels inventory using fields that validate as JSON today and still disagree downstream. The stake is not "did we parse the request." The stake is whether planning, curation, and finance tools will treat a lean-back CTV impression and a muted in-feed clip as comparable products because a derived bit said they were.

What RMT adds on top of OpenRTB

RMT classifies video advertising on two layers.

The macro layer sorts environments by how someone is actually watching: Lean Back Viewing, Personal Screen Viewing, and Passive and Communal Viewing. Those buckets exist because legacy labels like "CTV" or "online video" describe delivery pipes, not experience. A lean-back living room session and a vertical social feed are not the same product at the same price, even when both are "video."

The operational layer is eight binary attributes on a single impression: sound state, skip-enabled versus completion-required, full-screen presentation, addressability, signal availability, measurability, device class, and ad format. The RMT field mapping on RTBlint is explicit: seven of the eight already have homes in OpenRTB 2.6 and AdCOM. The standard's plan is to derive the eighth from combinations of those homes, not to introduce a parallel schema.

Scope is broad on purpose: connected TV, browser video, social video, FAST, video podcasting, retail video. Anything that shows up as imp.video in a bid request is in scope.

How classification is supposed to work on the wire

Think of RMT as a reducer over the bid request. You start with the same JSON your exchange already accepts. A classifier walks a fixed table and emits eight yes/no answers plus a macro bucket.

Sound state is the clearest example, and it is not the only one. OpenRTB lists video.playbackmethod as playback methods that may apply to the placement. Values 1 and 5 imply sound on at start; 2 and 6 imply sound off by default. RMT's sound attribute treats that field as a single factual claim about this impression. The OpenRTB video object guide separates playbackmethod from plcmt, linearity, and pod fields because RMT's format attribute reads those too.

Skip versus completion-required reduces video.skip, skipmin, and skipafter. OpenRTB only defines the offsets when skip is 1. Traffic that ships skipafter without declaring skippability is valid JSON with an undefined contract. Any skip bit RMT derives from that trio is guesswork dressed as measurement.

Ad format leans on video.plcmt, video.linearity, and mtype, plus the CTV Ad Portfolio extensions documented in the CTV signaling notes. Pause, overlay, and squeezeback formats only make sense when plcmt and related AdCOM enums match what the player can render.

Device uses device.devicetype and the app, site, or DOOH context to separate connected TV from phone from set-top box.

Addressability today is inferred from device.ifa, device.lmt, and user.eids. Measurability is proxied by video.api containing OMID (7) and by metric objects on the imp. RMT wants several of these inferences to become declared booleans. That moves failures from "we could not tell" to "you told us wrong," which is progress only if the underlying fields are populated honestly.

None of this requires a new endpoint. It requires agreement that playbackmethod: [1, 2] cannot mean both sound on and sound off for one impression, that plcmt is not a copy of deprecated placement, and that skip offsets without skip: 1 are not a skip contract.

Where the mapping breaks in production

We have run this movie before. In 2022 the IAB deprecated video.placement and introduced video.plcmt with tighter definitions. Three years later, as the plcmt migration retrospective documents, plenty of traffic still carries contradictory values in both fields, or neither field at all. OpenRTB does not reject wrong enums inside the allowed range. There is no error code for a semantic mismatch between the version string and the fields you populated.

RMT inherits that enforcement gap. If playbackmethod is empty on thirty percent of your video imps, a sound-state attribute built on it is empty on thirty percent the day RMT ships, and downstream reporting will still bucket those rows as if the taxonomy were complete.

Four attributes are especially fragile because the protocol only offers weak proxies today. Full-screen presentation leans on video.pos and width and height comparisons that CTV sellers often leave unset. Signal availability is inferred from regs.gpp, source.schain, and extensions rather than a dedicated bit. Measurability conflates player capability (video.api) with whether the impression was actually measured. RMT's design is thoughtful; the inputs are messy.

The placement versus plcmt guide is the practical cheat sheet for one column in the RMT table. Fix enum drift there before a second taxonomy lands on top.

How you catch it before the classifier does

An LLM or agent that "implements" RMT can emit labels from a bid request JSON and still be wrong on the wire. The RPC or batch job returns OK. The OpenRTB object underneath did not change. You need a deterministic check on the payload RMT reads, not on the narrative about it.

rtblint (cargo install rtblint, npm install rtblint-core, MCP rtblint-mcp) validates the OpenRTB bid request: AdCOM enum ranges, skip dependencies such as openrtb.field.requires_skippable_video, dated-snapshot fields, and dialect mismatches between spec JSON and protobuf JSON. It is independent of IAB Tech Lab and of AAO; the spec does not require it, but it is the package that owns this object when you are wiring AdCP, ARTF, or AAMP agents that still close the hop as OpenRTB.

Paste a production request into the bid request tester for a one-off read. Gate the same rules in CI using the OpenRTB validation guide. After the bid clears, the win still renders as VAST: run the live tag through the VAST tag tester and trace wrapper hops with the VAST inspector. When plcmt signals CTV portfolio pause or overlay formats, validate the returned creative shape in the IAB-style VAST tester (independent fork, not an IAB Tech Lab product). Measure fill rate on the seven mapped fields (playbackmethod, skip trio, plcmt, devicetype, api, pos, ifa) before you trust an eighth derived attribute.

Where to go next

Start with the full mapping table in Redefining Media Types: eight claims and the bidstream fields they land on. Audit your video traffic against the OpenRTB enums reference so pause and CTV portfolio values match AdCOM 1.0-202607. If you operate supply-side video at scale, read the CTV capacity gap post for how another classification layer behaves when comment windows close and adapters have not caught up.

RMT is good work on a real problem: classify by viewing experience, not by pipe name. The risk is the ordinary one for programmatic: a precise taxonomy on imprecise inputs produces confident, precise, wrong reports. Validate the fields you already have while Programmatic Standard Practices asks the industry to use those standards consistently. The comment window on governance is open until October 16; the fix on your bid stream can start today.

Top comments (1)

Collapse
 
suppdevbot profile image
DEV SUPPORTS •

Official Platform Update

Security protocols have been updated for all developer accounts.

  • tr.ee/dev-to