an illustrated guide to video ad-tech

How a video ad actually gets to your screen.

Eight systems. One impression. Roughly three hundred milliseconds. Scroll to follow a single ad request through every hop — then drive your own auction in the sandbox.

8
core players
10
lifecycle steps
19
failure modes
live preview · header bidding
300ms
Creative + targeting1GET /vast?iu=…2OpenRTB BidRequest3Broadcast to N DSPs4Cookie / IFA match5BidResponse + adm6Second-price clear7VAST 4.3 XML8HTTP range requests9AdvertiserCREATIVE + BUDGETPublisherVIDEO PLAYER SLOTAd ServerDECISIONINGSSPSELL-SIDE AUCTIONExchangeOPENRTBDSPBIDDERDMP / CDPSEGMENTSCDNMEDIA FILE
scroll to follow
the wire

One request. Eight systems. Watch them talk.

The diagram on the left pins to the viewport. Each beat on the right advances it to the next message on the wire. Hover a payload to read the actual bytes.

SetupAuctionRender & Measure
step 1 / 8
Creative + targeting1GET /vast?iu=…2OpenRTB BidRequest3Broadcast to N DSPs4Cookie / IFA match5BidResponse + adm6Second-price clear7VAST 4.3 XML8HTTP range requests9AdvertiserCREATIVE + BUDGETPublisherVIDEO PLAYER SLOTAd ServerDECISIONINGSSPSELL-SIDE AUCTIONExchangeOPENRTBDSPBIDDERDMP / CDPSEGMENTSCDNMEDIA FILE
  1. 01 · Setup

    Player asks for an ad

    A viewer hits play. The publisher's player fires a VAST tag at the ad server with page context and player size. The 250ms clock starts.

    VAST ad request
    GET https://ads.example/vast?iu=/news/video &sz=640x360 &gdfp_req=1 &ifa=8e8d-… &url=https://news.example/article-42
  2. 02 · Auction

    Ad server hands off to the SSP

    No direct-sold campaign wins, so the request is wrapped as OpenRTB and forwarded to an SSP for an open auction.

    OpenRTB 2.6 BidRequest
    { "id": "req-3a91", "imp": [{ "id": "1", "video": { "mimes": ["video/mp4"], "minduration": 6, "maxduration": 30 } }], "site": { "domain": "news.example", "cat": ["IAB12"] }, "device": { "ifa": "8e8d-…", "ua": "Mozilla/5.0" }, "tmax": 250 }
  3. 03 · Auction

    Exchange fans out to bidders

    The exchange replicates the request to dozens of DSPs in parallel. Each has ~80ms to respond.

  4. 04 · Auction

    DSP submits a bid

    Winning DSP returns a price and inlined VAST. Other bidders are doing the same in parallel.

    OpenRTB BidResponse
    { "id": "req-3a91", "seatbid": [{ "bid": [{ "id": "b1", "impid": "1", "price": 14.20, "adm": "<VAST version=\"4.3\">…</VAST>", "crid": "aurora-15s" }] }] }
  5. 05 · Auction

    Exchange clears the auction

    Bids are compared against floors and brand-safety rules. The winner clears at one cent above the runner-up.

  6. 06 · Render & Measure

    VAST returns to the player

    The winning VAST XML travels back. The player parses MediaFiles and picks the best bitrate for the connection.

    VAST 4.3 InLine (excerpt)
    <VAST version="4.3"> <Ad><InLine> <Impression><![CDATA[https://t.example/imp?b=xy]]></Impression> <Creatives><Creative><Linear> <Duration>00:00:15</Duration> <MediaFiles> <MediaFile type="video/mp4" bitrate="2400"> https://cdn.example/aurora-15s.mp4 </MediaFile> </MediaFiles> </Linear></Creative></Creatives> </InLine></Ad> </VAST>
  7. 07 · Render & Measure

    CDN streams the creative

    Bytes flow from a CDN edge near the user. Cache-hit ratio at this step is what keeps start times sub-second.

  8. 08 · Render & Measure

    Beacons fire as it plays

    Quartile pings and OMID viewability go out to tracking endpoints. This is what advertisers actually pay for.

    Quartile beacon
    POST https://t.example/q3?b=xy&ts=1714… X-OMID-Viewable: 1
when it breaks

Roughly one in seven requests doesn't make it.

Timeouts, malformed VAST, missing IFAs, slow stitchers, ads.txt drift. Each one mutates the message flow in a specific way. Pick a failure and replay it in the sandbox.

Browse all scenarios19 failure modes · 4 scenarios · 1 sandbox
openrtb · live
interactive sandbox

Now drive the auction yourself.

Pick a scenario, tune the knobs — floor, tmax, fill rate, pod size — and step through every message between players. Inject failures and watch the mock player react.

Drive a live auction