Compliance APIはリクエストに応じて有効化されます。Claude Enterprise組織はAPI全体にアクセスできます。Claude Console組織はアクティビティフィードのみにアクセスできます。詳細はCompliance APIへのアクセスを取得するを参照してください。
必要なスコープ: Compliance Access KeyまたはAdmin APIキーに対するread:compliance_activities。
本番環境のCompliance API統合では、3つの設計上の選択を行います。Activity Feedをどのように消費するか、その出力を「security information and event management」(セキュリティ情報イベント管理)、すなわちSIEMシステムとどのように相関させるか、そしてアクティビティとコンテンツの長期コピーをどこに保存するかです。これらの選択はエンドポイント自体とは独立しています。このページは、トレードオフを評価するのに役立ちます。
このページは、全体を通して参照されるパラメータとページネーションの規約を定義しているActivity Feedをクエリする、およびコンテンツ保持を計画するで参照されるコンテンツエンドポイントとdeleted_atのセマンティクスを定義しているチャット、ファイル、プロジェクトを取得および削除するを既に読んでいることを前提としています。
Activity Feedは2つの消費パターンをサポートしています。created_at.gteとcreated_at.ltで範囲を限定した定期的なウィンドウポーリングと、あるレスポンスからカーソルを永続化して次のリクエストで渡すカーソル駆動の増分読み取りです。どちらも同一のActivityオブジェクトを返します。違いは、クライアントが呼び出し間で永続化する状態です。
両方のパターンは以下の制約を共有します。
limitは5,000です。/v1/compliance/*エンドポイントで共有されます。レスポンスヘッダーとリトライの規約については、429 Too Many Requestsを参照してください。| パターン | 選択すべき場合 |
|---|---|
| ウィンドウポーリング | パイプラインが固定スケジュールで実行され、ステートレスなワーカーを好み、ウィンドウの再実行や重複を許容できる場合 |
| カーソル駆動の増分読み取り | アクティビティの発生からパイプラインへの取り込みまでのレイテンシを最小にしたい場合、既に処理済みのページを再読み取りしたくない場合、実行間でカーソルを永続化できる耐久性のある保存場所がある場合 |
ウィンドウ内のすべてのアクティビティが既にクエリ可能になるように、created_at.ltを少なくとも1分前に設定します。下限にはcreated_at.gteを、上限にはcreated_at.ltを使用することで、連続するウィンドウがギャップや重複なくタイル状に並びます。前のウィンドウのlt値を次のウィンドウのgteとして再利用してください。
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "created_at.gte=2026-04-20T07:00:00Z" \
--data-urlencode "created_at.lt=2026-04-20T08:00:00Z" \
--data-urlencode "limit=5000"レスポンスにhas_more: trueが含まれている場合、ウィンドウには1ページ以上のアクティビティが含まれています。レスポンスのlast_idを次のリクエストのafter_idとして渡してウィンドウ内でページングする(has_moreがfalseになったら停止する)か、より小さな時間ウィンドウを選択してください。完全な規約については、結果をページネーションするを参照してください。
きれいにタイル状に並べても、ウィンドウが閉じた後にインデックス化されたアクティビティは、後のウィンドウには決して現れません。アクティビティのidで重複排除を行い、各新しいウィンドウを前のウィンドウと数分重なるように広げるか、古いウィンドウを再クエリする定期的な照合パスを実行してください。
現在時刻に近すぎるcreated_at.ltの境界は、遅れてインデックス化されたアクティビティを静かに、かつ永久に取りこぼします。created_at.gteがそれらを通り過ぎると、後のウィンドウでは回復できません。1分間のクエリ可能性の数値は、緩やかな推奨ではなく、ドキュメント化されたインデックス化の遅延として扱ってください。
first_id="activity_01XyDMpzjS89pFZXqSFUBDr6" # first_id from a previous response
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "limit=5000" \
--data-urlencode "before_id=$first_id"has_moreがfalseになるまでページングし、最終レスポンスのfirst_idを永続化して、次の実行時にそのままbefore_idとして渡すことで、保存したカーソルより新しいアクティビティを取得します。バックフィルのために逆方向に進むには、代わりにlast_idを永続化してafter_idとして渡します。カーソルとページトークンの完全なリファレンスおよびリトライのセマンティクスについては、結果をページネーションするを参照してください。
本番環境のキャッチアップループは、has_moreとfirst_idに基づいて反復を駆動することで、前回のポーリング以降に記録されたアクティビティを取得します。
cursor = stored_cursor
loop:
page = GET /v1/compliance/activities?before_id={cursor}&limit=5000
store(page.data)
if page.first_id is not null:
cursor = page.first_id
if not page.has_more: break
persist(cursor)カーソルはキーのローテーション後も有効です。キーの管理とローテーションを参照してください。
各ページは渡したカーソルに隣接しています。ループは現在に向かって1ページずつ前進します。has_moreがtrueの間は、単一のレスポンスをキャッチアップ完了として扱わないでください。has_moreがfalseになった後にのみカーソルを永続化してください。未取得のページは、このレスポンスのfirst_idと現在時刻の間にあるより新しいページであり、ループを完了するか再度実行するまで未読のままです。
各Activityには、SIEM(Splunk、Datadog、Microsoft Sentinel、Criblなど)に既にあるイベントと結合できるフィールドが含まれています。
| Compliance APIフィールド | 結合対象 |
|---|---|
actor.user_id | IDプロバイダーの安定したユーザー識別子 |
actor.email_address | 安定したIDが利用できない場合のディレクトリメールアドレス |
actor.ip_address | ネットワーク、VPN、エンドポイントのログ |
created_at | あらゆるソース間での時間ウィンドウ相関 |
actor.user_idとactor.email_addressは、actor.typeがuser_actorの場合に存在します。読み取る前にディスクリミネータを確認してください。user_idはユーザーアカウントの安定した不透明な識別子です。すべてのCompliance APIエンドポイントとアクティビティペイロードで一貫しており、ユーザーのメールアドレスや表示名が変更されても変わりません。主要な結合キーとしては、email_addressではなくuser_idを使用してください。
Compliance API自体への呼び出しは、compliance_api_accessedアクティビティを発行します。これらを他のアクティビティタイプと一緒に取り込むことで、SIEMは誰がいつコンプライアンスデータをクエリしたかを記録します。activity_types[]=compliance_api_accessedを渡してクエリのスコープを絞り、クライアント側でactor.typeがapi_actorである各アクティビティからactor.api_key_idを読み取ることで、アクセスを特定のCompliance Access KeyまたはAdmin APIキーに帰属させます。
後で取得できる内容は、3つの保持期間によって決まります。
| データ | 保持期間 | 管理者 |
|---|---|---|
| Activity Feedレコード | 6年間 | Anthropic |
| チャット、ファイル、プロジェクトのコンテンツ | 組織のclaude.ai保持ポリシー | 組織 |
| Compliance APIを通じてハード削除されたコンテンツ | 保持されません。削除は即時かつ永久です | DELETEエンドポイントの呼び出し元 |
Claude Platformの他の部分が保持をどのように処理するかについては、APIとデータ保持を参照してください。
エクスポートしてアーカイブするか、オンデマンドでAPI取得するかは、以下のように判断してください。
deleted_atが設定された状態で取得可能なままですが、Compliance APIの削除はそうではありません。それ以外のすべてのケースでは、直接API取得に依存し、並行コピーの維持を避けてください。
Activity Feedはat-least-once(少なくとも1回)として扱ってください。正しくページネーションされた走査はすべてのアクティビティを少なくとも1回返しますが、部分的な失敗後のリトライは、既に保存したアクティビティを再配信する可能性があります。アクティビティのidフィールドで重複排除を行ってください。
リストエンドポイントはtotal_countフィールドやチェックサムを返しません。エクスポート実行が完了したことを証明するには、以下をログに記録してください。
last_id。request-id。コンテンツエンドポイント(チャット、ファイル、プロジェクト、プロジェクト添付ファイル)はclaude.aiのデータのみを提供します。Activity Feedは組織全体の管理イベントとリソースイベントを表示します。Compliance APIには以下は含まれません。
Compliance APIが取得するものと取得しないものの詳細については、Compliance API FAQを参照してください。
証拠保全の連鎖(chain of custody)のために、エクスポートされたレコードを出所メタデータとともに保存してください。ソースエンドポイント、クエリパラメータ、実行タイムスタンプ、各レコードのコンテンツハッシュです。
フィルターパラメータ、ページネーション、Activityオブジェクトスキーマ。
コンテンツエンドポイントとハード削除エンドポイント。
Was this page helpful?