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.
Banner bid
{
"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.
{
"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.
{
"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.
{
"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:
{
"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.