
Claude EnterpriseのCompliance APIでできることを整理してみた
AI事業本部/生成AIインテグレーション部/西日本開発チームの片桐です。
今回は、Claude EnterpriseのCompliance APIを実際に触ってみて、できることを整理してみました。
はじめに
Claude Enterpriseには管理画面から確認できないようなチャット・ファイル・プロジェクトの取得・削除などが行えるAPIが存在します。
公式ドキュメントが「Activity Feed」「組織データ」「コンテンツ取得」「統合設計」などページごとに分かれていて、全体像を把握するのに少し手間取ったので、一度整理してみることにしました。
対象読者
- Compliance APIで何ができるのか、全体像を知りたい方
- 監査ログエクスポートとの違いを整理したい方
Compliance APIとは
Compliance APIは、Claude Enterpriseの組織に対して、セキュリティ・法務・コンプライアンスチームがプログラムから次のことを行うためのAPIです。
- 組織のアクティビティ(誰が・いつ・何をしたか)を監査する
- claude.ai上のチャット・ファイル・プロジェクトのコンテンツを取得または削除する
- リンクされた組織・ユーザー・ロール・グループのディレクトリと、各組織の実効設定を確認する
- これらのイベントをSIEMなどに送り込む
エンドポイントはすべてhttps://api.anthropic.com/v1/compliance/*配下にあり、x-api-keyヘッダーで認証します。
2種類のキーと使い分け
Compliance APIを呼び出すには2種類のキーがあり、作成場所も作成できる人も異なります。
| キーの種類 | 作成場所 | 作成できる人 | 使える範囲 |
|---|---|---|---|
Compliance Access Key(sk-ant-api01-...) |
claude.ai > 組織設定 > API | 親組織のプライマリオーナー(自組織限定なら組織オーナーも可) | Compliance APIの全エンドポイント |
Admin APIキー(sk-ant-admin01-...) |
Claude Console > 設定 > Admin keys | 組織管理者 | Activity Feedのみ |
Admin APIキーは「組織でCompliance APIが有効化された後に作成されたものだけ」がread:compliance_activitiesスコープを持てる点に注意が必要です。
有効化前に作ったAdmin APIキーはこのスコープを持ちません。
Analytics APIキーや通常のClaude APIキー(sk-ant-api03-...)はCompliance APIの認証には使えません。
スコープ一覧
Compliance Access Keyには、用途に応じて次の4スコープを組み合わせて付与します。
作成後にスコープを変更することはできないため、新しいキーを作り直す必要があります。
| スコープ | できること |
|---|---|
read:compliance_activities |
Activity Feedの読み取り |
read:compliance_org_data |
組織メタデータ、ロール、グループ、実効設定の読み取り |
read:compliance_user_data |
チャット・メッセージ・ファイル・プロジェクト・組織ユーザー・グループメンバーの読み取り |
delete:compliance_user_data |
チャット・ファイル・プロジェクトの削除 |
読み取り用と削除用でスコープが分かれているのがポイントです。
「読み取り専用キーが漏洩しても削除はできない」ように、読み取りと削除でキー自体を分けることが公式に推奨されています。
Compliance APIでできること
1. Activity Feed
GET /v1/compliance/activitiesで、組織内のさまざまな認証・チャット・ファイル・プロジェクト・管理操作をイベント単位で取得します。
インシデント調査などで「誰が・いつ・この操作をしたか」を後追いしたい時に使います。
- 発生から1分以内に取得可能、6年間保持
activity_types[]、actor_ids[]、organization_ids[]、created_at.*で絞り込み可能- プロンプトやチャット本文は含まれない
実際に私が組織のユーザー一覧をAPIで取得後に、アクティビティログを確認した結果が下記になります。
実行結果(一部マスクしてます)
{
"data": [
{
"actor": {
"api_key_id": "apikey_01xxxxxxxxxx",
"ip_address": "<IPアドレス>",
"type": "api_actor",
"user_agent": "Python-urllib/3.12"
},
"created_at": "2026-07-23T13:42:54.833688Z",
"id": "activity_01xxxxxxxxxx",
"organization_id": null,
"request_body": null,
"request_id": "req_xxxxxxxxxx",
"request_method": "GET",
"status_code": 200,
"type": "compliance_api_accessed",
"url": "https://api.anthropic.com/v1/compliance/organizations/<組織UUID>/users?limit=100",
"organization_uuid": null
}
],
"has_more": true,
"first_id": "xxxxxxxxxx",
"last_id": "xxxxxxxxxx"
}
いつ、どのIPからどのAPIにアクセスしたのかが分かります。
2. 組織・ユーザー・ロール・グループ・各種設定確認
組織のディレクトリ情報と、実際に適用されているセキュリティ設定を取得します。ユーザーの棚卸しや、退職者・異動者の権限確認、監査対応で「誰がどの権限を持っているか」を機械的に確認したい時に使います。
| エンドポイント | 内容 |
|---|---|
GET /v1/compliance/organizations |
組織一覧 |
GET /v1/compliance/organizations/{org_uuid}/users |
該当組織のユーザー一覧 |
GET /v1/compliance/organizations/{org_uuid}/roles |
該当組織のカスタムRBAC(ロールベースアクセス制御)ロール一覧 |
GET /v1/compliance/groups |
グループ一覧 |
GET /v1/compliance/groups/{group_id}/members |
該当グループのメンバー一覧 |
GET /v1/compliance/organizations/{org_uuid}/settings |
設定状況(SSO強制、IP許可リスト、データ保持期間などを確認できる) |
ここでは、組織のユーザー一覧を取得した結果が下記になります。
実行結果(一部マスクしてます)
{
"data": [
{
"id": "user_xxxxxxxxxx",
"full_name": "Primary Owner",
"email": "<primary ownerのメールアドレス>",
"created_at": "2026-03-27T04:26:07.728434Z",
"organization_role": "primary_owner"
},
{
"id": "user_xxxxxxxxxx",
"full_name": "tsubasa katagiri",
"email": "katagiri.tsubasa@example.com",
"created_at": "2026-05-18T05:58:34.372882Z",
"organization_role": "owner"
}
],
"has_more": false,
"next_page": null
}
一部ユーザーは割愛しましたが、組織のユーザー一覧が取得できました。
3. チャット・ファイル・プロジェクトの取得と削除
実際のチャット内容やファイルの中身にアクセスできるのがここで紹介するエンドポイントです。
| エンドポイント | 内容 |
|---|---|
GET /v1/compliance/apps/chats |
チャット一覧(組織全体またはuser_ids[]で特定ユーザーに絞り込みできます) |
GET /v1/compliance/apps/chats/{chat_id}/messages |
1チャットのメッセージ本文・添付ファイル・アーティファクトの参照情報 |
GET /v1/compliance/apps/chats/files/{file_id}/content |
チャット添付ファイルの中身をダウンロード |
GET /v1/compliance/apps/chats/generated_files/{id}/content |
Claudeがツール使用で生成したファイルをダウンロード |
GET /v1/compliance/apps/artifacts/{version_id}/content |
アーティファクト(1バージョン分)のテキスト本文を取得 |
GET /v1/compliance/apps/projects |
プロジェクト一覧 |
GET /v1/compliance/apps/projects/{project_id} |
該当プロジェクトの詳細取得 |
GET /v1/compliance/apps/projects/{project_id}/attachments |
プロジェクトの添付ファイル・ドキュメント一覧 |
DELETE /v1/compliance/apps/chats/{chat_id} |
チャット(メッセージ・添付ファイル含む)をハード削除 |
DELETE /v1/compliance/apps/chats/files/{file_id} |
ファイルをハード削除 |
DELETE /v1/compliance/apps/projects/{project_id} |
プロジェクトをハード削除(チャットが添付されたままだと409エラー) |
削除系はすべて即時実行され、復元不可能です。
eDiscovery(電子情報開示)、DLP(データ損失防止)、退職者のアカウント削除対応などの用途を想定した機能だと考えられます。
私のチャット履歴を検索してみます。
実行結果(一部マスクしてます)
{
"data": [
{
"id": "claude_chat_xxxxxxxxxx",
"name": "ブラウザからチャット",
"created_at": "2026-07-23T13:52:57.093288Z",
"updated_at": "2026-07-23T14:00:04.063823Z",
"deleted_at": null,
"organization_id": "org_xxxxxxxxxx",
"organization_uuid": "xxxxxxxxxx",
"project_id": null,
"model": "claude-sonnet-5",
"user": {
"id": "user_xxxxxxxxxx",
"email_address": "katagiri.tsubasa@example.com"
},
"href": "https://claude.ai/chat/xxxxxxxxxx"
},
{
"id": "claude_chat_xxxxxxxxxx",
"name": "アプリからのチャット",
"created_at": "2026-07-23T13:55:34.535915Z",
"updated_at": "2026-07-23T13:59:09.917345Z",
"deleted_at": null,
"organization_id": "org_xxxxxxxxxx",
"organization_uuid": "xxxxxxxxxx",
"project_id": null,
"model": "claude-haiku-4-5-20251001",
"user": {
"id": "user_xxxxxxxxxx",
"email_address": "katagiri.tsubasa@example.com"
},
"href": "https://claude.ai/chat/xxxxxxxxxx"
}
],
"has_more": false,
"first_id": "xxxxxxxxxx",
"last_id": "xxxxxxxxxx"
}
ブラウザだけでなく、Claude Desktopからのチャットも履歴として記録されていることを確認できました。
また、メッセージも下記のように確認できました。
メッセージ取得結果の全文(一部マスクしてます)
{
"id": "claude_chat_xxxxxxxxxx",
"name": "アプリからのチャット",
"created_at": "2026-07-23T13:55:34.535915Z",
"updated_at": "2026-07-23T13:59:09.917345Z",
"deleted_at": null,
"organization_id": "org_xxxxxxxxxx",
"organization_uuid": "xxxxxxxxxx",
"project_id": null,
"model": "claude-haiku-4-5-20251001",
"user": {
"id": "user_xxxxxxxxxx",
"email_address": "katagiri.tsubasa@example.com"
},
"chat_messages": [
{
"id": "claude_chat_msg_xxxxxxxxxx",
"role": "user",
"created_at": "2026-07-23T13:55:35.619504Z",
"content": [
{
"type": "text",
"text": "これはアプリからリクエストしてます。",
"truncated": false,
"thinking_redacted": false
}
],
"files": null,
"generated_files": null,
"artifacts": null
},
{
"id": "claude_chat_msg_xxxxxxxxxx",
"role": "assistant",
"created_at": "2026-07-23T13:55:40.215829Z",
"content": [
{
"type": "text",
"text": "こんにちは。アプリからのリクエストですね。承知しました。\n\n何かお手伝いできることがありましたら、お気軽にお知らせください。以下のようなことでしたらサポートできます:\n\n- ドキュメント作成や編集(Word、PDF、Excel、PowerPoint)\n- プログラミングやコーディング\n- データ分析や表計算\n- テキストや記事の執筆\n- 情報検索や調査\n- その他、ビジネス業務全般\n\nただし、組織の指示に従い、以下の情報はお入力いただけません:\n- 顧客・取引先の個人情報・機密情報\n- 社外秘・機密扱いの社内文書・営業情報\n- 未公表の製品情報・研究開発情報・特許関連情報\n- 他者のパスワードや認証情報\n\nどのようなお手伝いが必要ですか?",
"truncated": false,
"thinking_redacted": false
}
],
"files": null,
"generated_files": null,
"artifacts": null
}
],
"href": "https://claude.ai/chat/xxxxxxxxxx",
"has_more": false,
"first_id": "xxxxxxxxxx",
"last_id": "xxxxxxxxxx"
}
隣接機能との違い
Compliance APIと役割が重なる機能が2つあります。
| 機能 | 何が違うか |
|---|---|
| 管理画面の監査ログエクスポート(CSV) | 過去180日まで参照可能。CSVダウンロードのみ。チャット・ファイル・プロジェクトのコンテンツは取得不可。 |
| Analytics API | IT/FinOps/プラットフォームチーム向けの集計値を取得可能。Compliance APIはイベント単位のデータを取得可能。 |
本番運用する際に知っておきたいこと
実際にCompliance APIを運用する際には下記の設計知識を把握しておくと安心です。
- フィード取得パターン
固定スケジュール実行向きか、カーソルで続きから読み取る方式かを選べます。 - SIEMへの取り込みと結合(Datadogなどを導入済みの場合)
Activity Feed単体でも監査証跡として機能しますが、取得したデータを自分たちでDatadogなどのSIEMに取り込めば、すでに集約されているVPN・IdPのログとactor.user_id・actor.ip_address・created_atで結合し「本当にその人の操作か」まで確認できます。 - 保持期間の計画
Activity Feedは6年(Anthropic管理)、コンテンツは組織の保持ポリシー次第(デフォルト無期限、組織管理)、ハード削除は保持されません。
このうち「カーソルで続きから読み取る方式」を実際に試してみます。
1回目のレスポンスのlast_idを、2回目のリクエストのafter_idにそのまま渡すだけです。
1回目・2回目の実行結果(一部マスクしてます)
1回目の結果です。
{
"data": [
{ "type": "compliance_api_accessed", "created_at": "2026-07-23T14:04:42Z", "id": "<activity_id>" },
{ "type": "compliance_api_accessed", "created_at": "2026-07-23T14:00:30Z", "id": "<activity_id>" }
],
"has_more": true,
"first_id": "<opaque cursor>",
"last_id": "<page1のlast_id>"
}
last_idをそのままafter_idに渡した2回目の結果です。1回目とは異なる、より古いアクティビティが返ってきており、カーソルがきちんと進んでいることが分かります。
{
"data": [
{ "type": "compliance_api_accessed", "created_at": "2026-07-23T14:00:20Z", "id": "<activity_id>" },
{ "type": "claude_chat_deleted", "created_at": "2026-07-23T14:00:18Z", "id": "<activity_id>" }
],
"has_more": true,
"first_id": "<opaque cursor>",
"last_id": "<opaque cursor>"
}
compliance_api_accessedというタイプがそのまま記録されている点にも注目です。
これは「誰が・いつ・どのIPからCompliance APIを呼び出したか」がActivity Feedに残ることを意味しています。
「Compliance API自体へのアクセスも他のセキュリティログと突き合わせて監査できる」という点が、この記録から確認できました。
制限事項・注意点
- レート制限は親組織単位で600リクエスト/分です。
- コンテンツ系エンドポイントはclaude.aiのデータのみが対象になります。
Claude ConsoleやClaude APIワークロードのプロンプト・レスポンスは一切含まれないです。 - ハード削除は即時・永続で復元不可能です。
- ページネーション方式がエンドポイントによって異なります。
まとめ
Compliance APIは、Activity Feed(監査ログ)・ディレクトリ系(組織/ユーザー/ロール/グループ/実効設定)・コンテンツ系(チャット/ファイル/プロジェクトの取得と削除)の3領域に分けて理解すると全体像がつかみやすいと感じました。
加えて、本番運用する際にはフィード取得パターンやSIEMへの取り込み、保持期間の設計も別途押さえておく必要があります。
APIでアクセスできることで、定期的な取得も自動化しやすくなるので、積極的に活用していきたいポイントです。
日次取得については下記の記事が参考になりますので、ぜひ確認してみてください。








