Open Bidding network integration

ORTB Request/Response

Yandex endpoint for server-server integration that will be provided by the manager.

Yandex supports the OpenRTB API Specification 2.5.

Bid Request structure

Bid RequestObject

Attribute

Type

Required

Description

id

String

Yes

Unique ID of the bid request, provided by the exchange

imp

Imp objects array

Yes

Array of Imp objects representing the impressions offered (see Imp object). Only the first imp object is taken into account

app

App object

Yes

Details via an App object about the publisher’s app (see App object)

device

Device object

Yes

Details via a Device object about the user’s device to which the impression will be delivered (see Device object)

user

User object

Yes

Details via a User object about the human user of the device; the advertising audience (see User object)

tmax

Integer

Yes

Maximum time in milliseconds the exchange allows for bids to be received including Internet latency to avoid timeout

cur

String array

Yes

Array of allowed currencies for bids on this bid request using ISO-4217 alpha codes; ["USD"] by default

test

Integer

No

Indicator of test mode in which auctions are not billable, where 0 = live mode, 1 = test mode; 0 by default

at

Integer

No

Auction type, where 1 = First Price, 2 = Second Price Plus; 1 by default

bcat

String array

No

Blocked advertiser categories using the IAB content categories

regs

Regs object

No

A Regs object that specifies any industry, legal, or governmental regulations in force for this request (see Reqs object)

Appobject

Attribute

Type

Required

Description

bundle

String

Yes

A platform-specific application identifier intended to be unique to the app and independent of the exchange

id

String

No

Exchange-specific app ID

name

String

No

App name

cat

String array

No

Array of IAB content categories of the app

ver

String

No

Application version

publisher

Publisher object

No

Details about the Publisher of the app

keywords

String

No

Comma separated list of keywords about the app

Publisherobject

Attribute

Type

Required

Description

id

String

No

Exchange-specific publisher ID

name

String

No

Publisher name

cat

String array

No

Array of IAB content categories that describe the publisher

domain

String

No

Highest level domain of the publisher

Deviceobject

Attribute

Type

Required

Description

ua

String

Yes

Browser user agent string

ip

String

Yes

IPv4 address closest to device

geo

Geo object

No

Location of the device assumed to be the user’s current location defined by a Geo object (see Geo object)

dnt

Integer

No

Standard Do Not Track flag as set in the header by the browser, where 0 = tracking is unrestricted, 1 = do not track

lmt

Integer

No

Limit Ad Tracking signal commercially endorsed, where 0 = tracking is unrestricted, 1 = tracking must be limited per commercial guidelines

ipv6

String

No

IP address closest to device as IPv6

os

String

No

Device operating system

osv

String

No

Device operating system version

h

Integer

No

Physical height of the screen in pixels

w

Integer

No

Physical width of the screen in pixels

language

String

No

Browser language using ISO-639-1-alpha-2

connectiontype

Integer

No

Network connection type

ifa

String

No

ID sanctioned for advertiser use in the clear

Geoobject

Attribute

Type

Required

Description

lat

Float

No

Latitude from -90.0 to +90.0, where negative is south

lon

Float

No

Longitude from -180.0 to +180.0, where negative is west

country

String

No

Country code using ISO-3166-1-alpha-3

region

String

No

Region code using ISO-3166-2; 2-letter state code if USA

city

String

No

City using United Nations Code for Trade & Transport Locations

Impobject

Attribute

Type

Required

Description

id

String

Yes

A unique identifier for this impression within the context of the bid request

tagid

String

Yes

Yandex Ads ad unit ID

ext.ad_type

String

Yes

A type of the ad. Values: banner, interstitial, rewarded, appopenad, native

banner

Banner object

No

A Banner object

video

Video object

No

A Video object

native

Native object

No

A Native object

instl

Integer

No

1 = the ad is interstitial or full screen, 0 = not interstitial

rwdd

Integer

No

Indicates whether the user receives a reward for viewing the ad, where 0 = no, 1 = yes

Attribute

Type

Required

Description

w

Integer

No

Exact width in device independent pixels (DIPS)

h

Integer

No

Exact height in device independent pixels (DIPS)

format

Format objects array

No

Array of Format objects representing the banner sizes permitted (see Format object)

Formatobject

Attribute

Type

Required

Description

w

Integer

No

Width in device independent pixels (DIPS)

h

Integer

No

Height in device independent pixels (DIPS)

wratio

Integer

No

Relative width when expressing size as a ratio

hratio

Integer

No

Relative height when expressing size as a ratio

wmin

Integer

No

The minimum width in device independent pixels (DIPS) at which the ad will be displayed the size is expressed as a ratio

Videoobject

Attribute

Type

Required

Description

mimes

String array

No

Exact width in device independent pixels (DIPS)

w

Integer

No

Width of the video player in device independent pixels (DIPS)

h

Integer

No

Height of the video player in device independent pixels (DIPS)

Nativeobject

Attribute

Type

Required

Description

request

String

No

Request payload complying with the Native Ad Specification

ver

Integer

No

Version of the Dynamic Native Ads API to which request complies

Userobject

Attribute

Type

Required

Description

data.segment.signal

String

Yes

Bidder token acquired from Yandex Mobile Ads SDK

id

String

No

Exchange-specific ID for the user

keywords

String

No

Comma separated list of keywords, interests, or intent

Regs object

Attribute

Type

Required

Description

coppa

Integer

No

Flag indicating if this request is subject to the COPPA regulations, where 0 = no, 1 = yes

gdpr

Integer

No

Flag indicating if this request is subject to the GDPR regulations, where 0 = no, 1 = yes

ext.consent

Integer

No

Flag indicating if a user has granted consent, where 0 = no, 1 = yes

ext.tcf_consent_string

String

No

TCF consent string as url safe base64 string. Yandex AC Vendor ID is 1033

We recommend adding a header X-Country-Code with the value of the country code.

Bid Request examples

{
  "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=="
          }
        ]
      }
    ]
  }
}

Test Bid Response

To get a test response, specify test field in oRTB request with 1 value.

Bid Response structure

Bid Responseobject

Attribute

Type

Description

id

String

ID of the bid request to which this is a response

cur

String

Bid currency using ISO-4217 alpha codes

seatbid

seatbid objects array

Array of 1 Seatbid object

Seatbidobject

Attribute

Type

Description

bid

bid objects array

Array of 1 Bid object

Bidobject

Attribute

Type

Description

id

String

Bidder generated bid ID to assist with logging/tracking

impid

String

ID of the Imp object in the related bid request

price

Float

Bid price expressed as CPM although the actual transaction is for a unit impression only

ext.signaldata

String

Information about the selected ad. It must be transmitted during a client request

nurl

String

Win notice URL called by the exchange if the bid wins (not necessarily indicative of a delivered, viewed, or billable ad); optional means of serving ad markup

burl

String

Billing notice URL called by the exchange when a winning bid becomes billable based on exchange-specific business policy

lurl

String

Loss notice URL called by the exchange when a bid is known to have been lost

Supported macros

Macro

Place

Description

AUCTION_PRICE

nurl, burl, lurl

Clearing price using the same currency and units as the bid

AUCTION_LOSS

lurl

Loss reason codes

AUCTION_MIN_TO_WIN

lurl, nurl

Minimum bid to win the exchange's auction, using the same currency and units as the bid

Bid Response example

{
    "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 Client setup

See iOS SDK integration guide.

Set privacy settings

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

Bidder token generation in iOS client

On the client side, we need to gather the required parameters for the auction request and send it to the auction server. Here the code example of obtaining the bidder token.

  1. Create a BidderTokenLoader object and make it a class field.

    private let bidderTokenLoader = BidderTokenLoader(mediationNetworkName: "MEDIATION_NETWORK_NAME")
    
    @property (nonatomic, strong) YMABidderTokenLoader *bidderTokenLoader;
    self.bidderTokenLoader = [[YMABidderTokenLoader alloc] initWithMediationNetworkName: @"MEDIATION_NETWORK_NAME"];
    
  2. Create a BidderTokenRequestConfiguration by passing the format of the requested ad.

    let requestConfiguration = BidderTokenRequestConfiguration(adType: adType)
    
    YMABidderTokenRequestConfiguration *requestConfiguration = [[YMABidderTokenRequestConfiguration alloc] initWithAdType:adType];
    
  3. Set the banner size if you request a banner.

    requestConfiguration.bannerAdSize = BannerAdSize.fixedSize(withWidth: width, height: height)
    
    requestConfiguration.bannerAdSize = [YMABannerAdSize fixedSizeWithWidth:width height:height];
    
  4. Add information about the adapter.

    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. Load the bidder token.

    bidderTokenLoader.loadBidderToken(requestConfiguration: requestConfiguration) { bidderToken in
        // obtain generated token
    }
    
    [self.bidderTokenLoader loadBidderTokenWithRequestConfiguration:requestConfiguration completionHandler:^(NSString *bidderToken) {
        // obtain generated token
    }];
    

Loading the ad from bid response on iOS client

When the Yandex bid wins an auction, the next step is to the load ad with the bidding data.

App open

// 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];

A detailed guide on App Open integration is here.

Interstitial

// 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];

A detailed guide on Interstitial is here.

Rewarded

// 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];

A detailed guide on Rewarded integration is here.

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];

Native

// 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];

Native format includes both the required and optional assets. The way to provide custom assets for binding strongly depends on the API of your ads SDK.

Detailed native ads docs are here.

Example

An example of the adapter is here.

Previous