Claude Media
Compliance APIでチャットを削除する手順 — ファイル・プロジェクトも対象

Compliance APIでチャットを削除する手順 — ファイル・プロジェクトも対象

Compliance APIでclaude.aiのチャット・添付ファイル・プロジェクトを取得し、完全削除する手順です。取り消せない操作なので必要なスコープと事前確認をまとめます。

Compliance APIでできるチャット・ファイル・プロジェクト操作

Compliance APIは、Claude Enterprise組織のclaude.aiチャット・添付ファイル・アーティファクト・プロジェクトを、コンプライアンス担当者向けに読み取り・削除できるエンドポイント群を提供します。eDiscovery(電子証拠開示)のエクスポート、DLP(データ損失防止)の実施、アカウント削除要求への対応が主な用途です。このページのエンドポイントが扱うのはclaude.aiのチャット・ファイル・プロジェクトだけです。CoworkやClaude Codeのセッションのトランスクリプトは別エンドポイント(後述のセッション記事)が担当します。

必要なキーはclaude.aiで作成したCompliance Access Key(sk-ant-api01-...)で、読み取りにはread:compliance_user_dataスコープ、削除にはさらにdelete:compliance_user_dataスコープが要ります。Claude Console側のAdmin API key(sk-ant-admin01-...)ではこのページのエンドポイントを一切呼べず、403 Forbiddenが返ります。キーの作り方はCompliance APIのセットアップとアクセスキー作成を先に済ませてください。

チャット・ファイル・プロジェクトのコンテンツは、組織の保持ポリシーが許す期間だけ保存されます。ユーザーがclaude.aiでチャットを削除すると、メッセージ本文・添付ファイル・ツール生成ファイル・アーティファクトは一緒に消えますが、Compliance APIはそのチャット自体をdeleted_at付き・名前空欄のまま一覧に残し続け、メッセージも本文なしで返します。Compliance API自体で完全削除(ハードデリート)したチャットや、保持期間を過ぎたチャットは、この一覧からも取得できなくなります。

チャットとメッセージを取得する

チャット一覧はList chats、1件のチャット本文はGet chat messagesで取得します。

一覧エンドポイントは既定で組織全体を対象にします。user_ids[]を付けなければ、親組織配下の全チャットが対象です。order_by=updated_atを付けると更新順にソートされ、ユーザーを列挙せずに新規・更新・削除済みのチャットをまとめて拾えるため、継続的なエクスポートに向いています。

curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/apps/chats" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --header "anthropic-version: 2023-06-01" \
  --data-urlencode "order_by=updated_at" \
  --data-urlencode "updated_at.gte=2025-06-01T00:00:00Z" \
  --data-urlencode "limit=100"

結果はorder_byの値で昇順(古い順)に並び、first_id/last_id/has_moreのカーソルでページ送りします。前回実行時のlast_idafter_idとして渡せば、次回以降も新規チャットと更新・削除されたチャットの両方を拾えます。IDをキーに冪等に処理し、deleted_atが入っているチャットは「削除済み」として扱ってください。

特定ユーザーに絞る場合はuser_ids[]を1〜10件渡します。ユーザーIDはList organization usersで取得します。ユーザー絞り込みのクエリは常に順になり(を渡すと400エラー)、での絞り込みはこの形式でしか使えません。との併用は2026年9月22日以降400エラーで拒否されます。更新順で対象ユーザーを追い続けたい場合は、組織全体のクエリを実行してから対象ユーザーの分だけ抽出する形に切り替える必要があります。

チャット本文・添付ファイル・アーティファクトは、チャットIDごとにメッセージエンドポイントで取得します。

chat_id="claude_chat_01H5CWunD7RpVJ5bHa8RCkja"
 
curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/apps/chats/$chat_id/messages" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --header "anthropic-version: 2023-06-01"

各メッセージには本文に加えて、ユーザーが添付したfiles、アシスタントがツールで生成したgenerated_files、アシスタントが作成・更新したartifacts(コードやMarkdownのバージョン管理された文書)が入ります。limitを省略すると全メッセージが1回で返り、長いチャットではlimitafter_idbefore_idでページ送りします。

ファイルとアーティファクトの中身を取得する

ファイル・生成ファイル・アーティファクトはIDだけで個別にダウンロードします。IDの種類ごとに叩くエンドポイントが変わります。

持っているID欲しいものエンドポイント
claude_file_*欲しいものファイル本文エンドポイントDownload file content
claude_gen_file_*欲しいものツール生成ファイルの本文エンドポイントDownload a Claude-generated file
claude_artifact_version_*欲しいものアーティファクト1バージョンの本文エンドポイントDownload artifact content
claude_proj_doc_*欲しいものプロジェクトドキュメントの本文エンドポイントGet project document content
file_id="claude_file_01UaT9wBcDfGhJkLmNpQrSv7"
 
curl --fail-with-body -sS -OJ \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --header "anthropic-version: 2023-06-01" \
  "https://api.anthropic.com/v1/compliance/apps/chats/files/$file_id/content"

-OJを付けると、レスポンスのContent-Dispositionヘッダーに入っているアップロード時のファイル名で保存されます。返ってくる内容は、必ずしもアップロードされたバイト列そのものではありません。画像は加工済みコピーとして配信されることがあり、Wordファイル・PowerPointファイル・一部のPDFはclaude.aiが抽出したテキストとして保存されているため、抽出後のテキストが元のファイル名のまま返ります。ファイル形式は名前や宣言されたMIMEタイプではなく、返ってきたバイト列そのものから判定してください。

アーティファクトのダウンロードには、安定したidではなくversion_idを渡します。アシスタントが同じアーティファクトを会話中に何度も改訂すると、改訂のたびに新しいversion_idが発行され、Compliance APIはその版の内容をそのまま返します。

プロジェクトと添付を取得する

プロジェクトは、カスタム指示・ナレッジベース・添付ファイルをまとめる単位です。List projectsList project attachmentsで一覧を取得します。プロジェクト一覧・添付一覧は/方式ではなく、不透明なトークンでページ送りする点がチャット一覧と異なります。

プロジェクトの添付はtypeが2種類あり、扱いが分かれます。

  • project_file: PDFや画像などのファイルアップロード。IDはclaude_file_始まりで、ファイルの取得と同じエンドポイントを使う
  • project_doc: 常にtext/plainのプレーンテキスト文書。IDはclaude_proj_doc_始まりで、Wordファイルなどプロジェクト追加時にテキスト変換された文書も含む

一覧を歩くコンシューマーは、このtypeで分岐して対応するエンドポイントを呼び分ける必要があります。

コンテンツを削除する

削除エンドポイントは4種類あります。

  • Delete chat: チャットとそのメッセージ、添付ファイルもまとめて削除
  • Delete file: チャットファイル・プロジェクトファイルの両方に使える
  • Delete project document: プロジェクトドキュメントを1件削除
  • Delete project: チャットが1件でも紐づいたプロジェクトは削除できない(後述)

4つすべてがdelete:compliance_user_dataスコープを必要とし、このスコープは読み取り用のread:compliance_user_dataとは別にキー作成時に選ぶ必要があります。

# 警告: このコマンドはチャットとそのメッセージ・添付ファイルを完全に削除します。
# 削除は即座かつ取り消し不可能です。delete:compliance_user_data スコープが必要です。
# 実行前に明示的な権限があることを確認してください。
 
chat_id="claude_chat_01H5CWunD7RpVJ5bHa8RCkja"
 
curl --fail-with-body -sS -X DELETE \
  "https://api.anthropic.com/v1/compliance/apps/chats/$chat_id" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --header "anthropic-version: 2023-06-01"

成功時はidtypeを含む小さな確認レスポンスが返ります。チャット削除ならtypeclaude_chat_deletedです。他の削除エンドポイントもそれぞれ固有のtype値を返すため、削除が確定したかどうかはこのtypeフィールドで判定します。

プロジェクト削除前にチャットを切り離す

チャットが1件でも紐づいたプロジェクトは削除できず、409 Conflictが返ります。

{
  "error": {
    "type": "conflict_error",
    "message": "The \"claude_proj_01KGp4eZNug9ri4kE35RSppq\" project cannot be deleted as it has chats attached to it. Delete or detach all chats, and try deleting the project again."
  }
}

対処は、user_ids[]project_ids[]でそのプロジェクトのチャットを一覧し(project_ids[]の絞り込みはuser_ids[]が最低1件必要)、各チャットを個別に削除するかclaude.ai側でプロジェクトから外してから、プロジェクト削除をやり直します。

まとめ

Compliance APIのチャット・ファイル・プロジェクトエンドポイントは、Compliance Access Keyのread:compliance_user_dataで読み取り、delete:compliance_user_dataで削除します。一覧はorder_by=updated_atの組織全体クエリが継続的なエクスポートの基本形で、本文・ファイル・アーティファクトはIDごとに別エンドポイントで取り出します。削除はすべて即座かつ不可逆なので、実行前の対象確認とスコープを分けたキー運用が欠かせません。

キーのスコープ設計はCompliance APIのセットアップとアクセスキー作成、CoworkやClaude Codeのセッショントランスクリプトの取得はCompliance APIでローカル/リモートのセッション文字起こしを取得するにまとめています。組織全体のデータをまとめて落としたい場合は、Primary Owner向けのClaude組織データエクスポートの手順も選択肢になります。

この記事を共有:XはてブLinkedIn