Files APIを使用すると、リクエストごとにコンテンツを再アップロードすることなく、Claude APIで使用するファイルをアップロードおよび管理できます。これは、コード実行ツールを使用して入力(例えば、データセットやドキュメント)を提供し、その後出力(例えば、チャート)をダウンロードする場合に特に便利です。このガイドに加えて、APIリファレンスを直接確認することもできます。
Files APIはベータ版です。フィードバックフォームを通じて、Files APIの使用体験をお聞かせください。
「zero data retention」(ゼロデータ保持)、すなわちZDRがこの機能にどのように適用されるかについては、APIとデータ保持を参照してください。
Messagesリクエストでのfile_idの参照は、指定されたファイルタイプをサポートするすべてのモデルでサポートされています。画像は、現在のすべてのClaudeモデルでサポートされています。PDFおよびコード実行ツールを使用するその他のファイルタイプについては、リンク先のページでモデルのサポート状況を確認してください。
Files APIは、Claude API、Claude Platform on AWS、およびMicrosoft Foundryで利用できます。Microsoft Foundryでは、Files APIにはHosted on Anthropicデプロイメントが必要です。現在、Amazon BedrockまたはGoogle Cloudでは利用できません。
Files APIは、ファイルを扱うための「一度作成して何度も使用する」アプローチを提供します:
file_idを受け取るfile_idを使用してMessagesリクエストでファイルを参照するFiles APIを使用するには、ベータ機能ヘッダーanthropic-beta: files-api-2025-04-14を含める必要があります。SDKはbeta.files名前空間のメソッドを呼び出す際にこのヘッダーを自動的に追加するため、このページのSDKの例ではファイル操作に対して明示的に渡していません。ファイルを参照するMessagesリクエストにはこのヘッダーが必要であり、SDKの例ではbetasパラメータを通じて渡しています。
今後のAPI呼び出しで参照するファイルをアップロードします:
uploaded = client.beta.files.upload(
file=("document.pdf", open("/path/to/document.pdf", "rb"), "application/pdf"),
)
file_id = uploaded.id
print(file_id)ファイルのアップロードに対するレスポンスには以下が含まれます:
{
"id": "file_011CNha8iCJcU1wXNR6q4V8w",
"type": "file",
"filename": "document.pdf",
"mime_type": "application/pdf",
"size_bytes": 1024000,
"created_at": "2025-01-01T00:00:00Z",
"downloadable": false
}アップロードしたファイルのdownloadableはfalseです。スキルまたはコード実行ツールによって作成されたファイルのみダウンロードできます。ファイルのダウンロードを参照してください。
アップロードが完了したら、アップロードレスポンスのidをfile_idとして渡すことでファイルを参照します:
response = client.beta.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Please summarize this document for me."},
{
"type": "document",
"source": {
"type": "file",
"file_id": file_id,
},
},
],
}
],
betas=["files-api-2025-04-14"],
)
print(response)Files APIは、異なるコンテンツブロックタイプに対応するさまざまなファイルタイプをサポートしています:
| ファイルタイプ | MIMEタイプ | コンテンツブロックタイプ | ユースケース |
|---|---|---|---|
application/pdf | document | テキスト分析、ドキュメント処理 | |
| プレーンテキスト | text/plain | document | テキスト分析、処理 |
| 画像 | image/jpeg, image/png, image/gif, image/webp | image | 画像分析、視覚的タスク |
| データセット、その他 | さまざま | container_upload | データの分析、可視化の作成 |
PDFとテキストファイルには、documentコンテンツブロックを使用します:
{
"type": "document",
"source": {
"type": "file",
"file_id": "file_011CNha8iCJcU1wXNR6q4V8w"
},
"title": "Document Title", // Optional
"context": "Context about the document", // Optional
"citations": { "enabled": true } // Optional, enables citations
}画像には、imageコンテンツブロックを使用します:
{
"type": "image",
"source": {
"type": "file",
"file_id": "file_011CPMxVD3fHLUhvTqtsQA5w"
}
}コード実行ツールにファイルを送信するには、container_uploadコンテンツブロックを使用します:
{
"type": "container_upload",
"file_id": "file_011CNha8iCJcU1wXNR6q4V8w"
}documentブロックがサポートしていないファイルタイプ(例えば、.docxや.xlsx)については、ファイルをプレーンテキストに変換し、コンテンツをメッセージに直接含めてください。.csvや.mdファイルなど、すでにプレーンテキストであるファイルは、この方法で読み込むか、明示的なtext/plainコンテンツタイプを指定してFiles API経由でアップロードできます。データセットをテキストとして読み込むのではなく分析するには、container_uploadブロックを使用してコード実行ツール用にアップロードします。
以下の例では、テキストファイルを読み込み、その内容をプレーンテキストとして送信します:
client = anthropic.Anthropic()
# テキストファイルを読み込む
with open("document.txt") as f:
text_content = f.read()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": f"Here's the document content:\n\n{text_content}\n\nPlease summarize this document.",
}
],
}
],
)
for block in response.content:
if block.type == "text":
print(block.text)画像を含む.docxファイルの場合は、まずPDF形式に変換してから、PDFサポートを使用して組み込みの画像解析を活用してください。これにより、PDFドキュメントからの引用を使用できます。
アップロードしたファイルの一覧を取得します。このエンドポイントはページネーションされています。各リクエストは最大limit件のファイル(デフォルトでは20件)を返し、before_idとafter_idパラメータで隣接するページを取得します。List Files APIリファレンスを参照してください。SDKは最初のページを返し、自動ページネーションヘルパーを提供します。CLIの例では--max-itemsで合計数を制限しています:
client = anthropic.Anthropic()
files = client.beta.files.list()
print(files)特定のファイルに関する情報を取得します:
file = client.beta.files.retrieve_metadata(file_id)
print(file)ワークスペースからファイルを削除します:
client.beta.files.delete(file_id)スキルまたはコード実行ツールによって作成されたファイルをダウンロードします。アップロードしたファイルはダウンロードできません。生成されたファイルのfile_idは、それを作成したMessagesレスポンスのbash_code_execution_tool_resultコンテンツブロックに表示されます:
file_content = client.beta.files.download(file_id)
file_content.write_to_file("downloaded_file.txt")ファイルは、そのメタデータに"downloadable": trueと表示されている場合にのみダウンロード可能です。これは、スキルまたはコード実行ツールによって作成されたファイルに該当します。アップロードしたファイルをダウンロードしようとすると、400エラーが返されます。
DELETE /v1/files/{file_id}エンドポイントで削除するまで保持されますFiles APIを使用する際の一般的なエラーには以下が含まれます:
file_idが存在しないか、アクセス権がありません"downloadable": falseであり、ダウンロードできません。スキルまたはコード実行ツールによって作成されたファイルのみダウンロードできます/v1/messagesリクエストで500 MBのプレーンテキストファイルを使用する場合)<、>、:、"、|、?、*、\、/、またはUnicode文字0〜31)を含んでいます{
"type": "error",
"error": {
"type": "not_found_error",
"message": "File `file_011CNha8iCJcU1wXNR6q4V8w` not found."
},
"request_id": "req_011CQFYcrRp7mCHLDsAYT8Qt"
}Files APIの操作は無料です:
Messagesリクエストで使用されるファイルコンテンツは、入力トークンとして課金されます。
ベータ期間中:
ClaudeでPDFを処理します。ドキュメントからテキストを抽出し、チャートを分析し、視覚的コンテンツを理解します。
サンドボックス化されたコンテナでPythonとbashコードを実行し、データを分析し、ファイルを生成し、ソリューションを反復します。
視覚的入力を処理・分析し、画像からテキストとコードを生成します。
Was this page helpful?