Интеграция с 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.
Настройки конфиденциальности
YandexAds.setUserConsent(userConsent)
YandexAds.setAgeRestricted(ageRestrictedUser)
YandexAds.setLocationTracking(locationTrackingEnabled)
[YMAYandexAds setUserConsent:userConsent];
[YMAYandexAds setAgeRestricted:ageRestrictedUser];
[YMAYandexAds setLocationTracking:locationTrackingEnabled];
Генерация биддер токена на клиенте под iOS
На стороне клиента нужно собрать необходимые параметры для запроса ставок и отправить их на сервер аукциона. Ниже — пример кода получения биддер-токена для Yandex Mobile Ads SDK 8. При переходе с более ранних версий SDK см. руководство по миграции на версию 8.
-
Перед запросом токена задайте идентификацию медиационного адаптера и инициализируйте SDK (требуется для адаптеров медиации).
SwiftObjective-clet adapterIdentity = AdapterIdentity( adapterNetworkName: "MEDIATION_NETWORK_NAME", adapterVersion: "ADAPTER_VERSION", adapterNetworkVersion: "MEDIATION_SDK_VERSION" ) YandexAds.setAdapterIdentity(adapterIdentity) YandexAds.initializeSDK()YMAAdapterIdentity *identity = [[YMAAdapterIdentity alloc] initWithAdapterNetworkName:@"MEDIATION_NETWORK_NAME" adapterVersion:@"ADAPTER_VERSION" adapterNetworkVersion:@"MEDIATION_SDK_VERSION"]; [YMAYandexAds setAdapterIdentity:identity]; [YMAYandexAds initializeSDK]; -
Создайте экземпляр
BidderTokenLoaderи сохраните его (например, в свойстве класса).SwiftObjective-cprivate let bidderTokenLoader = BidderTokenLoader()@property (nonatomic, strong) YMABidderTokenLoader *bidderTokenLoader; self.bidderTokenLoader = [[YMABidderTokenLoader alloc] init]; -
Соберите
BidderTokenRequestдля нужного формата рекламы. Для баннера укажитеBannerAdSizeв фабричном методе; для остальных форматов используйте соответствующий метод.SwiftObjective-clet targeting = AdTargeting() // Banner let bannerSize = BannerAdSize.fixed(width: width, height: height) let tokenRequest = BidderTokenRequest.banner( size: bannerSize, targeting: targeting, parameters: nil ) // Interstitial (similar: .rewarded, .native, .appOpenAd) // let tokenRequest = BidderTokenRequest.interstitial( // targeting: targeting, // parameters: nil // )YMAAdTargeting *targeting = [[YMAAdTargeting alloc] initWithAge:nil gender:nil location:nil contextQuery:nil contextTags:nil]; // Banner YMABannerAdSize *bannerSize = [YMABannerAdSize fixedWithWidth:width height:height]; YMABidderTokenRequest *tokenRequest = [YMABidderTokenRequest bannerWithSize:bannerSize targeting:targeting parameters:nil]; // Interstitial (similar: rewarded, native, appOpenAd) // YMABidderTokenRequest *tokenRequest = // [YMABidderTokenRequest interstitialWithTargeting:targeting parameters:nil]; -
Загрузите биддер-токен.
SwiftObjective-cbidderTokenLoader.loadBidderToken(request: tokenRequest) { bidderToken in // obtain generated token }[self.bidderTokenLoader loadBidderTokenWithRequest:tokenRequest completionHandler:^(NSString *bidderToken) { // obtain generated token }];
Загрузка рекламы из ответа на запрос ставки для клиента под iOS
Когда ставка Яндекса выигрывает на аукционе, следующим шагом должна быть загрузка рекламы по предоставленным данным.
Реклама при открытии приложения
let adLoader = AppOpenAdLoader()
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
let request = AdRequest(adUnitID: adUnitId, biddingData: biddingData)
adLoader.loadAd(with: request) { [weak self] result in
switch result {
case .success(let ad):
self?.appOpenAd = ad
self?.appOpenAd?.delegate = self
case .failure:
break
}
}
self.adLoader = [[YMAAppOpenAdLoader alloc] init];
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
YMAAdRequest *request = [[YMAAdRequest alloc] initWithAdUnitID:adUnitId biddingData:biddingData];
[self.adLoader loadAdWithRequest:request
completionHandler:^(YMAAppOpenAd *_Nullable ad, NSError *_Nullable error) {
if (ad) {
self.appOpenAd = ad;
self.appOpenAd.delegate = self;
}
}];
Подробное руководство по интеграции рекламы при открытии приложения здесь.
Межстраничная реклама
let adLoader = InterstitialAdLoader()
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
let request = AdRequest(adUnitID: adUnitId, biddingData: biddingData)
adLoader.loadAd(with: request) { [weak self] result in
switch result {
case .success(let ad):
self?.interstitialAd = ad
self?.interstitialAd?.delegate = self
case .failure:
break
}
}
self.adLoader = [[YMAInterstitialAdLoader alloc] init];
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
YMAAdRequest *request = [[YMAAdRequest alloc] initWithAdUnitID:adUnitId biddingData:biddingData];
[self.adLoader loadAdWithRequest:request
completionHandler:^(YMAInterstitialAd *_Nullable ad, NSError *_Nullable error) {
if (ad) {
self.interstitialAd = ad;
self.interstitialAd.delegate = self;
}
}];
Подробное руководство по интеграции межстраничной рекламы здесь.
Реклама с вознаграждением
let adLoader = RewardedAdLoader()
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
let request = AdRequest(adUnitID: adUnitId, biddingData: biddingData)
adLoader.loadAd(with: request) { [weak self] result in
switch result {
case .success(let ad):
self?.rewardedAd = ad
self?.rewardedAd?.delegate = self
case .failure:
break
}
}
self.adLoader = [[YMARewardedAdLoader alloc] init];
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
YMAAdRequest *request = [[YMAAdRequest alloc] initWithAdUnitID:adUnitId biddingData:biddingData];
[self.adLoader loadAdWithRequest:request
completionHandler:^(YMARewardedAd *_Nullable ad, NSError *_Nullable error) {
if (ad) {
self.rewardedAd = ad;
self.rewardedAd.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
let bannerAdView = BannerAdView(adSize: adSize)
bannerAdView.delegate = self
let request = AdRequest(adUnitID: adUnitId, biddingData: biddingData)
bannerAdView.loadAd(with: request)
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
self.bannerAdView = [[YMABannerAdView alloc] initWithAdSize:adSize];
self.bannerAdView.delegate = self;
YMAAdRequest *request = [[YMAAdRequest alloc] initWithAdUnitID:adUnitId biddingData:biddingData];
[self.bannerAdView loadAdWithRequest:request];
Нативная реклама
let adLoader = NativeAdLoader()
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
let request = AdRequest(adUnitID: adUnitId, biddingData: biddingData)
let options = NativeAdOptions()
adLoader.loadAd(with: request, options: options) { result in
switch result {
case .success(let ad):
break // native ad loaded
case .failure:
break
}
}
self.adLoader = [[YMANativeAdLoader alloc] init];
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
YMAAdRequest *request = [[YMAAdRequest alloc] initWithAdUnitID:adUnitId biddingData:biddingData];
YMANativeAdOptions *options = [[YMANativeAdOptions alloc] init];
[self.adLoader loadAdWithRequest:request
options:options
completionHandler:^(id<YMANativeAd> _Nullable ad, NSError *_Nullable error) {
if (ad) {
// native ad loaded
}
}];
Нативный формат включает и обязательные, и опциональные компоненты. Способ передачи данных для аукциона сильно зависит от API вашего рекламного SDK.
Подробная информация о нативной рекламе здесь.
Пример
Пример адаптера здесь.