Skip to content

Nimbus S2S Documentation

Marc Santiago edited this page Oct 19, 2021 · 42 revisions

Nimbus Publisher API Documentation

The Nimbus ad server is Open Real-Time Bidding (ORTB) version 2.5 compliant, however please review below as the spec has been optimized for communication performance around the Nimbus specific hybrid auctions.

Endpoint: https://[ask_solutions_engineer].adsbynimbus.com/rta/v1 Method: POST

Request Headers

The following headers are required with the request:

  • Content-Type: application/json
  • x-openrtb-version: 2.5

It is also suggested that the following headers are also sent along with the request

  • Content-Encoding: gzip

Note: Nimbus is http/2 compatible and it is also recommend to use http/2 if possible

Object: BidRequest

Atribute Type Description
imp object array; required Currently only an array of size 1 is supported, see section 3.2.4
app object; optional See ORTB 2.5 section 3.2.14
device object; required See ORTB 2.5 section 3.2.18
user object; recommended See ORTB 2.5 section 3.2.20
test integer; default 0 When set to one auctions are not billable and a Nimbus test creative will be served, where 0 = live mode, 1 = test mode
wseat string array; See ORTB section 3.2.1
bseat string array; See ORTB section 3.2.1
wlang string array; See ORTB section 3.2.1
bcat string array; See ORTB section 3.2.1
badv string array; See ORTB section 3.2.1
bapp string array; See ORTB section 3.2.1
source object; Source object is needed if using the OM SDK
regs object; recommended See ORTB 2.5 section 3.2.1
ext object; required Nimbus specific extension needed for authentication validation and session identifiers

Object: Ext (BidRequest extension object)

Atribute Type Description
api_key string; required Needed to validate the request to Nimbus, please ask your ad manager for this key
session_id string; required Needed for tracing and client side rate limiting, this id should be passed for each ad request, for the entire user session and be the same for the apps life cycle

Object: Regs

Atribute Type Description
coppa integer See ORTB 2.5 section 3.2.3
ext object; recommended See ORTB 2.5 section 3.2.3, to be GDPR compliant, the consent value is passed in this extension

Object: Ext (Regs extension object)

Atribute Type Description
gdpr integer; default 0 See section gdpr compliance documentation
us_privacy string See section ccpa compliance documentation)

Object: Imp

The impression object has been modified from the ORTB specification. Nimbus allows for both the Banner object and Video object to be present in the same Imp object. This allows for hybrid auctions to be run on the Nimbus ad server, where both static demand and video demand are part of the same auction for the same inventory. This removes the need to make two separate calls to Nimbus and unifies the competition. note: While both the banner object and video object are optional, at least 1 must be present in the request

Atribute Type Description
banner object; optional See ORTB 2.5 section 3.2.6
video object; optional See ORTB 2.5 section 3.2.7
instl integer; default 0 See ORTB 2.5 section 3.2.4 required if using Banner Adsizes 320x480 or 480x320
bidfloor float; default 1.00 This deviates from ORTB 2.5, this is the base auction floor or the minimum accepted bid value you'll allow for the auction. This is useful for demand that continue to use line items over header bidding or RTB
secure integer; default 1 See ORTB 2.5 section 3.2.4
ext object; required Used to pass in the optional APS and Facebook data as well as the required position data

Object: Ext (Imp extension object)

Atribute Type Description
position string; required Adds meta about the placement of the impression. It allows publishers to track performance of placements, naming nomenclature is left up to the publisher. Be mindful that this affects the ability to break out reports by placements on the Nimbus dashboard. This should not be an auto incremented id, instead it should be a static string that represents the actual placement of the ad
facebook_app_id string; optional Needed if integrated with facebook demand and to run them in the auction, this is equal your facebook app id
aps APS object array; optional Needed if integrated with amazon's APS demand
skadn skadn object; optional See IAB Spec for more details

Object: Banner

note: The height and width in the banner object is extremely important and it is not equal to the height and width of the device. Take special care as it effects the types of ads returned Acceptable ad sizes for Banner.h and Banner.w

Canonical Name Size (WxH)
Banner300x50 300x50
Banner320x50 320x50
Interstitial Portrait 320x480
Interstitial Landscape 480x320
HalfScreen 300x600
LetterBox 300x250
LeaderBoard 728x90

The Interstitial ad size type is special. If Interstitial Portrait or Interstitial Landscape landscape sizes are submitted in the Banner request, the Banner.Format array will be used to allow for additional ad sizes to fill the full screen placement. This is a great way to increase fill, by allowing additional demand for the same placement. If any other size from the above table is submitted Nimbus will ensure ONLY that ad size is returned in the response.

Atribute Type Description
bidfloor float; default 2.00 This deviates from ORTB 2.5. This floor for dictates the minimum bid value RTB demand sources are allowed to pass Nimbus for a static asset. The floor defaults to 2.00 if not set explicitly by the caller. Meaning that if you wish the floor to be 0.00, them 0.00 must be submitted
battr integer array; Blocked creative attributes. Refer to ORTB 2.5 List 5.3
format object array; recommended See ORTB 2.5 section 3.2.6, is an array of supported ad sizes for the placement and is only valid given the request for a an interstitial placement, see the example bid request for an example
w integer See ORTB 2.5 section 3.2.6, this is equal to a single supported ad size. For example for interstitial ads set to 320, rectangle banners set to 300, and for small banners set to 728
h integer See ORTB 2.5 section 3.2.6 this is equal to a single supported ad size. For example for interstitial ads set to 420, rectangle banners set to 250, and for small banners set to 90
api integer array See ORTB 2.5 section 3.2.6, if using the Nimbus Render SDK it is recommended that values 5 and 6 be sent as they enable MRAID, see list 5.6
pos integer; recommended See ORTB 2.5 section 3.2.6
vcm integer; See ORTB 2.5 section 3.2.6

Object: Video

Atribute Type Description
bidfloor float; default 3.00 This deviates from ORTB 2.5. This floor for dictates the minimum bid value RTB demand sources are allowed to pass Nimbus for a video asset. The floor defaults to 3.00 if not set explicitly by the caller. Meaning that if you wish the floor to be 0.00, them 0.00 must be submitted
companionad banner object array See ORTB 2.5 section 3.2.7
companiontype interger array See ORTB 2.5 section 3.2.7
battr integer array Blocked creative attributes. Refer to ORTB 2.5 List 5.3
mimes string array; required See ORTB 2.5 section 3.2.7, example [video/mp4]
minduration integer; recommended; defaults 0 See ORTB 2.5 section 3.2.7
maxduration integer; recommended; defaults 60 See ORTB 2.5 section 3.2.7
protocols integer array; recommended See ORTB 2.5 section section 5.8 If using the Nimbus Render SDK the suggested values are [2,3,5,6]
w integer See ORTB 2.5 section 3.2.7, this is equal to the devices width
h integer See ORTB 2.5 section 3.2.7, this is equal to the devices height
startdelay integer; default 0 See ORTB 2.5 section 3.2.7
placement integer; default 0 Placement type for the impression. Refer to ORTB List 5.9
linearity integer; default 0 Indicates if the impression must be linear, nonlinear, etc. Refer to ORTB List 5.7
playbackmethod integer array; recommended; default 2 See ORTB 2.5 section 5.10
skip integer; default 0 See ORTB 2.5 section 3.2.7
delivery integer array; Supported delivery methods (e.g., streaming, progressive). Refer to ORTB List 5.15
pos integer; recommended See ORTB 2.5 section 3.2.7
api integer array; List of supported API frameworks for this impression. Refer to ORTB List 5.6. If an API is not explicitly listed, it is assumed not to be supported
minbitrate integer; recommended; default 0 See ORTB 2.5 section 3.2.7
maxbitrate integer; recommended; default 20000 See ORTB 2.5 section 3.2.7
maxbitrate integer; recommended; default 20000 See ORTB 2.5 section 3.2.7

Object: Format

This is object normally is found with the imp[0].banner, however Nimbus requires that this object also be passed at the request level. bidrequest.format, this is to support SSPs and DSPs that use legacy (non RTB) integrations on Nimbus. This is equal the device's height and width

Atribute Type Description
w int; required See ORTB 2.5 section 3.2.10
h int; required See ORTB 2.5 section 3.2.10

Object: App

Information like the name, bundle, domain, and storeurl are constructed using the Nimbus databases. Therefore this is not information that is required to be sent. However, it is highly recommended to send all other metadata about your application for buyers

Atribute Type Description
name string; recommended See ORTB 2.5 section 3.2.14
bundle string; recommended See ORTB 2.5 section 3.2.14
domain string; recommended See ORTB 2.5 section 3.2.14
storeurl string; recommended See ORTB 2.5 section 3.2.14
cat string array; recommended See ORTB 2.5 section 3.2.14
sectioncat string array; See ORTB 2.5 section 3.2.14
pagecat string array; See ORTB 2.5 section 3.2.14
ver string; recommended See ORTB 2.5 section 3.2.14
privacypolicy int; recommended; default 0 See ORTB 2.5 section 3.2.14
paid int; recommended; default 0 See ORTB 2.5 section 3.2.14

Object: APS

The APS data structure is gotten from a proper invocation of the APS SDK. This information is passed to Nimbus so that it can include APS in an agnostic fair auction. Nimbus will return the APS markup in the bid response if APS wins the auction. Note the APS SDK does not send normalized data between video and static demand. The response is also different between app platforms. For Publishers using the Nimbus Request SDK this is handled for you. For Publishers making a server call to Nimbus, simply take the information your client sends you as is and pass it Nimbus. Nimbus will normalize the Data types to []string.

Atribute Type Description
amzn_b any type (string or string array); required Data from the Response from the APS SDK
amzn_h any type (string or string array); required Data from the Response from the APS SDK
amzn_vid any type (string or string array); required Data from the Response from the APS SDK
amznp any type (string or string array); required Data from the Response from the APS SDK
amznrdr any type (string or string array); required Data from the Response from the APS SDK
amznslots any type (string or string array); required Data from the Response from the APS SDK
dc any type (string or string array); required Data from the Response from the APS SDK

Object: Device

Atribute Type Description
ua string; required See ORTB 2.5 section 3.2.18, this must be a valid webview based user-agent, not a constructed one otherwise traffic will be flagged as fraud
geo object; recommended See ORTB 2.5 section 3.2.18
dnt int; recommended See ORTB 2.5 section 3.2.18
lmt int; recommended See ORTB 2.5 section 3.2.18
ip string; required See ORTB 2.5 section 3.2.18, this must be the ip on the handheld device not a server ip, if is missing the X-Forwarded-For header will be looked for the ip. If the body and header are missing the IP the request will fail
devicetype integer; required See ORTB 2.5 section 3.2.18
make string; required See ORTB 2.5 section 3.2.18, if os is ios the make should be apple; if the os is android the make should be android
model string; required See ORTB 2.5 section 3.2.18, The model of the device e.g. iPhone 11 or Pixel 3
os string; required See ORTB 2.5 section 3.2.18, this is a Nimbus + DSP requirement. os is either android or ios
osv string; recommended See ORTB 2.5 section 3.2.18, if this field is missing certain DSP buyers will not buy your inventory
w int; See ORTB 2.5 section 3.2.18
h int; See ORTB 2.5 section 3.2.18
connectiontype integer; See ORTB 2.5 section 5.22
ifa string; required See ORTB 2.5 section 3.2.18, this is also known as the advertising id

Object: Geo

If the Geo object is missing from the Device object, the geolocation will be determined using the ip of the device and a Geo object will be constructed from that

Atribute Type Description
lat float; required See ORTB 2.5 section 3.2.19
lon float; required See ORTB 2.5 section 3.2.19
type int; required See ORTB 2.5 section 3.2.19
ipservice int; recommended See ORTB 2.5 section 3.2.19
country string; required See ORTB 2.5 section 3.2.19
city string; recommended See ORTB 2.5 section 3.2.19
metro string; recommended See ORTB 2.5 section 3.2.19
city string; recommended See ORTB 2.5 section 3.2.19

Object: User

If the Geo object is missing from the Device object, the geolocation will be determined using the ip of the device and a Geo object will be constructed from that

Atribute Type Description
age int; recommended Nimbus specific it provides an alternative to yob
buyeruid string; recommended See ORTB 2.5 section 3.2.20, it is used to incorporate facebook into the auction and is equal to the Facebook bidder token given by the Facebook SDK
yob int; recommended See ORTB 2.5 section 3.2.20
gender string; recommended See ORTB 2.5 section 3.2.20
keywords string; recommended See ORTB 2.5 section 3.2.20

Object: Ext (User extension object)

Atribute Type Description
consent string; optional Nimbus specific, this is the IAB consent string, this string can be created by Nimbus under certain conditions, for more details ask your ad manager
did_consent integer; default 0 Nimbus specific, the value can either be 0 or 1. It indicates that a user consented to GDPR/Your apps privacy and data policies for advertising

Object: Source (User extension object)

Atribute Type Description
ext object; required Needed to pass OM SDK information

Object: Ext (Source extension object)

Atribute Type Description
omidpn string; required identifier of the OM SDK integration, this is the same as the "name" parameter of the OMID Partner object
Omidpv string; optional version of the OM SDK version

Static Bid Request Body Example

{
  "app": {
    "bundle": "foo_bundle",
    "cat": [
      "IAB1"
    ],
    "domain": "https://www.foo_app.com",
    "name": "foo_app",
    "paid": 0,
    "privacypolicy": 1,
    "publisher": {
      "cat": [
        "IAB1",
        "IAB17",
        "IAB12",
        "IAB14",
        "IAB9",
        "IAB20",
        "IAB16",
        "IAB18"
      ],
      "domain": "https://foo_app.com",
      "name": "foo_app"
    },
    "storeurl": "https://apps.apple.com/app/foo_bundle",
    "ver": "0.0.1"
  },
  "badv": [
    "foobar.com"
  ],
  "bapp": [
    "com.foo.bar"
  ],
  "bcat": [
    "IAB_FOOBAR"
  ],
  "device": {
    "carrier": "O2",
    "connectiontype": 6,
    "devicetype": 1,
    "dnt": 1,
    "geo": {
      "country": "GBR",
      "ipservice": 3,
      "lat": 51.4964,
      "lon": -0.1224,
      "metro": "0",
      "type": 2
    },
    "ifa": "cf3af75c-a938-4326-8697-d1a629cda086",
    "ip": "1.0.0.0",
    "language": "en",
    "lmt": 1,
    "make": "Apple",
    "model": "iPhone13,4",
    "os": "ios",
    "osv": "14.7.1",
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
  },
  "ext": {
    "session_id": "4a74616f-7f0e-4b03-8c4a-2035f12f6178"
  },
  "imp": [
    {
      "banner": {
        "api": [
          3,
          5
        ],
        "battr": [
          0
        ],
        "bidfloor": 3,
        "format": [
          {
            "h": 480,
            "w": 320
          },
          {
            "h": 250,
            "w": 300
          },
          {
            "h": 1920,
            "w": 1080
          }
        ],
        "h": 480,
        "pos": 7,
        "w": 320
      },
      "bidfloor": 3,
      "clickbrowser": 0,
      "displaymanagerver": "1.10.3",
      "ext": {
        "position": "5",
        "skadn": {
          "skadnetids": [
            "foobar.skadnetwork"
          ],
          "sourceapp": "foo_app_bundle",
          "version": "2.0"
        }
      },
      "instl": 1,
      "secure": 1
    }
  ],
  "regs": {
    "coppa": 0,
    "ext": {
      "gdpr": 1,
      "us_privacy": "1---"
    }
  },
  "user": {
    "age": 27,
    "gender": "female",
    "yob": 1993
  }
}

Video Bid Request Body Example

{
  "app": {
    "bundle": "foo_bundle",
    "cat": [
      "IAB1"
    ],
    "domain": "https://www.foo_app.com",
    "name": "foo_app",
    "paid": 0,
    "privacypolicy": 1,
    "publisher": {
      "cat": [
        "IAB1",
        "IAB17",
        "IAB12",
        "IAB14",
        "IAB9",
        "IAB20",
        "IAB16",
        "IAB18"
      ],
      "domain": "https://foo_app.com",
      "name": "foo_app"
    },
    "storeurl": "https://apps.apple.com/app/foo_bundle",
    "ver": "0.0.1"
  },
  "badv": [
    "foobar.com"
  ],
  "bapp": [
    "com.foo.bar"
  ],
  "bcat": [
    "IAB_FOOBAR"
  ],
  "device": {
    "carrier": "O2",
    "connectiontype": 6,
    "devicetype": 1,
    "dnt": 1,
    "geo": {
      "country": "GBR",
      "ipservice": 3,
      "lat": 51.4964,
      "lon": -0.1224,
      "metro": "0",
      "type": 2
    },
    "ifa": "cf3af75c-a938-4326-8697-d1a629cda086",
    "ip": "1.0.0.0",
    "language": "en",
    "lmt": 1,
    "make": "Apple",
    "model": "iPhone13,4",
    "os": "ios",
    "osv": "14.7.1",
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
  },
  "ext": {
    "session_id": "4a74616f-7f0e-4b03-8c4a-2035f12f6178"
  },
  "imp": [
    {
      "bidfloor": 3,
      "clickbrowser": 0,
      "displaymanagerver": "1.10.3",
      "ext": {
        "position": "5",
        "skadn": {
          "skadnetids": [
            "foobar.skadnetwork"
          ],
          "sourceapp": "foo_app_bundle",
          "version": "2.0"
        }
      },
      "instl": 1,
      "secure": 1,
      "video": {
        "bidfloor": 3,
        "companionad": [
          {
            "h": 50,
            "w": 320
          }
        ],
        "h": 926,
        "linearity": 1,
        "maxbitrate": 20000,
        "maxduration": 60,
        "mimes": [
          "application/x-mpegurl",
          "video/3gpp",
          "video/mp4"
        ],
        "minbitrate": 1,
        "minduration": 0,
        "playbackmethod": [
          2
        ],
        "protocols": [
          3,
          2,
          6,
          5
        ],
        "skip": 0,
        "startdelay": 0,
        "w": 428
      }
    }
  ],
  "regs": {
    "coppa": 0,
    "ext": {
      "gdpr": 1,
      "us_privacy": "1---"
    }
  },
  "user": {
    "age": 27,
    "gender": "female",
    "yob": 1993
  }
}

Dual Static/Video Auction Bid Request Body Example

This is a Nimbus specific example. ORTB does not allow for more than one creative object to be present in the Imp object. However, this would mean as a publisher that you would have to construct two separate request, which would yield two very different auction. To static allow inventory and video inventory to compete in a fair auction, we allow for one than one creative object to be submitted for a single impression. In this case we currently allow for both the Banner object and Video Object to coexist in the Imp Object

{
  "app": {
    "bundle": "foo_bundle",
    "cat": [
      "IAB1"
    ],
    "domain": "https://www.foo_app.com",
    "name": "foo_app",
    "paid": 0,
    "privacypolicy": 1,
    "publisher": {
      "cat": [
        "IAB1",
        "IAB17",
        "IAB12",
        "IAB14",
        "IAB9",
        "IAB20",
        "IAB16",
        "IAB18"
      ],
      "domain": "https://foo_app.com",
      "name": "foo_app"
    },
    "storeurl": "https://apps.apple.com/app/foo_bundle",
    "ver": "0.0.1"
  },
  "badv": [
    "foobar.com"
  ],
  "bapp": [
    "com.foo.bar"
  ],
  "bcat": [
    "IAB_FOOBAR"
  ],
  "device": {
    "carrier": "O2",
    "connectiontype": 6,
    "devicetype": 1,
    "dnt": 1,
    "geo": {
      "country": "GBR",
      "ipservice": 3,
      "lat": 51.4964,
      "lon": -0.1224,
      "metro": "0",
      "type": 2
    },
    "ifa": "cf3af75c-a938-4326-8697-d1a629cda086",
    "ip": "1.0.0.0",
    "language": "en",
    "lmt": 1,
    "make": "Apple",
    "model": "iPhone13,4",
    "os": "ios",
    "osv": "14.7.1",
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
  },
  "ext": {
    "session_id": "4a74616f-7f0e-4b03-8c4a-2035f12f6178"
  },
  "imp": [
    {
      "banner": {
        "api": [
          3,
          5
        ],
        "battr": [
          0
        ],
        "bidfloor": 2,
        "format": [
          {
            "h": 480,
            "w": 320
          },
          {
            "h": 250,
            "w": 300
          },
          {
            "h": 1920,
            "w": 1080
          }
        ],
        "h": 480,
        "pos": 7,
        "w": 320
      },
      "bidfloor": 3,
      "clickbrowser": 0,
      "displaymanagerver": "1.10.3",
      "ext": {
        "position": "5",
        "skadn": {
          "skadnetids": [
            "foobar.skadnetwork"
          ],
          "sourceapp": "foo_app_bundle",
          "version": "2.0"
        }
      },
      "instl": 1,
      "secure": 1,
      "video": {
        "bidfloor": 3,
        "companionad": [
          {
            "h": 50,
            "w": 320
          }
        ],
        "h": 926,
        "linearity": 1,
        "maxbitrate": 20000,
        "maxduration": 60,
        "mimes": [
          "application/x-mpegurl",
          "video/3gpp",
          "video/mp4"
        ],
        "minbitrate": 1,
        "minduration": 0,
        "playbackmethod": [
          2
        ],
        "protocols": [
          3,
          2,
          6,
          5
        ],
        "skip": 0,
        "startdelay": 0,
        "w": 428
      }
    }
  ],
  "regs": {
    "coppa": 0,
    "ext": {
      "gdpr": 1,
      "us_privacy": "1---"
    }
  },
  "user": {
    "age": 27,
    "gender": "female",
    "yob": 1993
  }
}

Bid Response Object

Atribute Type Description
type string; required allows a publisher to quickly know if this is VAST video, HTML banner, or Native
auction_id string; required is a Nimbus trace id
adomain string array; optional ads reported buyer domains
bid_in_cents int; required the winning bid value in cents to avoid float math loss
bid_raw float; required the winning bid value unrounded
content_type string; optional meta data about the ad markup
crid string; optional creative id reported by the buyer
height int; optional height meta data about the asset
width int; optional width meta data about the asset
is_interstitial int; either 0 or 1 and determines if the ad size is 320x480 (interstitial)
is_mraid int; either 0 or 1 and indicates is mraid.js was found in the HTML markup
markup string; required markup containing the asset to render
network string; required winning demand source
trackers Trackers (object); required provides additional trackers that must be handled by the client, used for Native display such as Facebook
placement_id string; required provides additional information about the network's winning line item. Used with legacy demand sources
ext ext object; optional Additional metadata

Bid Trackers Object

Atribute Type Description
impression_trackers string array; optional provides a list of trackers that the Nimbus Render SDK has to fire as a callback event to rendering the ad successfully, manually firing the tracker will fail
click_trackers string array; required provides a list of click trackers that the Nimbus Render SDK has to fire as a response to a user click event, manually firing the tracker will fail

Object: Ext (Bid Response extension object)

Atribute Type Description
skadn skadn object; optional See IAB Spec for more details

Basic Publisher Example Response

This response structure deviates from the ORTB response structure and is more publisher friendly. Because of the Nature of the dual auction, auction return types are needed so that the client knows how to handle rendering

{
  "adomain": [
    "foo.com",
    "bar.com"
  ],
  "auction_id": "f6bf21ae-a923-4d7f-9944-af220ff789f6",
  "bid_in_cents": 100,
  "bid_raw": 1.00,
  "content_type": "text/html; charset=utf-8",
  "crid": "foobar",
  "height": 480,
  "is_interstitial": 1,
  "is_mraid": 1,
  "markup": "<HTML>...</HTML>",
  "network": "test_demand",
  "placement_id": "foo_placement",
  "trackers": {
    "click_trackers": [
      "https://dev.adsbynimbus.com/impression_tracker/bHEyNl8xMHZGU2RUTX6nKs1xDYGt0LspHN22KlZAD2DbeF002MMW2lY2gFkdW8tB91X-2MjKc7valkCGwaYlnJRaP_h6ngrJAI2gDWLJAhhw6bgYrp_-HGGwMvt2wW6eqSXRu4flNA-mZKpldTv6O7Q7QHVh6qwLzXSS5U2Ie0EVRTVixxKY77q8wGA1fRMw_0vnUvpW3Wfm8oJb4bDK4RANmrPKB0t1aZgQ0zxnCsirFb3FwnxM-CMLrXpCOXBOBU9EptcNz2D6C2sMN7EShZt1J-6KP8YLDAJze2HO9lnonh-qc_ZZ3AoHRfz9XnVbWNTwg71uUXYqQ6EsJnPiGZqm7_8JxZCRy8uVh_H7KhpnRu-icu6AJan3CdObcLX453VkGtFIIB8egQ0JJN5Lxxho1jiovynn6xbwqY_BOSMg4pnq9jpGJ7b4zTGnVfLynGXBl1ROTZdvASkBPvaB-lrJNBOPUNLeGUrhLxvv5IHFKXl19Voah7RLn8csMiDl6NyqogjWZM8v4oJWv-jKJJ2a0ZNmE2QtATcm0u5SlnkUpaK6RuGimoe_6SwrNLAJC87NQQGQp5PYQK94Pa4Dq5dVf54gFnaVsuVzak3n9YWrdBFvtaGY5W_t8wqc_f8-E1QvPI1zUTEgh-PDt-MzhbOKN2hPgbMw1Lj8iygd5RLEbtZGHqJ0V-dR467mnAE1CFXuvyrKbB3mxFTgp1a5jHl4-dqilu2XASwqi1BPPadkgeBm_IWCBIGpq3WTZdR7ZDosqqYQpg7WJicWCiBCJR8_F5nToqCLETCqLJlTA0ygz8t7yW3m3fIz5qzhC3GLeCvtqwN_9tW4aVIY1eRUSBb96d8twt9bdcT1x_thMiN3-ZWxSPuUkLqEygcrAZiBEby4Xq9nvvfsVRcTE4bpLVNAaKr35EfQIGVcJIYGyg0I4nC1Wk4VLd2bypAiWsjzqvhPVFsMnIGNMcYIIQqF0-oPd2p3Fq8S8kSY67OvoBlq3dxIV-Em8-QdPaw_gIPeNVR-S5t6SPgFW8L4xuQyGgGMHiRu1PKu1xVEJxhUcFMEE4Sd9SUAWiriKwFFm9d4JH9jQKiMEfxaGhG1t3w1Ipxpp-W_yTkrW7Jrt8qilSruf7fD8_IJ-vTkLhP83-xafFT_87lIPHxU9uy16KslJBEKROF7jRI0LRuIuck6qiNdb96R0C5BUKRPvauoGiXxFbiY15yB9MqSXBHPRK6_8NrPAWYsHpZQhNwOxVDjEpfbX0ghsQwczGTxEcjezVun0viICD4sYWq9vG_25qWw0GuhQKrSEtPCSUFEnTykP2fOwYx8QejRKZ2q-NuYHWUF53e_prcVg5vq3"
    ],
    "impression_trackers": [
      "https://dev.adsbynimbus.com/impression_tracker/OTVBZ1Fxdy1LclR5PYbemr27sca0vxLUcB4qpILD6LYcBniyWMPDXNCGubAZHxF4j3uNAzYyvU39vgdfYT1KRIyVsm5se-qR15JoJCvEkfFDIl11w7q-0gxAxuAivR8C25v3lJJoyBnbCeA5D0eZBsX36yk4ajHA5D-X9yEeYN6BTqHC-CF571SccCFUAwLs1YVT4Qadgl_ZQtiwA_haP8wyd9U6M-QFULPxnNb824_l-uWzKn5yLpKvliMP_15nL7RYdZMFh8dfzSBDQ1rQ5lX5gQkaDDR3ZZ-cGAg-Sq-z_IBLz-j6-pxXBSvQehL7xKC16dgG5Lzr8mLP0Gualns49T56240OSmikICmNNBpadV_9UtCwmDpcuzCbjS-ANNlr6jHrNzfqmaxHqIAMZ1gr97U3lXDlHqEwDUi9YTsnDpTkmlYarcsA_HGgf22Wm6QhIsh9nGjQCbDJFFIg4BKzGqFrGBDivBJzd0V4nl6wmW_jw_WWF93pnYr4zo_173FWVt8y68dstAxF6NR-2gLbmtl5o7LMUPne8zbkC6fR9XsEeIvmFvcU8i9xdj-K4ly7CT4DVHG_N-IzYYx2-GKLa5bPqISc8OLI7FMPegoMz25bZer3i3UDFs6R5unSHAAnT68iuNmJYyue86j7qmX9TiCwHG_AQkcNQugv5BnJ1vAkvVGwWQZl0AE9cPPJ5hxUDMPMCpXphRUM6gqvDYP8Tr5qJlbs6vJZPymMrIRFHGrqCjkXLilyVLlTSIkp4MF0KykxFcPhRaNUeWkW3jLveUbyn6YlfBGWKEEoPOC0-b4LR-6_7rnM2TWtvgcqTIdPBWb_T3vKJYAZ0VkD-7j4M8KT2o4rU2-oxa3whlFVK6hYuoQj74Ky4dw2WZfrq0yHKgTnaUacyUsELs9ZNiVcGN7QmF4QFv6HxXTkJUVStiDEvLoTBlHCZA_pdnnc0Q0fjY7euhByh-irBA_-EWo4bwsLgFT6PNEhJI28inTGlAeuiW6XBYcj-WSdDLJ-J_dZRY2mzuTvb32c-tZCEsMMXQM-HF-wVxI_KeC8wZrKvMMjqNmVxKEea6-07y-sTna4e4wCwSnTkVy0vCXrFdqcpy7Sj5omiZT4rRjEpnyZ6bOpecuL4L3zIqghDNxuFUUGJI7yn57VkLihUFHVPO0V9U0nD6noyAzG2CDOTrcYQJvXJsSOJibUXjGk1AfzNFTWth3nzk9SKvd0j7DLoky6FL1TThcKMch30r8epx6qlfzPuv54qeSUoxL8EJZsTJzwsvpxNXEzcphCil7MX6TQJq3WjMcZOoSKOw-Iim5gxXl8MmlguHuL0VRVIH3dOv3Ne"
    ]
  },
  "type": "static",
  "width": 320
}

Basic Publisher No Bid Example Response

If Nimbus could not return an ad, you should expect a status code of 404 with a JSON body that looks like this

{
    "id": "d6030ff8-5bd4-4f5d-b320-81bbd1110e0b",
    "status_code": 404,
    "nbr": 11,
    "message": "No Bid"
}

Special Notes

Regarding underscores in property names: The OpenRTB spec itself is occasionally inconsistent when it comes to underscores. Nearly all properties in the spec are lowercase, no underscored. However, there’s an Anti-patterns section in the spec that references a private_auction flag containing an underscore. The api_key, facebook_app_id, and session_id properties in our docs are both properties contained within Extension objects in the spec. As such, we include underscores in those properties as an anti-pattern to enable the reader to quickly distinguish custom fields from RTB specified fields. We’ve seen some demand partners take this approach as well and we favored it ourselves.

Clone this wiki locally