OpenRTB specifications

RTBNova offers a bidding protocol based on OpenRTB 2.x, enabling third parties to bid on inventory in real time. This documentation explains how publishers/SSPs can integrate their platforms with RTBNova strictly following the OpenRTB 2.5 standard specifications to sell their traffic.

See OpenRTB API Specification Version 2.5 for more information.

Supported ad types

  • Banner

  • Video (In-Stream Video, Outstream Video)

  • CTV

  • Native Ads

Endpoint

http://{source}.{zone}.ads.adsinflow.com/

Suggested Bid Request Headers

OpenRTB Version HTTP Header: x-openrtb-version: 2.5

Keep-Alive HTTP Header: Connection: Keep-Alive

Content JSON: Content-Type: application/json

Request params

The following objects should be sent encoded as JSON in the request body.

BidRequest


Attribute Type Description
id string; required Unique ID of the bid request, provided by the exchange.
imp object array;
required
Array of Imp objects representing the impressions offered. At least 1 Imp object is required.
site object;
recommended
Details via a Site object about the publisher’s website. Only applicable and recommended for websites.
app object;
recommended
Details via an App object about the publisher’s app (i.e., non-browser applications). Only applicable and recommended for apps.
device object;
recommended
Details via a Device object about the user’s device to which the impression will be delivered.
user object;
recommended
Details via a User objectabout the human user of the device; the advertising audience.
at integer;
default 2
Auction type, where 1 = First Price, 2 = Second Price Plus. Exchange-specific auction types can be defined using values greater than 500.
tmax integer Maximum time in milliseconds the exchange allows for bids to be received including Internet latency to avoid timeout. This value supersedes any a priori guidance from the exchange.
bcat string array Blocked advertiser categories using the IAB content categories.
ext object Placeholder for exchange-specific extensions to OpenRTB.

imp

Attribute Type Description
id string; required A unique identifier for this impression within the context of the bid request (typically, starts with 1 and increments.)
banner object A Banner object; required if this impression is offered as a banner ad opportunity.
video object A Video object; required if this impression is offered as a video ad opportunity.
native object A Native object; required if this impression is offered as a native ad opportunity.
instl integer;
default 0
1 = the ad is interstitial or full screen, 0 = not interstitial.
bidfloor float; default 0 Minimum bid for this impression expressed in CPM.
secure integer Flag to indicate if the impression requires secure HTTPS URL creative assets and markup, where 0 = non-secure, 1 = secure. If omitted, the secure state is unknown, but non-secure HTTP support can be assumed.

imp.banner

Attribute Type Description
w integer Exact width in device independent pixels (DIPS); recommended if no format objects are specified.
h integer Exact height in device independent pixels (DIPS); recommended if no format objects are specified.

imp.video

Attribute Type Description
mimes string array;
required
Content MIME types supported (e.g., “video/x-ms-wmv”,“video/mp4”).
minduration integer;
recommended
Minimum video ad duration in seconds.
maxduration integer;
recommended
Maximum video ad duration in seconds.
podid string Unique identifier indicating that an impression opportunity belongs to a video ad pod. If multiple impression opportunities within a bid request share the same podid, this indicates that those impression opportunities belong to the same video ad pod.
poddur integer; recommended Indicates the total amount of time in seconds that advertisers may fill for a “dynamic” video ad pod
podseq integer; default 0 The sequence (position) of the video ad pod within a content stream.
slotinpod integer; default 0 For video ad pods, this value indicates that the seller can guarantee delivery against the indicated slot position in the pod.
maxseq integer; recommended Indicates the maximum number of ads that may be served into a “dynamic” video ad pod.
protocols integer array;
recommended
Array of supported video protocols.

Value

Description

1 VAST 1.0
2 VAST 2.0
3 VAST 3.0
4 VAST 1.0 Wrapper
5 VAST 2.0 Wrapper
6 VAST 3.0 Wrapper
7 VAST 4.0
8 VAST 4.0 Wrapper
9 DAAST 1.0
10 DAAST 1.0 Wrapper

w integer;
recommended
Width of the video player in device independent pixels (DIPS).
h integer;
recommended
Height of the video player in device independent pixels (DIPS).
startdelay integer;
recommended
Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll ad placements.

Value

Description

> 0

Mid-Roll (value indicates start delay in second)

0

Pre-Roll

-1

Generic Mid-Roll

-2

Generic Post-Roll


imp.native

Attribute Type Description
request string;
required
Request payload complying with the Native Ad Specification.
ver string;
recommended
Version of the Dynamic Native Ads API to which request complies; highly recommended for efficient parsing.

site

Attribute Type Description
id string;
recommended
Exchange-specific site ID.
name string Site name (may be aliased at the publisher’s request).
domain string Domain of the site (e.g., “mysite.foo.com”).
page string URL of the page where the impression will be shown.
ref string Referrer URL that caused navigation to the current page.
mobile integer Indicates if the site has been programmed to optimize layout when viewed on mobile devices, where 0 = no, 1 = yes.

a pp

Attribute Type Description
id string;
recommended
Exchange-specific app ID.
name string App name (may be aliased at the publisher’s request).
bundle string A platform-specific application identifier intended to be unique to the app and independent of the exchange. On Android, this should be a bundle or package name (e.g., com.foo.mygame). On iOS, it is typically a numeric ID.
domain string Domain of the app (e.g., “mygame.foo.com”).
storeurl string App store URL for an installed app; for IQG 2.1 compliance.

device

Attribute Type Description
ua string;
recommended
Browser user agent string.
geo object;
recommended
Location of the device assumed to be the user’s current
location defined by a Geo object.
dnt integer;
recommended
Standard “Do Not Track” flag as set in the header by the browser, where 0 = tracking is unrestricted, 1 = do not track.
lmt integer;
recommended
“Limit Ad Tracking” signal commercially endorsed (e.g., iOS, Android), where 0 = tracking is unrestricted, 1 = tracking must be limited per commercial guidelines.
ip string;
recommended
IPv4 address closest to device.
ipv6 string IP address closest to device as IPv6.
make string Device make (e.g., “Apple”).
model string Device model (e.g., “iPhone”).
os string Device operating system (e.g., “iOS”).
js integer Support for JavaScript, where 0 = no, 1 = yes.
language string Browser language using ISO-639-1-alpha-2.
carrier string Carrier or ISP (e.g., “VERIZON”) using exchange curated string names which should be published to bidders a priori.
ifa string ID sanctioned for advertiser use in the clear (i.e., not hashed).
didsha1 string Hardware device ID (e.g., IMEI); hashed via SHA1.
didmd5 string Hardware device ID (e.g., IMEI); hashed via MD5.
dpidsha1 string Platform device ID (e.g., Android ID); hashed via SHA1.
dpidmd5 string Platform device ID (e.g., Android ID); hashed via MD5.
macsha1 string MAC address of the device; hashed via SHA1.
macmd5 string MAC address of the device; hashed via MD5.

device.geo

Attribute Type Description
lat float Latitude from -90.0 to +90.0, where negative is south.
lon float Longitude from -180.0 to +180.0, where negative is west.
country string Country code using ISO-3166-1-alpha-3.

u ser

Attribute Type Description
id string;
recommended
Exchange-specific ID for the user. At least one of id or buyeruid is recommended.
buyeruid string;
recommended
Buyer-specific ID for the user as mapped by the exchange for the buyer. At least one of buyeruid or id is recommended.
yob integer Year of birth as a 4-digit integer.
gender string Gender, where “M” = male, “F” = female, “O” = known to be other (i.e., omitted is unknown).

Response params

The response for a bid request will have the following structure

BidResponse

Attribute Type Description
id string;
required
ID of the bid request to which this is a response.
seatbid object array Array of seatbid objects; 1+ required if a bid is to be made.
bidid string Bidder generated response ID to assist with logging/tracking.
cur string;
default “USD”
Bid currency using ISO-4217 alpha codes.
nbr integer Reason for not bidding.

Value

Description

0

Unknown Error

1

Technical Error

2

Invalid Request

3

Known Web Spider

4

Suspected Non-Human Traffic

5

Cloud, Data center, or Proxy IP

6

Unsupported Device

7

Blocked Publisher or Site

8

Unmatched User

9

Daily Reader Cap Met

10

Daily Domain Cap Met

seatbid

Attribute Type Description
bid object array; required Array of 1+ Bid objects each related to an impression. Multiple bids can relate to the same impression

seatbid.bid

Attribute Type Description
id string; required Bidder generated bid ID to assist with logging/tracking.
impid string; required ID of the Imp object in the related bid request.
price float; required Bid price expressed as CPM although the actual transaction is for a unit impression only. Note that while the type indicates float, integer math is highly recommended when handling currencies (e.g., BigDecimal in Java).
nurl string Win notice URL called by the exchange if the bid wins (not necessarily indicative of a delivered, viewed, or billable ad); optional means of serving ad markup. Substitution macros may be included in both the URL and optionally returned markup.
adm string Optional means of conveying ad markup in case the bid wins; supersedes the win notice if markup is included in both. Substitution macros may be included.
adid string ID of a preloaded ad to be served if the bid wins.
adomain string array Advertiser domain for block list checking (e.g., “ford.com”). This can be an array of for the case of rotating creatives. Exchanges can mandate that only one domain is allowed.
iurl string URL without cache-busting to an image that is representative of the content of the campaign for ad quality/safety checking.
cid string Campaign ID to assist with ad quality checking; the collection of creatives for which iurl should be representative.
crid string Creative ID to assist with ad quality checking.
cat string array IAB content categories of the creative.
w integer Width of the creative in device independent pixels (DIPS).
h integer Height of the creative in device independent pixels (DIPS).

No Bid Response

To answer a bid request without making an actual bid, an HTTP response code 204 "No Content" will be sent.  

Win Notification

When the parameter Bid Response Object -> Seat Bid Object -> Bid Object -> nurl is in the bid response, a GET request must be performed to such URL.

Native Markup Request

Field Scope Type Default Description
assets required array of objects - An array of Asset Objects. Any bid response must comply with the array of elements expressed in the bid request.

Asset

Field Scope Type Default Description
id required int - Unique asset ID, assigned by
exchange. Typically a counter for the array.
required optional int 0 Set to 1 if asset is required
(exchange will not accept a bid
without it)
title recommended object - Title object for title assets.
img recommended object - Image object for image assets.
video optional object - Video object for video assets. Note that in-stream (ie preroll, etc) video ads are not part of Native. Native ads may contain a video as the ad creative itself.
data recommended object - Data object for brand name, description, ratings, prices etc.

asset.title

Field Scope Type Default Description
Len required integer - Maximum length of the text in the title element. Recommended to be 25, 90, or 140.

asset.img

Field Scope Type Default Description
w optional integer - Width of the image in pixels.
wmin recommended integer - The minimum requested width of the image in pixels. This option should be used for any rescaling of images by the client. Either w or wmin should be transmitted. If only w is included, it should be considered an exact requirement.
h optional integer - Height of the image in pixels.
hmin recommended integer - The minimum requested height of the image in pixels. This option should be used for any rescaling of images by the client. Either h or hmin should be transmitted. If only h is included, it should be considered an exact requirement.

asset.video

Field Scope Type Default Description
mimes required array - Content MIME types supported. Popular MIME types include,but are not limited to “video/x-mswmv” for Windows Media, and “video/x-flv” for Flash Video, or “video/mp4”. Note that native frequently does not support flash.
minduration required integer - Minimum video ad duration in seconds.
maxduration required integer - Maximum video ad duration in seconds.
protocols required array of integers - An array of video protocols the publisher can accept in the bid response.

asset.data

Field Scope Type Default Description
Type required integer - Type ID of the element supported by the publisher. The publisher can display this information in an appropriate format.
Len optional integer - Maximum length of the text in the element’s response.

Native Markup Response

Field Scope Type Default Description
ver recommended string “1.2” Version of the Native Markup version in use.
assets recommended array of
objects
- List of native ad’s assets. Required if no assetsurl. Recommended as fallback even if assetsurl is provided.
assetsurl optional string - URL of an alternate source for the assets object. The expected response is a JSON object mirroring the assets object in the bid response, subject to certain requirements as specified in the individual objects. Where present, overrides the asset object in the response.
link required object - Destination Link. This is default link object for the ad. Individual assets can also have a link object which applies if the asset is activated(clicked). If the asset doesn’t have a link object, the parent link object applies.
imptrackers optional array of strings - Array of impression tracking URLs, expected to return a 1x1 image or 204 response - typically only passed when using 3rd party trackers. To be deprecated - replaced with eventtrackers
jstracker optional string - Optional JavaScript impression
tracker. This is a valid HTML,
Javascript is already wrapped in
<script> tags. It should be executed at impression time where it can be supported. To be deprecated - replaced with eventtrackers.
eventtrackers optional Array of - Array of tracking objects to run with the ad, in response to the declared supported methods in the request. Replaces imptrackers and jstracker, to be deprecated.
asset
Field Scope Type Default Description
id optional int - Optional if assetsurl/dcourl is being used; required if embedded asset is being used.
required optional int 0 Set to 1 if asset is required
(exchange will not accept a bid
without it)
title optional object - Title object for title assets.
img optional object - Image object for image assets.
video optional object - Video object for video assets. Note that in-stream (ie preroll, etc) video ads are not part of Native. Native ads may contain a video as the ad creative itself.
data optional object - Data object for brand name, description, ratings, prices etc.
link optional object - Link object for call to actions. The link object applies if the asset item is activated (clicked). If there is no link object on the asset, the parent link object on the bid response applies.

asset.title

Field Scope Type Default Description
Text required String - The text associated with the text element.
Len optional integer - The length of the title being provided. Required if using assetsurl/dcourl representation, optional if using embedded asset representation

asset.img

Field Scope Type Default Description
url required string - URL of the image asset.
w recommended integer - Width of the image in pixels. Recommended for embedded asset responses. Required for assetsurl/dcourlresponses if multiple assets of same type submitted.
h recommended integer - Height of the image in pixels. Recommended for embedded asset responses. Required for assetsurl/dcourl responses if multiple assets of same type submitted.

asset.video

Field Scope Type Default Description
vasttag required string - vast xml.

asset.data

Field Scope Type Default Description
value required string - The formatted string of data to be displayed. Can contain a formatted value such as “5 stars” or “$10” or “3.4 stars out of 5”

link / asset.link

Field Scope Type Default Description
url required string - Landing URL of the clickable link.
clicktrackers optional array of
strings
- List of third-party tracker URLs to be fired on click of the URL.
fallback optional string
(URL)
- Fallback URL for deeplink. To be used if the URL given in url is not supported by the device.

e venttracker

Field Scope Type Default Description
event required integer - Type of event to track.

Type ID

Name

Description

1

impression

Impression

2

viewable-mrc50

Visible impression using MRC definition at 50% in view for 1 second

3

viewable-mrc100

100% in view for 1 second (ie GroupM standard)

4

viewable-video50

Visible impression for video using MRC definition at 50% in view for 2 seconds

500

exchange-specific

null


method required integer - Type of tracking requested.

Type ID

Name

Description

1

img

Image-pixel tracking - URL provided will be
inserted as a 1x1 pixel at the time of the event.

2

js

Javascript-based tracking - URL provided will be
inserted as a js tag at the time of the event.

500

exchange-specific

Could include custom measurement companies
such as moat, doubleverify, IAS, etc - in this case
additional elements will often be passed


url optional text - The URL of the image or js. Required for image or js, optional for custom.

Substitution Macros

Macro Description
${AUCTION_ID} ID of the bid request; from BidRequest.id attribute.
${AUCTION_BID_ID} ID of the bid; from BidResponse.bidid attribute.
${AUCTION_IMP_ID} ID of the impression just won; from imp.id attribute.
${AUCTION_SEAT_ID} ID of the bidder seat for whom the bid was made.
${AUCTION_AD_ID} ID of the ad markup the bidder wishes to serve; from bid.adid attribute.
${AUCTION_PRICE} Clearing price using the same currency and units as the bid.
${AUCTION_CURRENCY} The currency used in the bid (explicit or implied); for confirmation only.
${AUCTION_MBR} Market Bid Ratio defined as: clearance price / bid price.
${AUCTION_LOSS} Loss reason codes.
Value Description
0 Bid Won
1 Internal Error
2 Impression Opportunity Expired
3 Invalid Bid Response
4 Invalid Deal ID
5 Invalid Auction ID
6 Invalid (i.e., malformed) Advertiser Domain
7 Missing Markup
8 Missing Creative ID
9 Missing Bid Price
10 Missing Minimum Creative Approval Data
100 Bid was Below Auction Floor
101 Bid was Below Deal Floor
102 Lost to Higher Bid
103 Lost to a Bid for a PMP Deal
104 Buyer Seat Blocked
200 Creative Filtered - General; reason unknown.
201 Creative Filtered - Pending processing by Exchange (e.g., approval, transcoding, etc.)
202 Creative Filtered - Disapproved by Exchange
203 Creative Filtered - Size Not Allowed
204 Creative Filtered - Incorrect Creative Format
205 Creative Filtered - Advertiser Exclusions
206 Creative Filtered – App Bundle Exclusions
207 Creative Filtered - Not Secure
208 Creative Filtered - Language Exclusions
209 Creative Filtered - Category Exclusions
210 Creative Filtered - Creative Attribute Exclusions
211 Creative Filtered - Ad Type Exclusions
212 Creative Filtered - Animation Too Long
213 Creative Filtered - Not Allowed in PMP Deal

Request & response examples

Banner Request

{
  "id": "1234567890",
  "imp": [
    {
      "id": "1",
      "banner": {
        "w": 300,
        "h": 250,
        "pos": 1,
        "battr": [
          1,
          3
        ],
        "mimes": [
          "image/gif",
          "image/jpeg",
          "image/png"
        ],
        "api": [
          3
        ],
        "ext": {}
      },
      "bidfloor": 0.5,
      "bidfloorcur": "USD"
    }
  ],
  "site": {
    "id": "site-001",
    "name": "Example Site",
    "domain": "example.com",
    "cat": [
      "IAB1"
    ],
    "page": "http://example.com/page",
    "ref": "http://referrer.com",
    "publisher": {
      "id": "pub-001",
      "name": "Example Publisher"
    }
  },
  "device": {
    "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
    "ip": "192.168.1.1",
    "geo": {
      "country": "USA",
      "lat": 37.7749,
      "lon": -122.4194
    },
    "dnt": 0,
    "language": "en"
  },
  "user": {
    "id": "user-001",
    "buyeruid": "buyer-001",
    "yob": 1985,
    "gender": "M"
  },
  "at": 2,
  "tmax": 100,
  "cur": [
    "USD"
  ],
  "bcat": [
    "IAB25",
    "IAB26"
  ],
  "badv": [
    "blockedadvertiser.com"
  ],
  "regs": {
    "coppa": 0
  }
}

Banner Response

{
  "id": "1234567890",
  "seatbid": [
    {
      "bid": [
        {
          "id": "1",
          "impid": "1",
          "price": 1,
          "adid": "ad-001",
          "nurl": "http://adserver.com/win-notify?price=${AUCTION_PRICE}",
          "adm": "<a href='http://advertiser.com'><img src='http://adserver.com/creative1.png' width='300' height='250' /></a>",
          "adomain": [
            "advertiser.com"
          ],
          "cid": "campaign-001",
          "crid": "creative-001",
          "w": 300,
          "h": 250
        }
      ],
      "seat": "seat-001"
    }
  ],
  "cur": "USD"
}

Video Request

{
  "id": "1234567890",
  "imp": [
    {
      "id": "1",
      "video": {
        "mimes": [
          "video/mp4",
          "video/x-flv"
        ],
        "minduration": 5,
        "maxduration": 30,
        "protocols": [
          2,
          5
        ],
        "w": 640,
        "h": 360,
        "startdelay": 0,
        "linearity": 1,
        "skip": 1,
        "skipmin": 5,
        "skipafter": 10,
        "delivery": [
          2
        ],
        "pos": 1,
        "api": [
          2,
          5
        ],
        "ext": {}
      },
      "bidfloor": 1,
      "bidfloorcur": "USD"
    }
  ],
  "site": {
    "id": "site-001",
    "name": "Example Site",
    "domain": "example.com",
    "cat": [
      "IAB1"
    ],
    "page": "http://example.com/page",
    "ref": "http://referrer.com",
    "publisher": {
      "id": "pub-001",
      "name": "Example Publisher"
    }
  },
  "device": {
    "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
    "ip": "192.168.1.1",
    "geo": {
      "country": "USA",
      "lat": 37.7749,
      "lon": -122.4194
    },
    "dnt": 0,
    "language": "en"
  },
  "user": {
    "id": "user-001",
    "buyeruid": "buyer-001",
    "yob": 1985,
    "gender": "M"
  },
  "at": 2,
  "tmax": 100,
  "cur": [
    "USD"
  ],
  "bcat": [
    "IAB25",
    "IAB26"
  ],
  "badv": [
    "blockedadvertiser.com"
  ],
  "regs": {
    "coppa": 0
  }
}

Video Response

{
  "id": "1234567890",
  "seatbid": [
    {
      "bid": [
        {
          "id": "1",
          "impid": "1",
          "price": 3.5,
          "adid": "ad-002",
          "nurl": "http://adserver.com/win-notify?price=${AUCTION_PRICE}",
          "adm": "<VAST version=\"3.0\"><Ad id=\"12345\"><InLine><AdSystem>Example Ad Server</AdSystem><AdTitle>Example Video Ad</AdTitle><Creatives><Creative><Linear><Duration>00:00:30</Duration><MediaFiles><MediaFile delivery=\"progressive\" type=\"video/mp4\" bitrate=\"500\" width=\"640\" height=\"360\" scalable=\"true\" maintainAspectRatio=\"true\">http://adserver.com/video.mp4</MediaFile></MediaFiles></Linear></Creative></Creatives></InLine></Ad></VAST>",
          "adomain": [
            "advertiser.com"
          ],
          "cid": "campaign-002",
          "crid": "creative-002",
          "w": 640,
          "h": 360
        }
      ],
      "seat": "seat-002"
    }
  ],
  "cur": "USD"
}

Native Request

{
  "id": "0987654321",
  "imp": [
    {
      "id": "1",
      "native": {
        "request": {
          "ver": "1.2",
          "assets": [
            {
              "id": 1,
              "required": 1,
              "title": {
                "len": 100
              }
            },
            {
              "id": 2,
              "required": 1,
              "img": {
                "type": 3,
                "wmin": 1200,
                "hmin": 627
              }
            },
            {
              "id": 3,
              "required": 0,
              "data": {
                "type": 1,
                "len": 200
              }
            },
            {
              "id": 4,
              "required": 0,
              "data": {
                "type": 2,
                "len": 50
              }
            }
          ]
        },
        "ver": "1.2",
        "battr": [
          13,
          14
        ]
      },
      "bidfloor": 0.75,
      "bidfloorcur": "USD"
    }
  ],
  "app": {
    "id": "app-123",
    "name": "Example Native Ad App",
    "bundle": "com.example.nativeapp",
    "domain": "nativeapp.example.com",
    "storeurl": "https://play.google.com/store/apps/details?id=com.example.nativeapp",
    "cat": [
      "IAB1"
    ],
    "publisher": {
      "id": "pub-123",
      "name": "Native Publisher"
    }
  },
  "device": {
    "ua": "Mozilla/5.0 (Linux; Android 10; SM-G970F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.117 Mobile Safari/537.36",
    "geo": {
      "country": "USA",
      "lat": 37.7749,
      "lon": -122.4194
    },
    "ip": "198.51.100.0",
    "devicetype": 1,
    "make": "Samsung",
    "model": "Galaxy S10",
    "os": "Android",
    "osv": "10",
    "h": 2280,
    "w": 1080,
    "pxratio": 3,
    "language": "en"
  },
  "user": {
    "id": "user-54321",
    "buyeruid": "buyer-67890",
    "yob": 1990,
    "gender": "F"
  },
  "at": 2,
  "tmax": 300,
  "cur": [
    "USD"
  ],
  "bcat": [
    "IAB12",
    "IAB14"
  ],
  "badv": [
    "blockedadvertiser.com"
  ]
}

Native Response

{
  "id": "0987654321",
  "seatbid": [
    {
      "bid": [
        {
          "id": "1",
          "impid": "1",
          "price": 1,
          "adid": "ad-12345",
          "adm": {
            "native": {
              "ver": "1.2",
              "assets": [
                {
                  "id": 1,
                  "title": {
                    "text": "Amazing Product You Need!"
                  }
                },
                {
                  "id": 2,
                  "img": {
                    "url": "http://example.com/img/large-image.jpg",
                    "w": 1200,
                    "h": 627
                  }
                },
                {
                  "id": 3,
                  "data": {
                    "value": "This is the best product you will ever find."
                  }
                },
                {
                  "id": 4,
                  "data": {
                    "value": "Sponsored by ExampleBrand"
                  }
                }
              ],
              "link": {
                "url": "http://example.com/click"
              },
              "eventtrackers": [
                {
                  "event": 1,
                  "method": 1,
                  "url": "http://example.com/track"
                }
              ]
            }
          },
          "adomain": [
            "exampleadvertiser.com"
          ],
          "cid": "campaign-12345",
          "crid": "creative-12345"
        }
      ],
      "seat": "seat-123"
    }
  ],
  "cur": "USD"
}