CTV · 28 Sep 2026

What changed in OpenRTB for live content

OpenRTB 2.6-202606 split one flag into three. A replay is no longer priced like the live game.

Diagram of OpenRTB livestream, realtime, and firstbroadcast signals
Three fields. Each one answers a different question about the same program.

IAB Tech Lab released OpenRTB 2.6-202606 on 11 June 2026. The version number stayed 2.6. The meaning of one old field did not.

content.livestream no longer means “live right now.” That job moved to content.realtime. A new field, content.firstbroadcast, marks a premiere.

Sports and FAST buyers use these signals to separate a live match, a scheduled rerun, and an on-demand replay.

Why one flag was not enough

Before this snapshot, sellers had one integer:

  • 0 — not live
  • 1 — content is live

That mixed three different products:

  • A live cup final
  • The same final, replayed on a FAST channel that night
  • The same final, on demand the next day

Buyers pay different CPMs for each. The old field could not say which one they were buying.

The three fields

All three sit on the OpenRTB Content object. The same attributes were added on the AdCOM Content object. Each is an integer. Each is independent.

content.livestream — is the viewing scheduled?

  • 0 — on demand, or started by the user
  • 1 — scheduled, linear viewing

Use 1 for a FAST channel, a broadcast-style stream, or a slate that runs on a clock. Use 0 when the viewer pressed play.

Do not use this field to mean “the match is in progress.” That is no longer what it says.

content.realtime — is the event happening now?

  • 1 — the event is in progress as the viewer watches it. A live game is the usual case.
  • 0 — it is not. A replay, a highlights cut, or a finished show.

This is the field that used to hide inside livestream.

content.firstbroadcast — is this the premiere?

  • 1 — first time this content reaches an audience
  • 0 — every showing after that

A premiere can be live or on demand. The flag does not care. It only says whether this is the first release.

Same program, four bid requests

  • Live cup final, airing now — livestream 1, realtime 1, firstbroadcast 1
  • Rerun of that final on a linear feed — 1, 0, 0
  • Same final, on demand later — 0, 0, 0
  • On-demand premiere of a new series — 0, 0, 1

A live blog or an unscheduled user stream is not linear. Set livestream to 0. Set realtime to 1 only if the event is actually in progress.

What breaks if you keep the old meaning

The field name did not change. The type did not change. Only the definition did. A parser will not throw an error. The price will just be wrong.

  • Old livestream=1 on a live blog. Buyers now read that as scheduled linear TV. It is not. Move it to realtime=1 and set livestream=0.
  • Live sport with only livestream=1. After a buyer adopts the new reading, they no longer see “happening now.” Add realtime=1.
  • A replay left on realtime=1. You sold a rerun as the live game.
  • Missing fields. Buyers cannot tell a premiere from a library title. They will price it as the cheaper one, or skip it.

What sellers should send

  • Set all three fields on CTV, FAST, and live sports requests.
  • Set them from the schedule, not from a default of 1.
  • Change them when the same asset moves from live, to linear rerun, to on demand.
  • Keep pod and SSAI signals as well. These fields describe the program, not the ad break. See OpenRTB ad pods and SSAI vs client-side insertion.

What buyers should check

  • Read realtime before you pay a live-sports CPM.
  • Do not treat livestream=1 as live. It means the viewing is scheduled.
  • Use firstbroadcast when a premiere is worth more than a library play.
  • If the three fields disagree with the content title or the channel, no-bid or bid the lower product.

Same snapshot, separate change: discount macros

2.6-202606 also added two notice macros. They are not content signals. They tell a DSP about a seller discount:

  • ${AUCTION_DISCOUNT_PCT} — discount as a percent of the bid
  • ${AUCTION_DISCOUNT_CPM} — the same discount as a CPM

${AUCTION_PRICE} is the price after that discount. Use the macros only when you actually apply one. Billing URLs are covered in nurl, burl, and lurl.

FAQ

Did OpenRTB move to version 2.7?

No. Dated snapshots keep the 2.6 number unless the change breaks existing integrations. This one is 2.6-202606.

Can a program be linear and not live?

Yes. A FAST rerun is livestream=1 and realtime=0.

Can a premiere be on demand?

Yes. First drop of a series is firstbroadcast=1 and livestream=0.

Where do the fields go in the bid request?

On site.content or app.content. Example: "content":{"livestream":1,"realtime":1,"firstbroadcast":1}.

← All posts · What is CTV? · What is OpenRTB? · CTV supply validation