BidRequest.imp[]
Imp
One ad placement being auctioned. A request can carry several, and each is bid on independently.
Fields
| Field | Type | Level | Description |
|---|---|---|---|
| id | string | required | Identifier unique within this bid request. |
| banner | object | conditional | Required if a banner ad is offered. |
| video | object | conditional | Required if a video ad is offered. |
| audio | object | conditional | Required if an audio ad is offered. |
| native | object | conditional | Required if a native ad is offered. |
| pmp | object | optional | Private marketplace deals available for this impression. |
| bidfloor | float | optional | Minimum bid, as a CPM. Defaults to 0. |
| bidfloorcur | string | optional | Currency of the floor. Defaults to USD. |
| secure | integer | optional | 1 if the impression requires HTTPS assets. |
| instl | integer | optional | 1 if the impression is interstitial or full screen. |
Example
{
"id": "1",
"bidfloor": 1.50,
"bidfloorcur": "USD",
"secure": 1,
"banner": {
"format": [{ "w": 300, "h": 250 }, { "w": 336, "h": 280 }],
"pos": 1
}
}What matters in practice
The floor is a CPM in bidfloorcur, not a per-impression price, and the currency is easy to miss — a floor of 2.00 means very different things in USD and JPY. An Imp offering more than one of banner, video and native is offering the exchange a choice, not requiring all of them, which is why a request can look like video inventory and fill with display. If you are debugging why a deal never matches, the pmp object on the specific Imp is where to look rather than anything at the root.
Related objects
Field names, types and requirement levels from the IAB Tech Lab OpenRTB 2.6 specification (2.6-202211), verified 30 July 2026. The practice notes are not spec text.