Claude Enterprise のコンプライアンス API で添付ファイルが取得できるか試してみた

Claude Enterprise のコンプライアンス API で添付ファイルが取得できるか試してみた

Claude Enterprise の Compliance API を使って、Claude Desktop、Cowork、Claude Code で扱ったファイルが、API でどの形式で取得できるのかを検証してみました。
2026.11.14

こんにちは、クラスメソッドの長澤です。

Claude Enterprise の Compliance API には、claude.ai のチャットに添付されたファイルをダウンロードするエンドポイントがあります。
ただし、公式ドキュメントには、一部の文書は元のファイルではなく抽出したテキストで保存されると書かれています。例として Word、PowerPoint、一部の PDF が挙がっています。

そこで、Claude Desktop のチャット、チャットと Cowork の統合版、Cowork、Claude Code で扱ったファイルが、Compliance API でどの形式で取得できるのかを検証してみました。

結論

  • Claude Desktop のチャットと統合版のチャットに添付したファイルは、Compliance API でダウンロードできました。
    • txt、PDF、docx は元のファイルのままでした。テキストになる例として公式ドキュメントに挙がっている Word も、今回はテキストになりませんでした。
    • png は JPEG に変換されたコピーでした。
  • Cowork、統合版、Claude Code のセッションからは、ファイルそのものは取得できませんでした。
    • 残るのは、主に Claude がツールでファイルを読んだときの出力です。Cowork では、添付したファイルの名前と UUID も記録されます。
    • Claude がツールで読まなかったファイルは、中身が残りませんでした。画像はどのセッションでも中身が残らず、PDF も統合版以外では本文が残りませんでした。

添付ファイルを取得する流れ

チャット

公式ドキュメントによると、チャットの添付ファイルは次の流れで取得します。

  1. チャットのメッセージを取得する
  2. メッセージの files 配列から、claude_file_ で始まる添付ファイルの ID を確認する
  3. ファイルの 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 のスコープを付けたキーを作成します。

01_apikey_create.png

02_apikey_list.png

Claude Desktop のチャットで添付する

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

04_desktop_chat.png

チャットの 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 に変換されていますが、文字はそのまま読めます。

07_downloaded_png.png

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

08_downloaded_docx.png

チャットと Cowork の統合版で添付する

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

06_unified_chat_cowork.png

統合版の会話は、チャットの一覧に claude_chat_ で始まるチャットとして出てきました。
Claude Desktop のチャットと同じ手順で、4つのファイルをダウンロードできました。結果も同じです。
違いは、統合版では docx の md5 に値が入っていた点だけでした。

統合版の会話は、リモートセッションにも記録されていました。セッション側の記録は「セッションを取得する」で説明します。

Cowork で添付する

Claude Desktop の Cowork で、クラウドで動くタスクに4つのファイルを添付し、要約を依頼しました。

03_cowork_cloud.png

Claude Code で読ませる

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

05_claude_code_local.png

セッションを取得する

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 で添付ファイルの取得を検討している方の参考になれば幸いです。


Claudeならクラスメソッドにお任せください

クラスメソッドは、Anthropic社とリセラー契約を締結しています。各種製品ガイドから、業種別の活用法、フェーズごとのお悩み解決などサービス支援ページにまとめております。まずはご覧いただき、お気軽にご相談ください。

サービス詳細を見る

この記事をシェアする

AI白書

関連記事