OpenRTB examples

CTV ad pod bid request example

A connected-TV ad pod request using the 2.6 pod bidding fields: pod identity, slot sequencing, and exact-duration requirements.

The payload

{
  "id": "9d2f3a7e-ctv-pod",
  "at": 1,
  "tmax": 300,
  "cur": ["USD"],
  "source": {
    "schain": {
      "complete": 1,
      "ver": "1.0",
      "nodes": [
        { "asi": "exchange.example.com", "sid": "pub-4491", "hp": 1 }
      ]
    }
  },
  "regs": { "coppa": 0, "gdpr": 0 },
  "app": {
    "id": "app-552",
    "name": "StreamBox",
    "bundle": "com.streambox.tv",
    "storeurl": "https://apps.example.com/streambox",
    "publisher": { "id": "pub-4491", "name": "StreamBox Media" },
    "content": {
      "id": "ep-2201",
      "title": "Chef's Table",
      "series": "Kitchen Stories",
      "season": "Season 4",
      "episode": 12,
      "genre": "documentary",
      "livestream": 0,
      "len": 2700,
      "language": "en",
      "network": { "id": "net-7", "name": "StreamBox Originals" },
      "channel": { "id": "ch-12", "name": "Food" }
    }
  },
  "device": {
    "ua": "Mozilla/5.0 (SMART-TV; Linux; Tizen 7.0)",
    "ip": "203.0.113.42",
    "devicetype": 3,
    "make": "Samsung",
    "model": "QN90C",
    "os": "Tizen",
    "osv": "7.0",
    "ifa": "38c1a2f0-52b6-4c9e-9a41-d0f83a6c1e11",
    "lmt": 0,
    "connectiontype": 2,
    "geo": { "country": "USA", "region": "CA", "type": 2 }
  },
  "user": { "id": "u-92fd6c1b" },
  "imp": [
    {
      "id": "1",
      "secure": 1,
      "bidfloor": 12.5,
      "bidfloorcur": "USD",
      "rwdd": 0,
      "video": {
        "mimes": ["video/mp4"],
        "protocols": [3, 7, 8],
        "w": 1920,
        "h": 1080,
        "linearity": 1,
        "plcmt": 1,
        "pos": 7,
        "podid": "pod-1",
        "podseq": 0,
        "maxseq": 4,
        "poddur": 120,
        "slotinpod": 1,
        "minduration": 15,
        "maxduration": 30,
        "startdelay": 0,
        "playbackmethod": [1],
        "playbackend": 1,
        "delivery": [2],
        "api": [7]
      },
      "pmp": {
        "private_auction": 0,
        "deals": [
          { "id": "deal-777", "bidfloor": 18.0, "bidfloorcur": "USD", "at": 1 }
        ]
      }
    }
  ]
}

Open this payload in the tester to validate it live, change fields, and watch which rules fire.

What to notice

  • podid ties multiple impressions to one commercial break; slotinpod positions each slot.
  • rqddurs enumerates exact acceptable durations, replacing minduration/maxduration when present.
  • devicetype 3 plus an app object is the classic CTV shape; buyers key CTV classification off both.

More examples