Anthropic 于 2026 年 10 月 21 日发布了 Claude API 新版本 2026-10-21。在这个版本下,以下请求会返回 400 错误:传入 temperature、top_p 或 top_k(即使是默认值);把 document 块直接放在 assistant 消息里;在 user 消息里发送带有非空 citations 数组的 text 块。官方 SDK 的新大版本默认使用 2026-10-21,所以只升级 SDK 也可能触发这些错误。
报错原文
迁移指南没有给出这些情况下错误信息的具体文字,只说明这类请求会返回 400 错误。排查时请以你实际收到的错误内容为准,不要依赖某个固定字符串。如果你遇到的是 529 overloaded 错误,可以看我们的Claude Code 529 overloaded 错误解决指南。
temperature、top_p 和 top_k 怎么处理
以下规则适用于 Messages API、token 计数,以及用 2026-10-21 创建的 Message Batch 中的每个请求。
- 删掉这三个参数,包括设成默认值的。新版 SDK 和 CLI 已经不再提供这三个参数。
- 了解会有什么变化。 不传时按默认值采样,temperature 为 1.0,和不传这些参数的 2023-06-01 请求一样。Claude 4.7 及之后这类本来就只接受默认值的模型,采样方式不变。
- 决定非默认值怎么办。 在 Claude Sonnet 4.6 这类接受其他取值的模型上,原先靠调低 temperature 获得更稳定输出的请求会失去这个效果,指南表示没有其他设置可以替代。依赖非默认值的请求,要么不再传这个参数,要么留在 2023-06-01。
其他会返回 400 的情况
- 直接放在 assistant 消息里的 document 块。 文档改放到 user 消息里。嵌套在其他块里的文档,例如 Claude 返回的 web fetch 工具结果,仍然可以使用。
- user 消息里的 citations。 包括 search_result 块内的 text 块。从这些块里去掉 citations。assistant 消息 text 块上的 citations,以及在文档和搜索结果上开启引用的设置,仍然可以使用。
Admin API 和 Claude Enterprise Analytics API 不会因此报错,但响应里不再有旧字段名。请改读:role_ids(原 roles)、rbac_group_id(原 group_id)、display_name(原 name)、group.type(原 group_type)、API 密钥上的 scope(原 workspace_id)、actor.email_address(原 actor.email)、data(原 summaries)。
默认使用 2026-10-21 的 SDK 版本
最早发送 2026-10-21 的版本是:Python SDK 2.0.0、TypeScript SDK 1.0.0、C# SDK 13.0.0、Go SDK 2.0.0、Java SDK 3.0.0、PHP SDK 1.0.0、Ruby SDK 2.0.0 和 ant CLI 2.0.0。更早的版本发送 2023-06-01。不用 SDK 时,以你在 anthropic-version 请求头里设置的值为准。
什么时候可以暂时留在 2023-06-01
发布说明和迁移指南都没有弃用 2023-06-01。如果有请求依赖非默认的 temperature、top_p 或 top_k,或者你还需要时间迁移 document 和 citations、修改读取 Admin 和 Analytics 旧字段名的代码,暂时留在 2023-06-01 是合理的。不过指南推荐的做法仍是把 SDK 升级(或把请求头设为 2026-10-21)和代码修改一起上线,并在上线前用 2026-10-21 测试。价格方面可以参考我们的 Claude API 价格指南。
其他变化
新版 SDK 和 CLI 的许可证从 MIT 改为 Apache 2.0,旧版本仍是 MIT。user profile 也新增了 enforcement_status 字段,可以查看你的某个终端用户是否被 Anthropic 限制或封禁。
