비드 반응

Size

bid response의 최대 크기는 4 KB입니다.

No bids

no-bid 응답을 전달하려면 상태 코드 204와 함께 빈 응답을 전달하십시오.

Win/loss/billing notifications

AppLovin RTB는 요청자가 요청의 nurl, lurlburl 필드에 각각 제공한 win, loss 및 billing 알림 URL을 호출합니다. AppLovin RTB는 auction이 완료되고 AppLovin이 기기로 광고를 전송할 때 win URL을 호출합니다. auction 진행 중 연결된 광고가 제대로 로드되지 않거나, 다른 낙찰 광고가 로드된 후에 loss URL을 호출합니다. 기기에서 광고를 렌더링할 때(즉, 비디오 재생이 시작되거나 그래픽 광고의 경우 기기에 광고가 표시될 때) billing URL을 호출합니다.

요청자는 이러한 알림 URL의 사양에 매크로를 삽입할 수 있습니다. AppLovin RTB는 URL을 요청하기 전에 해당 URL의 매크로를 적절한 값으로 대체합니다. 다음 목록은 요청자가 이러한 URL에 삽입할 수 있는 매크로를 보여줍니다.

이 매크로들은 대소문자를 구분하므로 반드시 모두 대문자(ALL CAPS)로 지정해야 합니다. 이 매크로들을 ${…}로 감싸십시오 (예: ${AUCTION_ID}).

MacroDescription
AUCTION_BID_IDBidResponse.bidid 속성에서 가져온 bid의 ID.
AUCTION_IDBidRequest.id 속성에서 가져온 bid request의 ID.
AUCTION_LOSSOpenRTB 2.5 사양의 Table 5.25에 정의된 loss 사유 코드. lurl에서만 전송됩니다.
AUCTION_MINIMUM_BID_TO_WIN두 번째로 높은 bid 가격. 이 값은 auction의 낙찰자에게만 관련이 있으며, lurl로 전달되는 경우 무시할 수 있습니다. bid가 낙찰 bid 하나만 존재하는 경우 전달되는 값은 0입니다.
AUCTION_PRICEauction 낙찰 / 정산 가격. nurllurl 모두에 반환되므로 모든 입찰자(낙찰 또는 패찰)가 최종 지불 가격을 볼 수 있습니다. bid와 동일한 통화 및 단위를 사용합니다. 소수점 이하 최대 6자리입니다. 낙찰된 bid가 없는 경우 전달되는 값은 0입니다.

매크로가 포함된 win bid URL 예시

https://example.com/endpoint/auction=${AUCTION_ID}&price=${AUCTION_PRICE}

Ad markup standard

DSP 입찰자는 bid response에 ad markup을 포함해야 합니다. AppLovin RTB는 win 알림에 대한 응답으로 ad markup을 반환하는 것을 지원하지 않습니다.

귀하의 ad markup은 AppLovin의 RTB ad markup 표준을 준수해야 합니다. AppLovin의 RTB 서버는 bid를 받는 즉시 ad markup의 준수 여부를 확인합니다. 그런 다음 ad markup에 대해 다음과 같은 기본적인 유효성 검사(sanity check)를 수행합니다.

  • ad markup이 올바르게 이스케이프 처리되었는지 여부.
  • VAST 광고를 제외하고 ad markup이 URL 인코딩되었는지 여부.
  • ad markup의 HTML이 snippet 형태인지 여부.
  • rich media 광고로 입찰할 때는 노드의 콘텐츠를 CDATA 구조 내에 넣으십시오. XML의 CDATA는 어떠한 인코딩도 필요하지 않습니다. 그러나 JSON 컨텍스트에서 XML 문서를 전달하는 경우 다음 JSON 구문 및 이스케이프 규칙을 적용하십시오.
    • 모든 큰따옴표를 \"로 이스케이프 처리합니다.
    • 작은따옴표는 이스케이프 처리하지 않습니다.
    • XML 문서에서 모든 탭 및 줄 바꿈 문자를 제거합니다. (아래의 VAST ad markup 예시는 가독성을 위해 서식이 지정되어 있습니다. 실제 ad markup을 전송할 때는 불필요한 공백을 보내지 마십시오.)

ad markup snippet이 유효한 JSON 콘텐츠인지(CDATA 포함) 확인하려면 해당 snippet을 온라인 JSONLint 검증 도구에 입력해 볼 수 있습니다.

SDK 입찰자는 귀하의 SDK가 모든 크리에이티브를 렌더링해야 하므로 ad markup을 전달할 필요가 없습니다. SDK 입찰자는 admarkup field를 사용하여 커스텀 데이터를 전달할 수 있으며, 이 데이터는 어댑터를 통해 로드 시점에 귀하의 SDK로 반환되도록 구성할 수 있습니다.

Bid response components

bid response는 다음 세 가지 컴포넌트로 구성됩니다.

bidresponse
최상위 object
seatbid
입찰자가 특정 seat을 대신하여 제출한 bid들의 모음
bid
특정 business 조건 하에 특정 impression을 구매하겠다는 제안

Bid response object

AttributeTypeDescriptionRequired?
bididstring로깅/트래킹을 돕기 위해 입찰자가 생성한 response ID.no
curstring"USD"만 허용하며 기본값도 "USD"입니다.no
idstring이 응답이 대응하는 bid request의 ID (이 값은 bidrequest.id와 일치해야 합니다).yes
nbrinteger입찰하지 않은 사유(No-bid reason). OpenRTB 2.5 사양의 List 5.24를 참조하십시오.recommended
seatbidobject arrayseatbid object의 배열. 입찰을 하려면 최소 하나 이상 존재해야 합니다.yes

Seatbid object

AttributeTypeDescriptionRequired?
bidobject arraybid object의 배열. 입찰을 하려면 최소 하나 이상 존재해야 합니다.yes
seatstring이 입찰이 대행되는 입찰자 seat의 ID. 하나의 bid response에는 여러 "seat"의 bid가 포함되거나 동일한 seat의 여러 bid가 포함될 수 있습니다. 영숫자 문자열이어야 하며(Must), 최대 40자, 이상적으로는 최소 8자여야 합니다. 지원되지 않습니다.no

Bid object

AttributeDescriptionRequired?
adid (string)입찰에 낙찰될 경우 서빙할 사전 로드된 광고의 ID.no
adm (string)입찰에 낙찰될 경우 ad markup을 전달하는 주요 수단. 양쪽 모두에 markup이 있는 경우 win 알림보다 우선합니다. 대체 매크로를 포함할 수 있습니다. 지원되는 매크로를 참조하십시오. native 광고 포맷의 경우 adm_native가 지원됩니다.yes
adomain (string array)광고주 도메인 이름의 배열. AppLovin RTB는 배열의 첫 번째 도메인만 사용합니다. 광고주 도메인은 전체 랜딩 페이지 URL이 아닌, 광고주 랜딩 페이지의 최상위 도메인 이름과 일치해야 합니다. 앱스토어 랜딩 페이지의 경우, adomain은 전체 앱스토어 URL이 아닌, 앱 소유자의 최상위 도메인 이름과 일치해야 합니다. adomain 값에는 “http://”, “https://” 또는 “/”(슬래시) 문자가 포함되어서는 안 됩니다. 예시: yourapp.com (단, yourapp.com/something 또는 https://yourapp.com안 됨).yes
api (integer)OpenRTB Spec 2.5 Table 5.6을 참조하십시오.no
apis (integer array)이 impression에 대해 지원되는 API 프레임워크 목록. 다음 중 하나입니다.
  • 1—VPAID1.01
  • 2—VPAID2.01
  • 3—MRAID-1
  • 4—ORMMA1
  • 5—MRAID-2
  • 6—MRAID-3
  • 7—OMID-1
1 ALX에서는 지원되지 않음
 
attr (integer array)해당되는 경우 필수 항목입니다. 크리에이티브 속성으로, 다음 목록에서 가져온 값의 배열입니다.
  • 1—오디오 광고 (자동 재생)
  • 2—오디오 광고 (사용자 시작)
  • 3—확장형 (자동)
  • 4—확장형 (사용자 시작–클릭)
  • 5—확장형 (사용자 시작–롤오버)
  • 6—인배너 비디오 광고 (자동 재생)
  • 7—인배너 비디오 광고 (사용자 시작)
  • 8—팝업 (예: Over, Under 또는 종료 시)
  • 9—도발적이거나 암시적인 이미지
  • 10—흔들림, 깜빡임, 번쩍임, 극단적인 애니메이션, 스마일리
  • 11—설문조사
  • 12—텍스트 전용
  • 13—사용자 인터랙티브 (예: 임베디드 게임)
  • 14—윈도우 대화 상자 또는 경고 스타일
  • 15—오디오 켜기/끄기 버튼 있음
  • 16—광고가 건너뛰기 버튼 제공 (예: 프리롤 비디오에서 VPAID로 렌더링된 건너뛰기 버튼)
  • 17—Adobe Flash
이 필드가 있는 경우 정확해야 하며 실제 크리에이티브를 반영해야 합니다. 그렇지 않으면 정책 위반입니다. 이 필드는 VAST 비디오 서빙에는 필수 사항이 아니지만, HTML 또는 MRAID 인배너 비디오 서빙에는 필수적입니다.
recommended
bundle (string)광고주 애플리케이션의 iTunes ID 또는 Android 패키지 이름. 애플리케이션 설치 광고가 아닌 경우 이 필드를 비워 두십시오. 퍼블리셔의 애플리케이션 bundle을 전달하지 마십시오. 그렇지 않으면 AppLovin RTB가 응답을 거부합니다. 예시: Android의 경우 com.example.app, iOS의 경우 628677149.ext.skadn이 있는 경우 필수, 그 외 모든 경우 권장
burl (string)낙찰된 bid가 과금 가능해질 때 exchange가 호출하는 billing 알림 URL. DSP는 impression 및 지출 트래킹을 위해 반드시 burl을 사용해야 합니다. AppLovin은 트래킹에 burl이 사용된 경우에만 불일치 사항을 조사합니다.yes
cat (string array)크리에이티브의 IAB 콘텐츠 카테고리. OpenRTB 2.5 사양의 section 5.1을 참조하십시오.yes
cid (string)광고 품질 검사를 돕기 위한 캠페인 ID. iurl이 대표해야 하는 크리에이티브들의 모음입니다.recommended
crid (string)캠페인의 크리에이티브를 고유하게 식별합니다. 크리에이티브가 새로운 impression에 나타난다는 것을 나타내기 위해 동일한 크리에이티브에 새로운 크리에이티브 ID를 할당하지 마십시오.yes
dealid (string)이 입찰이 인벤토리 패키지와 관련된 경우 bid request의 deal.id에 대한 참조. 인벤토리 패키지에 대해 입찰하는 경우가 아니면 전달하지 마십시오.인벤토리 패키지의 경우 필수
ext (object)OpenRTB에 대한 입찰자별 확장을 위한 플레이스홀더.no
ext.crtype (string)서빙하는 광고의 유형을 설명하는 필드입니다. 유효한 값은 다음과 같습니다.
  • HTML
  • MRAID 1.0
  • MRAID 2.0
  • MRAID 3.0
  • native
  • VAST 2.0
  • VAST 3.0
  • VAST 4.0
  • VAST 4.1
  • VAST 4.2
하나의 crtype만 구매하는 경우 AppLovin이 귀하를 위해 crtype을 하드코딩할 수 있습니다. 이를 원하시면 AppLovin 담당 어카운트 매니저에게 문의하십시오. bid.crtype으로 crtype을 전달하는 것도 지원됩니다.
recommended
ext.clicktrackers (string array)AppLovin이 클릭 이벤트를 기록할 때 일관되게 트래킹할 클릭 트래킹 URL(퍼스트 파티 및 서드 파티). native에는 적용되지 않습니다.HTML 광고 + SKAD (SKAdNetwork)를 실행하는 경우 필수
ext.duration (integer)비디오 재생 시간(초 단위).CTV 인벤토리의 경우 필수
ext.imptrackers (string array)서드 파티 트래킹 요구 사항에 사용되는 impression 트래킹 URL. native에는 적용되지 않습니다. native object eventtrackers를 참조하십시오.no
ext.skadn (object)loadProduct()를 통해 Apple의 SKAdNetwork 어트리뷰션 API를 지원하는 데 필요한 파라미터.no
ext.skadn.campaign (string)캠페인 ID (2.0–3.0) 또는 소스 ID (4.0+). 이는 SKAdNetwork 버전 2.0–3.0의 경우 1에서 100 사이의 정수여야 하며, 버전 4.0+의 경우 0에서 9999 사이의 정수여야 하고, 문자열로 표현되어야 합니다.ext.skadn이 있는 경우 필수
ext.skadn.fidelities[] (object array)SKAdNetwork v2.2에서 도입된 여러 fidelity 유형을 지원합니다.ext.skadn이 있는 경우 필수
….fidelities[«n»].fidelity (integer)트래킹할 어트리뷰션의 fidelity 유형.ext.skadn이 있는 경우 필수
….fidelities[«n»].nonce (string)각 광고 응답에 고유한 ID. 올바른 UUID 형식 요구 사항에 대해서는 Apple 개발자 문서를 참조하십시오.ext.skadn이 있는 경우 필수
….fidelities[«n»].signature (string)Apple이 지정한 SKAdNetwork 서명.ext.skadn이 있는 경우 필수
….fidelities[«n»].timestamp (string)signature 시점에 사용된 밀리초 단위의 Unix 시간 문자열.ext.skadn이 있는 경우 필수
ext.skadn.itunesitem (string)Apple 앱스토어 내 광고주 앱의 ID. BidResponse.seatbid.bid.bundle과 일치해야 합니다.ext.skadn이 있는 경우 필수
ext.skadn.network (string)서명에 사용되는 광고 네트워크 식별자. 요청의 skadnetids 배열에 있는 항목 중 하나와 일치해야 합니다.ext.skadn이 있는 경우 필수
ext.skadn.nonce (string)각 광고 응답에 고유한 ID. 올바른 UUID 형식 요구 사항에 대해서는 Apple 개발자 문서를 참조하십시오. 참고: SKAdNetwork v2.2 출시와 함께 이 필드는 여러 fidelity 유형을 지원하는 ext.skadn.fidelities[«n»].nonce를 위해 지원 중단(deprecated)되었습니다.ext.skadn이 있는 경우 필수
ext.skadn.productpage (string)커스텀 프로덕트 페이지 ID.no
ext.skadn.signature (string)Apple이 지정한 SKAdNetwork 서명. 참고: SKAdNetwork 2.2 출시와 함께 이 필드는 여러 fidelity 유형을 지원하는 ext.skadn.fidelities[«n»].signature를 위해 지원 중단(deprecated)되었습니다.ext.skadn이 있는 경우 필수
ext.skadn.skoverlay (object)잠재적인 SKOverlay를 제어하기 위한 파라미터. 오버레이는 비디오가 시작된 후, 컴패니언 광고가 렌더링된 후, 또는 사용자가 오버레이를 닫았지만 광고가 열려 있는 상태에서 트리거될 수 있습니다(지연 시간 적용 가능, 지연 없음은 0). 참고: Apple은 클릭 콜백을 제공하지 않으므로 AppLovin은 사용자가 SKOverlay를 클릭하는 시점을 트래킹하지 않습니다.no
….skoverlay.position (integer)오버레이의 위치. 0 = bottom, 1 = bottomRaised. 기본값은 0입니다.no
….skoverlay.dismissable (integer)사용자가 오버레이를 닫을 수 있는지 여부 (1은 닫을 수 있음을 의미하고, 0은 화면에 고정됨을 의미합니다). 기본값은 1입니다.no
….skoverlay.video_delay (integer)비디오가 시작된 후 오버레이를 표시할 때까지의 시간(초). 비디오 시작을 기준으로 트리거하지 않으려면 이 값을 -1로 설정하십시오.ext.skadn.skoverlay가 있는 경우 필수
….skoverlay.companion_delay (integer)컴패니언 광고가 렌더링된 후 오버레이를 표시할 때까지의 시간(초). 컴패니언 광고 렌더링을 기준으로 트리거하지 않으려면 이 값을 -1로 설정하십시오.ext.skadn.skoverlay가 있는 경우 필수
….skoverlay.sk_dismiss_delay (integer)표시된 StoreKit 화면이 닫힌 후 오버레이를 표시할 때까지의 시간(초). StoreKit 닫기를 기준으로 트리거하지 않으려면 이 값을 -1로 설정하십시오.ext.skadn.skoverlay가 있는 경우 필수
ext.skadn.sourceapp (string)Apple 앱스토어 내 퍼블리셔 앱의 ID. BidRequest.imp.ext.skad.sourceapp과 일치해야 합니다.ext.skadn이 있는 경우 필수
ext.skadn.timestamp (string)signature 시점에 사용된 밀리초 단위의 Unix 시간 문자열. 참고: SKAdNetwork 2.2 출시와 함께 이 필드는 여러 fidelity 유형을 지원하는 ext.skadn.fidelities[«n»].timestamp를 위해 지원 중단(deprecated)되었습니다.ext.skadn이 있는 경우 필수
ext.skadn.version (string)원하는 SKAdNetwork 버전. 2.0 이상이어야 합니다.ext.skadn이 있는 경우 필수
ext.vendor (string array)표시되는 광고의 뷰어빌리티(viewability)를 측정하는 뷰어빌리티 벤더의 이름. impression에 대한 뷰어빌리티 측정을 수집하는 경우에만 bid response에 뷰어빌리티 벤더를 선언해야 합니다. Integral Ad Science(IAS)의 경우 "ias"로 설정하십시오. Moat의 경우 "moat"으로 설정하십시오. 구매자는 뷰어빌리티 측정을 위한 디스플레이 캠페인을 반환할 때 bid response에 해당 벤더를 포함하여 응답해야 합니다. Open Measurement Viewability에는 적용되지 않습니다.뷰어빌리티를 측정하는 캠페인의 경우 필수
h (integer)밀도 독립적 픽셀(dp) 단위의 크리에이티브 세로 길이.recommended
id (string)로깅/트래킹을 돕기 위해 입찰자가 생성한 bid ID.yes
impid (string)관련 bid request에 있는 Impression object의 ID.yes
lurl (string)bid에서 패찰했을 때 exchange가 호출하는 loss 알림 URL. 대체 매크로를 포함할 수 있습니다. 지원되는 매크로를 참조하십시오.no
nurl (string)bid가 impression 기회를 낙찰받았을 때 exchange가 호출하는 win 알림 URL.recommended
price (float)CPM으로 표시된 입찰 가격(실제 거래는 단일 impression 단위로 이루어지지만). 유형은 float로 표시되어 있지만, 통화를 처리할 때는 정수 연산을 사용하는 것이 강력히 권장됩니다(예: Java의 BigDecimal).yes
protocol (integer)해당되는 경우 markup의 비디오 응답 프로토콜. 자세한 내용은 OpenRTB Spec 2.5 Table 5.8을 참조하십시오.no
w (integer)밀도 독립적 픽셀(dp) 단위의 크리에이티브 가로 길이.recommended

Tracking fields

다음 표는 DSP(demand-side platform)에서 사용할 수 있는 트래킹 필드와 권장 용도를 보여줍니다.

impression 및 지출은 bid response 필드인 burl을 사용하여 트래킹해야 합니다. AppLovin은 트래킹에 burl이 사용된 경우에만 불일치 사항을 조사합니다.

bidresponse.bid. TrackerMethodRecommended use
.adm
  • HTML: 클라이언트 사이드에서 실행됨
  • VAST: <ImpressionTracker> 노드가 서버 사이드에서 실행됨. X-Device-IPX-Device-User-Agent가 서버 간(server-to-server) 콜백의 헤더로 전송됩니다.
    X-Device-IP
    실제 사용자 기기 IP 주소
    X-Device-User-Agent
    실제 사용자 기기 UA
  • HTML: 무효 트래픽(IVT) 트래킹
  • VAST: 파트너사에 의한 impression 트래킹
.adm.native.eventtrackers클라이언트 사이드에서 실행됨
  • 무효 트래픽(IVT) 트래킹
  • Open Measurement SDK (OMSDK)
  • 파트너사에 의한 impression 트래킹
Open RTB 1.2 Native Ads Spec의 '7.7 Event Tracking Methods Table'의 "methods"에 정의된 imgjs 태그를 지원합니다.DSP는 native.imptrackers 또는 native.jstracker 필드가 IAB에 의해 지원 중단 예정이므로(대신 eventtrackers 권장), native.eventtrackers를 사용할 것을 권장합니다.
.adm.native.imptrackers클라이언트 사이드에서 실행됨 (eventtrackers를 위해 지원 중단됨)무효 트래픽(IVT) 트래킹
.adm.native.jstracker클라이언트 사이드에서 실행됨 (eventtrackers를 위해 지원 중단됨)Open Measurement SDK (OMSDK)
.adm.native.link.clicktrackers클라이언트 사이드에서 실행됨클릭 트래킹 (선택 사항)
.burl서버 사이드에서 실행됨. X-Device-IPX-Device-User-Agent가 서버 간(server-to-server) 콜백의 헤더로 전송됩니다.
X-Device-IP
실제 사용자 기기 IP 주소
X-Device-User-Agent
실제 사용자 기기 UA
구매자(DSP)를 위한 impression 및 지출 트래킹
.ext.imptrackers서버 사이드에서 실행됨. X-Device-IPX-Device-User-Agent가 서버 간(server-to-server) 콜백의 헤더로 전송됩니다.
X-Device-IP
실제 사용자 기기 IP 주소
X-Device-User-Agent
실제 사용자 기기 UA
파트너사에 의한 impression 트래킹

Example bid response

{
  "id": "5e1eb292d6b7ea9cf3da74ddb385996a62d3a6e9",
  "seatbid": [
    {
      "bid": [
        {
          "id": "8JxH4DHN4KMF21Vd",
          "impid": "1",
          "price": 15,
          "adid": "1093919",
          "adm": "<a href=\"https://click.url/click/8JxH4DHN4KMF21Vd?uid=05D02DC6-0132-4C2C-A879-79BB026BE3F8&partner=applovin&ts=2018-07-09T18-19-01Z&ad=1093919\"><img src=\"https://assets.dsp.io/ad_assets/files/320x50.png\" height=\"50\" width=\"320\" alt=\"\"/></a>",
          "adomain": [
            "advertiser.com"
          ],
          "bundle": "123123123",
          "iurl": "https://assets.dsp.io/ad_assets/files/320x50.png",
          "cid": "12345",
          "crid": "crid123",
          "cat": [
            "IAB22-2"
          ],
          "h": 50,
          "w": 320,
          "ext": {
            "crtype": "HTML",
            "imptrackers": [
                "https://example.dsp.events/win/8JxH4DHN4KMF21Vd?ts=2018-07-09T18-19-01Z&ad=1093919&uid=05D02DC6-0132-4C2C-A879-79BB026BE3F8&auction=${AUCTION_ID}&price=${AUCTION_PRICE}&partner=applovin"
            ]
          }
        }
      ]
    }
  ],
  "bidid": "8JxH4DHN4KMF21Vd",
  "cur": "USD"
}

Example native ad response

{
  "bidid":"9aa2a2950894c95b9b02476a5ba5438dc6de8dc1",
  "cur":"USD",
  "id":"65de6af36e6fb32778afa94a996ec4c2b514145d",
  "seatbid":[
    {
      "bid":[
        {
          "adm":"{\"native\":{\"assets\":[{\"id\":100,\"title\":{\"text\":\"Test Ad\"}},{\"id\":200},{\"id\":300,\"img\":{\"h\":null,\"url\":\"https://assets.com/main_image.png_\",\"w\":null}},{\"id\":310,\"img\":{\"h\":80,\"url\":\"https://assets.com/icon_image.png\",\"w\":80}},{\"data\":{\"value\":\"Test Ad Subline\"},\"id\":420},{\"data\":{\"value\":\"Continue\"},\"id\":430},{\"data\":{\"value\":\"4.5\"},\"id\":410}],\"imptrackers\":[\"https://adserver.com/impression_tracker\"],\"link\":{\"url\":\"https://adserver.com/click_destination\"}}}\n",
          "adomain":[
            "somegame.com"
          ],
          "bundle":"com.game.example",
          "cat":[
            "IAB1"
          ],
          "crid":"74650.0!3ILDTypkALKe8xfw2WJLmxfNOftiOg2u3yeGIKEULAU*",
          "ext": {
            "crtype":"native"
          },
          "id": "1",
          "impid": "1",
          "iurl": "https://assets.com/preview.png",
          "price": 1.0
        }
      ],
      "seat":"A00000001"
    }
  ]
}

search