Интеграция с Open Bidding
Запрос/ответ ORTB
Чтобы получить конечную точку для межсерверной интеграции с Яндексом, обратитесь в службу поддержки.
Яндекс поддерживает OpenRTB API Specification 2.5.
Структура запроса ставки
Bid Request
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Строка |
Да |
Уникальный ID запроса ставки, предоставленный биржей |
|
Массив объектов |
Да |
Массив предлагаемых показов, см. Объект imp. Учитывается только первый объект |
|
Объект |
Да |
Данные о приложении паблишера, см. Объект app |
|
Объект |
Да |
Данные об устройстве пользователя, в котором будет отображаться рекламное объявление. См. Объект device |
|
Объект |
Да |
Данные о пользователе; рекламная аудитория. См. Объект user |
|
Целое число |
Да |
Максимальное время (в милисекундах), в течение которого биржа принимает ставки, включая время на передачу данных через интернет. Используется для предотвращения тайм-аутов |
|
Массив строк |
Да |
Валюты, которые поддерживаются в этом запросе, в виде альфа-кодов |
|
Целое число |
Нет |
Признак тестового режима, в котором оплата за аукционы не взимается. Возможные значения: |
|
Целое число |
Нет |
Тип аукциона. Возможные значения: |
|
Массив строк |
Нет |
Заблокированные категории рекламодателей по классификации контента IAB |
|
Объект |
Нет |
Объект |
app
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Строка |
Да |
ID приложения на данной платформе, который должен быть уникальным для приложения и не должен зависеть от рекламной биржи |
|
Строка |
Нет |
ID приложения на этой рекламной бирже |
|
Строка |
Нет |
Наименование приложения |
|
Массив строк |
Нет |
Массив категорий контента, относящихся к приложению по классификации IAB |
|
Строка |
Нет |
Версия приложения |
|
Объект |
Нет |
Информация о паблишере приложения |
|
Строка |
Нет |
Список ключевых слов для приложения, перечисленных через запятую |
publisher
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Строка |
Нет |
ID паблишера на рекламной бирже |
|
Строка |
Нет |
Наименование паблишера |
|
Массив строк |
Нет |
Массив категорий контента, характеризующих паблишера, по классификации IAB |
|
Строка |
Нет |
Домен верхнего уровня паблишера |
device
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Строка |
Да |
User Agent браузера |
|
Строка |
Да |
Ближайший к устройству адрес IPv4 |
|
Объект |
Нет |
Местоположение устройства, которое считается текущим местоположением пользователя. См. Объект geo |
|
Целое число |
Нет |
Стандартный признак |
|
Целое число |
Нет |
Признак |
|
Строка |
Нет |
Ближайший к устройству адрес IPv6 |
|
Строка |
Нет |
Операционная система устройства |
|
Строка |
Нет |
Версия операционной системы устройства |
|
Целое число |
Нет |
Физическая высота экрана в пикселях |
|
Целое число |
Нет |
Физическая ширина экрана в пикселях |
|
Строка |
Нет |
Язык браузера по стандарту |
|
Целое число |
Нет |
Тип сетевого соединения |
|
Строка |
Нет |
ID для рекламодателей, предоставляемый в открытом доступе |
geo
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Десятичная дробь |
Нет |
Широта от -90.0 до +90.0, где отрицательные числа соответствуют южному полушарию |
|
Десятичная дробь |
Нет |
Долгота от -180.0 до +180.0, где отрицательные числа соответствуют западному полушарию |
|
Строка |
Нет |
Код страны по стандарту |
|
Строка |
Нет |
Код региона по стандарту |
|
Строка |
Нет |
Город в соответствии с классификатором ООН для торговых и транспортных объектов |
imp
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Строка |
Да |
Уникальный идентификатор показа в контексте запроса ставки |
|
Строка |
Да |
Ad Unit ID из Партнерского интерфейса Яндекса |
|
Строка |
Да |
Тип рекламного объявления. Возможные значения: |
|
Объект |
Нет |
|
|
Объект |
Нет |
|
|
Объект |
Нет |
|
|
Целое число |
Нет |
Возможные значения: |
|
Целое число |
Нет |
Признак, получает ли пользователь вознаграждение за просмотр рекламы. Возможные значения: |
banner
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Целое число |
Нет |
Точная ширина устройства в виртуальных пикселях (DIPS) |
|
Целое число |
Нет |
Точная высота устройства в виртуальных пикселях (DIPS) |
|
Массив объектов |
Нет |
Массив объектов |
format
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Целое число |
Нет |
Ширина устройства в виртуальных пикселях (DIPS) |
|
Целое число |
Нет |
Высота устройства в виртуальных пикселях (DIPS) |
|
Целое число |
Нет |
Относительная ширина, если указать размер экрана в виде соотношения |
|
Целое число |
Нет |
Относительная высота, если указать размер экрана в виде соотношения |
|
Целое число |
Нет |
Минимальная ширина устройства в виртуальных пикселях (DIPS), на котором может отображаться реклама. Размер рекламы рассчитывается с сохранением пропорций |
video
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Массив строк |
Нет |
Точная ширина устройства в виртуальных пикселях (DIPS) |
|
Целое число |
Нет |
Ширина видеоплеера в виртуальных пикселях (DIPS) |
|
Целое число |
Нет |
Высота видеоплеера в виртуальных пикселях (DIPS) |
native
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Строка |
Нет |
Данные запроса (payload) в соответствии со Спецификацией нативной рекламы |
|
Целое число |
Нет |
Версия API динамической нативной рекламы, которой соответствует запрос |
user
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Строка |
Да |
Токен биддера, полученный от Yandex Mobile Ads SDK |
|
Строка |
Нет |
ID пользователя в конкретной рекламной сети |
|
Строка |
Нет |
Список ключевых слов, интересов и намерений (интентов), перечисленных через запятую |
regs
Объект
Параметр |
Тип |
Обязательность |
Описание |
|
Целое число |
Нет |
Признак, подпадает ли запрос под ограничения |
|
Целое число |
Нет |
Признак, подпадает ли запрос под ограничения |
|
Целое число |
Нет |
Признак, дал ли пользователь согласие. Возможные значения: |
|
Строка |
Нет |
Строка TCF consent в формате url safe base64. Yandex AC Vendor ID — |
Рекомендуемые заголовки в запросе ставок
Мы рекомендуем добавить заголовок X-Country-Code
и передать в нем код страны.
Примеры запросов ставок
{
"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=="
}
]
}
]
}
}
Тестовый режим для рекламных запросов
Чтобы получить тестовый ответ, в запросе oRTB в поле test
передайте значение 1
.
Структура ответа на запрос ставок
Bid Response
Объект
Параметр |
Тип |
Описание |
|
Строка |
ID рекламного запроса |
|
Строка |
Валюта запроса по классификатору альфа-кодов |
|
Массив объектов |
Массив из одного объекта seatbid |
seatbid
Объект
Параметр |
Тип |
Описание |
|
Массив объектов |
Массив из одного объекта bid |
bid
Объект
Параметр |
Тип |
Описание |
|
Строка |
ID ставки, сгенерированный биддером, для логирования и отслеживания |
|
Строка |
ID объекта |
|
Десятичная дробь |
Цена за тысячу показов, хотя в этой транзакции цена рассчитана за один показ |
|
Строка |
Информация о выбранном рекламном объявлении. Должна быть передана во время запроса клиента |
|
Строка |
URL-адрес уведомления о выигрыше, сформированного биржей при выигрыше ставки (не обязательно указывает на показанное, просмотренное или оплачиваемое объявление); необязательный способ размещения рекламной надбавки. |
|
Строка |
URL-адрес уведомления о выставлении счета, сформированного биржей, когда выигрышная ставка становится доступной для оплаты в соответствии с бизнес-политикой конкретной биржи |
|
Строка |
URL-адрес уведомления о проигрыше, сформированного биржей при проигрыше ставки |
Поддерживаемые макросы
Макрос |
Место |
Описание |
|
nurl, burl, lurl |
Расчетная цена в той же валюте и за те же единицы, что и в запросе |
|
lurl |
Коды причин проигрыша |
|
lurl, nurl |
Минимальная выигрышная ставка на бирже, в той же валюте и за те же единицы, что и в запросе |
Пример ответа за запрос ставок
{
"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
См. Интеграция Mobile Ads SDK.
Настройки конфиденциальности
MobileAds.setUserConsent(hasUserConsent)
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser)
MobileAds.setLocationConsent(hasLocationConsent)
MobileAds.setUserConsent(hasUserConsent);
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser);
MobileAds.setLocationConsent(hasLocationConsent);
Генерация биддер токена на клиенте под Android
На стороне клиента нужно собрать необходимые параметры для запроса ставок и отправить их на сервер аукциона. Ниже — пример кода получения биддер токена.
-
Создайте
BidderTokenRequestConfiguration
, указав нужный формат рекламного объявления.KotlinJavaval requestBuilder = BidderTokenRequestConfiguration.Builder(adType)
final BidderTokenRequestConfiguration.Builder requestBuilder = new BidderTokenRequestConfiguration.Builder(adType);
-
Укажите размер баннера, если вам нужен баннерный формат рекламы.
KotlinJavaval bannerAdSize = BannerAdSize.fixedSize(context, width, height) requestBuilder.setBannerAdSize(size)
final BannerAdSize bannerAdSize = new BannerAdSize.fixedSize(context, width, height); requestBuilder.setBannerAdSize(bannerAdSize);
-
Добавьте информацию про адаптер.
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);
-
Загрузите биддер токен.
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 } });
Загрузка рекламы из ответа на запрос ставки для клиента под Android
Когда ставка Яндекса выигрывает на аукционе, следующим шагом должна быть загрузка рекламы по предоставленным данным.
Реклама при открытии приложения
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);
Подробное руководство по интеграции рекламы при открытии приложения здесь.
Межстраничная реклама
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);
Подробное руководство по интеграции межстраничной рекламы здесь.
Реклама с вознаграждением
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);
Подробное руководство по рекламе с вознаграждением здесь.
Баннерная реклама
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);
Нативная реклама
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);
Нативный формат включает и обязательные, и опциональные компоненты. Способ передачи данных для аукциона сильно зависит от API вашего рекламного SDK. Шаблон показывает, как эти компоненты могут передаваться в адаптер в процессе выполнения запроса рекламного объявления с помощью маппинга текстового идентификатора и идентификатора компонента на стороне паблишера.
Подробная информация о нативной рекламе здесь.
Пример
Пример адаптера здесь.