Интеграция с 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"
}
Настройки на стороне клиента для iOS
См. Интеграция Mobile Ads SDK.
Настройки конфиденциальности
MobileAds.setUserConsent(userConsent)
MobileAds.setLocationTrackingEnabled(locationTrackingEnabled)
[YMAMobileAds setUserConsent: userConsent];
[YMAMobileAds setLocationTrackingEnabled: locationTrackingEnabled];
Генерация биддер токена на клиенте под iOS
На стороне клиента нужно собрать необходимые параметры для запроса ставок и отправить их на сервер аукциона. Ниже — пример кода получения биддер токена.
-
Создайте объект
BidderTokenLoader
и сделайте его полем класса.SwiftObjective-cprivate let bidderTokenLoader = BidderTokenLoader(mediationNetworkName: "MEDIATION_NETWORK_NAME")
@property (nonatomic, strong) YMABidderTokenLoader *bidderTokenLoader; self.bidderTokenLoader = [[YMABidderTokenLoader alloc] initWithMediationNetworkName: @"MEDIATION_NETWORK_NAME"];
-
Создайте
BidderTokenRequestConfiguration
, указав нужный формат рекламного объявления.SwiftObjective-clet requestConfiguration = BidderTokenRequestConfiguration(adType: adType)
YMABidderTokenRequestConfiguration *requestConfiguration = [[YMABidderTokenRequestConfiguration alloc] initWithAdType:adType];
-
Укажите размер баннера, если вам нужен баннерный формат рекламы.
SwiftObjective-crequestConfiguration.bannerAdSize = BannerAdSize.fixedSize(withWidth: width, height: height)
requestConfiguration.bannerAdSize = [YMABannerAdSize fixedSizeWithWidth:width height:height];
-
Добавьте информацию про адаптер.
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" };
-
Загрузите биддер токен.
SwiftObjective-cbidderTokenLoader.loadBidderToken(requestConfiguration: requestConfiguration) { bidderToken in // obtain generated token }
[self.bidderTokenLoader loadBidderTokenWithRequestConfiguration:requestConfiguration completionHandler:^(NSString *bidderToken) { // obtain generated token }];
Загрузка рекламы из ответа на запрос ставки для клиента под iOS
Когда ставка Яндекса выигрывает на аукционе, следующим шагом должна быть загрузка рекламы по предоставленным данным.
Реклама при открытии приложения
// 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];
Подробное руководство по интеграции рекламы при открытии приложения здесь.
Межстраничная реклама
// 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];
Подробное руководство по интеграции межстраничной рекламы здесь.
Реклама с вознаграждением
// 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];
Подробное руководство по рекламе с вознаграждением здесь.
Баннерная реклама
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];
Нативная реклама
// 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];
Нативный формат включает и обязательные, и опциональные компоненты. Способ передачи данных для аукциона сильно зависит от API вашего рекламного SDK.
Подробная информация о нативной рекламе здесь.
Пример
Пример адаптера здесь.