Open Bidding network integration
ORTB Request/Response
Yandex endpoint for server-server integration that will be provided by the manager.
Yandex supports the OpenRTB API Specification 2.5.
Bid Request structure
Bid Request
Object
Attribute |
Type |
Required |
Description |
|
String |
Yes |
Unique ID of the bid request, provided by the exchange |
|
|
Yes |
Array of |
|
|
Yes |
Details via an |
device |
device object |
Yes |
Details via a |
|
|
Yes |
Details via a |
|
Integer |
Yes |
Maximum time in milliseconds the exchange allows for bids to be received including Internet latency to avoid timeout |
|
String array |
Yes |
Array of allowed currencies for bids on this bid request using |
|
Integer |
No |
Indicator of test mode in which auctions are not billable, where |
|
Integer |
No |
Auction type, where |
|
String array |
No |
Blocked advertiser categories using the IAB content categories |
|
|
No |
A |
App
object
Attribute |
Type |
Required |
Description |
|
String |
Yes |
A platform-specific application identifier intended to be unique to the app and independent of the exchange |
|
String |
No |
Exchange-specific app ID |
|
String |
No |
App name |
|
String array |
No |
Array of IAB content categories of the app |
|
String |
No |
Application version |
|
publisher object |
No |
Details about the Publisher of the app |
|
String |
No |
Comma separated list of keywords about the app |
Publisher
object
Attribute |
Type |
Required |
Description |
|
String |
No |
Exchange-specific publisher ID |
|
String |
No |
Publisher name |
|
String array |
No |
Array of IAB content categories that describe the publisher |
|
String |
No |
Highest level domain of the publisher |
Device
object
Attribute |
Type |
Required |
Description |
|
String |
Yes |
Browser user agent string |
|
String |
Yes |
IPv4 address closest to device |
|
|
No |
Location of the device assumed to be the user’s current location defined by a |
|
Integer |
No |
Standard |
|
Integer |
No |
|
|
String |
No |
IP address closest to device as IPv6 |
|
String |
No |
Device operating system |
|
String |
No |
Device operating system version |
|
Integer |
No |
Physical height of the screen in pixels |
|
Integer |
No |
Physical width of the screen in pixels |
|
String |
No |
Browser language using |
|
Integer |
No |
Network connection type |
|
String |
No |
ID sanctioned for advertiser use in the clear |
Geo
object
Attribute |
Type |
Required |
Description |
|
Float |
No |
Latitude from -90.0 to +90.0, where negative is south |
|
Float |
No |
Longitude from -180.0 to +180.0, where negative is west |
|
String |
No |
Country code using |
|
String |
No |
Region code using |
|
String |
No |
City using United Nations Code for Trade & Transport Locations |
Imp
object
Attribute |
Type |
Required |
Description |
|
String |
Yes |
A unique identifier for this impression within the context of the bid request |
|
String |
Yes |
Yandex Ads ad unit ID |
|
String |
Yes |
A type of the ad. Values: |
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
Integer |
No |
|
|
Integer |
No |
Indicates whether the user receives a reward for viewing the ad, where |
Banner
object
Attribute |
Type |
Required |
Description |
|
Integer |
No |
Exact width in device independent pixels (DIPS) |
|
Integer |
No |
Exact height in device independent pixels (DIPS) |
|
|
No |
Array of |
Format
object
Attribute |
Type |
Required |
Description |
|
Integer |
No |
Width in device independent pixels (DIPS) |
|
Integer |
No |
Height in device independent pixels (DIPS) |
|
Integer |
No |
Relative width when expressing size as a ratio |
|
Integer |
No |
Relative height when expressing size as a ratio |
|
Integer |
No |
The minimum width in device independent pixels (DIPS) at which the ad will be displayed. The size is expressed as a ratio |
Video
object
Attribute |
Type |
Required |
Description |
|
String array |
No |
Exact width in device independent pixels (DIPS) |
|
Integer |
No |
Width of the video player in device independent pixels (DIPS) |
|
Integer |
No |
Height of the video player in device independent pixels (DIPS) |
Native
object
Attribute |
Type |
Required |
Description |
|
String |
No |
Request payload complying with the Native Ad Specification |
|
Integer |
No |
Version of the Dynamic Native Ads API to which request complies |
User
object
Attribute |
Type |
Required |
Description |
|
String |
Yes |
Bidder token acquired from Yandex Mobile Ads SDK |
|
String |
No |
Exchange-specific ID for the user |
|
String |
No |
Comma separated list of keywords, interests, or intent |
Regs
object
Attribute |
Type |
Required |
Description |
|
Integer |
No |
Flag indicating if this request is subject to the |
|
Integer |
No |
Flag indicating if this request is subject to the |
|
Integer |
No |
Flag indicating if a user has granted consent, where |
|
String |
No |
TCF consent string as url safe base64 string. Yandex AC Vendor ID is |
Recommended headers in bid request
We recommend adding a header X-Country-Code
with the value of the country code.
Bid Request examples
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-banner-yandex",
"rwdd": 0,
"banner": {
"w": 320,
"h": 50
},
"ext": {
"ad_type": "banner"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 1,
"tagid": "demo-interstitial-yandex",
"rwdd": 0,
"ext": {
"ad_type": "interstitial"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-rewarded-yandex",
"rwdd": 1,
"ext": {
"ad_type": "rewarded"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-native-content-yandex",
"rwdd": 0,
"ext": {
"ad_type": "native"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-appopenad-yandex",
"rwdd": 0,
"ext": {
"ad_type": "appopenad"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
Test Bid Response
To get a test response, specify test
field in oRTB request with 1
value.
Bid Response structure
Bid Response object
Attribute |
Type |
Description |
|
String |
ID of the bid request to which this is a response |
|
String |
Bid currency using |
|
|
Array of 1 Seatbid object |
Seatbid
object
Attribute |
Type |
Description |
|
|
Array of 1 Bid object |
Bid
object
Attribute |
Type |
Description |
|
String |
Bidder generated bid ID to assist with logging/tracking |
|
String |
ID of the |
|
Float |
Bid price expressed as CPM although the actual transaction is for a unit impression only |
|
String |
Information about the selected ad. It must be transmitted during a client request |
|
String |
Win notice URL called by the exchange if the bid wins (not necessarily indicative of a delivered, viewed, or billable ad); optional means of serving ad markup |
|
String |
Billing notice URL called by the exchange when a winning bid becomes billable based on exchange-specific business policy |
|
String |
Loss notice URL called by the exchange when a bid is known to have been lost |
Supported macros
Macro |
Place |
Description |
|
nurl, burl, lurl |
Clearing price using the same currency and units as the bid |
|
lurl |
Loss reason codes |
|
lurl, nurl |
Minimum bid to win the exchange's auction, using the same currency and units as the bid |
Bid Response example
{
"cur": "USD",
"seatbid": [{
"bid": [{
"price": 8.2869000000,
"id": "7149643471343346645",
"ext": {
"signaldata": "{\"cache_id\":\"openbidding_7149643471343346645\"}"
},
"impid": "1",
"lurl": "https://yandex.ru/an/ssp_notifications/1Mldfsfadffasdfasdv618PGIAPrvDZl02YPUA0NcrLu74LA2u0yDCnWP52P1EXeMC2mu8WLah6GChEC6ilOoz7TKCHy7ygumWW-uoCiWmCFnbdCN4m32N2IIobEaNa5pBP0GappBz1uAdJ8dVLh2-OXBWQoYfkfhCm72mSCPfyKki37-PM86AMfcPWMGlc9pA339YBdC4o5fc9WQ51WO11eQhOD6xOF8diuCJFzWnArWQ3YTiOFaF0umxaDW7aDWtMS3g6JxOFsJHZEa_z5NZWVrR5f0VVh7m1kdwwfeQ6vXRcEWQ6JMnIkOa9kcbbURbLIOM51H3MCdvEVb5nITP-LlOmEPyPGKPku1jzwQ7RxfUVFgpdd4b6ypSHsoyKQvcLcMEnNaMOQvXvY_PO7R_XBC0WRgD-m00?ssp-notification-type=2&ssp-request-id=acbce306085481e0a42156b00d8a19523c2813a9&ssp-auction-loss=${AUCTION_LOSS}&ssp-auction-min-bid-to-win=${AUCTION_MIN_TO_WIN}&ssp-cur-price=${AUCTION_PRICE}",
"nurl": "https://yandex.ru/an/ssp_notifications/1fsdafasdDEYKsGv618PGIAPrvDZl02YPUA0NcrLu74LA2u0yDCnWP52P1EXeMC2mu8WLah6GChEC6ilOoz7TKCHy7ygumWW-uoCiWmCFnbdCN4m32N2IIobEaNa5pBP0GappBz1uAdJ8dVLh2-OXBWQoYfkfhCm72mSCPfyKki37-PM86AMfcPWMGlc9pA339YBdC4o5fc9WQ51WO11eQhOD6xOF8diuCJFzWnArWQ3YTiOFaF0umxaDW7aDWtMS3g6JxOFsJHZEa_z5NZWVrR5f0VVh7m1kdwwfeQ6vXRcEWQ6JMnIkOa9kcbbURbLIOM51H3MCdvEVb5nITP-LlOmEPyPGKPku1jzwQ7RxfUVFgpdd4b6ypSHsoyKQvcLcMEnNaMOQvXvY_PO7R_XBC0WRgD-m00?ssp-notification-type=1&ssp-request-id=acbce306085481e0a42156b00d8a19523c2813a9&ssp-cur-price=${AUCTION_PRICE}&ssp-auction-min-bid-to-win=${AUCTION_MIN_TO_WIN}",
"burl": "https://yandex.ru/an/ssp_notifications/1Ml0nI5N0QS10000000dsfasdfasd618PGIAPrvDZl02YPUA0NcrLu74LA2u0yDCnWP52P1EXeMC2mu8WLah6GChEC6ilOoz7TKCHy7ygumWW-uoCiWmCFnbdCN4m32N2IIobEaNa5pBP0GappBz1uAdJ8dVLh2-OXBWQoYfkfhCm72mSCPfyKki37-PM86AMfcPWMGlc9pA339YBdC4o5fc9WQ51WO11eQhOD6xOF8diuCJFzWnArWQ3YTiOFaF0umxaDW7aDWtMS3g6JxOFsJHZEa_z5NZWVrR5f0VVh7m1kdwwfeQ6vXRcEWQ6JMnIkOa9kcbbURbLIOM51H3MCdvEVb5nITP-LlOmEPyPGKPku1jzwQ7RxfUVFgpdd4b6ypSHsoyKQvcLcMEnNaMOQvXvY_PO7R_XBC0WRgD-m00?ssp-notification-type=3&ssp-request-id=acbce306085481e0a42156b00d8a19523c2813a9&ssp-cur-price=${AUCTION_PRICE}"
}]
}],
"id": "acbce306085481e0a42156b00d8a19523c2813a9"
}
Android client-side setup
See Android SDK integration guide.
Set privacy settings
MobileAds.setUserConsent(hasUserConsent)
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser)
MobileAds.setLocationConsent(hasLocationConsent)
MobileAds.setUserConsent(hasUserConsent);
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser);
MobileAds.setLocationConsent(hasLocationConsent);
Bidder token generation in Android client
On the client side, we need to gather the required parameters for the auction request and send it to the auction server. Here the code example of obtaining the bidder token.
-
Create a
BidderTokenRequestConfiguration
by passing the format of the requested ad.KotlinJavaval requestBuilder = BidderTokenRequestConfiguration.Builder(adType)
final BidderTokenRequestConfiguration.Builder requestBuilder = new BidderTokenRequestConfiguration.Builder(adType);
-
Set the banner size if you request a banner.
KotlinJavaval bannerAdSize = BannerAdSize.fixedSize(context, width, height) requestBuilder.setBannerAdSize(size)
final BannerAdSize bannerAdSize = new BannerAdSize.fixedSize(context, width, height); requestBuilder.setBannerAdSize(bannerAdSize);
-
Add information about the adapter.
KotlinJavaval requestParameters = mutableMapOf<String, String>() requestParameters["adapter_version"] = "ADAPTER_VERSION" requestParameters["adapter_network_name"] = "MEDIATION_NETWORK_NAME" requestParameters["adapter_network_sdk_version"] = "MEDIATION_SDK_VERSION" requestBuilder.setParameters(requestParameters)
final Map<String, String> requestParameters = new HashMap<>(); requestParameters.put("adapter_version", "ADAPTER_VERSION"); requestParameters.put("adapter_network_name", "MEDIATION_NETWORK_NAME"); requestParameters.put("adapter_network_sdk_version", "MEDIATION_SDK_VERSION"); requestBuilder.setParameters(requestParameters);
-
Load the bidder token.
KotlinJavaval requestConfiguration = requestBuilder.build() BidderTokenLoader.loadBidderToken(context, requestConfiguration, object: BidderTokenLoadListener() { override fun onBidderTokenLoaded(bidderToken: String) { // obtain generated token } override fun onBidderTokenFailedToLoad(failureReason: String) { // obtain failure reason } })
final BidderTokenRequestConfiguration requestConfiguration = requestBuilder.build(); BidderTokenLoader.loadBidderToken(context, requestConfiguration, new BidderTokenLoadListener() { @Override public void onBidderTokenLoaded(@NonNull final String bidderToken) { // obtain generated token } @Override public void onBidderTokenFailedToLoad(@NonNull final String failureReason) { // obtain failure reason } });
Loading the ad from bid response on Android client
When the Yandex bid wins an auction, the next step is to the load ad with the bidding data.
App open
val adUnitId = "Yandex ad_unit_id" // Yandex ad unit ID set by publisher in mediation console
val bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // ext.signaldata field from bidResponse
val appOpenAdLoader = AppOpenAdLoader(activity)
appOpenAdLoader.setAdLoadListener(object: AppOpenAdLoadListener {
override fun onAdLoaded(appOpenAd: AppOpenAd) {
// show ad
}
override fun onAdFailedToLoad(error: AdRequestError) {
// log error
}
})
val adRequest = AdRequest.Builder().setBiddingData(bidResponse).build()
appOpenAdLoader.loadAd(adRequest)
final String adUnitId = "Yandex ad_unit_id"; // Yandex ad unit ID set by publisher in mediation console
final String bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}"; // ext.signaldata field from bidResponse
final AppOpenAdLoader appOpenAdLoader = new AppOpenAdLoader(activity);
appOpenAdLoader.setAdLoadListener(new AppOpenAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final AppOpenAd appOpenAd) {
// show ad
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// log error
}
});
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
appOpenAdLoader.loadAd(adRequest);
A detailed guide on App Open integration is here.
Interstitial
val adUnitId = "Yandex ad_unit_id" // Yandex ad unit ID set by publisher in mediation console
val bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // ext.signaldata field from bidResponse
val interstitialAdLoader = InterstitialAdLoader(activity)
interstitialAdLoader.setAdLoadListener(object: InterstitialAdLoadListener {
override fun onAdLoaded(interstitialAd: InterstitialAd) {
// show ad
}
override fun onAdFailedToLoad(error: AdRequestError) {
// log error
}
})
val adRequest = AdRequest.Builder().setBiddingData(bidResponse).build()
interstitialAdLoader.loadAd(adRequest)
final String adUnitId = "Yandex ad_unit_id"; // Yandex ad unit ID set by publisher in mediation console
final String bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}"; // ext.signaldata field from bidResponse
final InterstitialAdLoader interstitialAdLoader = new InterstitialAdLoader(activity);
interstitialAdLoader.setAdLoadListener(new InterstitialAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final InterstitialAd interstitialAd) {
// show ad
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// log error
}
});
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
interstitialAdLoader.loadAd(adRequest);
A detailed guide on Interstitial is here.
Rewarded
val adUnitId = "Yandex ad_unit_id" // Yandex ad unit ID set by publisher in mediation console
val bidResponse = "{\"cache_id\":\"openbidding_714953452343346645\"}" // ext.signaldata field from bidResponse
val rewardedAdLoader = new RewardedAdLoader(activity)
rewardedAdLoader.setAdLoadListener(object: RewardedAdLoadListener {
override fun onAdLoaded(rewardedAd: RewardedAd) {
// show ad
}
override fun onAdFailedToLoad(error: AdRequestError) {
// log error
}
})
val adRequest = AdRequest.Builder()
.setBiddingData(bidResponse).build()
rewardedAdLoader.loadAd(adRequest)
final String adUnitId = "Yandex ad_unit_id"; // Yandex ad unit ID set by publisher in mediation console
final String bidResponse = "{\"cache_id\":\"openbidding_714953452343346645\"}"; // ext.signaldata field from bidResponse
final RewardedAdLoader rewardedAdLoader = new RewardedAdLoader(activity);
rewardedAdLoader.setAdLoadListener(new RewardedAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final RewardedAd rewardedAd) {
// show ad
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// log error
}
});
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
rewardedAdLoader.loadAd(adRequest);
A detailed guide on Rewarded integration is here.
Banner
val adUnitId = "Yandex adUnitId" // Yandex ad unit ID set by publisher in mediation console
val bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}" // ext.signaldata field from bidResponse
val bannerAdView = BannerAdView(activity)
bannerAdView.setBlockId(adUnitId)
bannerAdView.setAdSize(adSize)
val adRequest = AdRequest.Builder().setBiddingData(bidResponse).build()
bannerAdView.loadAd(adRequest)
final String adUnitId = "Yandex adUnitId"; // Yandex ad unit ID set by publisher in mediation console
final String bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}"; // ext.signaldata field from bidResponse
final BannerAdView bannerAdView = new BannerAdView(activity);
bannerAdView.setBlockId(adUnitId);
bannerAdView.setAdSize(adSize);
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
bannerAdView.loadAd(adRequest);
Native
val adUnitId = "Yandex adUnitId" // Yandex ad unit ID set by publisher in mediation console
val bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}" // ext.signaldata field from bidResponse
val nativeAdLoader = new NativeAdLoader(this)
nativeAdLoader.setNativeAdLoadListener(object: NativeAdLoadListener {
override fun onAdLoaded(nativAd: NativeAd) {
// bind nativeAd
}
override fun onAdFailedToLoad(error: AdRequestError) {
// log error
}
})
val nativeAdRequestConfiguration = NativeAdRequestConfiguration.Builder(adUnitId)
.setBiddingData(bidResponse).build()
nativeAdLoader.loadAd(nativeAdRequestConfiguration)
final String adUnitId = "Yandex adUnitId"; // Yandex ad unit ID set by publisher in mediation console
final String bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}"; // ext.signaldata field from bidResponse
final NativeAdLoader nativeAdLoader = new NativeAdLoader(this);
nativeAdLoader.setNativeAdLoadListener(new NativeAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final NativeAd nativeAd) {
// bind nativeAd
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// log error
}
});
final NativeAdRequestConfiguration nativeAdRequestConfiguration = new NativeAdRequestConfiguration.Builder(adUnitId)
.setBiddingData(bidResponse).build();
nativeAdLoader.loadAd(nativeAdRequestConfiguration);
Native format includes both the required and optional assets. The way to provide custom assets for binding strongly depends on the API of your ads SDK. The template shows how these assets are passed to adapter during the ad request by providing a map of string identifier to asset view identifier on the publisher side.
Detailed native ads docs are here.
Example
An example of the adapter is here.