Wiki

Clone wiki

mobile.mng-ads.com-mngperf / opentrtb-bidrequest-API

OpenRTB bidRequest API

LOGO-BLUESTACK-API.png

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

Key Value Required?
Content-Type application/json Yes
x-openrtb-version 2.5 Yes

Send your RTB Bid Request to this URL

#!curl

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

Example of RTB Bid Requests

Banner Ad

{
    "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": ["madvertise.com"],
            "attr": [],
            "w": 640,
            "h": 960
        }],
        "seat": "madvertise"
    }]
}
Banner Ad

adm attribute contains HTML only.

VAST Video Ad

adm attribute contains inline VAST document. We support following protocols, Refer to List 5.8 in the OpenRTB documentation :

  • 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://madvertise.com"
        },
        "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."
                }
            }
        ]
    }
}

Updated