RTB Ad Request API Spec

This page aims to get you (the Publisher) integrated onto our RTB Ad Request API so you can request ads using RTB Bid Requests.

What we offer!


We offer our publishers an RTB 2.5 Ad Request API so that integrating with Mobfox is a snap.

This way lots of information can be transmitted to Mobfox in order to find you the best fitting and paying ad.

What is RTB?


RTB stands for Real Time Bidding and has been initiated by the IAB in 2012.
The IAB has a webpage representing this project: https://www.iab.com/guidelines/real-time-bidding-rtb-project/

The IAB is the Interactive Advertising Bureau and consists of members (companies) who join forces to define worldwide advertising standards for everyone to use.
This way the IAB enables us to do business easier and more transparent.

Since 2012 RTB has been adopted by many players in the industry to the point that today it is ubiquitous.

For this reason we are offering you (the supply side / publisher) an RTB endpoint so it's easier for you to integrate with Mobfox.

What do you need to get integrated?


When integrating with our POST API you have the ability to use the OpenRTB protocol, which became a standard nowadays by being implemented widely in the programmatic advertising industry.

  1. You need to send HTTP POST requests with a JSON ad request body
    1. The OpenRTB fields we support in the Bid Request and example Bid Requests can be found in this documentation below 👇
  2. You should be able to interpret HTTP status codes for the response
  3. You should be able to read the JSON response using a JSON parser in the programming language you are using
    1. The OpenRTB fields we support in the Bid Response and example Bid Responses can be found in this documentation below 👇
  4. You should be aware of the limitations Mobfox has on the OpenRTB implementation
    1. Please see below👇 the full list of limitations
  5. You should already have a Mobfox account with an inventory set up
    1. You should use the inventory hash as part of the request URL, which is described below 👇


How should an RTB Bid Request look like?


In this section you will be provided with an example for an RTB ad request. While it's a good idea to begin with the required parameters, please see below why it's also important to go the extra mile. 

Improve you traffic!

We recommend to implement all supported objects and attributes!
Providing more information gives your ad request a better chance to be among the targeted ones since quality traffic is valued more by the demand side (higher bid prices).

Compression

We support gzip-compression

  • We accept compressed RTB payload when the request contains the header "Content-Encoding: gzip"
  • We return a compressed response when the header "Accept-Encoding: gzip" is set in the request

HTTP request headers

HTTP Headers
KeyValueRequired?
Content-Typeapplication/jsonyes
x-openrtb-version2.5yes

Send your RTB Bid Request to this URL

POST Request Endpoint URL
http://api-ad-rtb.mobfox.com/rtb/[REPLACE_WITH_YOUR_INVENTORY_HASH]

Example of RTB Bid Requests

Bid Request for a Banner Ad - Example
{
  "id": "22222222222222222",
  "tmax": 1000,
  "bcat": ["IAB24", "IAB25", "IAB26"],
  "badv": ["test.com"],
  "imp": [
    {
      "banner": {
        "api": [3, 5],
        "battr": [1, 2, 3, 17],
        "topframe": 1,
        "h": 50,
        "w": 320
      },
      "bidfloor": 0.10,
      "bidfloorcur": "USD",
      "id": "1111111111",
      "instl": 0,
      "secure": 0
    }
  ],
  "app": {
    "bundle": "com.nianticlabs.pokemongo",
    "cat": ["IAB1", "IAB3"],
    "id": "234218",
    "name": "Test Banner 320X50 - 234218",
    "domain": "my.domain.com",
    "storeurl": "https://itunes.apple.com/us/app/timehop-memories-then-now/id569077959?mt=8"
  },
  "user": {
    "yob": "1794",
    "gender": "F",
    "keywords": "baseball,cars,books",
    "ext": {
      "consent": "0"
    }
  },
  "regs": {
    "ext": {
      "gdpr": 0
    }
  },
  "device": {
  	"ifa": "00000000-0000-0000-0000-000000000000",
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4",
    "ip": "212.232.28.95",
    "dpidsha1": "B602D594AFD2B0B327E07A06F36CA6A7E42546D0",
    "dpidmd5": "9F89C84A559F573636A47FF8DAED0D33",
    "dnt": 0,
    "lmt": 0,
    "js": 1,
    "geo": {
    	"lat": 28.2000,
    	"lon": 26.3667
    }
  }
}
Bid Request for a Video Ad
{
  "id": "22222222222222222",
  "tmax": 1000,
  "bcat": ["IAB24", "IAB25", "IAB26"],
  "badv": ["test.com"],
  "imp": [
    {
      "video": {
        "w": 640,
        "h": 480,
        "api": [3, 5],
        "battr": [1, 2, 3, 17],
        "startdelay" : 0,
        "minduration" : 5,
        "maxduration" : 60,
        "mimes": [
          "video/x-flv",
          "video/mp4",
          "application/x-shockwave-flash",
          "application/javascript"
        ],
        "linearity": 1,
        "boxingallowed": 1,
        "playbackmethod": [ 1, 3 ]
      },
      "bidfloor": 0.10,
      "bidfloorcur": "USD",
      "id": "1111111111",
      "instl": 0,
      "secure": 0
    }
  ],
  "app": {
    "bundle": "com.nianticlabs.pokemongo",
    "cat": ["IAB1", "IAB3"],
    "id": "234218",
    "name": "Test Video",
    "domain": "my.domain.com",
    "storeurl": "https://itunes.apple.com/us/app/timehop-memories-then-now/id569077959?mt=8"
  },
  "user": {
    "yob": "1794",
    "gender": "F",
    "keywords": "baseball,cars,books",
    "ext": {
      "consent": "0"
    }
  },
  "regs": {
    "ext": {
      "gdpr": 0
    }
  },
  "device": {
    "ifa": "00000000-0000-0000-0000-000000000000",
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4",
    "ip": "212.232.28.95",
    "dpidsha1": "B602D594AFD2B0B327E07A06F36CA6A7E42546D0",
    "dpidmd5": "9F89C84A559F573636A47FF8DAED0D33",
    "dnt": 0,
    "lmt": 0,
    "js": 1,
    "geo": {
        "lat": 28.2000,
        "lon": 26.3667
    }
  }
}
Bid Request for a Native Ad (version 1.1)
{
  "id": "22222222222222222",
  "tmax": 1000,
  "bcat": ["IAB24", "IAB25", "IAB26"],
  "badv": ["test.com"],
  "imp": [
    {
      "native": {
        "request": "{\"ver\":\"1.1\",\"context\":2,\"contextsubtype\":20,\"plcmttype\":1,\"plcmtcnt\":1,\"seq\":0,\"assets\":[{\"id\":123,\"required\":1,\"title\":{\"len\":140}},{\"id\":128,\"img\":{\"hmin\":627,\"type\":3,\"wmin\":836},\"required\":0},{\"id\":124,\"img\":{\"hmin\":50,\"type\":1,\"wmin\":50},\"required\":1},{\"data\":{\"len\":25,\"type\":1},\"id\":126,\"required\":1},{\"data\":{\"len\":140,\"type\":2},\"id\":127,\"required\":1}]}",
        "ver": "1.2",
        "api": [3, 5],
        "battr": [1, 2, 3, 17]
      },
      "bidfloor": 0.10,
      "bidfloorcur": "USD",
      "id": "1111111111",
      "instl": 0,
      "secure": 0
    }
  ],
  "app": {
    "bundle": "com.nianticlabs.pokemongo",
    "cat": ["IAB1", "IAB3"],
    "id": "234218",
    "name": "Test Banner 320X50 - 234218",
    "domain": "my.domain.com",
    "storeurl": "https://itunes.apple.com/us/app/timehop-memories-then-now/id569077959?mt=8"
  },
  "user": {
    "yob": "1984",
    "gender": "F",
    "keywords": "baseball,cars,books",
    "ext": {
      "consent": "0"
    }
  },
  "regs": {
    "ext": {
      "gdpr": 0
    }
  },
  "device": {
  	"ifa": "00000000-0000-0000-0000-000000000000",
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4",
    "ip": "212.232.28.95",
    "dpidsha1": "B602D594AFD2B0B327E07A06F36CA6A7E42546D0",
    "dpidmd5": "9F89C84A559F573636A47FF8DAED0D33",
    "dnt": 0,
    "lmt": 0,
    "js": 1,
    "geo": {
    	"lat": 28.2000,
    	"lon": 26.3667
    }
  }
}

Which Bid Request parameters do we support?



Object/ParameterTypeDescriptionDefault ValueRequired?

BidRequest

object
-yes
idstringUsed for the response "id". Enables the requester to match his request to the response.-yes
tmaxintegerMaximum 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 (any other value communicated outside of the RTB Bid Request).
Allowed values should be between 100 - 1000ms (edges included).
300no
bcatstring arrayBlock list of IAB categories. Mobfox always adds the following default blocked categories: "IAB24", "IAB25", "IAB26".-no
badvstring array

Block list of advertisers by their domains (e.g., “ford.com”).

-no

Source

object
-no
source.fdintegerEntity responsible for the final impression sale decision, where 0 = requester, 1 = upstream source.-no

Imp

object
-yes
imp.idstringUsed for the response "seatbid[0].bid[0].impid". Enables the requester to match the imp object to the bid on response. -yes
imp.bidfloorfloatMinimum bid for this impression expressed in CPM.0.10no
imp.bannerobjectA Banner object (described below) required if this impression is offered as a banner ad.-

no

imp.videoobjectA Video object (described below) required if this impression is offered as a video ad.-no
imp.instlinteger

1 = the ad is interstitial or full screen,
0 = not interstitial

ATTENTION: Mobfox does not support "imp.banner.w" / "imp.banner.h" smaller than 250x300 / 300x250 to be interpreted as "imp.instl": 1. In those cases Mobfox will treat the bid request as "imp.instl": 0.

0no
imp.bidfloorcurstring

The currency in which the impression is paid. Only "USD" is supported.

"USD"no
imp.secureintegerFlag 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 will be assumed.0no

Imp.Banner

object
-no
imp.banner.wintegerWidth (pixels) of the adspace to be filled with an ad.-yes 
imp.banner.hintegerHeight (pixels) of the adspace to be filled with an ad.-yes
imp.banner.formatobject array

Array of format objects representing the banner sizes permitted.

ATTENTION:

  1. Mobfox is using the format objects only if imp.banner.w and imp.banner.h are not specified.
  2. When getting only the imp.banner.format array, in some cases we have to map it to previous version of RTB (2.4 or lower) when forwarding the traffic to our demand sources. In this case, Mobfox will map only the first format object in the array that has width and height specified to the imp.banner.w and imp.banner.h fields in RTB 2.4 or lower. Having said this, to achieve the best performance possible, we advice for placing the most common ad size in the first format object in the array.
-

yes

only when
the pair [imp.banner.w, imp.banner.h] is missing

Mobfox requires the presence of either the pair [imp.banner.w, imp.banner.h] or the imp.banner.format array with at least one format object in it.

ATTENTION: If all three of the above fields are sent then the pair [imp.banner.w, imp.banner.h] takes precedence over the imp.banner.format array.

imp.banner.wminintegerMinimum width in device independent pixels (DIPS).-no
imp.banner.wmaxintegerMaximum width in device independent pixels (DIPS).-no
imp.banner.hminintegerMinimum height in device independent pixels (DIPS).-no
imp.banner.hmaxintegerMaximum height in device independent pixels (DIPS).-no

The "size" params above are used to determine if the adspace is strict.

When the "max" and "min" parameters are set, the adspace is NOT strict. 
To communicate a strict ad space size please send only the pair [imp.banner.w, imp.banner.h].

imp.banner.battrinteger array

Blocked creative attributes. Refer to list 5.3 OpenRTB documentation.

[8,10]no
imp.banner.topframeintegerFlag to indicate if the banner is in the top frame as opposed to an iframe, where 0 = no, 1 = yes.0no
imp.banner.apiinteger array

List of supported API frameworks for this impression. Refer to section 5.6 in the OpenRTB documentation.

-no

Imp.Video

object
-no
imp.video.wintegerWidth of the video player in device independent pixels (DIPS).-yes
imp.video.hintegerHeight of the video player in device independent pixels (DIPS).-yes
imp.video.mimesstring arrayContent MIME types supported (e.g., “video/x-ms-wmv”, “video/mp4”).-yes
imp.video.mindurationintegerMinimum video ad duration in seconds.0no
imp.video.maxdurationintegerMaximum video ad duration in seconds.999no
imp.video.protocolsinteger array

Array of supported video protocols. Refer to List 5.8 in the OpenRTB documentation.

[1,2, 4, 5] if imp.video.protocol is also missingno
imp.video.protocol

integer array

Supported video protocols. Refer to List 5.8 in the OpenRTB documentation.[1,2, 4, 5] if imp.video.protocols is also missingno
imp.video.startdelayintegerIndicates the start delay in seconds for pre-roll, mid-roll, or post-roll ad placements. Refer to List 5.12 in the OpenRTB documentation.-no
imp.video.placementinteger

Placement type for the impression. Refer to List 5.9 in the OpenRTB documentation.

-no
imp.video.linearityinteger

Indicates if the impression must be linear, nonlinear, etc. If none specified, assume all are allowed. Refer to List 5.7 in the OpenRTB documentation.

-no
imp.video.skipinteger

Indicates if the player will allow the video to be skipped, where 0 = no, 1 = yes.

-no
imp.video.skipmininteger

Videos of total duration greater than this number of seconds can be skippable.

-no
imp.video.skipafterinteger

Number of seconds a video must play before skipping is enabled.

-no
imp.video.sequenceinteger

If multiple ad impressions are offered in the same bid request, the sequence number will allow for the coordinated delivery of multiple creatives.

1no
imp.video.battrinteger arrayBlocked creative attributes. Refer to list 5.3 in the OpenRTB documentation.[8,10]no
imp.video.maxextendedinteger

Maximum extended ad duration if extension is allowed. If blank or 0, extension is not allowed. If -1, extension is allowed, and there is no time limit imposed. If greater than 0, then the value represents the number of seconds of extended play supported beyond the maxduration value.

0no
imp.video.minbitrateinteger

Minimum bit rate in Kbps.

250no
imp.video.maxbitrateinteger

Maximum bit rate in Kbps.

-no
imp.video.boxingallowedinteger

Indicates if letter-boxing of 4:3 content into a 16:9 window is allowed, where 0 = no, 1 = yes.

1no
imp.video.playbackmethodinteger array

Playback methods that may be in use. If none are specified, any method may be used. Refer to List 5.10 in the OpenRTB documentation.

-no
imp.video.playbackendinteger

The event that causes playback to end. Refer to List 5.11 in the OpenRTB documentation.

-no
imp.video.deliveryinteger array

Supported delivery methods (e.g., streaming, progressive). If none specified, assume all are supported. Refer to List 5.15 in the OpenRTB documentation.

-no
imp.video.posinteger

Ad position on screen. Refer to List 5.4 in the OpenRTB documentation.

0no
imp.video.apiinteger arrayList of supported API frameworks for this impression. Refer to section 5.6 in the OpenRTB documentation.-no
Imp.Nativeobject
-no
imp.native.requeststring

Request payload complying with the Native Ad Specification (JSON-encoded string). Supported versions are: 1.0, 1.1 and 1.2

(info) For more info see RTB Native Ad Request Spec 1.2

-yes
imp.native.verstring

Version of the Dynamic Native Ads API to which request complies; highly recommended for efficient parsing.

-no
imp.native.api

integer array

List of supported API frameworks for this impression. Refer to List 5.6 in the OpenRTB documentation.-no
imp.native.battrinteger arrayBlocked creative attributes. Refer to List 5.3 in the OpenRTB documentation.-no

App

object
-yes
app.bundlestringA 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.
-yes
app.catstring array

Array of IAB content categories that describe the publisher. Refer to List 5.1 OpenRTB documentation.

-no
app.idstringInventory/ app id on the requester platform. We recommend sending this value.-no
app.namestringName of the app-no
app.domainstring

Domain of the app (e.g., “mygame.foo.com”)

-no
app.storeurlstring

App store URL for an installed app; for IQG 2.1 compliance.

Example: https://itunes.apple.com/us/app/timehop-memories-then-now/id569077959?mt=8
Example: https://play.google.com/store/apps/details?id=com.timehop&hl=en

-no

User

object
-no
user.yobintegerStands for the year of birth. -no
user.genderstring

Describes the gender of the user.
"m" or "M" → Male 
"f" or "F" → Female 

-no
user.keywordsstringComma separated list of keywords, interests, or intent.-no
user.ext.consentstring

The IAB User Consent String is supported. 

Also "0" (no consent given) and "1" (consent given) is supported but we don't recommend it as it is not specific enough.

This parameter should be sent when GDPR is applicable in conjunction with "regs.ext.gdpr": 1.

If this parameter is empty then it means that no vendor has consent and all PII (Personally Identifiable Information) will be removed by Mobfox (if "regs.ext.gdpr": 1).

Empty stringno

Device

object
-yes
device.uastring

User agent of the device that will render the impression.

Make sure to use the same user agent for your ad request and for your impressions and clicks (HTTP Header) otherwise Mobfox will detect impressions/ clicks as fraudulent.

User Agent from HTTP Headeryes
device.ipstring

IPv4 address closest to device.

-yes
device.dntinteger

Standard “Do Not Track” flag as set in the header by the browser, where 0 = tracking is unrestricted, 1 = do not track.

0no
device.lmtinteger

“Limit Ad Tracking” signal commercially endorsed (e.g., iOS, Android), where 0 = tracking is unrestricted, 1 = tracking must be limited per commercial guidelines.

-no
device.jsinteger

Support for JavaScript, where 0 = no, 1 = yes.

1no
device.ifastring

ID sanctioned for advertiser use in the clear (i.e., not hashed).

-no
device.dpidsha1string

Platform device ID (e.g., Android ID); hashed via SHA1.

ATTENTION: Currently Mobfox will calculate this value itself by looking at the mandatory parameter device.ifa, which will overwrite your value of device.dpidsha1.

-no
device.dpidmd5string

Platform device ID (e.g., Android ID); hashed via MD5.

ATTENTION: Currently Mobfox will calculate this value itself by looking at the mandatory parameter device.ifa, which will overwrite your value of device.dpidmd5.

-no

Device.Geo

object
-no
device.geo.latfloatLatitude-no
device.geo.lonfloatLongitude-no

Regs.Ext

object
-no
regs.coppainteger

Flag indicating if this request is subject to the COPPA regulations established by the USA FTC, where 0 = no, 1 = yes.

0no
regs.ext.gdprinteger

1 = gdpr regulations are applicable
0 = gdpr regulations are not applicable

If IP in EU then the default is 1 else 0.no
Extobject
-no
click_tracker_offinteger1 = Mobfox clicktracker will not be added to ad response
0 or not sent = Mobfox clicktracker will be added to ad response
-no

What known limitations exist?


  1. Only in-app Bid Requests

    Currently, we support only bid requests with the parameter "app", which target applications.
    For now, we don't support web traffic from "site" inventory.
  2. Only one "imp" object per Bid Request

    Currently, we support only one "imp" object in each Bid Request.
    This means you can send one or multiple objects in the "imp" array but we are parsing only the first object in the "imp" array.
  3. No compression on request and response

    As for now, we DO NOT support request and response compression ("Content-Encoding" or "Accept-Encoding" HTTP headers) on this OpenRTB API.

How does an RTB Bid Response look like?


No Bid Response

We send an HTTP status code 204 (no-content) response when the bid request is valid but Mobfox has "no bid" for it.

Bid Response

The example below shows how a successful request with an ad response looks like.

Bid Response Example
{
    "id": "22222222222222222",
    "seatbid": [
        {
            "bid": [
                {
                    "id": "c8bee26259dfce711de2b1d3a251d2f1",
                    "impid": "1111111111",
                    "price": 0.158,
                    "adomain": [
                        "http://www.mobfox.com"
                    ],
                    "cid": "60_3950437",
                    "crid": "60_808753",
                    "w": 320,
                    "h": 50,
                    "adm": "<a href=\\\"http://tracker.mtrtb.com/tracker/click/?d=ZZdXVpZD02MWFkZDNhMy01NjEzLTExZTktODNmMi0wNjU1ODgzMzc3ZTImY2NyaWQ9NjQ4ODU2JnNzcF9pZD0y\\\" target=\\\"_blank\\\"><img width=\\\"320\\\" height=\\\"50\\\" src=\\\"http://creatives.mydspcdn.com/creatives/808753.gif\\\"/></a><img src=\\\"http://tracker.mtrtb.com/tracker/imp/?uuid=61add3a3-5613-11e9-83f2-0655883377e2&ccrid=648856&price=0.158&bid_ts=1554297685466&campaign_id=3950437&ssp_id=2\\\" width=\\\"1\\\" height=\\\"1\\\"/><img src=\\\"https://api-ad-rtb.mobfox.com/testing?price=0.158\\\" width=\\\"1\\\" height=\\\"1\\\"/><img src=\\\"http://adrta.com/i?clid=mf&paid=mf&avid=60&caid=3950437&plid=808753&publisherId=80522&siteId=292839&priceBid=0.2&gender=F&kv1=320X50&kv2=my.domain.com&kv4=212.232.28.95&kv5=234218&kv7=80522&kv11=c8bee26259dfce711de2b1d3a251d2f1&kv12=292839&kv14=1&kv16=28.200000762939453&kv17=26.36669921875&kv18=com.nianticlabs.pokemongo&kv23=AT_NESSUSGMBH_NESSUSGMBH&kv24=Mobile_InApp&kv25=Apple+iPhone&kv26=iOS&kv30=0&cb=3F0400D51192BB1C4D9775949B1395CE\\\" width=\\\"1\\\" height=\\\"1\\\"/><script type=\\\"text/javascript\\\">function mfClickTracker(){this.clickMacroName=\\\"MF_CLICK_URL\\\",this.clickUrl=\\\"http://track.mobfox.com/exchange.click.php?h=c8bee26259dfce711de2b1d3a251d2f1\\\",this.init=function(){var i=this;if(!i.clickUrl||i.clickUrl.indexOf(i.clickMacroName)>=0)return!1;\\\"undefined\\\"!=typeof mraid?\\\"loading\\\"===mraid.getState()?mraid.addEventListener(\\\"ready\\\",i.addMraidClickTracker):i.addMraidClickTracker():i.addDefaultClickTracker()},this.addDefaultClickTracker=function(){var i=this;document.addEventListener(\\\"click\\\",function(r){i.triggerClickTracker(i.clickUrl)});var r=setInterval(function(){var e=document.activeElement,c=e?e.tagName:\\\"\\\";\\\"IFRAME\\\"==(c=c.toUpperCase())&&(i.triggerClickTracker(i.clickUrl),clearInterval(r))},100)},this.addMraidClickTracker=function(){var i=this,r=mraid.open;mraid.open=function(e){i.triggerClickTracker(i.clickUrl),r(e)}},this.triggerClickTracker=function(i){if(void 0!==i&&i){var r=new XMLHttpRequest;r.onreadystatechange=function(){r.readyState==XMLHttpRequest.DONE&&r.status},r.open(\\\"GET\\\",i,!0),r.send()}}}var mfClick=new mfClickTracker;mfClick.init();</script><img style=\\\"position:absolute; left: -10000px;\\\" width=\\\"1\\\" height=\\\"1\\\" src=\\\"http://track.mobfox.com/exchange.pixel.php?h=c8bee26259dfce711de2b1d3a251d2f1\\\"/>"
                }
            ]
        }
    ],
    "bidid": "c8bee26259dfce711de2b1d3a251d2f1",
    "cur": "USD"
}
Native Bid Response Example (version 1.1)
{
    "id": "22222222222222222",
    "seatbid": [
        {
            "bid": [
                {
                    "id": "c8bee26259dfce711de2b1d3a251d2f1",
                    "impid": "1111111111",
                    "price": 0.158,
                    "adomain": [
                        "http://www.mobfox.com"
                    ],
                    "cid": "60_3950437",
                    "crid": "60_808753",
                    "w": 320,
                    "h": 50,
                    "adm": "{\"assets\":[{\"id\":123,\"required\":1,\"title\":{\"text\":\"MobFox Test Ad\"}},{\"id\":128,\"img\":{\"h\":627,\"url\":\"https://creative1cdn.mobfox.com/mftext/1200x627/315C93/fff?text=MobFoxTestAd\",\"w\":1200},\"required\":0},{\"id\":124,\"img\":{\"h\":50,\"url\":\"https://creative1cdn.mobfox.com/mftext/80x80/315C93/fff?text=MobFoxTestAd\",\"w\":50},\"required\":1},{\"data\":{\"value\":\"MobFox test description\"},\"id\":126,\"required\":1},{\"data\":{\"value\":\"MobFox test ad description\"},\"id\":127,\"required\":1},{\"data\":{\"value\":\"Sponsored content\"},\"id\":129,\"required\":0}],\"link\":{\"url\":\"http://some-url.com\"}}"
                }
            ]
        }
    ],
    "bidid": "c8bee26259dfce711de2b1d3a251d2f1",
    "cur": "USD"
}

Invalid Bid Request

Mobfox responds on any bid request error with the HTTP status code 400.
Discover below the response body and how the error details are communicated.
The HTTP status code 500 is reserved for Mobfox internal server errors (which should not happen 🤓).

Error Response Example
{
    "id": "22222222222222222",
    "seatbid": [],
    "nbr": 2,
    "ext": {
        "nbr_reason": "no_imp_type",
        "nbr_verbose": "Json attribute imp type (one of: 'imp.banner', 'imp.video', 'imp.native', 'imp.audio') is missing in your request."
    }
}

Bid Response parameters explained



Object/ParameterTypeDescription

BidResponse



idstringIdentifier that was sent in "bidRequest.id" in the Bid Request.
bididstringUnique identifier generated by Mobfox per request, which can be used for debugging specific bid responses.
curstringBid currency, always "USD"
nbrintegerThe no bid reason code as per RTB specification. Refer to the List 5.24 in the OpenRTB documentation.

Seatbid

object array

Seatbid.Bid

object
seatbid.bid.idstring

Unique identifier generated by Mobfox per each bid, which can be used for debugging specific bid responses.

seatbid.bid.impidstringIdentifier that was sent in "bidRequest.imp.id" in the Bid Request.
seatbid.bid.pricedoubleBid price of the winning bid
seatbid.bid.adomainstring array

Advertiser domain for block list checking

seatbid.bid.cidstringCampaign ID
seatbid.bid.cridstringCreative ID
seatbid.bid.winteger

Width of the creative

seatbid.bid.hinteger

Height of the creative

seatbid.bid.admstringAd markup containing the actual ad with its trackers.

Ext

object
ext.nbr_reasonstringHuman readable unique error code to identify the type of the encountered error. This comes in addition to the details communicated in the nbr field for a better integration.
ext.nbr_verbosestringVerbose description of the error. This comes in addition to the details communicated in the nbr and ext.nbr_reason fields for a better integration.

Next Steps


Please refer to Win, Loss & Bill Notification Support.

Related pages


Links to pages which might also be interesting for you: