> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 概要

> 訪問者イベント、商品データ、外部マップデータの取得および書き込みを行う Kameleoon Data API REST エンドポイントの概要。

**Data API** は、Kameleoon のリモートサーバーに保存されたデータを取得または書き込むための REST API です。利用可能なエンドポイントを使用して、次のことができます。

* 特定の訪問者の訪問イベントを取得する。
* オフラインコンバージョンイベントなど、特定の訪問者の追加の訪問イベントを送信する。
* 特定のサイトコードの商品データを送受信する。
* CRM やセグメンテーションデータなど、特定の訪問者の追加データを保存する。

## Data API エンドポイント

**エンドポイントは大きく分けて 3 つのデータカテゴリーに分類されます。**

### Visit エンドポイント

**Visit エンドポイント**は、指定された訪問者コードに対するイベント(コンバージョン、カスタムデータ、セグメントなど)を取得および送信します。これらのエンドポイントを使用して、実店舗での購入などのオフライン購入データを Kameleoon にインポートできます。

* [GET /visit/visitor](/api-reference/visit/get-visitor-data): このエンドポイントは、ユーザーに対してトリガーされた実験やパーソナライゼーション、ターゲットセグメントなど、Kameleoon が収集した訪問データを取得します。

<Note>
  このエンドポイントへのアクセスには、Kameleoon [Feature Experimentation](../../feature-experimentation/targeting-and-segmentation/native-segmentation#handling-data-in-kameleoon-sdks) ソリューションが必要です。詳細については、カスタマーサクセスマネージャーにお問い合わせください。
</Note>

* [POST /visit/forget](/api-reference/visit/remove-data-for-several-visitors): このエンドポイントは、複数の訪問者のデータを削除します。
* [POST /visit/events](/api-reference/visit/send-visitor-events): このエンドポイントは、コンバージョンやページビューイベントなど、特定の訪問者のデータを送信します。

### Product エンドポイント

**Product エンドポイント**は、特定のサイトコードの商品データを取得および送信します。これらのエンドポイントを使用して、ビュー、カートへの追加、購入などの商品イベントを登録したり、特定の商品の過去の購入数やビュー数などの統計情報を取得したりできます。

* [POST /product/events](/api-reference/product/send-product-events): このエンドポイントは、複数の商品の属性やイベント（ビュー、カートへの追加、購入）を送信します。[Activation API](../activation-api-js/api-reference/api-reference#kameleoonapiproducts) は、`obtainProductData` および `obtainProductInteractions` メソッドを使用して、このデータを取得し、ターゲティングやレコメンデーションに利用します。
* [GET /product/productCounters](/api-reference/product/get-product-counters): このエンドポイントは、複数の商品のカウント(ビュー数、カート追加数、トランザクション数)を取得します。
* [GET /product/productData](/api-reference/product/get-product-data): このエンドポイントは、複数の商品の属性を取得します。

<Note>
  これらのエンドポイントを使用するには、Product Recommendation モジュールまたは Product Targeting アドオンへのアクセスが必要です。両方とも [Web Experimentation](https://www.kameleoon.com/en/platform/ab-testing-client-side) ソリューションと統合されます。詳細については、カスタマーサクセスマネージャーにお問い合わせください。
</Note>

### Map エンドポイント

**Map エンドポイント**は、特定のキー(通常は訪問者コードまたは内部ユーザー ID)に対する追加データを保存します。[Activation API](../activation-api-js/api-reference/api-reference#retrievedatafromremotesource) およびすべての [SDK](../../sdks/web-sdks/nodejs-sdk#getremotedata) は、`retrieveDataFromRemoteSource` メソッドを使用して、このデータを取得し、ターゲティングおよびセグメンテーションに利用します。`map` エンドポイントを使用して、特定のキーに保存されたデータを取得します。

* [GET /map/map](/api-reference/map/get-data-for-a-key): このエンドポイントは、指定されたキーのデータを取得します。
* [GET /map/maps](/api-reference/map/get-data-for-a-key): このエンドポイントは、複数のキーのデータを取得します。
* [POST /map/maps](/api-reference/map/update-data-for-several-keys): このエンドポイントは、複数のキーのデータを送信します。

## 認証とレート制限

### 認証

Data API は、JSON Web トークンを利用した [Automation API](../automation-api-rest/get-started/get-started#認証) と同じ認証フローを使用します。

セキュリティを維持し、API 認証情報を保護するため、特定のタイプのリクエストには認証を使用してください。

* **サーバーサイドのソース**: サーバーから発信されるリクエストには、Kameleoon は認証を強く推奨します。これにより [レート制限](#レート制限) が引き上げられます。Feature Experimentation でサーバーサイド SDK を使用する場合は認証してください。
* **クライアントサイドのソース**: Web ブラウザなどのクライアントアプリケーションから発信され、API 認証情報が公開される可能性のあるリクエストでは、**認証しないでください**。Kameleoon は、Kameleoon Web Experimentation を使用する場合にはこの構成を推奨しません。

不正な形式の API トークン、期限切れのトークン、または無効な署名を提供するリクエストはすべて、HTTP 401「Unauthorized」応答となります。

認証プロセスの詳細については、[Automation API 認証フロー](../automation-api-rest/get-started/get-started#認証) のドキュメントを参照してください。

<Note>
  Data API は Web Experimentation エンジンによる過去のデータ取得をサポートするため、デフォルトでは Data API は認証を必要としません。Feature Experimentation とサーバーサイド SDK のみを使用している場合は、カスタマーサクセスマネージャーに連絡して、特定のエンドポイントに対する認証を有効化してください。Kameleoon は、エンドポイントを保護し、GET または POST リクエストに認証を制限する柔軟なセットアップを提供しています。
</Note>

### レート制限

Data API は、**契約上の月間ユニーク訪問者数 (MUV)** と**お客様の IP アドレス** に基づいてレート制限を適用します。アプリケーションがこれらの制限を超えた場合、API は **HTTP 429 - "Too Many Requests"** 応答を返します。
これらのレート制限により、すべての顧客に対して Kameleoon サービスの安定した高いパフォーマンスが確保されます。

**サーバーサイドのソース**の IP ベースの制限を解除するには、[認証](#認証) を行います。

| **リクエストタイプ**       | **すべてのリクエストに適用される制限**                                                  | **未認証リクエストのみに適用される追加制限**           |
| ------------------ | ---------------------------------------------------------------------- | ---------------------------------- |
| **GET リクエスト**      | 顧客アカウントあたり 1 分間に `((500,000 + MUV 数) / 500) * multiplier` リクエスト        | IP あたり 1 分間に `120` リクエスト           |
| **その他の HTTP メソッド** | 顧客アカウントあたり 1 分間に `((500,000 + MUV 数) / 50) * multiplier` リクエスト(メソッド単位) | IP あたり 1 分間に `1,200` リクエスト(メソッド単位) |

`multiplier` の値はご契約内容によって異なります：

* `1` — Web Experimentation または Feature Experimentation のいずれか一方のみを利用している場合
* `2` — Web Experimentation と Feature Experimentation の両方を利用している場合

<Note>
  ユースケースで上記より高いレート制限が必要な場合は、アカウントマネージャーにお問い合わせください。
</Note>

#### リクエストを生成するもの

どの操作が GET リクエストと POST リクエストを生成するかを理解することで、レート制限の消費量を見積もり、管理するのに役立ちます。以下の詳細は主に**クライアントサイドのテクノロジー**（engine.js、JavaScript SDK、モバイル SDK）に適用されます。これらでは各デバイスが独自のリクエストを発行します。POST トラッキングリクエストの場合、サーバーサイド SDK は複数の訪問者のデータを 1 つのリクエストにまとめることができるため、大規模な環境でより効率的です。GET リクエストは常に単一の訪問者を対象とします。

アプリケーションが以下のいずれかの操作を明示的に呼び出した場合にのみ、**GET リクエスト**をトリガーします。SDK とエンジンは自動ポーリングを行いません：

* **訪問者データのフェッチ**：`getRemoteVisitorData()`（SDK）または `performRemoteSynchronization()`（engine.js）は、特定の訪問者のリモート訪問者データをオンデマンドで読み込みます。
* **リモートデータとウェアハウスオーディエンスのフェッチ**：`getVisitorWarehouseAudience()`（SDK）または `retrieveDataFromRemoteSource()`（SDK および engine.js）は、データウェアハウスまたはリモートマップデータをオンデマンドで読み込みます。

**POST リクエスト**は、訪問者データを送信前にまとめるトラッキングメカニズムから生成されます：

* **トラッキングリクエスト**：主要な定期的な POST 呼び出しです。SDK またはエンジンは保留中の訪問者データをまとめ、保留データがある場合にのみトラッキングインターバルごとに最大 1 回送信します。デフォルトのインターバルは 1 秒です。SDK では、`trackingIntervalMillisecond` / `tracking_interval_millisecond`設定パラメータを使用して、インターバルを 1〜5 秒の範囲で設定できます。engine.js のインターバルは 500 ミリ秒に固定されています。コンバージョン、追跡されたフィーチャーフラグの評価、明示的な `flush()` 呼び出しがすべて次のインターバルのデータをキューに追加します。インスタントフラッシュをトリガーした場合は即時送信されます。
* **アクティビティトラッキング**：訪問者のアクティビティデータ（クリック、スクロール、マウス移動）を次のトラッキング送信に組み込むサブメカニズムです。SDK は、ユーザーがアクティブなタブで操作しているときのみアクティビティデータを収集します。デフォルトのインターバルは 60 秒です。SDK では、`activityTrackingIntervalMillisecond` / `activity_tracking_interval_millisecond`設定パラメータを使用してインターバルを設定できます。engine.js のインターバルは 60 秒に固定されています。

**モバイル SDK** の場合：アプリがバックグラウンドに移行すると、定期的なトラッキングは自動的に一時停止されます。アプリの状態に関わらず、明示的な即時フラッシュを使用して保留中のデータを送信できます。

**JavaScript SDK** の場合：前回のインターバルティック以降に訪問者がページと実際にインタラクション（マウス移動またはスクロール）した場合にのみトラッキングリクエストが送信され、非表示またはバックグラウンドのタブが訪問数を水増しするのを防ぎます。ページが非アクティブな状態でもデータを送信し続けるには、`flush({instant: true})` を明示的に呼び出してください。Kameleoon エンジン（`window.Kameleoon`）がページに存在する場合、SDK はアクティビティトラッキングの重複を防ぎます。

#### アカウントレベルの制限

レート制限はプロジェクト単位ではなく、顧客アカウント全体に適用されます。1つのプロジェクトが過剰なリクエストを生成した場合（例えば、実装の誤りによりカスタムデータイベントを繰り返し送信するループが発生した場合）、そのプロジェクトがアカウント全体で共有されている制限を消費し、他のすべてのプロジェクトで HTTP 429 エラーが発生する可能性があります。

#### 過剰なリクエスト量の診断

[Live events](/user-manual/experiment-analytics/analyze-results/data-and-metrics/live-events) ページ（**Insights > Live events**）を使用して、予期しないトラフィックを生成しているプロジェクトを特定してください。

1. **プロジェクト別のイベント量を確認する**: 各プロジェクトを順番に選択し、過去1時間または24時間のイベント数を確認します。訪問者数に比べてイベント数が著しく多いプロジェクト（例えば、100,000 MUV 契約に対して数千万のイベント）が原因である可能性が高いです。
2. **イベントタイプでフィルタリングする**: 疑わしいプロジェクトを特定したら、イベントをタイプでフィルタリングしてください。カスタムデータイベントが予期しない量の最も一般的な原因です。設定が誤った実装は、ページの読み込みごとに同じカスタムデータ変数、またはすべてのカスタムデータ変数を送信するループを作成し、短時間で大量のイベントを生成することがあります。

#### リクエスト数を確認する

Automation API の Data API リクエストエンドポイントを使用すると、レート制限に近づく前に、Data API へのリクエスト量がどこから発生しているかを正確に確認できます：

* **エンドポイント別**: `GET /data-api-requests/by-endpoint` は、指定したサイトに対して Data API に送信されたリクエスト数を、日別、HTTP メソッド別、パス別、ステータスコード別に集計して返します。このエンドポイントを使用して、どのインテグレーションまたはエンドポイントがトラフィックの原因となっているかを特定します。
* **ソース別**: `GET /data-api-requests/by-source` は、指定したサイトに対して Data API に送信されたリクエスト数を、日別およびソース別（`Engine`、`SDK: <name>`、または `Direct`）に集計して返します。このエンドポイントを使用して、どのクライアントタイプがトラフィックの原因となっているかを特定します。

両方のエンドポイントは、同じ 3 つの必須クエリパラメータを受け取ります：

| **パラメータ**  | **型**  | **説明**                                       |
| ---------- | ------ | -------------------------------------------- |
| `siteCode` | string | Kameleoon の sitecode。                        |
| `from`     | date   | 日付範囲の開始日。ISO 8601 形式（`YYYY-MM-DD`）。この日を含みます。 |
| `to`       | date   | 日付範囲の終了日。ISO 8601 形式（`YYYY-MM-DD`）。この日を含みます。 |

<Note>
  `from` と `to` の間の範囲は 7 日を超えることはできません。
</Note>

他の Automation API 呼び出しと同じ [Automation API の認証フロー](../automation-api-rest/get-started/get-started#認証) に従い、OAuth 2.0 ベアラートークンで認証します。

HTTP メソッド、パス、ステータスコード別にリクエスト量を集計するには、以下を実行します：

```bash curl theme={null}
curl -H "Authorization: Bearer <ACCESS_TOKEN>" \
     -H "Content-Type: application/json" \
     "https://api.kameleoon.com/data-api-requests/by-endpoint?siteCode=<SITE_CODE>&from=2026-07-17&to=2026-07-23"
```

ソース別にリクエスト量を集計するには、以下を実行します：

```bash curl theme={null}
curl -H "Authorization: Bearer <ACCESS_TOKEN>" \
     -H "Content-Type: application/json" \
     "https://api.kameleoon.com/data-api-requests/by-source?siteCode=<SITE_CODE>&from=2026-07-17&to=2026-07-23"
```

[Live events](/user-manual/experiment-analytics/analyze-results/data-and-metrics/live-events) が予期しないトラフィックを示すたびにこの確認を実行し、どの HTTP メソッド、パス、ステータスコード、またはソースがリクエスト量を占めているかを確認してください。
