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 |
|
|
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 |
|
|
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 Geo object (see Geo object) |
|
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 |
|
seatbid objects array |
Array of 1 Seatbid object |
Seatbid
object
Attribute |
Type |
Description |
|
bid objects array |
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"
}
iOS Client setup
See iOS SDK integration guide.
Set privacy settings
MobileAds.setUserConsent(userConsent)
MobileAds.setLocationTrackingEnabled(locationTrackingEnabled)
[YMAMobileAds setUserConsent: userConsent];
[YMAMobileAds setLocationTrackingEnabled: locationTrackingEnabled];
Bidder token generation in iOS 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
BidderTokenLoader
object and make it a class field.SwiftObjective-cprivate let bidderTokenLoader = BidderTokenLoader(mediationNetworkName: "MEDIATION_NETWORK_NAME")
@property (nonatomic, strong) YMABidderTokenLoader *bidderTokenLoader; self.bidderTokenLoader = [[YMABidderTokenLoader alloc] initWithMediationNetworkName: @"MEDIATION_NETWORK_NAME"];
-
Create a
BidderTokenRequestConfiguration
by passing the format of the requested ad.SwiftObjective-clet requestConfiguration = BidderTokenRequestConfiguration(adType: adType)
YMABidderTokenRequestConfiguration *requestConfiguration = [[YMABidderTokenRequestConfiguration alloc] initWithAdType:adType];
-
Set the banner size if you request a banner.
SwiftObjective-crequestConfiguration.bannerAdSize = BannerAdSize.fixedSize(withWidth: width, height: height)
requestConfiguration.bannerAdSize = [YMABannerAdSize fixedSizeWithWidth:width height:height];
-
Add information about the adapter.
SwiftObjective-crequestConfiguration.parameters = [ "adapter_version": "ADAPTER_VERSION", "adapter_network_sdk_version": "MEDIATION_SDK_VERSION" ]
requestConfiguration.parameters = @{ @"adapter_version": @"ADAPTER_VERSION", @"adapter_network_sdk_version": @"MEDIATION_SDK_VERSION" };
-
Load the bidder token.
SwiftObjective-cbidderTokenLoader.loadBidderToken(requestConfiguration: requestConfiguration) { bidderToken in // obtain generated token }
[self.bidderTokenLoader loadBidderTokenWithRequestConfiguration:requestConfiguration completionHandler:^(NSString *bidderToken) { // obtain generated token }];
Loading the ad from bid response on iOS client
When the Yandex bid wins an auction, the next step is to the load ad with the bidding data.
App open
// Creating a loader adLoader = AppOpenAdLoader()
adLoader.delegate = self;
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // ext.signaldata field from bidResponse
let adUnitId = "Yandex adUnitId" // Yandex ad unit ID set by publisher in mediation console
// Creating a request configuration
let requestConfiguration = MutableAdRequestConfiguration(adUnitID: adUnitId)
requestConfiguration.biddingData = biddingData
// Passing the request configuration to the loader
adLoader.loadAd(with: requestConfiguration)
// Creating a loader self.adLoader = [[YMAAppOpenAdLoader alloc] init];
self.adLoader.delegate = self;
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // ext.signaldata field from bidResponse
NSString *adUnitId = @"Yandex adUnitId"; // Yandex ad unit ID set by publisher in mediation console
// Creating a request configuration
YMAMutableAdRequestConfiguration *requestConfiguration = [[YMAMutableAdRequestConfiguration alloc] initWithAdUnitID:adUnitId];
requestConfiguration.biddingData = biddingData;
// Passing the request configuration to the loader
[self.adLoader loadAdWith:requestConfiguration];
A detailed guide on App Open integration is here.
Interstitial
// Creating a loader adLoader = InterstitialAdLoader()
adLoader.delegate = self;
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // ext.signaldata field from bidResponse
let adUnitId = "Yandex adUnitId" // Yandex ad unit ID set by publisher in mediation console
// Creating a request configuration
let requestConfiguration = MutableAdRequestConfiguration(adUnitID: adUnitId)
requestConfiguration.biddingData = biddingData
// Passing the request configuration to the loader
adLoader.loadAd(with: requestConfiguration)
// Creating a loader self.adLoader = [[YMAInterstitialAdLoader alloc] init];
self.adLoader.delegate = self;
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // ext.signaldata field from bidResponse
NSString *adUnitId = @"Yandex adUnitId"; // Yandex ad unit ID set by publisher in mediation console
// Creating a request configuration
YMAMutableAdRequestConfiguration *requestConfiguration = [[YMAMutableAdRequestConfiguration alloc] initWithAdUnitID:adUnitId];
requestConfiguration.biddingData = biddingData;
// Passing the request configuration to the loader
[self.adLoader loadAdWith:requestConfiguration];
A detailed guide on Interstitial is here.
Rewarded
// Creating a loader adLoader = RewardedAdLoader()
adLoader.delegate = self;
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // ext.signaldata field from bidResponse
let adUnitId = "Yandex adUnitId" // Yandex ad unit ID set by publisher in mediation console
// Creating a request configuration
let requestConfiguration = MutableAdRequestConfiguration(adUnitID: adUnitId)
requestConfiguration.biddingData = biddingData
// Passing the request configuration to the loader
adLoader.loadAd(with: requestConfiguration)
// Creating a loader self.adLoader = [[YMARewardedAdLoader alloc] init];
self.adLoader.delegate = self;
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // ext.signaldata field from bidResponse
NSString *adUnitId = @"Yandex adUnitId"; // Yandex ad unit ID set by publisher in mediation console
// Creating a request configuration
YMAMutableAdRequestConfiguration *requestConfiguration = [[YMAMutableAdRequestConfiguration alloc] initWithAdUnitID:adUnitId];
requestConfiguration.biddingData = biddingData;
// Passing the request configuration to the loader
[self.adLoader loadAdWith:requestConfiguration];
A detailed guide on Rewarded integration is here.
Banner
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // ext.signaldata field from bidResponse
let adUnitId = "Yandex adUnitId" // Yandex ad unit ID set by publisher in mediation console
// Creating an adView adView = AdView(adUnitID: adUnitId, adSize: adSize)
adView.delegate = self
// Creating a request configuration
let adRequest = MutableAdRequest()
adRequest.biddingData = biddingData
// Passing the request configuration to the loader
adView.loadAd(with: adRequest)
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // ext.signaldata field from bidResponse
NSString *adUnitId = @"Yandex adUnitId"; // Yandex ad unit ID set by publisher in mediation console
// Creating an adView self.adView = [[YMAAdView alloc] initWithAdUnitID:adUnitId adSize:adSize];
self.adView.delegate = self
// Creating a request configuration
YMAMutableAdRequest *adRequest = [[YMAMutableAdRequest alloc] init];
adRequest.biddingData = biddingData;
// Passing the request configuration to the loader
[self.adView loadAdWithRequest:adRequest];
Native
// Creating a loader adLoader = NativeAdLoader()
adLoader.delegate = self;
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // ext.signaldata field from bidResponse
let adUnitId = "Yandex adUnitId" // Yandex ad unit ID set by publisher in mediation console
// Creating a request configuration
let requestConfiguration = MutableNativeAdRequestConfiguration(adUnitID: adUnitId)
requestConfiguration.biddingData = biddingData
// Passing the request configuration to the loader
adLoader.loadAd(with: requestConfiguration)
// Creating a loader self.adLoader = [[YMANativeAdLoader alloc] init];
self.adLoader.delegate = self;
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // ext.signaldata field from bidResponse
NSString *adUnitId = @"Yandex adUnitId"; // Yandex ad unit ID set by publisher in mediation console
// Creating a request configuration
YMAMutableNativeAdRequestConfiguration *requestConfiguration =
[[YMAMutableNativeAdRequestConfiguration alloc] initWithAdUnitID:adUnitId];
requestConfiguration.biddingData = biddingData;
// Passing the request configuration to the loader
[self.adLoader loadAdWithRequestConfiguration:requestConfiguration];
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.
Detailed native ads docs are here.
Example
An example of the adapter is here.