Programmatic broadsheet · Set in real time
adon3
The Real-Time Bidding Exchange
Integration Docs
Supply side · XML feed · OpenRTB 2.6 / 2.5

Bid Response Samples

What comes back for each of the requests on Bid Request Samples. Every one is 200 with Content-Type: application/json; charset=utf-8, and every one carries a single seatbid with a single bid.

The macros are shown unsubstituted, which is how they arrive. Replacing them is your step. See Substitution Macros.

JSON
{
  "id": "8f2a1c30-6b4e-4d9a-9f11-2c7e3b5a8d40",
  "bidid": "bid-77e3c0a9",
  "cur": "USD",
  "seatbid": [
    {
      "seat": "acme-demand",
      "group": 0,
      "bid": [
        {
          "id": "1",
          "impid": "1",
          "price": 1.2,
          "adid": "cr-88213",
          "cid": "cmp-3301",
          "crid": "cr-88213",
          "adomain": ["acme.example"],
          "cat": ["IAB19"],
          "cattax": 2,
          "attr": [6],
          "mtype": 1,
          "w": 300,
          "h": 250,
          "iurl": "https://cdn.acme.example/preview/88213.jpg",
          "nurl": "https://dsp.example.com/win?i=77e3c0a9&p=${AUCTION_PRICE}",
          "burl": "https://dsp.example.com/bill?i=77e3c0a9&p=${AUCTION_PRICE}",
          "adm": "<a href=\"https://acme.example/offer\"><img src=\"https://cdn.acme.example/300x250.jpg\" width=\"300\" height=\"250\" alt=\"Acme\"></a><img src=\"https://dsp.example.com/imp?i=77e3c0a9&p=${AUCTION_PRICE}\" width=\"1\" height=\"1\" style=\"display:none\">",
          "exp": 300
        }
      ]
    }
  ]
}

Render adm at 300x250, fire nurl on the win and burl when the impression is counted, and bill against the value you substituted for ${AUCTION_PRICE}.

Video bid with inline VAST

The VAST document arrives in adm as a JSON-escaped string. dur states the creative length so you can check it against the duration you offered.

JSON
{
  "id": "b41d7e08-2f56-4a13-89cc-51f0a9d3e772",
  "bidid": "bid-2f81aa30",
  "cur": "USD",
  "seatbid": [
    {
      "seat": "acme-demand",
      "group": 0,
      "bid": [
        {
          "id": "1",
          "impid": "1",
          "price": 13.4,
          "crid": "cr-91004",
          "adomain": ["acme.example"],
          "mtype": 2,
          "dur": 15,
          "protocol": 7,
          "api": 2,
          "w": 1280,
          "h": 720,
          "nurl": "https://dsp.example.com/win?i=2f81aa30&p=${AUCTION_PRICE}",
          "burl": "https://dsp.example.com/bill?i=2f81aa30&p=${AUCTION_PRICE}",
          "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><VAST version=\"4.2\"><Ad id=\"91004\"><InLine><AdSystem>Acme</AdSystem><AdTitle>Market Open</AdTitle><Impression><![CDATA[https://dsp.example.com/vimp?i=2f81aa30&p=${AUCTION_PRICE}]]></Impression><Creatives><Creative id=\"91004\"><Linear><Duration>00:00:15</Duration><MediaFiles><MediaFile delivery=\"progressive\" type=\"video/mp4\" width=\"1280\" height=\"720\"><![CDATA[https://cdn.acme.example/91004/720p.mp4]]></MediaFile></MediaFiles></Linear></Creative></Creatives></InLine></Ad></VAST>",
          "exp": 300
        }
      ]
    }
  ]
}

Substitute inside the VAST document as well as in the notices. The impression tracker in Impression carries ${AUCTION_PRICE} and will record a zero-priced impression if you leave it alone.

Native bid

The native response object is JSON-encoded into adm as a string, mirroring the way imp.native.request is sent.

JSON
{
  "id": "c9e3a761-40b8-4f22-9d0e-7b1c85af3021",
  "bidid": "bid-5b0c92d1",
  "cur": "USD",
  "seatbid": [
    {
      "seat": "acme-demand",
      "group": 0,
      "bid": [
        {
          "id": "1",
          "impid": "1",
          "price": 2.75,
          "crid": "cr-93340",
          "adomain": ["acme.example"],
          "mtype": 4,
          "nurl": "https://dsp.example.com/win?i=5b0c92d1&p=${AUCTION_PRICE}",
          "burl": "https://dsp.example.com/bill?i=5b0c92d1&p=${AUCTION_PRICE}",
          "adm": "{\"native\":{\"ver\":\"1.2\",\"link\":{\"url\":\"https://acme.example/offer\"},\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"The quiet way to move money\"}},{\"id\":2,\"required\":1,\"img\":{\"url\":\"https://cdn.acme.example/93340/600x400.jpg\",\"w\":600,\"h\":400}},{\"id\":3,\"data\":{\"value\":\"Sponsored by Acme\"}}],\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://dsp.example.com/nimp?i=5b0c92d1&p=${AUCTION_PRICE}\"}]}}",
          "exp": 300
        }
      ]
    }
  ]
}

Deal bid

dealid comes back exactly as you sent it in imp.pmp. Check it before you render, since a bid without it did not transact on your deal.

JSON
{
  "id": "d7b02f95-8c41-4e6a-b3d8-90fe2c714a63",
  "bidid": "bid-a10f34c7",
  "cur": "USD",
  "seatbid": [
    {
      "seat": "acme-demand",
      "group": 0,
      "bid": [
        {
          "id": "1",
          "impid": "1",
          "price": 4.5,
          "crid": "cr-70118",
          "adomain": ["acme.example"],
          "bundle": "com.acme.app",
          "dealid": "deal-77c40e",
          "mtype": 1,
          "w": 320,
          "h": 50,
          "burl": "https://dsp.example.com/bill?i=a10f34c7&p=${AUCTION_PRICE}",
          "adm": "<a href=\"https://acme.example/app\"><img src=\"https://cdn.acme.example/320x50.jpg\" width=\"320\" height=\"50\" alt=\"Acme\"></a>",
          "exp": 300
        }
      ]
    }
  ]
}

This deal set at to 1, so ${AUCTION_PRICE} resolves to the bid price of 4.50. On open-market traffic at at of 2 it will normally resolve lower, so do not build the assumption that they match into your billing.

No bid

The usual no-bid is 204 No Content with an empty body, so there is nothing to show.

The 200 form carries a reason code and no seatbid:

JSON
{
  "id": "8f2a1c30-6b4e-4d9a-9f11-2c7e3b5a8d40",
  "nbr": 8
}

Handle it exactly as you handle a 204. Reason codes are listed on Errors & No-Bids.

Next: SSP Report.

sellers.json · schain enforced · OpenRTB 2.5 / 2.6 / 3.0 · XML
Printed on the Open Exchange
—  Integration Docs  —