Compliance APIを有効にするには、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の場合、ウィンドウには複数ページのアクティビティが含まれています。レスポンスの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?