Aller au contenu principal

OpenRTB bidRequest API

We offer our publishers an OpenRTB 2.5 bidRequest API so that integrating with BlueStack

What do you need to get integrated?​

  • You need to send HTTP POST requests with a JSON ad request body with OpenRTB 2.5 bidRequest API format
  • You should be able to interpret HTTP status codes for the response (200, 204 and 400)
  • You should already have a [BlueStack] account with an inventory set up.
  • You should use the inventory PLACEMENT_CODE as part of the request URL, which is described below

How should an RTB Bid Request look like?​

HTTP request headers​

KeyValueRequired?
Content-Typeapplication/jsonYes
x-openrtb-version2.5Yes

Send your RTB Bid Request to this URL​

https://mobile.mng-ads.com/bidrequest/[REPLACE_WITH_YOUR_PLACEMENT_CODE]

Example of RTB Bid Requests​

{
"id": "1582022328X56X11279X1982X17029X5961X896X50942X0X48X2X2X3012874X0X1X0X2178074X3017382X2968815X2988507X0X0X0H34dfd1fa0f38f8fb1d9d9e4d041cd471f0f9b530",
"tmax": 500,
"at": 2,
"cur": ["EUR"],
"regs": {
"ext": {
"gdpr": 1
}
},
"user": {
"buyeruid": "89a68102-a116-49f1-be4a-658b2480c3d7",
"keywords": "inall=18;inall_hr=10;",
"ext": {
"consent": "BOs832ZOs832ZAsAZBFRC3-HAAAqkAOQRZiKRoAC0NYBwAADAK4AAAQAAAAALQgAQAYCAEAiAAgAAAAAAAAAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAQ"
}
},
"app": {
"id": "2178074",
"bundle": "com.madvertise.bluestack",
"name": "FR_BlueStack_App_Android_MNG",
"storeurl": "https:\/\/play.google.com\/store\/apps\/details?id=com.madvertise.bluestack",
"cat": ["IAB6", "IAB7", "IAB9", "IAB10", "IAB12", "IAB14"]
},
"device": {
"ip": "84.14.10.74",
"ua": "Mozilla\/5.0 (Linux; U; Android 9; fr-fr; SM-J600FN Build\/PPR1.180610.011) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1",
"dnt": 0,
"lmt": 0,
"ifa": "89a68102-a116-49f1-be4a-658b2480c3d7",
"make": "Samsung",
"model": "SM-J600FN",
"os": "Android",
"osv": "9.0",
"devicetype": 4,
"connectiontype": 2,
"js": 1,
"carrier": "EE",
"geo": {
"lat": 51.5126912,
"lon": -0.1081602,
"type": 1,
"country": "FRA",
"region": "IDF",
"city": "Paris",
"zip": "75001"
}
},
"imp": [{
"id": "1",
"secure": 1,
"tagid": "32266",
"bidfloor": 0.5,
"bidfloorcur": "EUR",
"instl": 0,
"banner": {
"pos": 4,
"w": 320,
"h": 50,
"api": [5, 1001]
}
}]
}

VAST Video Ad​

{
"id": "1582021936X56X12510X1982X18517X5961X5702X51056X8524X48X13X2XX0X1X0X9561622X3017382XXX0X0X0H5944bb9df2ac09617ad13d9effc3c6621942b1e6",
"tmax": 500,
"at": 2,
"cur": ["EUR"],
"regs": {
"ext": {
"gdpr": 1
}
},
"user": {
"buyeruid": "b879a967-37e7-4564-ab8a-6cc259846116",
"ext": {
"consent": "BOUA7l2OrUK1-AsAWBFRCxABAAAqkAOQRZiKRoAC0NYBwAADAK4AAAQAAAAALQgAQAYCAEAiAAgAAAAAAAAAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAA"
}
},
"app": {
"id": "9561622",
"bundle": "com.madvertise.bluestack",
"name": "FR_BlueStack_App_Android_MNG",
"storeurl": "https:\/\/play.google.com\/store\/apps\/details?id=com.madvertise.bluestack",
"cat": ["IAB6", "IAB9", "IAB10", "IAB12", "IAB14", "IAB20"]
},
"device": {
"ip": "37.166.247.145",
"ua": "Mozilla\/5.0 (Linux; U; Android 9; fr-; G8441 Build\/47.2.A.11.228) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1",
"dnt": 0,
"lmt": 0,
"ifa": "b879a967-37e7-4564-ab8a-6cc259846116",
"make": "Sony",
"model": "G8441",
"os": "Android",
"osv": "9.0",
"devicetype": 4,
"connectiontype": 6,
"js": 1,
"carrier": "Free",
"geo": {
"type": 2,
"country": "FRA"
}
},
"imp": [{
"id": "1",
"secure": 1,
"tagid": "31377",
"bidfloor": 3,
"bidfloorcur": "EUR",
"instl": 0,
"video": {
"mimes": ["video\/mp4", "video\/3gpp", "application\/javascript"],
"w": 320,
"h": 480,
"minduration": 2,
"maxduration": 30,
"playbackmethod": [1, 3],
"boxingallowed": 0,
"protocols": [1, 2, 3, 4, 5, 6],
"placement": 4
}
}]
}

Native Ad​

For more info see RTB Native Ad Request Spec 1.2

{
"id": "1582022531X56X12509X1982X18516X6166X8773X51703X0X48X2X2X2951839X0X1X0X2787907X2921044XX2867714X0X0X0Hbafce55893fc8d49686be4852717c3fd5870fc0c",
"tmax": 500,
"at": 2,
"cur": ["USD"],
"regs": {
"ext": {
"gdpr": 1
}
},
"user": {
"buyeruid": "c3d3ea59-0d24-4156-9555-712e12f0cbd7",
"keywords": "inall=42;inall_hr=10;page=program",
"ext": {
"consent": null
}
},
"app": {
"id": "2787907",
"bundle": "com.madvertise.bluestack",
"name": "DE_BlueStack_app_Android_Phone_",
"storeurl": "https:\/\/play.google.com\/store\/apps\/details?id=com.madvertise.bluestack"
},
"device": {
"ip": "89.204.135.74",
"ua": "Mozilla\/5.0 (Linux; U; Android 6.0.1; de-de; SM-A300FU Build\/MMB29M) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1",
"dnt": 0,
"lmt": 0,
"ifa": "c3d3ea59-0d24-4156-9555-712e12f0cbd7",
"make": "Samsung",
"model": "SM-A300FU",
"os": "Android",
"osv": "6.0.1",
"devicetype": 4,
"connectiontype": 6,
"js": 1,
"carrier": "Tchibo",
"geo": {
"type": 2,
"country": "DEU"
}
},
"imp": [{
"id": "1",
"secure": 1,
"tagid": "34656",
"bidfloor": 0.3250764,
"bidfloorcur": "USD",
"native": {
"request": "{\"layout\":6,\"vers\":\"1.0\",\"assets\":[{\"id\":1,\"img\":{\"type\":3,\"w\":1200,\"h\":627}},{\"id\":2,\"img\":{\"type\":1,\"w\":50,\"h\":50}},{\"id\":3,\"title\":{\"len\":50}},{\"id\":4,\"data\":{\"type\":2,\"len\":150}},{\"id\":5,\"data\":{\"type\":12,\"len\":12}}]}"
}
}]
}

What known limitations exist?​

  • Only one "imp" object per Bid Request.
  • Only in-app Bid Requests. We support only bid requests with the parameter "app", which target applications.
  • We are using Prebid for web traffic from "site" inventory, see [Header Bidding With Prebid.js For Mobile Web]

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 BlueStack has "no bid" for it.

Bid Response​

Invalid Bid Request​

We respond on any bid request error with the HTTP status code 400. The HTTP status code 500 is reserved for BlueStack internal server errors. The error details are communicated on x-bluestack-message HTTP header key

HTTP/1.1 400 Bad Request
Server: nginx/1.14.2
Date: Tue, 14 Apr 2020 06:48:26 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
x-bluestack-message: missing raw body

Valid Bid Request​

For now, our Bill notification is included on adm attribute (Ad markup containing)

{
"id": "1582022328X56X11279X1982X17029X5961X896X50942X0X48X2X2X3012874X0X1X0X2178074X3017382X2968815X2988507X0X0X0H34dfd1fa0f38f8fb1d9d9e4d041cd471f0f9b530",
"bidid": "1587043131X56X37141X10X52700X7697X7849X53919X0X3X2X2X3012874X0X1X0X6030037X3017382X2968815X2988507X0X0X0H76aeb1562c5278c5595034ec87640ce25b649d9b",
"cur": "EUR",
"seatbid": [{
"bid": [{
"id": "d343d064a31cfd1b1f4e5563f7a71a8d10736df0",
"impid": "2",
"price": 0.33936,
"adm": "<!DOCTYPE html><html><head><meta name=\"viewport\" content=\"width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0\">...",
"cid": "10",
"crid": "37141",
"adomain": ["improvedigital.com"],
"attr": [],
"w": 640,
"h": 960
}],
"seat": "madvertise"
}]
}

adm attribute contains HTML only.

VAST Video Ad​

adm attribute contains inline VAST document. We support following protocol:

  • 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

Impression contains all tracking url (that include Billing notice URL). However, we can manage burl openRTB attribute too.

Native Ad​

We support RTB Native Ad Request Spec 1.2

{
"native": {
"link": {
"url": "http://bluestack.app"
},
"assets": [
{
"id": 1,
"required": 1,
"title": {
"text": "title of nativead"
}
},
{
"id": 2,
"required": 1,
"img": {
"url": "https://creative.mng-ads.com/10/5379-8078.jpg"
}
},
{
"id": 3,
"required": 1,
"img": {
"url": "https://creative.mng-ads.com/10/5379-8079.jpg"
}
},
{
"id": 4,
"required": 1,
"data": {
"value": "CTA"
}
},
{
"id": 5,
"required": 1,
"data": {
"value": "description of nativead."
}
}
]
}
}