
Claude Enterprise のコンプライアンス API で添付ファイルが取得できるか試してみた
こんにちは、クラスメソッドの長澤です。
Claude Enterprise の Compliance API には、claude.ai のチャットに添付されたファイルをダウンロードするエンドポイントがあります。
ただし、公式ドキュメントには、一部の文書は元のファイルではなく抽出したテキストで保存されると書かれています。例として Word、PowerPoint、一部の PDF が挙がっています。
そこで、Claude Desktop のチャット、チャットと Cowork の統合版、Cowork、Claude Code で扱ったファイルが、Compliance API でどの形式で取得できるのかを検証してみました。
- Retrieve and delete chats, files, and projects
- Retrieve session transcripts
- Claude EnterpriseのCompliance APIでできることを整理してみた
結論
- Claude Desktop のチャットと統合版のチャットに添付したファイルは、Compliance API でダウンロードできました。
- txt、PDF、docx は元のファイルのままでした。テキストになる例として公式ドキュメントに挙がっている Word も、今回はテキストになりませんでした。
- png は JPEG に変換されたコピーでした。
- Cowork、統合版、Claude Code のセッションからは、ファイルそのものは取得できませんでした。
- 残るのは、主に Claude がツールでファイルを読んだときの出力です。Cowork では、添付したファイルの名前と UUID も記録されます。
- Claude がツールで読まなかったファイルは、中身が残りませんでした。画像はどのセッションでも中身が残らず、PDF も統合版以外では本文が残りませんでした。
添付ファイルを取得する流れ
チャット
公式ドキュメントによると、チャットの添付ファイルは次の流れで取得します。
- チャットのメッセージを取得する
- メッセージの
files配列から、claude_file_で始まる添付ファイルの ID を確認する - ファイルの ID を指定して、ファイルの中身をダウンロードする
| 用途 | エンドポイント |
|---|---|
| チャットの一覧を取得 | GET /v1/compliance/apps/chats |
| チャットのメッセージを取得 | GET /v1/compliance/apps/chats/{chat_id}/messages |
| ファイルのメタデータを取得 | GET /v1/compliance/apps/chats/files/{claude_file_id} |
| ファイルの中身をダウンロード | GET /v1/compliance/apps/chats/files/{claude_file_id}/content |
API キーには read:compliance_user_data のスコープが必要です。
これらのエンドポイントを使えるのは Claude Enterprise の組織だけです。
公式ドキュメントには、取得できる内容について次の注意書きがあります。
- 画像は、アップロードしたファイルそのものではなく、加工したコピーが返る場合がある
- 一部の文書は claude.ai が抽出したテキストとして保存されており、元の文書は取得できない。例として Word、PowerPoint、一部の PDF が挙がっている
size_bytesとmd5は、保存されている内容の値で、アップロードした元のファイルの値ではない
公式ドキュメントの対象は「claude.ai のチャット」と書かれており、Claude Desktop のチャットが含まれるかは明記されていません。
チャットと Cowork の統合版のチャットも、他のチャットと同じエンドポイントで返ると書かれています。ただし、対象に含めるのはベータとされています。
セッション
Claude Code と Cowork は、チャットではなくセッションとして別のエンドポイントで取得します。
端末で動くローカルセッションと、クラウドで動くリモートセッションで、エンドポイントが分かれています。
| 用途 | エンドポイント |
|---|---|
| ローカルセッションの一覧 | GET /v1/compliance/apps/sessions/local |
| ローカルセッションのメタデータ | GET /v1/compliance/apps/sessions/local/{session_id} |
| ローカルセッションのメッセージ | GET /v1/compliance/apps/sessions/local/{session_id}/messages |
| リモートセッションの一覧 | GET /v1/compliance/apps/sessions/remote |
| リモートセッションのメッセージ | GET /v1/compliance/apps/sessions/remote/{session_id}/messages |
公式ドキュメントには次の記載があります。
- ローカルセッションの対象は、Claude Desktop の Cowork と、Claude Enterprise のアカウントでサインインした Claude Code。Claude Code はターミナル、Claude Desktop、IDE 拡張機能のいずれも対象
- リモートセッションの一覧に出るのは、
product_surfaceがcowork_remoteとclaude_tagのセッション。cowork_remoteは claude.ai のブラウザやモバイルで始めた Cowork - ツールで読んだファイルの中身は、テキストだけが返る。1件あたり既定で 10,000 バイトまでで切り詰められる
- 画像や PDF などは返らず、
[<ブロックの種類> content not shown]と表示される - セッションで扱ったファイルそのものをダウンロードするエンドポイントはない
検証環境
- Claude Enterprise の組織
- 親組織の管理画面で作成した API キー。スコープは
read:compliance_user_data - API のバージョン:
anthropic-version: 2026-10-21 - macOS 版の Claude Desktop
検証の内容
次の4つの使い方で同じファイルを扱い、Compliance API で取得した内容を元のファイルと比べます。
| 使い方 | ファイルの渡し方 | 取得に使うエンドポイント |
|---|---|---|
| Claude Desktop のチャット | チャットに添付 | チャット |
| チャットと Cowork の統合版(クラウド) | チャットに添付 | チャット、セッション |
| Cowork(クラウド) | タスクに添付 | セッション |
| Claude Code(ローカル) | files/ を Read ツールで読ませる。画像はプロンプトに貼り付ける |
セッション |
使うファイルは次の通りです。
| ファイル | 内容 | 選んだ理由 |
|---|---|---|
test_text.txt |
4行のテキスト | 元のファイルのまま返るかの基準 |
test_image.png |
文字を書いた画像 | 加工されたコピーになるかを確認する |
test_text.pdf |
文字の入った2ページの PDF | 一部の PDF はテキストになると書かれているため |
test_document.docx |
見出し、本文、表の入った Word | テキストになる例に挙がっているため |
どのファイルにも MARKER-CMPLAPI-0001 という文字列を入れ、取得した内容に元の文字が残っているかを確認できるようにしています。
確認する項目は次の通りです。
- レスポンスの
Content-Type - ダウンロードしたファイルのサイズと MD5 が、元のファイルと一致するか
- ダウンロードしたファイルを開けるか、中身はどうなっているか
API キーを作成する
親組織の管理画面の「API キー」から、read:compliance_user_data のスコープを付けたキーを作成します。


Claude Desktop のチャットで添付する
Claude Desktop のチャットに4つのファイルを添付し、「添付したファイルの内容をそれぞれ要約して」と送信しました。

チャットの ID を確認する
チャットの URL の末尾にある UUID を、そのまま chat_id に指定するとエラーになりました。
{"type":"error","error":{"type":"invalid_request_error","message":"Invalid claude_chat_id format: '307668ed-...'"}}
Compliance API の chat_id は claude_chat_ で始まる形式です。
チャットの一覧を取得し、href に URL の UUID を含むものを探しました。
curl -s -G "https://api.anthropic.com/v1/compliance/apps/chats" \
--data-urlencode "created_at.gte=2026-11-14T00:00:00Z" \
-H "x-api-key: ${COMPLIANCE_API_KEY}" \
-H "anthropic-version: 2026-10-21" |
jq '.data[] | select(.href | contains("<チャット URL の UUID>")) | {id, name, href}'
{
"id": "claude_chat_016z...",
"name": "ファイル内容の要約",
"href": "https://claude.ai/chat/307668ed-..."
}
公式ドキュメントに明記のない Claude Desktop のチャットも、claude.ai のチャットと同じ一覧に出てきました。
チャットのメッセージを取得する
curl -s "https://api.anthropic.com/v1/compliance/apps/chats/${CHAT_ID}/messages" \
-H "x-api-key: ${COMPLIANCE_API_KEY}" \
-H "anthropic-version: 2026-10-21"
レスポンスの files 配列に、添付した4つのファイルが入っていました。
ファイル名には、Claude Desktop が添付時に付けた数字が先頭に付いています。
[
{
"id": "claude_file_016R...",
"filename": "1794647009682_test_text.pdf",
"mime_type": "application/pdf",
"size_bytes": 2986,
"md5": "e324ba3b33b73deb67561ae6273852cc"
},
{
"id": "claude_file_01Kz...",
"filename": "1794647009683_test_document.docx",
"mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"size_bytes": 36934,
"md5": null
},
{
"id": "claude_file_01CL...",
"filename": "1794647009683_test_image.png",
"mime_type": "image/jpeg",
"size_bytes": 63752,
"md5": "bb64594e2004132a65355c60df9daede"
},
{
"id": "claude_file_0152...",
"filename": "1794647009683_test_text.txt",
"mime_type": "text/plain",
"size_bytes": 199,
"md5": "bb7105fdd0d91629cee69917b7fbb9c5"
}
]
png の mime_type が image/jpeg になっています。
docx の md5 は null でした。
ファイルをダウンロードする
curl -s -D headers.txt \
"https://api.anthropic.com/v1/compliance/apps/chats/files/${FILE_ID}/content" \
-H "x-api-key: ${COMPLIANCE_API_KEY}" \
-H "anthropic-version: 2026-10-21" \
--output downloaded_file
png をダウンロードしたときのレスポンスヘッダーです。
Content-Type は image/jpeg ですが、ファイル名は .png のままでした。
content-type: image/jpeg
content-disposition: attachment; filename*=utf-8''1794647009683_test_image.png
content-md5: u2RZTiAEEyplNVxg352u3g==
ダウンロードした4ファイルの形式を file コマンドで確認しました。
1794647009683_test_text.txt: Unicode text, UTF-8 text
1794647009682_test_text.pdf: PDF document, version 1.3, 2 pages
1794647009683_test_image.png: JPEG image data, JFIF standard 1.02, ...
1794647009683_test_document.docx: Microsoft OOXML
ダウンロードしたファイルの MD5 を計算し、元のファイルと比べました。
txt、PDF、docx は MD5 が一致し、そのまま開けました。API の md5 が null だった docx も、ダウンロードしたファイルは元のファイルと一致しています。
png は拡張子が .png のままですが、中身は JPEG でした。
ダウンロードした png をプレビューで開いた画面です。JPEG に変換されていますが、文字はそのまま読めます。

ダウンロードした docx を Pages で開いた画面です。見出し、本文、表のセルが元のまま残っていました。

チャットと Cowork の統合版で添付する
統合版のチャットに4つのファイルを添付し、同じように要約を依頼しました。

統合版の会話は、チャットの一覧に claude_chat_ で始まるチャットとして出てきました。
Claude Desktop のチャットと同じ手順で、4つのファイルをダウンロードできました。結果も同じです。
違いは、統合版では docx の md5 に値が入っていた点だけでした。
統合版の会話は、リモートセッションにも記録されていました。セッション側の記録は「セッションを取得する」で説明します。
Cowork で添付する
Claude Desktop の Cowork で、クラウドで動くタスクに4つのファイルを添付し、要約を依頼しました。

Claude Code で読ませる
Claude Enterprise のアカウントでサインインした Claude Desktop の Code タブで、files/ のファイルを読ませました。
画像はプロンプトに貼り付けました。

セッションを取得する
Cowork と統合版はリモートセッション、Claude Code はローカルセッションのエンドポイントで取得します。
# リモートセッションの一覧
curl -s "https://api.anthropic.com/v1/compliance/apps/sessions/remote" \
-H "x-api-key: ${COMPLIANCE_API_KEY}" \
-H "anthropic-version: 2026-10-21"
# リモートセッションのメッセージ
curl -s "https://api.anthropic.com/v1/compliance/apps/sessions/remote/${SESSION_ID}/messages" \
-H "x-api-key: ${COMPLIANCE_API_KEY}" \
-H "anthropic-version: 2026-10-21"
# ローカルセッションのメッセージ
curl -s "https://api.anthropic.com/v1/compliance/apps/sessions/local/${SESSION_ID}/messages" \
-H "x-api-key: ${COMPLIANCE_API_KEY}" \
-H "anthropic-version: 2026-10-21"
Cowork
Claude Desktop から始めた Cowork のタスクも、リモートセッションの一覧に product_surface が cowork_remote のセッションとして出てきました。チャットの一覧には出てきません。
アプリに表示されるセッション ID は session_014uWV... の形式で、Compliance API では cse_014uWV... になっていました。session_ の後ろの文字列は同じです。
最初のメッセージには、添付したファイルの名前と UUID だけが記録されていました。
<uploaded_files>
<file><file_path>1794647035021_test_text.pdf</file_path><file_uuid>1d32f3e8-...</file_uuid></file>
<file><file_path>1794647035022_test_text.txt</file_path><file_uuid>961f11b1-...</file_uuid></file>
<file><file_path>1794647035022_test_document.docx</file_path><file_uuid>c7ffbd66-...</file_uuid></file>
</uploaded_files>
添付したファイルの内容をそれぞれ要約して
png はこの一覧に入っていませんでした。
Claude の回答では画像の内容を説明していましたが、セッションの記録には画像も content not shown も残っていませんでした。
ファイルの中身は、Claude がコマンドでファイルを読んだときの実行結果としてだけ残っていました。
次は、docx の本文を抜き出し、PDF の変換を試みたときの記録です。改行を一部省略しています。
{
"type": "tool_result",
"name": "Bash",
"is_error": false,
"content": [
{
"type": "text",
"text": "Compliance API 添付ファイル取得テスト 2026-11-14\n\n1行目: これはテスト用のファイルです。\n\n2行目: Compliance API で取得した内容と比べます。\n\nMARKER-CMPLAPI-0001\n\n表のセル\n\nMARKER-CMPLAPI-0001\nSyntax Error: Missing language pack for 'Adobe-Japan1' mapping\nSyntax Error: Unknown font tag 'F2'\n..."
}
],
"truncated": false
}
PDF は変換時のエラーメッセージだけで、本文は残っていませんでした。
txt は Claude がコマンドで読まなかったため、ファイル名と UUID 以外は残っていませんでした。
Cowork の中で Claude にファイルの ID を聞くと、<uploaded_files> と同じ UUID が返りました。
この値をファイルのダウンロードに指定すると、エラーになりました。
{"type":"error","error":{"type":"invalid_request_error","message":"Invalid claude_file_id format: '1d32f3e8-...'"}}
Cowork の UUID は、Compliance API のファイル ID としては使えませんでした。
統合版
統合版の会話も、リモートセッションの一覧に product_surface が cowork_remote のセッションとして出てきました。
セッション ID は Cowork と同じく、アプリの session_ が cse_ になっていました。
Cowork と違い、最初のメッセージに <uploaded_files> はなく、依頼の文だけが記録されていました。
ファイルの中身は、Claude がコマンドで読んだ結果として残っていました。docx の本文と、pypdf で抜き出した PDF の本文です。
PDF を画像に変換して Read ツールで読んだ結果は、空の [] でした。
ファイルそのものは、チャット側からダウンロードできます。
Claude Code
Claude Code の会話は、ローカルセッションの一覧に出てきました。
txt は Read ツールで読んだ中身がそのまま残っていました。docx は、Claude が unzip で抜き出した本文が残っていました。
PDF と画像は次のように記録されていました。
PDF file read: .../files/test_text.pdf (2.9KB)
[image content not shown]
CLAUDE.md の内容やユーザーのメールアドレスなど、Claude Code が会話に自動で付けた情報もそのまま記録されていました。
結果
チャットの結果
Claude Desktop のチャットと統合版のチャットで、ダウンロードした内容は同じでした。
| ファイル | 元のサイズ | 取得したサイズ | MD5 一致 | Content-Type | 取得できた内容 |
|---|---|---|---|---|---|
test_text.txt |
199 | 199 | 一致 | text/plain; charset=utf-8 |
元のファイル |
test_image.png |
58997 | 63752 | 不一致 | image/jpeg |
JPEG に変換されたコピー。1200×600 が 1204×616 になっていた |
test_text.pdf |
2986 | 2986 | 一致 | application/pdf |
元のファイル |
test_document.docx |
36934 | 36934 | 一致 | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
元のファイル |
セッションの結果
| ファイル | Cowork(クラウド) | 統合版(クラウド) | Claude Code(ローカル) |
|---|---|---|---|
test_text.txt |
ファイル名と UUID のみ | 記録なし | Read ツールで読んだ中身 |
test_image.png |
記録なし | 記録なし | [image content not shown] |
test_text.pdf |
ファイル名と UUID、変換時のエラーメッセージ | Claude が抜き出した本文 | PDF file read: ... の1行のみ |
test_document.docx |
ファイル名と UUID、Claude が抜き出した本文 | Claude が抜き出した本文 | Claude が抜き出した本文 |
まとめ
Compliance API で添付ファイルを取得できるかを、Claude Desktop のチャット、統合版、Cowork、Claude Code で検証しました。
ファイルそのものを取得できたのは、チャットに添付したファイルだけでした。
公式ドキュメントに明記のない Claude Desktop のチャットも、claude.ai のチャットと同じように取得できました。
セッションに残るのは、Claude がツールで読んだときの出力が中心です。Claude Code では、CLAUDE.md の内容やメールアドレスなど、自動で付いた情報も記録されます。
監査のために添付ファイルを保存しておきたい場合、Cowork と Claude Code で扱ったファイルは Compliance API だけでは揃わない点に注意が必要です。
Compliance API で添付ファイルの取得を検討している方の参考になれば幸いです。








