On October 21, 2026, Anthropic released Claude API version 2026-10-21. Under this version, a request returns a 400 error if it sends temperature, top_p or top_k (even at the default value), places a document block directly in an assistant message, or sends a text block with a non-empty citations array in a user message. The new major versions of the official SDKs use 2026-10-21 by default, so upgrading the SDK alone can surface these errors.
What the error says
The migration guide does not publish a literal error message for these cases. It only states that such requests return a 400 error, so check the error body your own request returns rather than matching on a fixed string. If you're getting a 529 overloaded error instead, see our guide to the Claude Code 529 overloaded error.
How to handle temperature, top_p and top_k
These rules cover the Messages API, token counting and every request in a Message Batch created with 2026-10-21.
- Remove all three parameters from your requests, including any you set to the default value. The new SDK and CLI versions no longer offer them.
- Know what changes. Without them, a request samples with the defaults, including a temperature of 1.0, the same as a 2023-06-01 request that leaves them out. Models that already accept only the defaults, such as Claude 4.7 and later, sample as before.
- Decide on non-default values. On models that accept other values, such as Claude Sonnet 4.6, a request that lowered temperature for more consistent output loses that effect, and the guide says no other setting replaces it. If a request relies on a non-default value, either stop sending the parameter or keep that request on 2023-06-01.
Other requests that return 400
- Document blocks directly in assistant messages. Send documents in user messages instead. A document nested inside another block, such as a web fetch tool result that Claude returned, is still accepted.
- Citations in user messages. This includes text blocks inside search_result blocks. Remove citations from those blocks. Citations on text blocks in assistant messages are still accepted, and so is enabling citations on documents and search results.
The Admin API and Claude Enterprise Analytics API do not return errors here, but their responses drop old field names. Read role_ids instead of roles, rbac_group_id instead of group_id, display_name instead of name, group.type instead of group_type, scope instead of workspace_id on API keys, actor.email_address instead of actor.email, and data instead of summaries.
SDK versions that default to 2026-10-21
The first versions that send 2026-10-21 are 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 and the ant CLI 2.0.0. Earlier versions send 2023-06-01. Without an SDK, the version is whatever you set in the anthropic-version header.
When to stay on 2023-06-01 for now
Neither the release notes nor the migration guide deprecates 2023-06-01. Staying on it for now makes sense when a request depends on a non-default temperature, top_p or top_k, or when you need time to move documents and citations and to update code that reads the old Admin or Analytics field names. The guide's recommended path is still to upgrade the SDK, or set the header to 2026-10-21, together with the code fixes, and to test against 2026-10-21 before release. Version choice is separate from pricing; for current rates see our Claude API pricing guide.
Also changed
The new SDK and CLI versions are licensed under Apache 2.0 instead of MIT, while earlier versions remain under MIT. User profiles also gain an enforcement_status field that shows whether Anthropic has restricted or banned one of your end customers.
