Browse the documentation

OpenRTB 2.x — Video

Hosts: {rtb_domain} is your network's RTB domain, used by the bidder endpoints; a network without a dedicated RTB domain uses its ad domain there. {ad_domain} is the network's ad-serving domain. Inside the panel both are filled in for you.

In-stream video creatives via VAST 3.0. Either a hosted VAST URI (Wrapper) or inline XML AdMarkup.

Endpoint#

URL

POST https://{rtb_domain}/openrtb/get.go?token={token}

Bid Request#

User-context fields (device.ip, device.ua, device.language, device.geo.country, device.w / device.h, device.ext.*, user.id) must reflect the end visitor, never the bidder's server — see the Banner topic for the full rule.

Example

{
  "id": "your_id",
  "imp": [{
    "id": "your_id",
    "tagid": "placementid",
    "bidfloor": 0.00,
    "bidfloorcur": "USD",
    "ext": { "subid": "" },
    "video": { "mimes": ["video/mp4"] }
  }],
  "site": {
    "id": "1", "domain": "site.com",
    "publisher": { "id": "1" },
    "page": "http://site.com/page.html"
  },
  "device": {
    "ua": "{user_agent}",
    "ip": "{client_ip}",
    "language": "{language}",
    "geo": { "country": "{country}", "ipservice": 3 },
    "ext": {
      "accept_language": "{accept_language}",
      "remote_addr": "{client_ip}",
      "requested_with": "{requested_with}"
    },
    "h": {browser_h}, "w": {browser_w}
  },
  "user": { "id": "5a80e2e5857d86a298e013ab0091c17e" },
  "curr": ["USD"],
  "at": 1
}

Bid Response#

Set ext.btype = "video" on the bid; the VAST XML goes into adm.

Bid wrapper

{
  "id": "your id",
  "seatbid": [{
    "bid": [{
      "id": "our id",
      "impid": "your_id",
      "price": 0.0272,
      "nurl": "https://your-dsp.com/win?bid=${AUCTION_BID_ID}&price=${AUCTION_PRICE}",
      "ext": { "btype": "video" },
      "adm": "<VAST version=\"3.0\"><Ad id=\"1\"><Wrapper><AdSystem>NetworkName</AdSystem><VASTAdTagURI><![CDATA[https://vast.example.com/tag.xml]]></VASTAdTagURI><Impression><![CDATA[https://impression.example.com/log]]></Impression></Wrapper></Ad></VAST>"
    }]
  }]
}

VAST 3.0 — VASTAdTagURI

<VAST version="3.0">
  <Ad id="1">
    <Wrapper>
      <AdSystem>{network_name}</AdSystem>
      <VASTAdTagURI><![CDATA[https://vast.example.com/tag.xml]]></VASTAdTagURI>
      <Impression><![CDATA[https://impression.example.com/log]]></Impression>
    </Wrapper>
  </Ad>
</VAST>

VAST 3.0 — Inline XML

<VAST version="3.0">
  <Ad id="1">
    <InLine>
      <AdSystem>{network_name}</AdSystem>
      <AdTitle>Ad Title</AdTitle>
      <Impression><![CDATA[https://impression.example.com/log]]></Impression>
      <Creatives>
        <Creative id="1" sequence="1">
          <Linear>
            <Duration>00:00:30</Duration>
            <MediaFiles>
              <MediaFile delivery="progressive" type="video/mp4" width="640" height="360">
                <![CDATA[https://media.example.com/clip.mp4]]>
              </MediaFile>
            </MediaFiles>
            <VideoClicks>
              <ClickThrough><![CDATA[https://site.com]]></ClickThrough>
            </VideoClicks>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

Win notice (nurl)#

Optional: put a nurl on your bid and we call it (server-side GET) when your bid wins. When you send no nurl but do send burl, we call burl instead. The standard OpenRTB auction macros in the URL are filled in before the call — see the list below. Banner, video, native, push and full-page wins: we call it once, when the ad is actually shown. Pop, redirect and mail-click wins have no render step, so we call it right after the auction. Leave nurl out and no win notice is sent.

Example

https://your-dsp.com/win?bid=${AUCTION_BID_ID}&price=${AUCTION_PRICE}

Supported macros

${AUCTION_PRICE}     winning price, same unit and currency as bid.price
${AUCTION_CURRENCY}  always USD
${AUCTION_BID_ID}    your bid.id
${AUCTION_IMP_ID}    the impid of the winning bid
${AUCTION_ID}        the id of our bid request