Интеграция с Open Bidding

Запрос/ответ ORTB

Чтобы получить конечную точку для межсерверной интеграции с Яндексом, обратитесь в службу поддержки.

Яндекс поддерживает OpenRTB API Specification 2.5.

Структура запроса ставки

Объект Bid Request

Параметр

Тип

Обязательность

Описание

id

Строка

Да

Уникальный ID запроса ставки, предоставленный биржей

imp

Массив объектов imp

Да

Массив предлагаемых показов, см. Объект imp. Учитывается только первый объект imp

app

Объект app

Да

Данные о приложении паблишера, см. Объект app

device

Объект device

Да

Данные об устройстве пользователя, в котором будет отображаться рекламное объявление. См. Объект device

user

Объект user

Да

Данные о пользователе; рекламная аудитория. См. Объект user

tmax

Целое число

Да

Максимальное время (в милисекундах), в течение которого биржа принимает ставки, включая время на передачу данных через интернет. Используется для предотвращения тайм-аутов

cur

Массив строк

Да

Валюты, которые поддерживаются в этом запросе, в виде альфа-кодов ISO-4217. Значение по умолчанию: ["USD"]

test

Целое число

Нет

Признак тестового режима, в котором оплата за аукционы не взимается. Возможные значения: 0 — реальный запрос, 1 — тестовый запрос. Значение по умолчанию: 0

at

Целое число

Нет

Тип аукциона. Возможные значения: 1 — первой цены, 2 — второй цены плюс. Значение по умолчанию: 1

bcat

Массив строк

Нет

Заблокированные категории рекламодателей по классификации контента IAB

regs

Объект regs

Нет

Объект regs, который определяет отраслевые, юридические и государственные ограничения, влияющие на этот запрос (см. Объект reqs)

Объект app

Параметр

Тип

Обязательность

Описание

bundle

Строка

Да

ID приложения на данной платформе, который должен быть уникальным для приложения и не должен зависеть от рекламной биржи

id

Строка

Нет

ID приложения на этой рекламной бирже

name

Строка

Нет

Наименование приложения

cat

Массив строк

Нет

Массив категорий контента, относящихся к приложению по классификации IAB

ver

Строка

Нет

Версия приложения

publisher

Объект publisher

Нет

Информация о паблишере приложения

keywords

Строка

Нет

Список ключевых слов для приложения, перечисленных через запятую

Объект publisher

Параметр

Тип

Обязательность

Описание

id

Строка

Нет

ID паблишера на рекламной бирже

name

Строка

Нет

Наименование паблишера

cat

Массив строк

Нет

Массив категорий контента, характеризующих паблишера, по классификации IAB

domain

Строка

Нет

Домен верхнего уровня паблишера

Объект device

Параметр

Тип

Обязательность

Описание

ua

Строка

Да

User Agent браузера

ip

Строка

Да

Ближайший к устройству адрес IPv4

geo

Объект geo

Нет

Местоположение устройства, которое считается текущим местоположением пользователя. См. Объект geo

dnt

Целое число

Нет

Стандартный признак Do Not Track (не отслеживать), который передан браузером в заголовке запроса. Возможные значения: 0 — отслеживание не запрещено, 1 — отслеживание запрещено

lmt

Целое число

Нет

Признак Limit Ad Tracking (ограничить отслеживание рекламы). Возможные значения: 0 — отслеживание не ограничено, 1 — отслеживание ограничено в соответствии с коммерческими рекомендациями

ipv6

Строка

Нет

Ближайший к устройству адрес IPv6

os

Строка

Нет

Операционная система устройства

osv

Строка

Нет

Версия операционной системы устройства

h

Целое число

Нет

Физическая высота экрана в пикселях

w

Целое число

Нет

Физическая ширина экрана в пикселях

language

Строка

Нет

Язык браузера по стандарту ISO-639-1-alpha-2

connectiontype

Целое число

Нет

Тип сетевого соединения

ifa

Строка

Нет

ID для рекламодателей, предоставляемый в открытом доступе

Объект geo

Параметр

Тип

Обязательность

Описание

lat

Десятичная дробь

Нет

Широта от -90.0 до +90.0, где отрицательные числа соответствуют южному полушарию

lon

Десятичная дробь

Нет

Долгота от -180.0 до +180.0, где отрицательные числа соответствуют западному полушарию

country

Строка

Нет

Код страны по стандарту ISO-3166-1-alpha-3

region

Строка

Нет

Код региона по стандарту ISO-3166-2, для США — двухбуквенный код штата

city

Строка

Нет

Город в соответствии с классификатором ООН для торговых и транспортных объектов

Объект imp

Параметр

Тип

Обязательность

Описание

id

Строка

Да

Уникальный идентификатор показа в контексте запроса ставки

tagid

Строка

Да

Ad Unit ID из Партнерского интерфейса Яндекса

ext.ad_type

Строка

Да

Тип рекламного объявления. Возможные значения: banner, interstitial, rewarded, appopenad, native

banner

Объект banner

Нет

Объект banner

video

Объект video

Нет

Объект video

native

Объект native

Нет

Объект native

instl

Целое число

Нет

Возможные значения: 1 — реклама межстраничная или полноэкранная, 0 — не межстраничная

rwdd

Целое число

Нет

Признак, получает ли пользователь вознаграждение за просмотр рекламы. Возможные значения: 0 — не получает, 1 — получает

Параметр

Тип

Обязательность

Описание

w

Целое число

Нет

Точная ширина устройства в виртуальных пикселях (DIPS)

h

Целое число

Нет

Точная высота устройства в виртуальных пикселях (DIPS)

format

Массив объектов format

Нет

Массив объектов format с данными о разрешенных размерах рекламных объявлений. См. Объект format

Объект format

Параметр

Тип

Обязательность

Описание

w

Целое число

Нет

Ширина устройства в виртуальных пикселях (DIPS)

h

Целое число

Нет

Высота устройства в виртуальных пикселях (DIPS)

wratio

Целое число

Нет

Относительная ширина, если указать размер экрана в виде соотношения

hratio

Целое число

Нет

Относительная высота, если указать размер экрана в виде соотношения

wmin

Целое число

Нет

Минимальная ширина устройства в виртуальных пикселях (DIPS), на котором может отображаться реклама. Размер рекламы рассчитывается с сохранением пропорций

Объект video

Параметр

Тип

Обязательность

Описание

mimes

Массив строк

Нет

Точная ширина устройства в виртуальных пикселях (DIPS)

w

Целое число

Нет

Ширина видеоплеера в виртуальных пикселях (DIPS)

h

Целое число

Нет

Высота видеоплеера в виртуальных пикселях (DIPS)

Объект native

Параметр

Тип

Обязательность

Описание

request

Строка

Нет

Данные запроса (payload) в соответствии со Спецификацией нативной рекламы

ver

Целое число

Нет

Версия API динамической нативной рекламы, которой соответствует запрос

Объект user

Параметр

Тип

Обязательность

Описание

data.segment.signal

Строка

Да

Токен биддера, полученный от Yandex Mobile Ads SDK

id

Строка

Нет

ID пользователя в конкретной рекламной сети

keywords

Строка

Нет

Список ключевых слов, интересов и намерений (интентов), перечисленных через запятую

Объект regs

Параметр

Тип

Обязательность

Описание

coppa

Целое число

Нет

Признак, подпадает ли запрос под ограничения COPPA. Возможные значения: 0 — нет, 1 — да

gdpr

Целое число

Нет

Признак, подпадает ли запрос под ограничения GDPR. Возможные значения: 0 — нет, 1 — да

ext.consent

Целое число

Нет

Признак, дал ли пользователь согласие. Возможные значения: 0 — нет, 1 — да

ext.tcf_consent_string

Строка

Нет

Строка TCF consent в формате url safe base64. Yandex AC Vendor ID — 1033

Мы рекомендуем добавить заголовок 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

Строка

ID рекламного запроса

cur

Строка

Валюта запроса по классификатору альфа-кодов ISO-4217

seatbid

Массив объектов seatbid

Массив из одного объекта seatbid

Объект seatbid

Параметр

Тип

Описание

bid

Массив объектов bid

Массив из одного объекта bid

Объект bid

Параметр

Тип

Описание

id

Строка

ID ставки, сгенерированный биддером, для логирования и отслеживания

impid

Строка

ID объекта imp в связанной запросе ставки

price

Десятичная дробь

Цена за тысячу показов, хотя в этой транзакции цена рассчитана за один показ

ext.signaldata

Строка

Информация о выбранном рекламном объявлении. Должна быть передана во время запроса клиента

nurl

Строка

URL-адрес уведомления о выигрыше, сформированного биржей при выигрыше ставки (не обязательно указывает на показанное, просмотренное или оплачиваемое объявление); необязательный способ размещения рекламной надбавки.

burl

Строка

URL-адрес уведомления о выставлении счета, сформированного биржей, когда выигрышная ставка становится доступной для оплаты в соответствии с бизнес-политикой конкретной биржи

lurl

Строка

URL-адрес уведомления о проигрыше, сформированного биржей при проигрыше ставки

Поддерживаемые макросы

Макрос

Место

Описание

AUCTION_PRICE

nurl, burl, lurl

Расчетная цена в той же валюте и за те же единицы, что и в запросе

AUCTION_LOSS

lurl

Коды причин проигрыша

AUCTION_MIN_TO_WIN

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

На стороне клиента нужно собрать необходимые параметры для запроса ставок и отправить их на сервер аукциона. Ниже — пример кода получения биддер токена.

  1. Создайте BidderTokenRequestConfiguration, указав нужный формат рекламного объявления.

    val requestBuilder = BidderTokenRequestConfiguration.Builder(adType)
    
    final BidderTokenRequestConfiguration.Builder requestBuilder = new BidderTokenRequestConfiguration.Builder(adType);
    
  2. Укажите размер баннера, если вам нужен баннерный формат рекламы.

    val bannerAdSize = BannerAdSize.fixedSize(context, width, height)
    requestBuilder.setBannerAdSize(size)
    
    final BannerAdSize bannerAdSize = new BannerAdSize.fixedSize(context, width, height);
    requestBuilder.setBannerAdSize(bannerAdSize);
    
  3. Добавьте информацию про адаптер.

    val 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);
    
  4. Загрузите биддер токен.

    val 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. Шаблон показывает, как эти компоненты могут передаваться в адаптер в процессе выполнения запроса рекламного объявления с помощью маппинга текстового идентификатора и идентификатора компонента на стороне паблишера.

Подробная информация о нативной рекламе здесь.

Пример

Пример адаптера здесь.

Предыдущая
Следующая