Claude Files API:上传一次,处处引用(正式版指南)

Claude Files API 已正式可用:上传一次文件,用 file_id 在 Messages 请求中反复引用。本文梳理上传、引用、下载、过期策略、工作区隔离与配额限制。

用 Apifox,节省研发团队的每一分钟

Claude Files API:上传一次,处处引用(正式版指南)

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

Claude Files API 允许你把文件上传到 https://api.anthropic.com/v1/files 一次,拿回 file_id,之后在任何 Messages 请求中引用该 ID,无需重复发送文件内容。截至 2026 年 8 月 20 日,它已在 Claude Platform 正式可用:无需 beta 请求头,每组织 1 TB 存储,速率限制是 beta 期的五倍。Anthropic 在生产级 Agent 公告中宣布了该变化,同时转正的还有 computer use、浏览器工具和 Skills API。

本文覆盖完整生命周期:上传、在消息中引用、下载生成文件、过期机制、工作区安全模型,以及生产环境中的限制。每一步都是 HTTP 调用,因此编码 Agent 可以把流程变成 Apifox CLI 测试场景,而不是一堆一次性 curl。

Files API 能做什么

Files API 是 Claude API 的“创建一次、多次使用”存储层。它解决一个具体成本:应用在数百次请求中针对同一份 40 页 PDF 提问时,每次重新上传会浪费带宽并让客户端更复杂。使用 Files API,你可以:

Claude Files API 生命周期:上传、按 file_id 引用、下载、删除
  • 上传文件到 Anthropic 存储,获得唯一 file_id
  • 通过内容块在 Messages 请求中引用该 ID
  • 下载 skills 或代码执行工具生成的文件(图表、电子表格、演示文稿)
  • 通过列表、获取元数据和删除操作管理文件

端点很少:

操作 端点
上传文件 POST /v1/files
列出文件 GET /v1/files
获取元数据 GET /v1/files/{file_id}
下载内容 GET /v1/files/{file_id}/content
删除文件 DELETE /v1/files/{file_id}

全部使用标准 x-api-key 和 anthropic-version: 2023-06-01 请求头。如果你还不熟悉 Messages API,Claude Opus 5 API 指南介绍了认证和请求结构。

正式版带来了哪些变化

Files API 在 beta 阶段需要额外请求头,持续了数月。2026 年 8 月 20 日正式版改变了四件影响生产规划的事:

Claude Files API 转正时的变化
  1. 不再需要 beta 请求头。 标准请求头即可使用。
  2. 速率限制提高 5 倍。 文件操作约每分钟 500 次请求,更高额度可联系销售。
  3. 每组织 1 TB 存储,单文件上限 500 MB。
  4. 平台覆盖更广。 支持 Claude API、beta 阶段的 Claude Platform on AWS,以及使用 Hosted on Anthropic 部署的 Microsoft Foundry。不适用于 Amazon Bedrock 或 Google Cloud Vertex AI,也不适用于零数据保留协议。

上传文件

上传使用 multipart 表单,而不是 JSON:

curl -X POST https://api.anthropic.com/v1/files \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -F "file=@/path/to/report.pdf"

响应包含后续引用所需的全部信息:

{
  "id": "file_011CNha8iCJcU1wXNR6q4V8w",
  "type": "file",
  "filename": "report.pdf",
  "mime_type": "application/pdf",
  "size_bytes": 1024000,
  "created_at": "2026-08-24T00:00:00Z",
  "downloadable": false,
  "expires_at": null
}

两个字段值得注意。你上传的文件 downloadable 都是 false;只有 Claude 通过 skills 或代码执行生成的文件才能下载。除非上传时设置过期时间,否则 expires_at 为 null。

下文的 Apifox CLI 测试会把 id 保存为变量,后续请求引用 {{claude_file_id}},而不是硬编码字符串。

在 Messages 请求中引用文件

上传后,文件会根据类型通过三种内容块之一接入请求:

文件类型 MIME 类型 内容块
PDF、纯文本 application/pdf、text/plain document
图片 image/jpeg、image/png、image/gif、image/webp image
数据集及其他 视情况而定 container_upload(代码执行工具)

PDF 摘要请求示例:

curl -X POST https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-opus-5",
    "max_tokens": 1024,
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "Summarize this document."},
        {"type": "document", "source": {"type": "file", "file_id": "file_011CNha8iCJcU1wXNR6q4V8w"}}
      ]
    }]
  }'

document 块还接受可选的 title、context 和 citations 字段,因此可以针对已上传文件启用引用输出。图片请把块类型换成 image,source 结构不变。电子表格、需要分析的 CSV,或 document 不支持的格式,请用 container_upload 交给代码执行工具。

document 块不直接支持 .docx 和 .xlsx。把 Word 转成 PDF 可保留图片解析和引用;也可以提取纯文本后内联发送。

下载生成的文件

下载端点用于输出,而不是输入。Claude 通过代码执行生成图表,或通过 skill 生成电子表格时,响应会在 bash_code_execution_tool_result 块中包含 file_id,该 ID 可下载:

curl "https://api.anthropic.com/v1/files/$FILE_ID/content" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  --output chart.png

尝试下载自己上传的文件会返回 400。为下载逻辑加重试前,先检查元数据中的 downloadable 标志。这个“上传输入、生成输出”的循环正是 Skills API 工作流的骨架:skills 生成 Office 文档,你再通过同一端点拉取。Claude Skills 指南介绍了 skills 是什么以及如何执行。

过期与文件生命周期

文件会保留到删除或到达上传时设置的过期时间:

  • 上传时以表单字段传入 expires_in_seconds,范围 3,600(1 小时)到 7,776,000(90 天)。只能设置一次,之后无法更改。
  • expires_at 过后,内容下载返回 404,引用该文件的 Messages 请求会在推理前失败。
  • 元数据在过期后最多仍可读取 30 天,过期文件在这段时间内仍会出现在列表响应中。过滤时请比较 expires_at 与当前时间。
  • 删除立即生效且不可撤销。过期内容会从存储配额释放,但可能短暂保留用于安全审查,因此过期是生命周期工具,不是保证删除的控制手段。

安全模型:文件按工作区隔离

上传文件对整个工作区可见,而不是按最终用户、对话或会话隔离。同一工作区的任何 API 密钥都能读取其中的文件;除非分配到其他工作区,所有密钥都共享组织的 Default Workspace。

实用规则:

  • 绝不接受最终用户传入的 file_id。 否则一个用户可以读取另一个用户的文件。把文件 ID 当作服务端引用,在数据库中维护用户与文件的映射。
  • 多租户应用,每个租户一个工作区。 工作区是隔离边界。每组织最多 100 个工作区,Anthropic 客户团队可以上调。

如果你已按租户跟踪 API 密钥做成本归因(见如何降低 Claude API 账单),同样的工作区布局可以免费带来文件隔离。

限制与计费

限制 值
最大文件大小 500 MB
组织存储 1 TB
File API 速率限制 约 500 次请求/分钟
文件名长度 1 到 255 个字符
过期范围 1 小时到 90 天

上传、下载、列出和删除文件全部免费。只有文件内容进入 Messages 请求时才计费,按普通输入 token 计价。一份 100 页 PDF 在十次请求中引用,会产生十次相同的输入 token 费用;Files API 节省的是带宽和客户端复杂度,不是 token。要在 token 侧省钱,请配合提示缓存。

常见错误:文件超过 500 MB 返回 413;组织达到 1 TB 上限返回 400;文件类型与内容块不匹配返回 400(例如图片放进 document);ID 不在工作区返回 404。

让 Claude Code 用 Apifox CLI 测试 Files API

Files API 是多步骤、有状态的流程,值得写成回归测试。Claude Code 或任何编码 Agent 都可以通过 Apifox CLI 构建并运行测试。先完成一次性配置:

npm install -g apifox-cli@latest
apifox login --with-token <YOUR_TOKEN>
npx -y skills add https://apifox.com   # 按提示选择你的 Agent

令牌来自 Apifox 的 Account Settings > API Access Token。然后给 Agent 一段提示:

Use Apifox CLI on project <id>. Add the Files API endpoints (upload, list,
metadata, download, delete) and POST /v1/messages, with x-api-key from
{{ANTHROPIC_API_KEY}} and the anthropic-version header. Build a test scenario:
upload with expires_in_seconds=3600 and assert expires_at is set, save the id
as claude_file_id, reference it in a Messages call and assert 200, delete it,
then assert the metadata call returns 404. Run it and summarize any failures.

它运行的命令(对照 Apifox CLI 2.2.7):

apifox cli-schema get endpoint-create
apifox endpoint create --project <id> --file files-upload.json
apifox test-scenario create --project <id> --name "Files API lifecycle" --priority 1
apifox test-scenario import-steps <scenarioId> --project <id> --source endpoint \
  --ids <uploadId>,<messagesId>,<deleteId>,<metadataId> --sync manual
apifox cli-schema validate test-scenario-update --file lifecycle.json
apifox test-scenario update <scenarioId> --project <id> --file lifecycle.json
apifox run -t <scenarioId> --project <id> -e <envId> \
  --env-var "ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY" -r cli,json

Agent 会对每个端点重复 endpoint create,再把变量提取和断言写入场景。以后切换测试文件,只需改一个上传步骤,而不是每个请求。还可以让 Agent 为上传响应生成 mock(apifox mock create),让前端在后端代理存在前拿到 JSON 结构。同样的 apifox run 加 -r junit 可接入 CI;Claude Code 中的 Apifox CLI指南覆盖 Agent 配置。

常见问题

还需要 beta 请求头吗? 不需要。自 2026 年 8 月 20 日正式版起,Files API 使用标准 x-api-key 和 anthropic-version 请求头。如果 SDK 或代理仍固定携带旧 beta 请求头,升级时移除。

可以更新文件内容吗? 不可以。文件上传后不可变。请上传新文件,把引用指向新 ID,再删除旧文件。

Files API 能在 Bedrock 或 Vertex AI 上使用吗? 不能。它可用于 Claude API、Claude Platform on AWS(beta),以及使用 Hosted on Anthropic 部署的 Microsoft Foundry。在 Bedrock 和 Vertex 上仍需内联 base64。

Files API 和 Skills API 的输出存储是同一个吗? 是。Skills 和代码执行工具把生成的文档写入同一文件存储,你通过 GET /v1/files/{file_id}/content 下载。该工作流的 Skills API 部分适合配合自动化测试。

总结

Files API 转正后,把同一份文档用 base64 塞进每个请求的借口没有了。上传一次,按 ID 引用,设置过期时间,并把租户文件放在独立工作区。API 只有五个端点,每个都能在几分钟内测试:让编码 Agent 用 Apifox CLI 编写流程,通过变量串联 file_id,在用户发现边界情况前把生命周期检查纳入 CI。