Bid Requests

Bid Request Specification

3.2.1 Object: BidRequest

Please note that all auctions are first price.

FieldTypeDescription
idstring; requiredUnique ID of the bid request, provided by the supply partner.
testintegerIndicator of test mode in which auctions are not billable, where 0 = live mode, 1 = test mode.
badvarray of stringsBlocked advertiser domains (max 50).
bcatarray of stringsSpecifies a list of blocked IAB content categories (see OpenRTB 2.5 section 5.1). This is not supported by all of our demand partners.
wseatarray of stringsSpecifies an array representing an include list of buyer seats allowed to bid on this impression. If omitted, there are no seat restrictions for this impression. This is not supported by all of our demand partners.
bseatarray of stringsSpecifies an array representing an exclude list of buyer seats disallowed to bid on this impression. This is not supported by all of our demand partners.
tmaxintegerMaximum time in milliseconds the exchange allows for bids to be received, including Internet latency, to avoid timeout. Must be >= 100. Most responses should arrive in under 200-300ms. MobileFuse will attempt to achieve the tmax, but due to latency inconsistency, it is not guaranteed.
imparray with object; requiredImpression offered in this bid request. MobileFuse supports only a single impression per bid request. See 3.2.4 Object: Imp
appobject; requiredSpecifies information about the app. See 3.2.14 Object: App
deviceobject; requiredSpecifies information about the user’s device. See 3.2.18 Object: Device
userobjectSpecifies information about the user. See 3.2.20 Object: User
sourceobjectSpecifies information about the source. See 3.2.2 Object: Source
regsobjectSpecifies regulations for this impression. See 3.2.3 Object: Regs

3.2.2 Object: Source

FieldTypeDescription
pchainstringPayment ID chain string containing embedded syntax described in the TAG Payment ID Protocol v1.0.
tidstringTransaction ID
extobject; recommendedObject with fields for omidpn, omidpv, schain, and ssreq. schain attribute is required when MobileFuse's relationship with the publisher is not dire

3.2.3 Object: Regs

Field

Type

Description

coppa

integer

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

ext

object

Object that supports the following extensions:

3.2.4 Object: Imp

Please note that MobileFuse only allows one impression object per bid request.

FieldTypeDescription
idstring; requiredA unique identifier for this impression within the context of the bid request (typically just “1”)
tagidstring; requiredMobileFuse-provided ID for the ad unit, or publisher’s tagid if preferred and provided to account manager
bannerobjectRequired if this request is for a banner ad unit. See 3.2.6 Object: Banner
videoobjectRequired if this request is for a video ad unit. See 3.2.7 Object: Video
nativeobjectRequired if this request is for a native ad unit. See 3.2.9 Object: Native
instlinteger; default 01 = the ad is interstitial or full screen, 0 = not interstitial.
secureinteger; default 0Flag to indicate if the impression requires secure HTTPS URL creative assets and markup, where 0 = non-secure, 1 = secure.
bidfloorfloat, default 0Bidfloor in USD
expintAdvisory as to the number of seconds that may elapse between the auction and the actual impression.
extobjectSupports skadn field to supply SKAdNetwork info as well as gpid field

3.2.6 Object: Banner

FieldTypeDescription
wintegerExact width in device independent pixels (DIPS). Note that the format field is preferred instead
hintegerExact height in device independent pixels (DIPS). Note that the format field is preferred instead
btypearray of integersSpecifies the banner creative types to block. Refer to section 5.2 of the IAB specification for a list of types. This is not supported by all demand sources.
battrarray of integersSpecifies the banner creative attributes to block. Refer to section 5.3 of the IAB specification for a list of attributes. This is not supported by all demand sources.
posinteger; default 0Ad Position. Fully supported: 0 = Unknown, 1 = Above Fold, 3 = Below Fold. Some demand supports all OpenRTB 2.5 list 5.4.
apiarray of integersList of supported API frameworks for this banner. If an API is not explicitly listed, it is assumed not to be supported. Refer to OpenRTB 2.5 list 5.6.
formatarray of objectsArray of format objects representing the banner sizes permitted. See 3.2.10 Object: Format
mimesarray of stringsContent MIME types supported
expdirarray of integersDirections in which the banner may expand. Refer to OpenRTB List 5.5.

3.2.7 Object: Video

Field

Type

Description

mimes

array of strings

Specifies the video content MIME types supported; for example, video/mp4 and video/x-ms-wmv. If not specified, any MIME type is allowed.

minduration

integer; recommended

Specifies the minimum video ad duration, in seconds.

maxduration

integer; recommended

Specifies the maximum video ad duration, in seconds.

w

integer

Specifies the width of the video player, in pixels.

h

integer

Specifies the height of the video player, in pixels.

startdelay

integer

Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll ad placements. Refer to OpenRTB 2.5 List 5.12 for values.

battr

array of integers

Specifies the banner creative attributes to block. Refer to section 5.3 of the IAB specification for a list of attributes. This is not supported by all demand sources. This is not supported by all demand sources.

minbitrate

integer

Specifies the minimum bit rate, in kilobytes per second. If specified, only return creatives having at least one media file within the appropriate bit range.

maxbitrate

integer

List of supported API frameworks for this banner. If an API is not explicitly listed, it is assumed not to be supported. Refer to OpenRTB 2.5 list 5.6.

playbackmethod

array of integers

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

pos

integer

Ad position on screen. Refer to OpenRTB 2.5 List 5.4.

api

array of integers

List of supported API frameworks for this impression. Refer to OpenRTB 2.5 List 5.6. If an API is not explicitly listed, it is assumed not to be supported.

protocols

array of integers

Array of supported video protocols. Refer to OpenRTB 2.5 List 5.8.

placement

integer

Placement type for the impression. Refer to OpenRTB 2.5 List 5.9.

plcmt

integer

Placement type for the impression. Refer to AdCOM Plcmt Subtypes.

boxingallowed

integer; default 1

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

delivery

array of integers

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

skip

integer

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

skipafter

integer; default 0

Videos of total duration greater than this number of seconds can be skippable; only applicable if the ad is skippable.

skipmin

integer; default 0

Number of seconds a video must play before skipping is enabled; only applicable if the ad is skippable

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.

sequence

integer; default 0
DEPRECATED

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

maxseq

integer; recommended

Indicates the maximum number of ads that may be served into a "dynamic" video ad pod (where the precise number of ads is not predetermined by the seller). See Section 7.6 for more details.

poddur

integer; recommended

Indicates the total amount of time in seconds that advertisers may fill for a "dynamic" video ad pod (See Section 7.6 for more details), or the dynamic portion of a "hybrid" ad pod. This field is required only for the dynamic portion(s) of video ad pods. This field refers to the length of the entire ad break, whereas minduration/maxduration/rqddurs are constraints relating to the slots that make up the pod.

podseq

integer; default 0

The sequence (position) of the video ad pod within a content stream. Refer to List: Pod Sequence in AdCOM 1.0 for guidance on the use of this field.

rqddurs

integer array

Precise acceptable durations for video creatives in seconds. This field specifically targets the Live TV use case where non-exact ad durations would result in undesirable "dead air". This field is mutually exclusive with minduration and maxduration; if rqddurs is specified, minduration and maxduration must not be specified and vice versa.

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. Refer to List: Slot Position in Pod in AdCOM 1.0 guidance on the use of this field.

mincpmpersec

float

Minimum CPM per second. This is a price floor for the "dynamic" portion of a video ad pod, relative to the duration of bids an advertiser may submit.

maxextended

integer

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.

3.2.9 Object: Native

FieldTypeDescription
requestobject or stringThe native ad request object, see the OpenRTB Native Ads Specification for details. Can be passed as a JSON object, or a JSON encoded string.
verstringExpected to be "1.2"
apiarray of integersThe APIs that your native ad renderer supports, refer to list 5.3 of the IAB OpenRTB Specification for valid values

3.2.10 Object: Format

FieldTypeDescription
wintegerSpecifies the width of the creative, in pixels.
hintegerSpecifies the height of the creative, in pixels.

3.2.14 Object: App

FieldTypeDescription
bundlestring; requiredOn Android, this should be a bundle or package name (e.g., com.foo.mygame). On iOS, it should be a numeric ID.
domainstringDomain of the app (e.g., “mygame.foo.com”).
catarray of stringsArray of IAB content categories of the app. Refer to OpenRTB 2.5 List 5.1
namestringApp name
publisherobjectDetails about the publisher of the app. See 3.2.15 Object: Publisher
storeurlstringApp store URL for an installed app
verstringApplication version
keywordsstringComma separated list of keywords about the app.
idstringPlease use bundle instead
paidinteger0 = app is free, 1 = the app is a paid version
contentobjectDetails about the content of the app. See 3.2.16 Object: Content

3.2.15 Object: Publisher

FieldTypeDescription
namestringPublisher name
idstringPublisher id

3.2.16 Object: Content

FieldTypeDescription
contentratingstringContent rating (e.g., MPAA).
genrestringGenre that best describes the content (e.g., rock, pop, etc).
lenintegerLength of content in seconds; appropriate for video
livestreaminteger0 = not live, 1 = content is live (e.g., stream, live blog).
seriesstringContent series.
Video Examples: “The Office” (television), “Star Wars” (movie), or “Arby ‘N’ The Chief” (made for web).
Non-Video Example: “Ecocentric” (Time Magazine blog).
titlestringContent title.
Video Examples: “Search Committee” (television), “A New Hope” (movie), or “Endgame” (made for web).
Non-Video Example: “Why an Antarctic Glacier Is Melting So Quickly” (Time magazine article).
contextintegerType of content (game, video, text, etc.). Refer to OpenRTB List 5.18.
catarray of stringsContent category
episodeintegerEpisode number
languagestringContent language using ISO-639-1-alpha-2 (i.e., EN)
seasonstringContent season (e.g., “Season 3”)
urlstringURL of the content, for buy-side contextualization or review

3.2.18 Object: Device

FieldTypeDescription
ifastring; recommendedID sanctioned for advertiser use in the clear (i.e., not hashed).
uastring; requiredBrowser user agent string.
geoobject; recommendedLocation of the device assumed to be the user’s current location defined by a Geo object. See 3.2.19 Object: Geo
dntintegerStandard “Do Not Track” flag as set in the header by the browser, where 0 = tracking is unrestricted, 1 = do not track.
lmtinteger“Limit Ad Tracking” signal commercially endorsed (e.g., iOS, Android), where 0 = tracking is unrestricted, 1 = tracking must be limited per commercial guidelines. Values of 1 will be treated as opt outs for the purpose of us privacy laws.
ipstring; required if no ipv6IPv4 address closest to device
ipv6string; required if no ipIP address closest to device as IPv6
devicetypeintegerThe general type of device. Refer to OpenRTB 2.5 List 5.21
makestringDevice make (e.g., “Apple”).
modelstringDevice model (e.g., “iPhone”).
osstringDevice operating system (e.g., “iOS”).
osvstringDevice operating system version (e.g., “3.1.2”).
languagestringBrowser language using ISO-639-1-alpha-2.
carrierstringCarrier or ISP
connectiontypeintegerNetwork connection type. Refer to List 5.22.
wintegerPhysical width of the screen in pixels.
hintegerPhysical height of the screen in pixels.
extobjectSupports ifv and atts fields per the SKAdNetwork extension

3.2.19 Object: Geo

FieldTypeDescription
citystringCity using United Nations Code for Trade & Transport Locations. See OpenRTB Appendix A for a link to the codes
countrystringCountry code using ISO-3166-1-alpha-3. MobileFuse only accepts USA, CAN, and EU traffic. See full country list here.
latfloat; recommendedLatitude from -90.0 to +90.0, where negative is south. Highly recommended to increase ability to monetize.
lonfloat; recommendedLongitude from -180.0 to +180.0, where negative is west. Highly recommended to increase ability to monetize.
metrostringGoogle metro code; similar to but not exactly Nielsen DMAs. See OpenRTB Appendix A for a link to the codes
regionstringRegion code using ISO-3166-2; 2-letter state code if USA.
typeinteger; recommendedSource of location data; recommended when passing lat/lon. Refer to OpenRTB 2.5 List 5.20.
utcoffsetintegerLocal time as the number +/- of minutes from UTC.
zipstringZip or postal code.

3.2.20 Object: User

Field

Type

Description

gender

string

Gender, where “M” = male, “F” = female, “O” = known to be other (i.e., omitted is unknown).

yob

integer

Year of birth as a 4-digit integer.

eids

object array

Array of objects of third party alternative IDs, per the OpenRTB spec.

consent

string

TField for TCF2 strings for Canadian users. Use of gpp is recommended instead.

ext

object

Supports the "hems" array of objects for passing hashed email(s) for the user, eg.

"user": {  
    "ext": {  
        "hems": [  
            {"hem": "<hashed_email>", "hem_type": "sha256"},
            {"hem": "<hashed_email>", "hem_type": "sha1"},
            {"hem": "<hashed_email>", "hem_type": "md5"},
        ]  
    }  
}

## Sample Bid Requests

{
  "id": "mybidrequestid",
  "imp": [
    {
      "id": "1",
      "tagid": "123456",
      "bidfloor": 1.5,
      "banner": {
        "format": [
          {
            "w": 320,
            "h": 50
          }
        ]
      }
    }
  ],
  "device": {
    "geo": {
      "lat": 42.9999,
      "lon": -89.5522
    },
    "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL Build/PD1A.180720.030; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 Mobile Safari/537.36",
    "ip": "123.123.123.123",
    "ifa": "01234567-1234-1234-1234-012345678901"
  },
  "app": {
    "bundle": "com.test",
    "cat": [
      "IAB14"
    ]
  },
  "source": {
    "ext": {
      "schain": {
        "complete": 1,
        "ver": "1.0",
        "nodes": [
          {
            "asi": "test.com",
            "sid": "1234",
            "rid": "request_id",
            "hp": 1
          }
        ]
      }
    }
  }
}
{
  "id": "mybidrequestid",
  "imp": [
    {
      "id": "1",
      "tagid": "123456",
      "instl": 1,
      "bidfloor": 4.5,
      "video": {
        "w": 320,
        "h": 480,
        "mimes": [
          "video/mp4",
          "video/3gpp",
          "video/ogg",
          "video/webm"
        ],
        "minduration": 15,
        "maxduration": 60,
        "protocols": [
          2,
          5
        ],
        "startdelay": 0,
        "maxbitrate": 750,
        "minbitrate": 0,
        "linearity": 1,
        "pos": 1
      }
    }
  ],
  "device": {
    "geo": {
      "lat": 42.9999,
      "lon": -89.5522
    },
    "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL Build/PD1A.180720.030; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 Mobile Safari/537.36",
    "ip": "123.123.123.123",
    "ifa": "01234567-1234-1234-1234-012345678901"
  },
  "app": {
    "bundle": "com.test",
    "cat": [
      "IAB14"
    ]
  },
  "source": {
    "ext": {
      "schain": {
        "complete": 1,
        "ver": "1.0",
        "nodes": [
          {
            "asi": "test.com",
            "sid": "1234",
            "rid": "request_id",
            "hp": 1
          }
        ]
      }
    }
  }
}
{
  "id": "mybidrequestid",
  "imp": [
    {
      "id": "1",
      "tagid": "123456",
      "bidfloor": 1.5,
      "native": {
        "ver": "1.2",
        "request": {
          "aurlsupport": 1,
          "privacy": 1,
          "assets": [
            { "id": 100, "title": { "len": 25 }, "required": 1 },
            { "id": 200, "img":   { "type": 1 } },
            { "id": 201, "img":   { "type": 3, "wmin": 627, "hmin": 627 } },
            { "id": 400, "data":  { "type": 1, "len": 25 } },
            { "id": 401, "data":  { "type": 2, "len": 140 } },
            { "id": 402, "data":  { "type": 11 } },
            { "id": 403, "data":  { "type": 12, "len": 15 } },
            { "id": 300, "video": { "mimes": ["video/mp4"], "maxduration": 60, "minduration": 10, "protocols": [2, 3, 7, 5, 6, 8] } }
          ],
          "eventtrackers": [
            { "event": 1, "methods": [1] },
            { "event": 2, "methods": [1] },
            { "event": 3, "methods": [1] },
            { "event": 4, "methods": [1] }
          ]
        }
      }
    }
  ],
  "device": {
    "geo": {
      "lat": 42.9999,
      "lon": -89.5522
    },
    "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL Build/PD1A.180720.030; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 Mobile Safari/537.36",
    "ip": "123.123.123.123",
    "ifa": "01234567-1234-1234-1234-012345678901"
  },
  "app": {
    "bundle": "com.test",
    "cat": [
      "IAB14"
    ]
  },
  "source": {
    "ext": {
      "schain": {
        "complete": 1,
        "ver": "1.0",
        "nodes": [
          {
            "asi": "test.com",
            "sid": "1234",
            "rid": "request_id",
            "hp": 1
          }
        ]
      }
    }
  }
}