Enrich one OpenRTB bid request in place

The SSP splice path. The body is a standard OpenRTB 2.6 bid request; only the
documented input fields are read and everything else is preserved. On a hit, the
response is the same bid request with the program-identity fields of app.content
— id, title, series, episode, season, genre, cat, len, channel,
livestream, contentrating, language — replaced atomically by the single best
candidate: each is set to the resolved value or removed when resolved as absent, so
no stale program facts from the request survive next to the resolution.
Identity-neutral app.content fields and everything outside app.content are
preserved untouched, and app.content.ext.openepg.attribution is set. season
and cat belong to the replaced cluster but are never populated in v1, so a hit
always removes them. Preservation is in meaning, not bytes: re-serialization may
change encoding (key order, number formatting), never values — detect misses by
reading the X-OpenEPG-Outcome header, not by byte-comparing bodies.

On a miss — and on a degraded resolution where the channel resolved but nothing
airs at the lookup instant — the bid request comes back unchanged, HTTP 200.
A channel-only splice next to foreign program fields is never produced.

Nothing is ever added to the body: no confidence, reason, notices, or debug —
anything in this body must be assumed to enter the bidstream. The outcome and the
confidence of the chosen candidate travel in X-OpenEPG-* response headers.

Exactly one candidate is used, always; there are no query parameters on this route.
Passing a bid request that carries the needed identifier values (channel id,
channel name, or show title) raises the precision of the enrichment — an app-only
request on an aggregator app is a structured miss, never a guess. A supplied
ext.pixalate.timestamp is honored on this route and on its batch variant: the
resolution joins the schedule at that instant instead of at now, under the same
window and clamping rules the lookup route applies. An instant outside the
servable window is a 400 carrying TIMESTAMP_OUT_OF_WINDOW, never a silent
substitution of now.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params

A standard OpenRTB 2.6 bid request. The service reads only the input subset below,
from their canonical OpenRTB paths, and validates those read fields strictly (a
required read field missing or empty, or any read field of the wrong type → 400; a
malformed optional read field is treated as absent); all other fields are permitted,
ignored, and preserved in the response. OpenRTB's own required fields (id, imp)
are not enforced — a lookup-only body may omit them.

app
object
required
device
object
required
ext
object
Responses

Language
Credentials
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json