공개 입찰 네트워크 통합
ORTB 요청/응답
관리자가 제공하는 서버 간 통합을 위한 Yandex 엔드포인트.
Yandex는 OpenRTB API Specification 2.5를 지원합니다.
입찰가 요청 구조
Bid Request
객체
속성 |
유형 |
필수 |
설명 |
|
문자열 |
예 |
거래소에서 제공하는 입찰가 요청의 고유 ID |
|
|
예 |
제공된 노출을 나타내는 |
|
|
예 |
게시자의 앱에 대한 |
device |
장치 객체 |
예 |
노출이 전달될 사용자의 장치에 대한 |
|
|
예 |
장치의 인간 사용자에 대한 |
|
정수 |
예 |
타임아웃을 피하기 위해 입찰가를 받는 데 거래소에서 허용하는 인터넷 지연 시간을 포함한 최대 시간(밀리초) |
|
문자열 배열 |
예 |
|
|
정수 |
아니요 |
경매가 청구되지 않는 테스트 모드의 표시기, 여기서 |
|
정수 |
아니요 |
경매 유형, 여기서 |
|
문자열 배열 |
아니요 |
IAB 콘텐츠 카테고리를 사용하여 차단된 광고주 카테고리 |
|
|
아니요 |
이 요청에 적용되는 산업, 법률 또는 정부 규정을 지정하는 |
App
객체
속성 |
유형 |
필수 |
설명 |
|
문자열 |
예 |
앱에 대해 고유하고 거래소와 독립적인 플랫폼별 애플리케이션 식별자 |
|
문자열 |
아니요 |
거래소별 앱 ID |
|
문자열 |
아니요 |
앱 이름 |
|
문자열 배열 |
아니요 |
앱의 IAB 콘텐츠 카테고리 배열 |
|
문자열 |
아니요 |
애플리케이션 버전 |
|
게시자 객체 |
아니요 |
앱 게시자에 대한 세부 정보 |
|
문자열 |
아니요 |
쉼표로 구분된 앱에 대한 키워드의 목록 |
Publisher
객체
속성 |
유형 |
필수 |
설명 |
|
문자열 |
아니요 |
거래소별 게시자 ID |
|
문자열 |
아니요 |
게시자 이름 |
|
문자열 배열 |
아니요 |
게시자를 설명하는 IAB 콘텐츠 카테고리 배열 |
|
문자열 |
아니요 |
게시자의 최상위 도메인 |
Device
객체
속성 |
유형 |
필수 |
설명 |
|
문자열 |
예 |
브라우저 사용자 에이전트 문자열 |
|
문자열 |
예 |
장치에 가장 가까운 IPv4 주소 |
|
|
아니요 |
사용자의 현재 위치로 가정되는 장치의 위치는 |
|
정수 |
아니요 |
표준 |
|
정수 |
아니요 |
상업적으로 승인된 |
|
문자열 |
아니요 |
IPv6로 장치에 가장 가까운 IP 주소 |
|
문자열 |
아니요 |
장치 운영 체제 |
|
문자열 |
아니요 |
장치 운영 체제 버전 |
|
정수 |
아니요 |
화면의 물리적 높이(픽셀) |
|
정수 |
아니요 |
화면의 물리적 너비(픽셀) |
|
문자열 |
아니요 |
|
|
정수 |
아니요 |
네트워크 연결 유형 |
|
문자열 |
아니요 |
광고주 사용이 승인된 ID |
Geo
객체
속성 |
유형 |
필수 |
설명 |
|
실수 |
아니요 |
위도 -90.0에서 +90.0까지, 음수는 남쪽 |
|
실수 |
아니요 |
경도 -180.0에서 +180.0까지, 음수는 서쪽 |
|
문자열 |
아니요 |
|
|
문자열 |
아니요 |
|
|
문자열 |
아니요 |
UN/LOCODE(유엔 유럽 경제 위원회의 지리적 코드 체계)를 사용하는 도시 |
Imp
객체
속성 |
유형 |
필수 |
설명 |
|
문자열 |
예 |
입찰가 요청 컨텍스트에서 이 노출에 대한 고유 식별자 |
|
문자열 |
예 |
Yandex Ads 광고 단위 ID |
|
문자열 |
예 |
광고의 유형. 값: |
|
|
아니요 |
|
|
|
아니요 |
|
|
|
아니요 |
|
|
정수 |
아니요 |
|
|
정수 |
아니요 |
사용자가 광고를 시청하여 보상을 받는지 여부를 나타내며, 여기서 |
Banner
객체
속성 |
유형 |
필수 |
설명 |
|
정수 |
아니요 |
밀도 독립 화소(DIPS)의 정확한 너비 |
|
정수 |
아니요 |
밀도 독립 화소(DIPS)의 정확한 높이 |
|
|
아니요 |
허용된 배너 크기를 나타내는 |
Format
객체
속성 |
유형 |
필수 |
설명 |
|
정수 |
아니요 |
밀도 독립 화소(DIPS)의 너비 |
|
정수 |
아니요 |
밀도 독립 화소(DIPS)의 높이 |
|
정수 |
아니요 |
비율로 크기를 표현할 때 상대 너비 |
|
정수 |
아니요 |
비율로 크기를 표현할 때 상대 높이 |
|
정수 |
아니요 |
광고가 표시될 밀도 독립 화소(DIPS)의 최소 너비. 크기는 비율로 표현됩니다 |
Video
객체
속성 |
유형 |
필수 |
설명 |
|
문자열 배열 |
아니요 |
밀도 독립 화소(DIPS)의 정확한 너비 |
|
정수 |
아니요 |
밀도 독립 화소(DIPS)의 동영상 플레이어 너비 |
|
정수 |
아니요 |
밀도 독립 화소(DIPS)의 동영상 플레이어 높이 |
Native
객체
속성 |
유형 |
필수 |
설명 |
|
문자열 |
아니요 |
네이티브 광고 사양을 준수하는 요청 페이로드 |
|
정수 |
아니요 |
요청이 준수하는 Dynamic Native Ads API의 버전 |
User
객체
속성 |
유형 |
필수 |
설명 |
|
문자열 |
예 |
Yandex Mobile Ads SDK에서 획득한 입찰자 토큰 |
|
문자열 |
아니요 |
사용자에 대한 교환소별 ID |
|
문자열 |
아니요 |
쉼표로 구분된 키워드, 관심사 또는 의도 목록 |
Regs
객체
속성 |
유형 |
필수 |
설명 |
|
정수 |
아니요 |
이 요청이 |
|
정수 |
아니요 |
이 요청이 |
|
정수 |
아니요 |
사용자가 동의를 했는지 여부를 나타내는 플래그, 여기서 |
|
문자열 |
아니요 |
url safe base64 문자열로서의 TCF 동의 문자열 Yandex AC 공급업체 ID는 |
입찰가 요청에 권장되는 헤더
국가 코드 값을 포함한 헤더 X-Country-Code
를 추가하는 것을 권장합니다.
입찰가 요청 예시
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-banner-yandex",
"rwdd": 0,
"banner": {
"w": 320,
"h": 50
},
"ext": {
"ad_type": "banner"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 1,
"tagid": "demo-interstitial-yandex",
"rwdd": 0,
"ext": {
"ad_type": "interstitial"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-rewarded-yandex",
"rwdd": 1,
"ext": {
"ad_type": "rewarded"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-native-content-yandex",
"rwdd": 0,
"ext": {
"ad_type": "native"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-appopenad-yandex",
"rwdd": 0,
"ext": {
"ad_type": "appopenad"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
테스트 입찰가 응답
테스트 응답을 받으려면, 1
값과 함께 oRTB 요청에서 test
필드를 지정하세요.
입찰가 응답 구조
입찰가 응답 객체
속성 |
유형 |
설명 |
|
문자열 |
응답인 입찰가 요청의 ID |
|
문자열 |
|
|
|
1개의 Seatbid 객체 배열 |
Seatbid
객체
속성 |
유형 |
설명 |
|
|
1개의 Bid 객체 배열 |
Bid
객체
속성 |
유형 |
설명 |
|
문자열 |
로그/추적을 돕기 위한 입찰자 생성 입찰가 ID |
|
문자열 |
관련 입찰가 요청의 |
|
실수 |
입찰 가격은 CPM으로 표시되지만 실제 거래는 단위 노출에만 해당 |
|
문자열 |
선택된 광고에 대한 정보. 클라이언트 요청 시 전송되어야 함 |
|
문자열 |
입찰에 성공할 경우 교환소에서 호출하는 성공 알림 URL(전달, 조회 또는 청구 가능한 광고를 반드시 의미하지는 않음), 광고 마크업을 제공하는 선택적 수단 |
|
문자열 |
교환소별 비즈니스 정책에 따라 성공한 입찰이 청구 가능해질 때 교환소에서 호출하는 청구 알림 URL |
|
문자열 |
입찰에 실패한 것으로 알려졌을 때 교환소에서 호출하는 실패 알림 URL |
지원되는 매크로
매크로 |
위치 |
설명 |
|
nurl, burl, lurl |
입찰가와 동일한 통화 및 단위를 사용하는 청산 가격 |
|
lurl |
실패 사유 코드 |
|
lurl, nurl |
입찰가와 동일한 통화 및 단위를 사용하는 경매에서 성공하기 위한 최소 입찰가 |
입찰가 응답 예시
{
"cur": "USD",
"seatbid": [{
"bid": [{
"price": 8.2869000000,
"id": "7149643471343346645",
"ext": {
"signaldata": "{\"cache_id\":\"openbidding_7149643471343346645\"}"
},
"impid": "1",
"lurl": "https://yandex.ru/an/ssp_notifications/1Mldfsfadffasdfasdv618PGIAPrvDZl02YPUA0NcrLu74LA2u0yDCnWP52P1EXeMC2mu8WLah6GChEC6ilOoz7TKCHy7ygumWW-uoCiWmCFnbdCN4m32N2IIobEaNa5pBP0GappBz1uAdJ8dVLh2-OXBWQoYfkfhCm72mSCPfyKki37-PM86AMfcPWMGlc9pA339YBdC4o5fc9WQ51WO11eQhOD6xOF8diuCJFzWnArWQ3YTiOFaF0umxaDW7aDWtMS3g6JxOFsJHZEa_z5NZWVrR5f0VVh7m1kdwwfeQ6vXRcEWQ6JMnIkOa9kcbbURbLIOM51H3MCdvEVb5nITP-LlOmEPyPGKPku1jzwQ7RxfUVFgpdd4b6ypSHsoyKQvcLcMEnNaMOQvXvY_PO7R_XBC0WRgD-m00?ssp-notification-type=2&ssp-request-id=acbce306085481e0a42156b00d8a19523c2813a9&ssp-auction-loss=${AUCTION_LOSS}&ssp-auction-min-bid-to-win=${AUCTION_MIN_TO_WIN}&ssp-cur-price=${AUCTION_PRICE}",
"nurl": "https://yandex.ru/an/ssp_notifications/1fsdafasdDEYKsGv618PGIAPrvDZl02YPUA0NcrLu74LA2u0yDCnWP52P1EXeMC2mu8WLah6GChEC6ilOoz7TKCHy7ygumWW-uoCiWmCFnbdCN4m32N2IIobEaNa5pBP0GappBz1uAdJ8dVLh2-OXBWQoYfkfhCm72mSCPfyKki37-PM86AMfcPWMGlc9pA339YBdC4o5fc9WQ51WO11eQhOD6xOF8diuCJFzWnArWQ3YTiOFaF0umxaDW7aDWtMS3g6JxOFsJHZEa_z5NZWVrR5f0VVh7m1kdwwfeQ6vXRcEWQ6JMnIkOa9kcbbURbLIOM51H3MCdvEVb5nITP-LlOmEPyPGKPku1jzwQ7RxfUVFgpdd4b6ypSHsoyKQvcLcMEnNaMOQvXvY_PO7R_XBC0WRgD-m00?ssp-notification-type=1&ssp-request-id=acbce306085481e0a42156b00d8a19523c2813a9&ssp-cur-price=${AUCTION_PRICE}&ssp-auction-min-bid-to-win=${AUCTION_MIN_TO_WIN}",
"burl": "https://yandex.ru/an/ssp_notifications/1Ml0nI5N0QS10000000dsfasdfasd618PGIAPrvDZl02YPUA0NcrLu74LA2u0yDCnWP52P1EXeMC2mu8WLah6GChEC6ilOoz7TKCHy7ygumWW-uoCiWmCFnbdCN4m32N2IIobEaNa5pBP0GappBz1uAdJ8dVLh2-OXBWQoYfkfhCm72mSCPfyKki37-PM86AMfcPWMGlc9pA339YBdC4o5fc9WQ51WO11eQhOD6xOF8diuCJFzWnArWQ3YTiOFaF0umxaDW7aDWtMS3g6JxOFsJHZEa_z5NZWVrR5f0VVh7m1kdwwfeQ6vXRcEWQ6JMnIkOa9kcbbURbLIOM51H3MCdvEVb5nITP-LlOmEPyPGKPku1jzwQ7RxfUVFgpdd4b6ypSHsoyKQvcLcMEnNaMOQvXvY_PO7R_XBC0WRgD-m00?ssp-notification-type=3&ssp-request-id=acbce306085481e0a42156b00d8a19523c2813a9&ssp-cur-price=${AUCTION_PRICE}"
}]
}],
"id": "acbce306085481e0a42156b00d8a19523c2813a9"
}
Android 클라이언트 측 설정
Android SDK 통합 가이드를 참조하세요.
개인정보 보호 설정
MobileAds.setUserConsent(hasUserConsent)
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser)
MobileAds.setLocationConsent(hasLocationConsent)
MobileAds.setUserConsent(hasUserConsent);
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser);
MobileAds.setLocationConsent(hasLocationConsent);
Android 클라이언트에서 입찰자 토큰 생성
클라이언트 측에서는 경매 요청에 필요한 매개변수를 수집하여 경매 서버로 전송해야 합니다. 다음은 입찰자 토큰을 가져오는 코드 예시입니다.
-
요청된 광고의 형식을 전달하여
BidderTokenRequestConfiguration
을 생성합니다.KotlinJavaval requestBuilder = BidderTokenRequestConfiguration.Builder(adType)
final BidderTokenRequestConfiguration.Builder requestBuilder = new BidderTokenRequestConfiguration.Builder(adType);
-
배너를 요청하는 경우 배너 크기를 설정합니다.
KotlinJavaval bannerAdSize = BannerAdSize.fixedSize(context, width, height) requestBuilder.setBannerAdSize(size)
final BannerAdSize bannerAdSize = new BannerAdSize.fixedSize(context, width, height); requestBuilder.setBannerAdSize(bannerAdSize);
-
어댑터에 대한 정보를 추가합니다.
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);
-
입찰자 토큰을 로드합니다.
KotlinJavaval requestConfiguration = requestBuilder.build() BidderTokenLoader.loadBidderToken(context, requestConfiguration, object: BidderTokenLoadListener() { override fun onBidderTokenLoaded(bidderToken: String) { // 생성된 토큰 획득 } override fun onBidderTokenFailedToLoad(failureReason: String) { // 실패 이유 획득 } })
final BidderTokenRequestConfiguration requestConfiguration = requestBuilder.build(); BidderTokenLoader.loadBidderToken(context, requestConfiguration, new BidderTokenLoadListener() { @Override public void onBidderTokenLoaded(@NonNull final String bidderToken) { // 생성된 토큰 획득 } @Override public void onBidderTokenFailedToLoad(@NonNull final String failureReason) { // 실패 이유 획득 } });
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 광고 단위 ID
val bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // bidResponse의 ext.signaldata 필드
val appOpenAdLoader = AppOpenAdLoader(activity)
appOpenAdLoader.setAdLoadListener(object: AppOpenAdLoadListener {
override fun onAdLoaded(appOpenAd: AppOpenAd) {
// 광고 표시
}
override fun onAdFailedToLoad(error: AdRequestError) {
// 오류 기록
}
})
val adRequest = AdRequest.Builder().setBiddingData(bidResponse).build()
appOpenAdLoader.loadAd(adRequest)
final String adUnitId = "Yandex ad_unit_id"; // 중재 콘솔에서 게시자가 설정한 Yandex 광고 단위 ID
final String bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}"; // bidResponse의 ext.signaldata 필드
final AppOpenAdLoader appOpenAdLoader = new AppOpenAdLoader(activity);
appOpenAdLoader.setAdLoadListener(new AppOpenAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final AppOpenAd appOpenAd) {
// 광고 표시
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// 오류 기록
}
});
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
appOpenAdLoader.loadAd(adRequest);
앱 실행 통합에 대한 자세한 가이드는 여기에 있습니다.
전면 광고
val adUnitId = "Yandex ad_unit_id" // 중재 콘솔에서 게시자가 설정한 Yandex 광고 단위 ID
val bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // bidResponse의 ext.signaldata 필드
val interstitialAdLoader = InterstitialAdLoader(activity)
interstitialAdLoader.setAdLoadListener(object: InterstitialAdLoadListener {
override fun onAdLoaded(interstitialAd: InterstitialAd) {
// 광고 표시
}
override fun onAdFailedToLoad(error: AdRequestError) {
// 오류 기록
}
})
val adRequest = AdRequest.Builder().setBiddingData(bidResponse).build()
interstitialAdLoader.loadAd(adRequest)
final String adUnitId = "Yandex ad_unit_id"; // 중재 콘솔에서 게시자가 설정한 Yandex 광고 단위 ID
final String bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}"; // bidResponse의 ext.signaldata 필드
final InterstitialAdLoader interstitialAdLoader = new InterstitialAdLoader(activity);
interstitialAdLoader.setAdLoadListener(new InterstitialAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final InterstitialAd interstitialAd) {
// 광고 표시
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// 오류 기록
}
});
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
interstitialAdLoader.loadAd(adRequest);
전면 광고에 대한 자세한 가이드는 여기에 있습니다.
보상형
val adUnitId = "Yandex ad_unit_id" // 중재 콘솔에서 게시자가 설정한 Yandex 광고 단위 ID
val bidResponse = "{\"cache_id\":\"openbidding_714953452343346645\"}" // bidResponse의 ext.signaldata 필드
val rewardedAdLoader = new RewardedAdLoader(activity)
rewardedAdLoader.setAdLoadListener(object: RewardedAdLoadListener {
override fun onAdLoaded(rewardedAd: RewardedAd) {
// 광고 표시
}
override fun onAdFailedToLoad(error: AdRequestError) {
// 오류 기록
}
})
val adRequest = AdRequest.Builder()
.setBiddingData(bidResponse).build()
rewardedAdLoader.loadAd(adRequest)
final String adUnitId = "Yandex ad_unit_id"; // 중재 콘솔에서 게시자가 설정한 Yandex 광고 단위 ID
final String bidResponse = "{\"cache_id\":\"openbidding_714953452343346645\"}"; // bidResponse의 ext.signaldata 필드
final RewardedAdLoader rewardedAdLoader = new RewardedAdLoader(activity);
rewardedAdLoader.setAdLoadListener(new RewardedAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final RewardedAd rewardedAd) {
// 광고 표시
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// 오류 기록
}
});
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
rewardedAdLoader.loadAd(adRequest);
보상형 통합에 대한 자세한 가이드는 여기.
배너
val adUnitId = "Yandex adUnitId" // 중재 콘솔에서 게시자가 설정한 Yandex 광고 단위 ID
val bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}" // bidResponse의 ext.signaldata 필드
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 광고 단위 ID
final String bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}"; // bidResponse의 ext.signaldata 필드
final BannerAdView bannerAdView = new BannerAdView(activity);
bannerAdView.setBlockId(adUnitId);
bannerAdView.setAdSize(adSize);
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
bannerAdView.loadAd(adRequest);
네이티브
val adUnitId = "Yandex adUnitId" // 중재 콘솔에서 게시자가 설정한 Yandex 광고 단위 ID
val bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}" // bidResponse의 ext.signaldata 필드
val nativeAdLoader = new NativeAdLoader(this)
nativeAdLoader.setNativeAdLoadListener(object: NativeAdLoadListener {
override fun onAdLoaded(nativAd: NativeAd) {
// nativeAd 바인딩
}
override fun onAdFailedToLoad(error: AdRequestError) {
// 오류 기록
}
})
val nativeAdRequestConfiguration = NativeAdRequestConfiguration.Builder(adUnitId)
.setBiddingData(bidResponse).build()
nativeAdLoader.loadAd(nativeAdRequestConfiguration)
final String adUnitId = "Yandex adUnitId"; // 중재 콘솔에서 게시자가 설정한 Yandex 광고 단위 ID
final String bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}"; // bidResponse의 ext.signaldata 필드
final NativeAdLoader nativeAdLoader = new NativeAdLoader(this);
nativeAdLoader.setNativeAdLoadListener(new NativeAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final NativeAd nativeAd) {
// nativeAd 바인딩
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// 오류 기록
}
});
final NativeAdRequestConfiguration nativeAdRequestConfiguration = new NativeAdRequestConfiguration.Builder(adUnitId)
.setBiddingData(bidResponse).build();
nativeAdLoader.loadAd(nativeAdRequestConfiguration);
네이티브 형식에는 필수 및 선택적 자산이 모두 포함됩니다. 바인딩을 위한 사용자 정의 자산을 제공하는 방법은 광고 SDK의 API에 크게 좌우됩니다. 이 템플릿은 게시자 측에서 문자열 식별자와 자산 보기 식별자의 맵을 제공하여 광고 요청 중에 이러한 자산이 어댑터에 전달되는 방법을 보여줍니다.
자세한 네이티브 광고 문서는 여기에 있습니다.
예시
어댑터 예시는 여기에 있습니다.