Claude Code 学习站

Claude 批处理 API(Message Batches)参考

Anthropic Message Batches API 官方参考的中文整理:端点、字段、状态枚举、限流与批处理定价一览。

本页目录16
AI 摘要 · 已核查整理于 2026-06-07原文:Batch processing(Anthropic)Claude API批处理速率限制API参考
要点速览
  • 六个核心端点(创建/列出/查询/取结果/取消/删除)的方法、路径与返回字段速查
  • processing_status 与逐条结果 result.type 的全部枚举值及含义
  • 批处理专属限流:每分钟请求数、处理队列上限、单批最大请求数(按 tier 区分)
  • 批处理定价固定为标准价的 50%(输入输出token同折),可与 Prompt Caching 叠加,但不支持 Fast mode
  • custom_id 是结果匹配的唯一依据,.jsonl 结果文件不保证与请求同序

本文是对 Anthropic 官方参考页 Message Batches API(批处理)的中文整理,完整与最新内容以原文为准:https://platform.claude.com/docs/en/build-with-claude/batch-processing

概述

Message Batches API 用于异步、低成本地处理大批量 Messages 请求,适合不需要即时响应的场景。

特性说明
折扣输入/输出 token 均为标准价的 50%
典型处理时长多数批次在 1 小时内完成
最长处理时长24 小时(expires_at = 创建时间 + 24 小时)
适用场景大批量数据处理、无需即时响应、追求成本效率、大规模评测/分析等批量操作

工作原理

  1. 提交请求后系统创建一个新的 Message Batch。
  2. 批次进入异步处理,其中每个请求独立处理。
  3. 可轮询批次状态,处理结束后取回结果。

查询批次的端点(retrieve)是幂等的,可直接用于轮询批次是否完成;完成后通过响应中的 results_url 字段获取结果文件。

API 端点一览

方法路径作用
POST/v1/messages/batches创建 Message Batch
GET/v1/messages/batches列出工作区内的 Message Batches(按创建时间倒序)
GET/v1/messages/batches/{message_batch_id}查询单个 Message Batch(幂等,可轮询)
GET/v1/messages/batches/{message_batch_id}/results.jsonl 流式返回批次结果
POST/v1/messages/batches/{message_batch_id}/cancel取消批次
DELETE/v1/messages/batches/{message_batch_id}删除批次(仅限已结束的批次)

请求需带标准鉴权头:anthropic-version(如 2023-06-01)与 X-Api-Key;可选头 anthropic-user-profile-id(需配合 user-profiles beta 头)用于按用户画像归因。

创建批处理(POST /v1/messages/batches)

请求体

字段类型必填说明
requestsarray of object批次内的请求列表

requests 数组中每一项结构:

字段类型必填说明
custom_idstring开发者自定义标识,用于将结果与请求匹配,批次内必须唯一
paramsobject与 Messages API 相同的参数(modelmessagesmax_tokens 等)

params 沿用 Messages API 全部参数,例如:

参数类型必填默认值说明
modelstring模型 ID
messagesarray输入消息(单个请求内消息数上限 100,000)
max_tokensnumber最大生成 token 数
systemstring 或 array系统提示词
temperaturenumber1.0采样温度
stop_sequencesarray of string自定义停止序列
streambooleanfalse批处理中通常不使用流式
metadataobject请求元数据(如 user_id
service_tier"auto""standard_only""auto"服务层级
tools / tool_choicearray / object工具定义与工具选择策略
thinkingobject扩展思考配置

示例请求

{
  "requests": [
    {
      "custom_id": "request-1",
      "params": {
        "model": "claude-opus-4-5",
        "max_tokens": 1024,
        "messages": [{"role": "user", "content": "Hello, Claude"}]
      }
    }
  ]
}

Message Batch 对象字段

创建/查询/列出/取消四个端点返回同一个 MessageBatch 对象:

字段类型说明
idstring批次唯一标识(格式与长度可能随时间变化)
type"message_batch"固定值
processing_status"in_progress" | "canceling" | "ended"批次处理状态
created_atstring(RFC 3339)创建时间
expires_atstring(RFC 3339)过期时间,固定为创建时间 + 24 小时
ended_atstring 或 null全部请求进入终态(succeeded/errored/canceled/expired)后的时间
cancel_initiated_atstring 或 null发起取消的时间(仅当已发起取消时存在)
archived_atstring 或 null批次被归档、结果不再可取的时间
results_urlstring 或 null结果 .jsonl 文件地址,仅在处理结束后提供
request_countsobject见下表

request_counts 字段

字段类型说明
processingnumber仍在处理中的请求数
succeedednumber成功的请求数(批次结束前恒为 0)
errorednumber出错的请求数(批次结束前恒为 0)
cancelednumber被取消的请求数(批次结束前恒为 0)
expirednumber过期未处理的请求数(批次结束前恒为 0)

所有请求初始状态均为 processing,只有在整个批次结束后才会分流到其余四个终态,且各字段之和恒等于批次总请求数。

获取结果(GET .../results)

结果以 .jsonl 文件流式返回,每行是一个 MessageBatchIndividualResponse 对象,顺序不保证与提交顺序一致,须用 custom_id 匹配。

字段类型说明
custom_idstring对应请求的自定义 ID
resultobject处理结果,type 字段决定具体结构

result.type 取值

取值含义附带字段
succeeded请求成功message(标准 Messages API 响应对象,含 contentusagestop_reason 等)
errored处理出错error(标准 ErrorResponse,见下表)
canceled因批次被取消而未完成type 字段
expired因超过 24 小时未处理完成type 字段

errored 结果中的 error.error.type 取值

取值含义
invalid_request_error请求格式或参数无效
authentication_error鉴权失败
billing_error账单/计费问题
permission_error权限不足
not_found_error资源不存在
rate_limit_error触发限流
timeout_error网关超时
api_errorAPI 内部错误
overloaded_error服务过载

取消批处理(POST .../cancel)

  • 可在处理结束前的任意时间取消。
  • 取消发起后批次进入 canceling 状态,系统可能先完成部分不可中断的进行中请求,再最终完成取消。
  • 实际被取消的请求数体现在 request_counts.canceled 中;若请求均不可中断,取消操作也可能不产生任何 canceled 结果。

删除批处理(DELETE .../{id})

  • 仅能删除已结束处理的批次;若要删除进行中的批次,须先调用 cancel
  • 返回 DeletedMessageBatch 对象:{ id, type: "message_batch_deleted" }

限流(Message Batches API 专属)

批处理限流与 Messages API 的按模型限流相互独立,所有模型共享同一套批处理限流;其中「batch request」指一个批次中的一条子请求。

Usage tier每分钟请求数(RPM)处理队列中最大 batch request 数单批最大 batch request 数
Start1,000200,000100,000
Build2,000300,000100,000
Scale4,000500,000100,000
Custom需联系销售协商需联系销售协商需联系销售协商

「处理队列中的 batch request」指尚未被模型成功处理完成的子请求;单个批次内的请求数量存在 100,000 条上限(与 Create 端点文档中「单个请求内 messages 数组上限 100,000 条」是两个不同的限制,不要混淆)。

定价

Batch API 相比标准价固定提供 50% 折扣(输入、输出 token 同折)。示例(节选官方定价表):

模型标准输入标准输出Batch 输入Batch 输出
Claude Opus 5$5 / MTok$25 / MTok$2.50 / MTok$12.50 / MTok
Claude Sonnet 5$2 / MTok$10 / MTok$1 / MTok$5 / MTok
Claude Haiku 4.5$1 / MTok$5 / MTok$0.50 / MTok$2.50 / MTok

补充说明:

  • Batch 折扣可与 Prompt Caching 的缓存写入/命中倍率叠加
  • Fast mode 不支持 Batch API(二者互斥)。
  • Batch API 折扣不适用于 Claude Managed Agents(该产品为有状态交互式会话,无批处理模式)。

关键注意事项

事项说明
结果顺序.jsonl 结果文件不保证与请求顺序一致,必须用 custom_id 匹配
custom_id 唯一性仅需在同一批次内唯一
轮询方式retrieve 端点幂等,可安全轮询直到 processing_statusended
数据留存批次归档后(archived_at 非空)结果不再可取;零数据留存(ZDR)对本功能的适用范围见官方「API and data retention」页面
过期处理24 小时内未处理完的请求会以 expired 结果返回,而非报错阻塞整个批次
批次规模上限单个批次上限为 100,000 条 Message 请求256 MB 体积,以先到者为准
结果保留期结果自批次 创建时间created_at,不是处理结束时间)起保留 29 天;超过 29 天后仍可查看该 Batch,但结果不再可下载