セッションオファーAPI仕様 (S2S)
このドキュメントは、セッションAPI (v2) を使用してRoktからオファーコンテンツを取得するために必要なエンドポイントを概説しています。
必要な認証情報を取得するには、Roktのアカウントチームと連携してください。エンドツーエンドの統合手順については、セッションAPI統合 (S2S)を参照してください。
エンドポイントエンドポイント への直接リンク
| 環境 | アクション | URL |
|---|---|---|
| 本番 | POST | https://api.rokt.com/v2/sessions/offers |
別のサンドボックスURLはありません。本番稼働前に検証するには、同じエンドポイントでrokt-test-session: trueヘッダーを送信してください。テストセッションはタグ付けされ、本番のメトリクスから除外されます。このヘッダーは報告のみをマークし、オファーの提供を強制するものではありません。決定論的なエンドツーエンドテストのために、アカウントチームは専用のテストキャンペーンを持つステージングページを設定できます。本番稼働するにはヘッダーを削除してください。
リクエストリクエスト への直接リンク
認証ヘッダー認証ヘッダー への直接リンク
| ヘッダー | 説明 | タイプ | 注記 |
|---|---|---|---|
Authorization | ベーシック認証情報 | string | Basic base64(rpub:rsec) — アカウントチームから提供された公開および秘密のAPIキーを使用します。 |
rokt-account-id | あなたのRoktアカウントID | string | すべての呼び出しで必要です。これはセッションAPI上のアカウント識別のソースです。 |
必須ヘッダー必須ヘッダー への直接リンク
| ヘッダー | 説明 | タイプ | 例 |
|---|---|---|---|
Content-Type | メディアタイプ | string | application/json |
rokt-platform-type | オファーがリクエストされるプラットフォーム | string | iOS, Android, Web, WebDesktop, または WebMobile (大文字小文字を区別しません)。デフォルトは Web です。 |
サーバー間トラフィックはデフォルトでWebとして分類されます。Roktページがネイティブプラットフォーム(iOSまたはAndroid)用に設定されている場合は、そのプラットフォームにrokt-platform-typeヘッダーを設定してください。そうしないと、ページ検出がネイティブ設定されたページと一致せず、オファーが返されません。Web設定されたページにはヘッダーは必要ありません。
Root/BodyRoot/Body への直接リンク
| Property | Required | Type | Description |
|---|---|---|---|
channel | はい | object | "type": "s2s"を含む必要があります。 |
page | はい | object | Pageを参照してください。 |
customer | いいえ | object | Customerを参照してください。 |
transaction | いいえ | object | Transactionを参照してください。 |
payment | いいえ | object | Paymentを参照してください。 |
device | いいえ | object | Deviceを参照してください。 |
attributes | いいえ | object | 型付きオブジェクトに適合しないパートナー固有のシグナルのための自由形式のstring → stringマップ。 |
所有する値のみを送信してください。Rokt由来の属性 — 地理、年齢やその他の人口統計、デバイスタイプ/OS/バージョン、支払い方法、MLシグナル — はサーバー側で計算され、送信された場合は上書きされますので、含めないでください。
PagePage への直接リンク
| Property | Required | Type | Description |
|---|---|---|---|
page_identifier | はい | string | ビュー/ページを区別するために使用されるテキスト。 |
page_variation_code | いいえ | string | ページのオプションのバリエーションコード。 |
CustomerCustomer への直接リンク
| Property | Required | Type | Description |
|---|---|---|---|
email | いいえ | string | 顧客のメールアドレス。 |
first_name | いいえ | string | 顧客の名。 |
last_name | いいえ | string | 顧客の姓。 |
gender | いいえ | string | 顧客の性別。 |
postal_code | いいえ | string | 顧客の郵便番号/ZIPコード。 |
language | いいえ | string | 顧客の言語コード(例: en)。 |
TransactionTransaction への直接リンク
| Property | Required | Type | Description |
|---|---|---|---|
transaction_value | いいえ | number | トランザクションの値。 |
currency | いいえ | string | ISO 4217通貨コード(例: USD)。 |
confirmation_ref | いいえ | string | パートナー側の注文または確認参照。 |
支払い支払い への直接リンク
| プロパティ | 必須 | タイプ | 説明 |
|---|---|---|---|
type | いいえ | string | 支払い方法のタイプ(例: card)。 |
デバイスデバイス への直接リンク
| プロパティ | 必須 | タイプ | 説明 |
|---|---|---|---|
user_agent | いいえ | string | クライアントデバイスまたはアプリケーションのユーザーエージェント文字列。 |
リクエスト例リクエスト例 への直接リンク
POST https://api.rokt.com/v2/sessions/offers
Authorization: Basic base64(rpub:rsec)
rokt-account-id: <your Rokt account ID>
rokt-platform-type: Web
Content-Type: application/json
{
"channel": { "type": "s2s" },
"page": { "page_identifier": "checkout" },
"customer": {
"email": "jane.doe@example.com",
"first_name": "Jane",
"last_name": "Doe",
"gender": "F",
"postal_code": "10001",
"language": "en"
},
"transaction": {
"transaction_value": 19.99,
"currency": "USD",
"confirmation_ref": "ORDER-000123"
},
"payment": { "type": "card" },
"device": {
"user_agent": "YourApp/1.0 (mobile)"
},
"attributes": {
"your_custom_attribute": "value"
}
}
レスポンスレスポンス への直接リンク
成功レスポンス (2xx)成功レスポンス (2xx) への直接リンク
2xx レスポンスはオファーを直接返します — success/errors エンベロープはありません。 plugins は空である場合があり、これは実際のプロダクショントラフィックのシェアを表す有効なノーフィルシナリオです: 何もレンダリングせずにページを続行します。
キーフィールドキーフィールド への直接リンク
| 必要なもの | レスポンス内のパス |
|---|---|
| オファー | plugins[].plugin.config.slots[].offer |
| タイトル / コピー | …offer.creative.copy["creative.title"] |
| 画像 | …offer.creative.copy["creative.image.src"] |
| 免責事項 | …offer.creative.copy["creative.disclaimer"] |
| 利用規約リンク | …offer.creative.copy["creative.termsAndConditions.link"] |
| プライバシーポリシーリンク | …offer.creative.copy["creative.privacyPolicy.link"] |
| 広告主 | …offer.creative.advertiser |
| ポジティブアクション + URL | …offer.creative.response_options_map.positive.url |
| 辞退アクション | …offer.creative.response_options_map.negative |
要素インスタンスID(イベントとして使用 parent_id) | …slots[].instance_guid, …offer.creative.instance_guid, …response_options_map[key].instance_guid |
ページインスタンス(イベントとして使用 page_instance_guid) | page_instance_guid |
セッションID(イベントとして使用 session_id) | session_id |
| セッショントークン(更新されたセッション参照) | session_token.token |
広告主広告主 への直接リンク
| プロパティ | タイプ | 説明 |
|---|---|---|
name | string | 広告主の法的実体名。 |
brand | string | 広告主のブランド名。 |
Example success response (2xx)Example success response (2xx) への直接リンク
レイアウトが設定されたアカウントは、outer_layout_schema とスロットごとの layout_variant フィールドが埋め込まれて返されます。データ統合アカウントは、同じ offer/creative コンテンツを返しますが、これらのレイアウトスキーマは空です。以下のすべての値は合成例です — 必要なフィールドは上記の Key fields パスを使用して読み取ってください。
{
"session_id": "b1fb003c-e904-4083-b7b9-03cde555a7a1",
"page_instance_guid": "018f2a1b-0000-7abc-8def-page00000001",
"session_token": {
"token": "<session_token>"
},
"plugins": [
{
"plugin": {
"id": "3353172846080032866",
"name": "dcui",
"config": {
"instance_guid": "ce5158a9-dc59-4a97-9006-a299901e4587",
"outer_layout_schema": "<JSON-encoded layout schema>",
"layout_schema_version": "2.0",
"slots": [
{
"instance_guid": "8f492d28-83fb-4813-877e-26e752ea9474",
"offer": {
"campaign_id": "2749386944931233793",
"account_id": "<your Rokt account ID>",
"creative": {
"referral_creative_id": "2760914349384466797",
"instance_guid": "c9f37d78-731d-4a0e-b8bc-712bd8c46cc1",
"advertiser": {
"name": "Example Advertiser Inc.",
"brand": "Example Brand"
},
"copy": {
"creative.title": "Get 20% off your next order",
"creative.image.src": "https://example.com/creative/hero.png",
"creative.disclaimer": "New customers only. Terms apply.",
"creative.termsAndConditions.link": "https://example.com/terms",
"creative.privacyPolicy.link": "https://example.com/privacy"
},
"response_options_map": {
"positive": {
"id": "2760914349384466794",
"action": "Url",
"instance_guid": "1d47ded1-b483-44e6-abf8-1d1d5faa82bc",
"signal_type": "SignalResponse",
"short_label": "Yes",
"long_label": "Yes please",
"is_positive": true,
"url": "https://example.com/redeem",
"url_behavior": "newTab",
"token": "<event-token>"
},
"negative": {
"id": "2760914349384466796",
"action": "CaptureOnly",
"instance_guid": "24de5c75-ff04-41c5-b3f7-7d2ee129ecc6",
"signal_type": "SignalResponse",
"short_label": "No thanks",
"long_label": "No thanks",
"is_positive": false,
"token": "<event-token>"
}
},
"token": "<event-token>"
}
},
"layout_variant": {
"layout_variant_id": "3353172846080032865",
"module_name": "standard-marketing",
"format_type": "Text",
"layout_variant_schema": "<JSON-encoded layout schema>"
},
"token": "<event-token>"
}
]
}
},
"fonts": []
}
]
}
No-fill response (2xx)No-fill response (2xx) への直接リンク
特定のユーザーに関連するオファーがない場合、Rokt は空の plugins 配列で 2xx を返します。何もレンダリングせず、ページを続行してください。
{
"plugins": [],
"page_instance_guid": "018f2a1b-0000-7abc-8def-page00000001",
"session_token": {
"token": "<session_token>"
}
}
Error responses (4xx / 5xx)Error responses (4xx / 5xx) への直接リンク
エラーは、構造化されたボディを持つセマンティックなHTTPステータスを返します:
{
"error": "<code>",
"message": "<detail>"
}
バリデーションの失敗には、追加の details[] 配列が含まれます。
Common error codesCommon error codes への直接リンク
| HTTP status | 意味 |
|---|---|
400 | 不正なリクエストボディ。 |
401 | 欠落または無効な Authorization ヘッダー。 |
422 | リクエストのバリデーションに失敗しました(details[] を参照)。 |
429 | レート制限。自動的に再試行しないでください — 429が続く場合は、Roktの担当者に連絡してください。 |
5xx | 予期しないサーバーエラー。短時間(1–2秒)待ってから再試行してください。問題が続く場合は、support@rokt.com に連絡してください。 |
Caching offersCaching offers への直接リンク
収益機会を最大化するために、ユーザーのトランザクションの流れの早い段階で /v2/sessions/offers からオファーコンテンツを取得し、オファーが表示される前にキャッシュして、同じトランザクション内での迅速なクライアント取得を可能にします。
ユニークなトランザクションID、ユーザーID、およびユーザーのデバイスタイプの組み合わせに対してキャッシュすることをお勧めします。ユーザーのコンテキストが変わった場合(例:デバイスの変更)、オファーの関連性を確保するために更新された属性で再取得してください。