RTBlintAlpha
OpenRTB video bid response example
A realistic CTV video bid response: VAST markup inline in adm, mtype declared, and win/billing/loss notices carrying macros.
The payload
{
"id": "9d2f3a7e-ctv-pod",
"bidid": "resp-77120",
"cur": "USD",
"seatbid": [
{
"seat": "dsp-acme",
"group": 0,
"bid": [
{
"id": "bid-1",
"impid": "1",
"price": 21.4,
"adid": "cr-90341",
"nurl": "https://dsp.example.com/win?p=${AUCTION_PRICE}",
"burl": "https://dsp.example.com/bill?p=${AUCTION_PRICE}",
"lurl": "https://dsp.example.com/loss?r=${AUCTION_LOSS}",
"adm": "<VAST version='4.2'><Ad id='cr-90341'><Wrapper><AdSystem>acme-dsp</AdSystem><VASTAdTagURI><![CDATA[https://dsp.example.com/vast/cr-90341]]></VASTAdTagURI><Impression><![CDATA[https://dsp.example.com/imp]]></Impression></Wrapper></Ad></VAST>",
"adomain": ["acmesnacks.com"],
"crid": "cr-90341",
"cid": "camp-221",
"cat": ["IAB8"],
"cattax": 1,
"language": "en",
"w": 1920,
"h": 1080,
"dur": 30,
"mtype": 2,
"apis": [7],
"protocol": 8
}
]
}
]
}Open this payload in the tester to validate it live, change fields, and watch which rules fire.
What to notice
- adm carries the VAST document itself; mtype: 2 declares it as video so nothing downstream has to sniff.
- nurl, burl, and lurl each carry substitution macros; the exchange expands them at win, billing, and loss time.
- impid echoes the request's imp.id exactly; a response is only as valid as the request it answers.