Files APIとは
Files API(読み方:ファイルズエーピーアイ)とは、Anthropicが提供するClaude APIのファイル管理用エンドポイントのこと。PDF・画像・コード・データなどを一度アップロードするとfile_idという識別子が発行され、その後のMessages API呼び出しでfile_idを指定するだけでファイルを再利用できる仕組みです。同じPDFを毎回Base64エンコードして送る必要がなくなり、帯域もトークンも節約できます。
身近な例えで言うと、Files APIは「クラウドの貸金庫」です。一度書類を預けて受け取り番号(file_id)をもらえば、次回からは番号を伝えるだけで何度でも書類を参照できます。Code Interpreter(コード実行ツール)やSkillsからも同じ番号で共有できるため、エージェント開発の共通ワークスペースとして機能します。実務では、社内文書RAG・大量PDFの繰り返し参照・ユーザーアップロード資料の保管などで重要なポイントです。
Files APIの読み方
ファイルズエーピーアイ
ファイルエーピーアイ
Files APIの仕組み
Files APIは「アップロード」「リスト取得」「ダウンロード」「削除」の4つの基本操作を提供するREST APIです。エンドポイントは /v1/files で、ベータ機能のため anthropic-beta: files-api-2025-04-14 ヘッダーを必ず付与する必要があります。覚えておきましょう。
Files APIの基本フロー
ファイル送信
受け取り
file_id参照
主要パラメータと制限
Files APIには以下の制約があります。実務では特に「500MB上限」「組織あたり500GB上限」「ファイル名の禁止文字」が重要です。
| 項目 | 仕様 |
|---|---|
| エンドポイント | https://api.anthropic.com/v1/files |
| 必須ヘッダー | anthropic-beta: files-api-2025-04-14 |
| 1ファイル上限 | 500 MB |
| 組織あたり上限 | 500 GB |
| ファイル名長 | 1〜255文字 |
| 禁止文字 | < > : ” | ? * \ / および制御文字 0x00〜0x1F |
| 保持期間 | 明示的にDELETEするまで永続 |
「保持期間が永続」というのは便利な反面、放置するとストレージが肥大化する原因になります。実務では月次バッチで古いfile_idを削除する運用を組むことが重要です。
Files APIの使い方・実例
基本的な使い方(Quick Start)
# Python公式SDKでPDFをアップロード
from anthropic import Anthropic
client = Anthropic() # 環境変数 ANTHROPIC_API_KEY が必要
# (1) アップロード
file_obj = client.beta.files.upload(
file=("report.pdf", open("/path/to/report.pdf", "rb"), "application/pdf")
)
print(file_obj.id) # -> "file_011CN..."
# (2) Messages APIでfile_idを参照
msg = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
betas=["files-api-2025-04-14"],
messages=[
{"role": "user", "content": [
{"type": "document", "source": {"type": "file", "file_id": file_obj.id}},
{"type": "text", "text": "この資料の要点を3つに整理してください"}
]}
]
)
print(msg.content[0].text)
よくある実装パターン
パターンA: 同じPDFを複数のプロンプトで使い回す
# 一度アップロードして、複数の質問でfile_idを使い回す
file_id = client.beta.files.upload(
file=("manual.pdf", open("manual.pdf", "rb"), "application/pdf")
).id
questions = ["第3章の要約", "出てくる主要な人物", "用語集を作成"]
for q in questions:
msg = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=2048,
betas=["files-api-2025-04-14"],
messages=[{"role": "user", "content": [
{"type": "document", "source": {"type": "file", "file_id": file_id}},
{"type": "text", "text": q}
]}]
)
print(q, "->", msg.content[0].text[:100])
向いているケース: 同一資料への複数質問、社内ナレッジ参照、定型レポート抽出。
避けるべきケース: 1回しか使わない短いPDF(直接Base64で送るほうが速い)。
パターンB: コード実行ツールと連携してfile_idで結果を受け渡す
# Code Execution Toolが生成したCSVをfile_idで取得
msg = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
betas=["files-api-2025-04-14", "code-execution-2025-05-22"],
tools=[{"type": "code_execution_20250522", "name": "code_execution"}],
messages=[{"role": "user", "content": "売上データを集計してCSVで出力して"}]
)
for block in msg.content:
if block.type == "code_execution_tool_result":
for f in block.content.files:
data = client.beta.files.download(f.file_id)
open("out_" + f.file_id + ".csv", "wb").write(data.read())
向いているケース: エージェントワークフローでファイル受け渡し、Skills成果物の取り出し。
避けるべきケース: ストリーミング処理(Files APIは全体保存型のためリアルタイム性に向かない)。
アンチパターン: file_idをログに垂れ流す
# NG例: 機密ファイルのfile_idを露出
print("Uploaded:", file_obj.id)
# ログに残るとAPIキー保有者は誰でもダウンロード可能
file_idはAPIキーと組み合わせれば誰でもダウンロードできるため、機密文書のfile_idをログに出力するのは厳禁です。重要です。マスキングか、UUIDマッピング経由で参照する設計にしましょう。
Files APIのメリット・デメリット
メリット
- 転送量の削減:同一ファイルを毎回送らなくて済む。長文PDFを5回参照するなら帯域もトークンも大幅節約
- 500MBまでの大容量ファイル対応:Messages APIに直接埋め込むより遥かに大きい
- Code Execution・Skills間の共通ストレージ:エージェントの中間成果物を共有できる
- 標準的なREST API設計:S3 SDKやアップロードライブラリの感覚で扱える
デメリット
- ベータ機能:仕様変更の可能性。本番運用は告知に注意してください
- 明示削除が必要:放置するとストレージ上限(500GB)に達する
- file_idは権限分離が弱い:API Key単位の管理であり、ユーザーごとのRBACは自前で設計する必要あり
- file_id漏洩のリスク:APIキーと組み合わせれば誰でも取得できるため、機密ファイルは扱いに注意
Files APIとOpenAI Files APIの違い
OpenAIにも同名のFiles APIがありますが、対象ユースケースが異なります。混同しやすいので比較表で整理します。
| 観点 | Anthropic Files API | OpenAI Files API |
|---|---|---|
| 主な用途 | Messages APIへの永続添付、Code Execution・Skills共有 | Assistants API、Fine-tuning、Batch APIの入力 |
| 必須ヘッダー | anthropic-beta: files-api-2025-04-14 | なし(GA) |
| 1ファイル上限 | 500 MB | 512 MB(Assistants) |
| purpose指定 | 不要(共通プール) | 必須(fine-tune / assistants / batch等) |
| 参照時の指定 | document/image content blockで file_id 指定 | Assistants threadのattachments等で参照 |
| 保持期間 | 明示削除まで永続 | 明示削除まで永続(用途による) |
つまり「Anthropic Files APIはClaude APIの汎用ファイル金庫、OpenAI Files APIは用途別の入力ストア」と覚えておけば混乱しません。
Files APIに関するよくある誤解
誤解1:「Files APIは内部でRAG(検索拡張生成)を行ってくれる」
なぜそう誤解されるのか:OpenAIのAssistants APIにはVector Stores(ベクトル検索付きのファイル機能)が組み込まれているため、同じ「Files API」という名前から混同されがちです。背景には「ファイル管理=検索インデックス付きストレージ」という固定観念があります。
正しい理解:Anthropic Files APIは純粋にファイルを保存・参照するだけのサービスで、ベクトル化や検索は提供しません。RAGを実装したい場合は、自前でEmbedding APIとベクトルDB(Pinecone、Weaviate等)を組み合わせる必要があります。
誤解2:「アップロードしたファイルはトークン課金されない」
なぜそう誤解されるのか:「保存しただけだから無料」と感じる人が多いのは混同しやすいパターンです。理由として、S3のような汎用ストレージのイメージが先行しているためです。
正しい理解:保存自体(500GB以内)は現状追加料金が発生しませんが、Messages APIでfile_idを参照した瞬間にファイル内容が入力トークンとして毎回課金されます。長大なPDFを毎回参照するとコストが膨らむため、Prompt Cachingとの併用が実務では重要です。
誤解3:「file_idは別のAPIキーからもアクセスできる共通リソース」
なぜそう誤解されるのか:URLライクな文字列であるため、外部に共有可能なリンクのように見える命名が原因で混同されます。
正しい理解:file_idはアップロードした組織のAPIキーでのみアクセスできるプライベートリソースです。別組織や別APIキーから同じfile_idを指定してもアクセスできません。逆に、同一組織内であればキーを持つ全メンバーが参照可能なので、機密性の管理は組織側のRBACで担保する必要があります。
実務での活用シーン
実務では以下の用途でFiles APIが力を発揮します。
- 社内ナレッジQA:就業規則PDF・マニュアル・契約書テンプレートをアップロードし、社員の質問にClaudeが回答
- レポート自動要約:定期的に届く調査レポートを月初にアップロード、社員が必要に応じて要点抽出
- 大量PDF一括処理:訴訟資料・医療記録など数百ページに及ぶPDFを一度アップしておき、複数の質問で再利用
- Code Execution Toolの中間成果物管理:Excelで集計させた結果ファイルを別のセッションでも参照
- Skills作成時のリソース配信:Skillが参照する辞書ファイル・プロンプトテンプレを一元管理
Files APIに関するよくある質問(FAQ)
Q1. Files APIとMessages APIにファイルを直接添付するのは何が違いますか?
Messages APIに毎回Base64エンコードして添付すると、同じPDFを5回呼び出すと5回分のアップロード帯域とトークンを消費します。Files APIは一度アップロードすればfile_idで何度でも参照でき、500MBまでのファイルを最大500GBまで保存できます。コード実行ツールやSkillsからもこのfile_idを共有できる点が大きな違いです。
Q2. Files APIはどのくらいの料金がかかりますか?
2026年5月時点では、Files API自体のストレージ料金は発生しません(500GB以内)。ただしファイルをMessages APIで参照した際の入力トークンは通常通り課金されます。最新の料金は公式ドキュメント(platform.claude.com)で必ず確認してください。
Q3. Files APIを使うのにベータヘッダーは必要ですか?
はい、Files APIはベータ機能のため、リクエストヘッダーに anthropic-beta: files-api-2025-04-14 を付ける必要があります。SDK経由(client.beta.files…)で呼ぶ場合は自動的に付与されます。
Q4. アップロードできるファイル形式は何ですか?
PDF、画像(JPEG/PNG/GIF/WebP)、テキスト、CSV、JSON、コード(.py/.js/.html等)など主要な形式に対応しています。1ファイル500MBまで、ファイル名は1〜255文字で禁止文字(< > : | ? * バックスラッシュ /)と制御文字(0x00〜0x1F)は使えません。
Q5. ファイルはいつ自動削除されますか?
Files APIにアップロードしたファイルは明示的にDELETE /v1/files/file_idを呼ぶまで保持されます。自動削除はないため、不要になったファイルは自分で削除する運用設計が必要です。組織あたり500GBの上限を超えないように、定期削除ジョブを推奨します。
まとめ
- Files API(ファイルズエーピーアイ)はAnthropic Claude APIのファイル永続管理エンドポイント
- 1ファイル500MB、組織あたり500GBまで保存可能(明示DELETEまで永続)
- ベータ機能のため anthropic-beta: files-api-2025-04-14 ヘッダーが必須
- 同一ファイルを複数プロンプトで再利用するユースケースに最適、毎回Base64で送るより効率的
- OpenAI Files APIとは違い、purpose指定不要・共通プール・RAG機能なし
- file_idの取り扱いと削除運用が運用のキーポイント
参考文献・出典
📚 参考文献・出典
- ・Anthropic「Files API – Claude API Docs」 https://docs.anthropic.com/en/docs/build-with-claude/files
- ・Anthropic「API Overview」 https://platform.claude.com/docs/en/api/overview
- ・Anthropic「Build with the Claude API」 https://anthropic.skilljar.com/claude-with-the-anthropic-api
- ・OpenAI「Files API Reference」 https://platform.openai.com/docs/api-reference/files







































コメントを残す