Интеграция с 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"
}

Настройки на стороне клиента для iOS

См. Интеграция Mobile Ads SDK.

Настройки конфиденциальности

MobileAds.setUserConsent(userConsent)
MobileAds.setLocationTrackingEnabled(locationTrackingEnabled)
[YMAMobileAds setUserConsent: userConsent];
[YMAMobileAds setLocationTrackingEnabled: locationTrackingEnabled];

Генерация биддер токена на клиенте под iOS

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

  1. Создайте объект BidderTokenLoader и сделайте его полем класса.

    private let bidderTokenLoader = BidderTokenLoader(mediationNetworkName: "MEDIATION_NETWORK_NAME")
    
    @property (nonatomic, strong) YMABidderTokenLoader *bidderTokenLoader;
    self.bidderTokenLoader = [[YMABidderTokenLoader alloc] initWithMediationNetworkName: @"MEDIATION_NETWORK_NAME"];
    
  2. Создайте BidderTokenRequestConfiguration, указав нужный формат рекламного объявления.

    let requestConfiguration = BidderTokenRequestConfiguration(adType: adType)
    
    YMABidderTokenRequestConfiguration *requestConfiguration = [[YMABidderTokenRequestConfiguration alloc] initWithAdType:adType];
    
  3. Укажите размер баннера, если вам нужен баннерный формат рекламы.

    requestConfiguration.bannerAdSize = BannerAdSize.fixedSize(withWidth: width, height: height)
    
    requestConfiguration.bannerAdSize = [YMABannerAdSize fixedSizeWithWidth:width height:height];
    
  4. Добавьте информацию про адаптер.

    requestConfiguration.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"
    };
    
  5. Загрузите биддер токен.

    bidderTokenLoader.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.

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

Пример

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

Предыдущая