bid responseの最大サイズは4 KBです。
No-bid(入札なし)レスポンスを伝達するには、ステータスコード204の空のレスポンスを返します。
AppLovin RTBは、リクエスターがリクエストのnurl、lurl、およびburlフィールドでそれぞれ提供するwin、loss、およびbilling通知URLを呼び出します。
AppLovin RTBは、オークションが完了し、AppLovinがデバイスに広告を送信するときにwin URLを呼び出します。
関連する広告の読み込みに失敗した場合(オークション中)、または別の落札広告が読み込まれた後に、loss URLを呼び出します。
デバイスが広告をレンダリングするとき(つまり、動画の再生が開始されたとき、またはグラフィック広告の場合はデバイスが広告を表示したとき)にbilling URLを呼び出します。
リクエスターは、これらの通知URLの仕様にマクロを埋め込むことができます。 AppLovin RTBは、URLをリクエストする前に、それらのマクロを適切な値に置き換えます。 以下は、リクエスターがこれらのURLに埋め込むことができるマクロの一覧です。
これらのマクロは大文字と小文字を区別します。必ずすべて大文字(ALL CAPS)で指定してください。
これらのマクロは${…}で囲んでください(例:${AUCTION_ID})。
| マクロ | 説明 |
|---|---|
AUCTION_BID_ID | BidResponse.bidid属性から取得される、入札のID。 |
AUCTION_ID | BidRequest.id属性から取得される、bid request of ID。 |
AUCTION_LOSS | OpenRTB 2.5仕様のTable 5.25に定義されているLoss理由コード。lurlでのみ送信されます。 |
AUCTION_MINIMUM_BID_TO_WIN | 2番目に高い入札価格。この値はオークションの落札者にのみ関連し、lurlで渡された場合は無視できます。入札が1つ(落札した入札)のみの場合、渡される値は0になります。 |
AUCTION_PRICE | オークションの落札価格/清算価格。nurlとlurlの両方で返されるため、すべての入札者(落札または不落札)が最終的な支払価格を確認できます。入札と同じ通貨および単位を使用します。小数点以下最大6桁。落札された入札がない場合、渡される値は0になります。 |
https://example.com/endpoint/auction=${AUCTION_ID}&price=${AUCTION_PRICE}
DSP入札者は、bid responseに広告マークアップを含める必要があります。 AppLovin RTBは、win通知のレスポンスとして広告マークアップを返すことをサポートしていません。
広告マークアップは、AppLovinのRTB広告マークアップ基準に準拠している必要があります。 AppLovinのRTBサーバーは、入札を受信するとすぐに広告マークアップの準拠性をチェックします。 その後、広告マークアップに対して以下のサニティチェックを実行します。
CDATA構造内に配置すること。
XML内のCDATAはエンコードを一切必要としません。
ただし、JSONコンテキストでXMLドキュメントを渡す場合は、以下のJSON構文およびエスケープルールを適用してください。
\"としてエスケープする。広告マークアップスニペットが(CDATAを含めて)有効なJSONコンテンツであることを確認するには、そのスニペットをオンラインのJSONLintバリデータに渡して検証できます。
SDK入札者は、SDKがすべてのクリエイティブをレンダリングするため、広告マークアップを渡す必要はありません。
SDK入札者は、admarkupフィールドを使用してカスタムデータを渡すことができます。このデータは、ロード時にアダプターを介してSDKに返されるように設定できます。
bid responseには3つの構成要素があります。
bidresponseseatbidbid| 属性 | タイプ | 説明 | 必須? |
|---|---|---|---|
bidid | string | ロギング/トラッキングを支援するために入札者が生成したレスポンスID。 | いいえ |
cur | string | "USD"のみを受け入れ、デフォルトもこれになります。 | いいえ |
id | string | このレスポンスが対応するbid requestのID(bidrequest.idと一致する必要があります)。 | はい |
nbr | integer | 入札しない理由。OpenRTB 2.5仕様のList 5.24を参照してください。 | 推奨 |
seatbid | object array | seatbidオブジェクトの配列。入札を行うには、少なくとも1つ必要です。 | はい |
| 属性 | タイプ | 説明 | 必須? |
|---|---|---|---|
bid | object array | bidオブジェクトの配列。入札を行うには、少なくとも1つ必要です。 | はい |
seat | string | この入札が行われる代理の入札者seatのID。bid responseには、複数の「seat」からの入札を含めることも、同じseatからの複数の入札を含めることもできます。半角英数字の文字列で、最大40文字、理想的には最小8文字である必要があります。サポートされていません。 | いいえ |
| 属性 | 説明 | 必須? |
|---|---|---|
adid (string) | 入札が落札した場合に配信する、プリロードされた広告のID。 | いいえ |
adm (string) | 入札が落札した場合に広告マークアップを伝達する主な手段。マークアップが両方にある場合は、win通知よりも優先されます。置換マクロを含めることができます。サポートされているマクロを参照してください。ネイティブ広告フォーマットの場合、adm_nativeがサポートされています。 | はい |
adomain (string array) | 広告主のドメイン名の配列。AppLovin RTBは配列の最初のドメインのみを使用します。広告主ドメインは、広告主のランディングページのトップレベルドメイン名と一致する必要があり、完全なランディングページURLであってはなりません。アプリストアのランディングページの場合、adomainはアプリ所有者のトップレベルドメイン名と一致する必要があり、完全なアプリストアURLであってはなりません。adomainの値には、「http://」、「https://」、または「/」(スラッシュ)文字を含めてはなりません。例:yourapp.com(ただし、yourapp.com/somethingやhttps://yourapp.comは不可)。 | はい |
api (integer) | OpenRTB Spec 2.5 Table 5.6を参照してください。 | いいえ |
apis (integer array) | このインプレッションでサポートされているAPIフレームワークのリスト。以下のいずれか:
| |
attr (integer array) | 該当する場合に必須。クリエイティブ属性。このリストから取得した値の配列:
| 推奨 |
bundle (string) | 広告主のアプリケーションのiTunes IDまたはAndroidパッケージ名。これがアプリケーションインストール広告でない場合は、このフィールドを空のままにしてください。パブリッシャーのアプリケーションバンドルを渡さないでください。渡した場合、AppLovin RTBはレスポンスを拒否します。例:Androidではcom.example.app、iOSでは628677149。 | ext.skadnが存在する場合は必須。それ以外の場合は常に推奨 |
burl (string) | 落札した入札が課金対象になったときにエクスチェンジによって呼び出されるbilling通知URL。DSPはインプレッションと支出のトラッキングにburlを使用する必要があります。AppLovinは、トラッキングにburlが使用されている場合にのみ不一致を調査します。 | はい |
cat (string array) | クリエイティブのIABコンテンツカテゴリ。OpenRTB 2.5仕様のセクション 5.1を参照してください。 | はい |
cid (string) | 広告品質チェックを支援するためのキャンペーンID。iurlが代表するクリエイティブのコレクション。 | 推奨 |
crid (string) | キャンペーンのクリエイティブを一意に識別します。クリエイティブが新しいインプレッションに表示されることを示すために、同じクリエイティブに新しいクリエイティブIDを割り当てないでください。 | はい |
dealid (string) | この入札がインベントリパッケージに関連する場合、bid requestからのdeal.idへの参照。インベントリパッケージに対して入札する場合を除き、渡さないでください。 | インベントリパッケージの場合は必須 |
ext (object) | OpenRTBに対する入札者固有の拡張機能のプレースホルダー。 | いいえ |
ext.crtype (string) | 配信する広告のタイプを示します。有効な値は以下の通りです:
crtypeのみを購入する場合、AppLovin側でcrtypeをハードコードすることができます。ご希望の場合は、AppLovinのアカウントマネージャーにお問い合わせください。bid.crtypeでcrtypeを渡すこともサポートされています。 | 推奨 |
ext.clicktrackers (string array) | AppLovinがクリックイベントを記録するときに一貫して追跡されるクリックトラッキングURL(ファーストパーティおよびサードパーティ)。これはネイティブには適用されません。 | HTML広告 + SKAD (SKAdNetwork) を実行している場合は必須 |
ext.duration (integer) | 動画の長さ(秒単位)。 | CTVインベントリの場合は必須 |
ext.imptrackers (string array) | サードパーティのトラッキングニーズで使用されるインプレッショントラッキングURL。これはネイティブには適用されません。nativeオブジェクトのeventtrackersを参照してください。 | いいえ |
ext.skadn (object) | loadProduct()を介してAppleのSKAdNetworkアトリビューションAPIをサポートするために必要なパラメータ。 | いいえ |
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で導入された複数のフィデリティタイプをサポートします。 | ext.skadnが存在する場合は必須 |
….fidelities[«n»].fidelity (integer) | 追跡するアトリビューションのフィデリティタイプ。 | ext.skadnが存在する場合は必須 |
….fidelities[«n»].nonce (string) | 各広告レスポンスに固有のID。適切なUUIDフォーマット要件については、Appleのドキュメントを参照してください。 | ext.skadnが存在する場合は必須 |
….fidelities[«n»].signature (string) | Appleによって指定されたSKAdNetwork署名。 | ext.skadnが存在する場合は必須 |
….fidelities[«n»].timestamp (string) | ミリ秒単位のUnix時間。signatureの時点で使用される文字列。 | ext.skadnが存在する場合は必須 |
ext.skadn.itunesitem (string) | AppleのApp Storeにおける広告主アプリのID。BidResponse.seatbid.bid.bundleと一致する必要があります。 | ext.skadnが存在する場合は必須 |
ext.skadn.network (string) | 署名で使用されるアドネットワーク識別子。リクエスト内のskadnetids配列のアイテムのいずれかと一致する必要があります。 | ext.skadnが存在する場合は必須 |
ext.skadn.nonce (string) | 各広告レスポンスに固有のID。適切なUUIDフォーマット要件については、Appleのドキュメントを参照してください。注意: SKAdNetwork v2.2のリリースに伴い、このフィールドは非推奨となり、複数のフィデリティタイプをサポートするext.skadn.fidelities[«n»].nonceが推奨されます。 | ext.skadnが存在する場合は必須 |
ext.skadn.productpage (string) | カスタムプロダクトページID。 | いいえ |
ext.skadn.signature (string) | Appleによって指定されたSKAdNetwork署名。注意: SKAdNetwork 2.2のリリースに伴い、このフィールドは非推奨となり、複数のフィデリティタイプをサポートするext.skadn.fidelities[«n»].signatureが推奨されます。 | ext.skadnが存在する場合は必須 |
ext.skadn.skoverlay (object) | 潜在的なSKOverlayを制御するためのパラメータ。オーバーレイは、動画の開始、コンパニオン広告のレンダリング、またはユーザーがオーバーレイを閉じたが広告が開いたままになっている状態の後に、遅延(遅延なしの場合は0)を伴ってトリガーできます。注意: Appleはクリックコールバックを提供しないため、AppLovinはユーザーがSKOverlayをクリックしたタイミングを追跡しません。 | いいえ |
….skoverlay.position (integer) | オーバーレイの位置。0 = bottom、1 = bottomRaised。デフォルトは0。 | いいえ |
….skoverlay.dismissable (integer) | ユーザーがオーバーレイを閉じることができるかどうか(1は閉じることができる、0は画面上に固定されることを意味します)。デフォルトは1。 | いいえ |
….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のApp StoreにおけるパブリッシャーアプリのID。BidRequest.imp.ext.skad.sourceappと一致する必要があります。 | ext.skadnが存在する場合は必須 |
ext.skadn.timestamp (string) | ミリ秒単位のUnix時間文字列。signatureの時点で使用されます。注意: SKAdNetwork 2.2のリリースに伴い、このフィールドは非推奨となり、複数のフィデリティタイプをサポートするext.skadn.fidelities[«n»].timestampが推奨されます。 | ext.skadnが存在する場合は必須 |
ext.skadn.version (string) | 希望するSKAdNetworkのバージョン。2.0以上である必要があります。 | ext.skadnが存在する場合は必須 |
ext.vendor (string array) | 表示される広告のビューアビリティを測定するビューアビリティベンダーの名前。インプレッションのビューアビリティ測定値を収集する場合にのみ、bid responseでビューアビリティベンダーを宣言する必要があります。Integral Ad Science (IAS)の場合は"ias"に設定します。Moatの場合は"moat"に設定します。バイヤーは、ビューアビリティ測定用のディスプレイキャンペーンを返す場合、bid responseでベンダーを返答する必要があります。Open Measurement Viewabilityには適用されません。 | ビューアビリティを測定するキャンペーンの場合は必須 |
h (integer) | 密度独立ピクセル(dp)単位でのクリエイティブの高さ。 | 推奨 |
id (string) | ロギング/トラッキングを支援するために入札者が生成した入札ID。 | はい |
impid (string) | 関連するbid request内のImpressionオブジェクトのID。 | はい |
lurl (string) | 入札が不落札だったときにエクスチェンジによって呼び出されるloss通知URL。置換マクロを含めることができます。サポートされているマクロを参照してください。 | いいえ |
nurl (string) | 入札がインプレッション機会を獲得した場合にエクスチェンジによって呼び出されるwin通知URL。 | 推奨 |
price (float) | CPMとして表される入札価格(実際の取引はユニットインプレッションのみですが)。タイプはfloatを示していますが、通貨を処理する際には整数演算(JavaのBigDecimalなど)を強く推奨します。 | はい |
protocol (integer) | 該当する場合、マークアップの動画レスポンスプロトコル。詳細はOpenRTB Spec 2.5 Table 5.8を参照してください。 | いいえ |
w (integer) | 密度独立ピクセル(dp)単位でのクリエイティブの幅。 | 推奨 |
次の表は、デマンドサイドプラットフォーム(DSP)が利用できるトラッキングフィールドと、その推奨される用途を示しています。
インプレッションと支出は、bid responseフィールドのburlを使用して追跡する必要があります。
AppLovinは、トラッキングにburlが使用されている場合にのみ不一致を調査します。
bidresponse.bid. トラッカー | メソッド | 推奨される用途 |
|---|---|---|
.adm |
|
|
.adm.native.eventtrackers | クライアントサイドで発火 |
imgおよびjsタグをサポートします。これらのフィールドはIABによって非推奨予定(eventtrackersが推奨されるため)であるため、DSPはnative.imptrackersやnative.jstrackerではなく、native.eventtrackersを使用することが推奨されます。 |
.adm.native.imptrackers | クライアントサイドで発火(eventtrackers推奨のため非推奨) | 無効トラフィック(IVT)トラッキング |
.adm.native.jstracker | クライアントサイドで発火(eventtrackers推奨のため非推奨) | Open Measurement SDK (OMSDK) |
.adm.native.link.clicktrackers | クライアントサイドで発火 | クリックトラッキング(任意) |
.burl | サーバーサイドで発火。サーバー間コールバックのヘッダーとしてX-Device-IPとX-Device-User-Agentが送信されます:
| バイヤー(DSP)向けのインプレッションおよび支出トラッキング |
.ext.imptrackers | サーバーサイドで発火。サーバー間コールバックのヘッダーとしてX-Device-IPとX-Device-User-Agentが送信されます:
| パートナーによるインプレッショントラッキング |
{
"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"
}
{
"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"
}
]
}