What 2026-10-21 changes
ClaudeDevs's October 21, 2026 post lists three breaks: temperature, top_p, and top_k leave the Messages API; documents in assistant turns and citations in user turns return a 400; and a few deprecated Admin and Enterprise Analytics fields are replaced. The migration guide applies the Messages rules to POST /v1/messages, to token counting, and to each request in a Message Batch created with 2026-10-21.
Sending temperature, top_p, or top_k returns a 400, even at the parameter's default. Without them, a request samples at the defaults, including temperature 1.0, the same as a 2023-06-01 request that leaves them out. Claude 4.7 and later already accept only those defaults and sample as before. On models that accept other values, the guide's example is Claude Sonnet 4.6: a lowered temperature loses that effect, no other setting replaces it, and that request can stay on 2023-06-01.
A document block placed directly in an assistant message returns a 400. Send documents in user messages. A document nested inside another block, such as a web-fetch tool result Claude returned, is still accepted. A user-message text block with a non-empty citations array returns a 400, including citations inside search_result blocks. Citations on assistant-message text, such as earlier replies sent back, are still accepted, and so is "citations": {"enabled": true} on documents and search results.
Admin API and Claude Enterprise Analytics API responses no longer include the old names in the table. On API keys, workspace_id is removed, and callers read scope instead. A workspace-bound key, including a key bound to the Default Workspace, puts that workspace's real ID on scope.workspace_id. An all-workspaces key has scope {"type": "organization"} and no workspace_id. Under 2023-06-01 the guide says workspace_id was null for both the Default Workspace and an all-workspaces key. Code that treated null as Default should compare scope.workspace_id with the workspace named Default from List Workspaces with include_default=true. The group_type query parameter on the rate-limit list endpoints and the workspace_id filter on the API key list endpoint are unchanged.
| Endpoints | Old name | New name |
|---|---|---|
| RBAC groups: create, list, retrieve, and update | roles | role_ids |
| RBAC group members: list, add, and the response to removing a member | group_id | rbac_group_id |
| RBAC roles: list and retrieve | name | display_name |
| Organization and workspace rate limits: list, and the response to setting a workspace's rate limits | group_type | group.type |
| API keys: list, retrieve, and update | workspace_id | scope (different values) |
| Per-user usage and cost reports | actor.email | actor.email_address |
| Activity summaries | summaries | data |
Who has to change a client
ClaudeDevs says new major versions of the Anthropic SDKs and the ant CLI are out the day of the post, October 21, 2026, and default to 2026-10-21. The migration guide does not date that client release. It says an SDK sends the API version that was current when its major was released, and that the versions shown for each language are the first to send 2026-10-21, including their Amazon Bedrock and Google Cloud clients. Earlier SDK and CLI versions sent anthropic-version 2023-06-01. The Python upgrade the guide names is anthropic 2.0.0. For other languages, the guide points to the version shown in that language's tab.
On Amazon Bedrock, 2026-10-21 is available only for Claude 4.7 and later. Calls to older Bedrock models, listed in Claude on Amazon Bedrock as Opus 4.6 and earlier, stay on the SDK version you use today, or on the version header you send today, until those calls use a Claude 4.7 or later model. The same guide says the Google Cloud clients of those SDK versions send 2026-10-21.
The SDK and the CLI send the API key as Authorization: Bearer instead of X-Api-Key. The Claude API accepts a key in either header, so a program that talks to the API directly needs no change for this swap. A proxy or gateway that reads or sets X-Api-Key should use Authorization, or the caller can keep sending X-Api-Key. The guide says AnthropicFoundry still sends its key as x-api-key.
An API key and an auth token now share a header, so an SDK client holds one credential. In Python, two or more in the constructor, or in one copy() or with_options() call, raise ValueError. Passing None does not count as a credential. To send a gateway token and an API key, pass the token as auth_token, set X-Api-Key in default_headers, and have the gateway remove its Authorization header before forwarding, because the Claude API expects one credential on each request. On the Python, TypeScript, Go, PHP, and Ruby SDKs, extra_headers that omit X-Api-Key no longer keep the key off the request. The guide's Python replacement is extra_headers={"Authorization": omit}.
The ant CLI removes --api-key and --auth-token, because a flag value is visible in shell history and process listings. Both flags have printed a deprecation warning since v1.27.0. A command that still passes either flag stops with "flag provided but not defined." For a key, use ANTHROPIC_API_KEY, --api-key-stdin, or ant auth login. For a token, use ANTHROPIC_AUTH_TOKEN or --auth-token-stdin.
- Text Completions is removed from the TypeScript, Go, Java, and Ruby SDKs and from the CLI, including ant completions create. The guide says to use the Messages API.
- TypeScript and Ruby tool runners drop client-side compaction for server-side compaction. The input-token trigger must be at least 50,000. compactBeforeNextTurn() is the manual call.
- Non-beta Models methods no longer take betas, and ant models commands no longer take --beta. Beta headers go through client.beta.models or ant beta:models, which return BetaModelInfo.
- MessageParam is now a union of UserMessageParam, AssistantMessageParam, and SystemMessageParam. BetaMessageParam splits the same way. The JSON the SDK sends keeps the same fields and values. In Python, a dict literal such as {"role": "user", "content": "Hello"} needs no change. Calling MessageParam() or BetaMessageParam(), or subclassing either name, raises TypeError. Subclass the type for the role, such as UserMessageParam.
- In the C#, Go, Java, PHP, and Ruby SDKs, a required field that can hold only one value is now a constant, and its one-member enum type is gone. The JSON the SDK sends and reads stays the same. On the CLI, --type is optional on ant beta:sessions:resources add, file is the only value, and a command that still passes --type file keeps working.
How to switch
Callers without an SDK set the anthropic-version header to 2026-10-21. SDK callers upgrade to the versions the guide shows for their language. Python's named step is anthropic 2.0.0. The guide's order is to switch the version, update code for each breaking change that applies plus whatever the new SDK or CLI needs, and test the integration against 2026-10-21 before release. Release the version upgrade together with those fixes.
ClaudeDevs points people to the /claude-api skill in Claude Code or the migration guide. Claude Code 2.1.307, dated October 21, 2026, adds /claude-api api-version to move Claude API code to API version 2026-10-21.
These SDK and CLI versions are Apache License 2.0. Earlier versions remain MIT. The guide says no code change is required for the license change; update a dependency-license entry if you track one. The 1.0.0 releases are the license change for the TypeScript platform packages and for the other C# packages. The Java change covers every com.anthropic artifact. Python's API-version pin in the guide remains anthropic 2.0.0.
What is still open
The ClaudeDevs post and the migration guide give no price, quota change, or shutdown date for 2023-06-01 or for 2026-10-21. ClaudeDevs says 2023-06-01 is not deprecated. The guide's related instruction is to keep a request on 2023-06-01 when it needs a non-default sampling value. ClaudeDevs's plan to ship versions more often names no calendar, next version id, or model that will require a later version.
Source
Also from
Sources and editorial approach
This brief relies on the ClaudeDevs post published October 21, 2026, Anthropic's migration guide for API version 2026-10-21, and the Claude Code changelog entry for 2.1.307 dated October 21, 2026. The guide and the changelog were checked on October 22, 2026. Availability, the first-official-version-since-2023 description, the plan to release versions more often, the line that 2023-06-01 is not deprecated, and the same-day SDK and ant CLI release are ClaudeDevs's statements. Request and client behavior is what the migration guide says. Pricing, quotas, any shutdown date, live API calls, and the separate Bedrock model list were not covered. The guide names anthropic 2.0.0 for Python and points other languages at the versions shown for each language.