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  | 
| 
 
  | 
 String  | 
 Yes  | 
 Unique ID of the bid request, provided by the exchange  | 
| 
 
  | 
 
  | 
 Yes  | 
 Array of   | 
| 
 
  | 
 
  | 
 Yes  | 
 Details via an   | 
| 
 device  | 
 device object  | 
 Yes  | 
 Details via a   | 
| 
 
  | 
 
  | 
 Yes  | 
 Details via a   | 
| 
 
  | 
 Integer  | 
 Yes  | 
 Maximum time in milliseconds the exchange allows for bids to be received including Internet latency to avoid timeout  | 
| 
 
  | 
 String array  | 
 Yes  | 
 Array of allowed currencies for bids on this bid request using   | 
| 
 
  | 
 Integer  | 
 No  | 
 Indicator of test mode in which auctions are not billable, where   | 
| 
 
  | 
 Integer  | 
 No  | 
 Auction type, where   | 
| 
 
  | 
 String array  | 
 No  | 
 Blocked advertiser categories using the IAB content categories  | 
| 
 
  | 
 
  | 
 No  | 
 A   | 
Appobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 String  | 
 Yes  | 
 A platform-specific application identifier intended to be unique to the app and independent of the exchange  | 
| 
 
  | 
 String  | 
 No  | 
 Exchange-specific app ID  | 
| 
 
  | 
 String  | 
 No  | 
 App name  | 
| 
 
  | 
 String array  | 
 No  | 
 Array of IAB content categories of the app  | 
| 
 
  | 
 String  | 
 No  | 
 Application version  | 
| 
 
  | 
 publisher object  | 
 No  | 
 Details about the Publisher of the app  | 
| 
 
  | 
 String  | 
 No  | 
 Comma separated list of keywords about the app  | 
Publisherobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 String  | 
 No  | 
 Exchange-specific publisher ID  | 
| 
 
  | 
 String  | 
 No  | 
 Publisher name  | 
| 
 
  | 
 String array  | 
 No  | 
 Array of IAB content categories that describe the publisher  | 
| 
 
  | 
 String  | 
 No  | 
 Highest level domain of the publisher  | 
Deviceobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 String  | 
 Yes  | 
 Browser user agent string  | 
| 
 
  | 
 String  | 
 Yes  | 
 IPv4 address closest to device  | 
| 
 
  | 
 
  | 
 No  | 
 Location of the device assumed to be the user’s current location defined by a   | 
| 
 
  | 
 Integer  | 
 No  | 
 Standard   | 
| 
 
  | 
 Integer  | 
 No  | 
 
  | 
| 
 
  | 
 String  | 
 No  | 
 IP address closest to device as IPv6  | 
| 
 
  | 
 String  | 
 No  | 
 Device operating system  | 
| 
 
  | 
 String  | 
 No  | 
 Device operating system version  | 
| 
 
  | 
 Integer  | 
 No  | 
 Physical height of the screen in pixels  | 
| 
 
  | 
 Integer  | 
 No  | 
 Physical width of the screen in pixels  | 
| 
 
  | 
 String  | 
 No  | 
 Browser language using   | 
| 
 
  | 
 Integer  | 
 No  | 
 Network connection type  | 
| 
 
  | 
 String  | 
 No  | 
 ID sanctioned for advertiser use in the clear  | 
Geoobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 Float  | 
 No  | 
 Latitude from -90.0 to +90.0, where negative is south  | 
| 
 
  | 
 Float  | 
 No  | 
 Longitude from -180.0 to +180.0, where negative is west  | 
| 
 
  | 
 String  | 
 No  | 
 Country code using   | 
| 
 
  | 
 String  | 
 No  | 
 Region code using   | 
| 
 
  | 
 String  | 
 No  | 
 City using United Nations Code for Trade & Transport Locations  | 
Impobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 String  | 
 Yes  | 
 A unique identifier for this impression within the context of the bid request  | 
| 
 
  | 
 String  | 
 Yes  | 
 Yandex Ads ad unit ID  | 
| 
 
  | 
 String  | 
 Yes  | 
 A type of the ad. Values:   | 
| 
 
  | 
 
  | 
 No  | 
|
| 
 
  | 
 
  | 
 No  | 
|
| 
 
  | 
 
  | 
 No  | 
|
| 
 
  | 
 Integer  | 
 No  | 
 
  | 
| 
 
  | 
 Integer  | 
 No  | 
 Indicates whether the user receives a reward for viewing the ad, where   | 
Bannerobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 Integer  | 
 No  | 
 Exact width in device independent pixels (DIPS)  | 
| 
 
  | 
 Integer  | 
 No  | 
 Exact height in device independent pixels (DIPS)  | 
| 
 
  | 
 
  | 
 No  | 
 Array of   | 
Formatobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 Integer  | 
 No  | 
 Width in device independent pixels (DIPS)  | 
| 
 
  | 
 Integer  | 
 No  | 
 Height in device independent pixels (DIPS)  | 
| 
 
  | 
 Integer  | 
 No  | 
 Relative width when expressing size as a ratio  | 
| 
 
  | 
 Integer  | 
 No  | 
 Relative height when expressing size as a ratio  | 
| 
 
  | 
 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  | 
| 
 
  | 
 String array  | 
 No  | 
 Exact width in device independent pixels (DIPS)  | 
| 
 
  | 
 Integer  | 
 No  | 
 Width of the video player in device independent pixels (DIPS)  | 
| 
 
  | 
 Integer  | 
 No  | 
 Height of the video player in device independent pixels (DIPS)  | 
Nativeobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 String  | 
 No  | 
 Request payload complying with the Native Ad Specification  | 
| 
 
  | 
 Integer  | 
 No  | 
 Version of the Dynamic Native Ads API to which request complies  | 
Userobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 String  | 
 Yes  | 
 Bidder token acquired from Yandex Mobile Ads SDK  | 
| 
 
  | 
 String  | 
 No  | 
 Exchange-specific ID for the user  | 
| 
 
  | 
 String  | 
 No  | 
 Comma separated list of keywords, interests, or intent  | 
Regsobject
| 
 Attribute  | 
 Type  | 
 Required  | 
 Description  | 
| 
 
  | 
 Integer  | 
 No  | 
 Flag indicating if this request is subject to the   | 
| 
 
  | 
 Integer  | 
 No  | 
 Flag indicating if this request is subject to the   | 
| 
 
  | 
 Integer  | 
 No  | 
 Flag indicating if a user has granted consent, where   | 
| 
 
  | 
 String  | 
 No  | 
 TCF consent string as url safe base64 string. Yandex AC Vendor ID is   | 
Recommended headers in bid request
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 Response object
| 
 Attribute  | 
 Type  | 
 Description  | 
| 
 
  | 
 String  | 
 ID of the bid request to which this is a response  | 
| 
 
  | 
 String  | 
 Bid currency using   | 
| 
 
  | 
 
  | 
 Array of 1 Seatbid object  | 
Seatbidobject
| 
 Attribute  | 
 Type  | 
 Description  | 
| 
 
  | 
 
  | 
 Array of 1 Bid object  | 
Bidobject
| 
 Attribute  | 
 Type  | 
 Description  | 
| 
 
  | 
 String  | 
 Bidder generated bid ID to assist with logging/tracking  | 
| 
 
  | 
 String  | 
 ID of the   | 
| 
 
  | 
 Float  | 
 Bid price expressed as CPM although the actual transaction is for a unit impression only  | 
| 
 
  | 
 String  | 
 Information about the selected ad. It must be transmitted during a client request  | 
| 
 
  | 
 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  | 
| 
 
  | 
 String  | 
 Billing notice URL called by the exchange when a winning bid becomes billable based on exchange-specific business policy  | 
| 
 
  | 
 String  | 
 Loss notice URL called by the exchange when a bid is known to have been lost  | 
Supported macros
| 
 Macro  | 
 Place  | 
 Description  | 
| 
 
  | 
 nurl, burl, lurl  | 
 Clearing price using the same currency and units as the bid  | 
| 
 
  | 
 lurl  | 
 Loss reason codes  | 
| 
 
  | 
 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"
}
        
    Android client-side setup
See Android SDK integration guide.
Set privacy settings
MobileAds.setUserConsent(hasUserConsent)
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser)
MobileAds.setLocationConsent(hasLocationConsent)
        
    MobileAds.setUserConsent(hasUserConsent);
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser);
MobileAds.setLocationConsent(hasLocationConsent);
        
    Bidder token generation in Android 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.
- 
Create a
BidderTokenRequestConfigurationby passing the format of the requested ad.KotlinJavaval requestBuilder = BidderTokenRequestConfiguration.Builder(adType)final BidderTokenRequestConfiguration.Builder requestBuilder = new BidderTokenRequestConfiguration.Builder(adType); - 
Set the banner size if you request a banner.
KotlinJavaval bannerAdSize = BannerAdSize.fixedSize(context, width, height) requestBuilder.setBannerAdSize(size)final BannerAdSize bannerAdSize = new BannerAdSize.fixedSize(context, width, height); requestBuilder.setBannerAdSize(bannerAdSize); - 
Add information about the adapter.
KotlinJavaval 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); - 
Load the bidder token.
KotlinJavaval 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 } }); 
Loading the ad from bid response on Android client
When the Yandex bid wins an auction, the next step is to the load ad with the bidding data.
App open
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);
        
    A detailed guide on App Open integration is here.
Interstitial
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);
        
    A detailed guide on Interstitial is here.
Rewarded
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);
        
    A detailed guide on Rewarded integration is here.
Banner
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);
        
    Native
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);
        
    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. The template shows how these assets are passed to adapter during the ad request by providing a map of string identifier to asset view identifier on the publisher side.
Detailed native ads docs are here.
Example
An example of the adapter is here.