Claude API Version 2026-10-21: What Breaks When You Upgrade the SDKs, and What Else Changed This Week

Anthropic's 2026-10-21 API version drops temperature, top_p and top_k. New SDK majors add their own breaks and move to Apache 2.0. Pin or upgrade?

Anthropic released API version 2026-10-21 on October 21 and shipped a new major of every SDK the same day: Python 2.0.0, TypeScript 1.0.0, C# 13.0.0, Go 2.0.0, Java 3.0.0, PHP 1.0.0, Ruby 2.0.0 and ant CLI 2.0.0. Release notes Two different things break, and the migration guide keeps them apart. The API version removes temperature, top_p and top_k and tightens two message rules. The SDK majors carry their own breaking changes that apply whatever API version a request sends, and they move the license from MIT to Apache 2.0. Migration guide If your dependency range is open, you may already be on the new behavior.

S5 Labs has not run this migration against production code. Everything below comes from Anthropic’s migration guide, versioning page and release notes, plus the release tags on GitHub, and we flag the places where we infer across them.

What the API version removes

Without an SDK, a request opts in by sending anthropic-version: 2026-10-21. With an SDK, you get whichever version was current when your SDK major shipped, so upgrading the package is the switch. Migration guide

The sampling parameters are the change most code will trip on. Any request on 2026-10-21 that sends temperature, top_p or top_k gets a 400, “even at the parameter’s default value”. Migration guide The versioning page says the 400 applies “on every model.” Versioning Omitted parameters sample at defaults, including temperature 1.0. Claude 4.7 and later already took only defaults, so those models behave as before. On a model that still accepts other values, Sonnet 4.6 for instance, a request that lowered temperature “loses that effect. No other setting replaces it.” Either stop sending the parameter or keep that request on 2023-06-01. Migration guide

Two message-shape rules also tighten:

  • A document block placed directly in an assistant message returns 400. A document nested inside another block, such as a web fetch tool result Claude returned, is still accepted.
  • A text block with a non-empty citations array in a user message returns 400, whether it sits at the top level or inside a search_result. Citations on assistant text blocks are unchanged. Migration guide

The Admin API and Enterprise Analytics endpoints rename several fields: Versioning

OldNew
rolesrole_ids
member group_idrbac_group_id
role namedisplay_name
group_typegroup.type
API key workspace_idscope.workspace_id (a real ID even for the Default Workspace; an all-workspaces key has no workspace_id in scope)
actor.emailactor.email_address
summariesdata

The version is live on the Claude API, Claude Platform on AWS, both Claude Models on Google Cloud offerings and Microsoft Foundry. On Amazon Bedrock it applies to Claude 4.7 and later only; for older Bedrock models the guide says to “stay on the SDK version you use today” or keep sending the version you send now. Versioning Migration guide

What the SDK majors change on their own

The GitHub release notes for each new major list one line under BREAKING CHANGES, “add support for new API version 2026-10-21”, next to features and chores such as Go requiring 1.25. anthropic-sdk-python releases That line undersells it. The migration guide’s per-language sections are the real list, and most items bite even on a request pinned to 2023-06-01: Migration guide

  • MessageParam is now a union. In Python, calling or subclassing it raises TypeError. In PHP, instanceof MessageParam is false, and a positional with() swaps role and content.
  • One-value enums become constants.
  • The betas argument is gone from the non-beta Models methods; Python raises TypeError if you pass it.
  • Text Completions is removed from the TypeScript, Go, Java and Ruby SDKs and from the CLI.
  • Client-side compaction is removed from the tool runner in the TypeScript and Ruby SDKs. The TypeScript option had stopped working in v0.129.0 and Ruby’s in v1.74.0; the server-side trigger needs at least 50,000 tokens.
  • The API key now goes out as Authorization: Bearer. Foundry clients still send x-api-key; Bedrock Mantle was already on bearer.
  • Python raises ValueError if two credential arguments are passed together, where v1 raised TypeError for fewer combinations.
  • The CLI drops --api-key and --auth-token, deprecated since v1.27.0. Its module path is now github.com/anthropics/anthropic-cli/v2; the old path “keeps installing the latest v1 release, with no error or warning”.
  • Go needs 1.25 or later and loses vertex.DefaultVersion and bedrock.DefaultVersion. Ruby loses VertexClient::DEFAULT_VERSION and BedrockClient::DEFAULT_VERSION.
  • Composer users should run composer require "anthropic-ai/sdk", since composer update alone stays inside the current constraint. The TypeScript platform packages must move together or “your package manager installs a second, older copy.”

The guide also has notes on C# IChatClient, on Java Optional and HttpRequest, and on environment-variable precedence, none of which we re-verified.

The 2.0.0 tags have already been superseded. Python 2.1.0 landed the same evening and 2.2.0 on October 23, and Go followed the same cadence. anthropic-sdk-python releases anthropic-sdk-go releases Both minors add features rather than breaks: 2.1.0 brings the user-profile enforcement fields, and 2.2.0 adds message threads, usage and cost reports by dimension, and tool-runner fixes. A >=2.0 pin is already moving. The Usage and Cost Analytics API that Anthropic put into beta on October 29 has its own migration notes.

Pin or upgrade

The versioning policy says that for any given API version Anthropic preserves “Existing input parameters” and “Existing output parameters”, and that it “recommends using the latest API version whenever possible”. Versioning We found no deprecation or sunset date for 2023-06-01 on the migration guide, the versioning page or the release notes, and Anthropic’s own fast-mode and user-profiles docs still show examples sending anthropic-version: 2023-06-01. That is an absence, not a promise.

What an unpinned dependency picks up depends on the package manager. As a rule, a pip requirement with no upper bound resolves to the new 2.x; an npm caret on a 0.x TypeScript version does not cross into 1.0 on its own; a Go major lives at a new module path, so nothing moves until you change the import. Check your lockfile rather than trusting that summary.

Our reading of the guide splits into three cases. Anthropic does not spell these out:

SituationReasonable move
Only Claude 4.7+ models, no temperature/top_p/top_k in the codebase, no documents in assistant turnsUpgrade the SDK, run the test suite, fix the type-level breaks
Sonnet 4.6 or older models with tuned samplingGrep for the three parameters; either delete them and re-evaluate, or hold the SDK on its previous major and keep 2023-06-01
Pre-4.7 models on BedrockStay on the current SDK major, as the guide says

Our Haiku 5.5 migration notes cover the other common source of 400s this quarter, which are model-level rather than version-level.

The license change

The guide states: “Starting with the versions under Switch to 2026-10-21, the SDK and the CLI are licensed under the Apache License, Version 2.0. Earlier versions remain under the MIT License. No code changes are needed.” For Java, “The change covers every com.anthropic artifact.” Migration guide GitHub’s license detection for the Python repository now reports Apache-2.0. anthropic-sdk-python Apache 2.0 carries an express patent grant that MIT lacks; that is general knowledge about the two licenses, and Anthropic has not given a reason. If your compliance tooling keeps an allowlist, the new majors need an entry. We did not re-verify the license files in the other SDK repositories.

Elsewhere in the release notes, October 14 to 22

Fast mode on Opus 5.5 is out of research preview

Since October 15, fast mode on Opus 5.5 needs no access request and no fast-mode-2026-02-01 header; requests still sending the header keep working. Opus 5 and Opus 4.8 stay in research preview, and on those models speed without the header returns 400. Fast mode Anthropic claims “up to 2.5x higher output tokens per second” on the same model; that is decode speed, not time to first token, and usage.speed reports fast or standard on each response. Fast mode

Opus 5.5, per 1M tokensStandardFast
Input$4$8
Output$20$40

Opus 5 and Opus 4.8 fast mode list at $10 in and $50 out. The pricing page lists cache hits at $0.20 per million tokens (0.05x), applies the fast multiplier across the full context including requests over 200k tokens, and stacks it with the caching and data-residency multipliers. Pricing Fast mode is not available with the Batch API or Priority Tier. Fast mode It has its own rate limit, with a default Opus 5.5 limit in the Start, Build and Scale tiers, reported through six anthropic-fast-* headers; a 429 carries retry-after, the SDKs retry fast-mode 429s up to two times by default, and falling back to standard causes a cache miss. The page gives no numbers. Fast mode Fast mode runs on the Claude API including Managed Agents, on Microsoft Foundry for Azure-hosted deployments only, and since October 22 on the Anthropic-managed Google Cloud offering; the page lists nothing for Bedrock. Our Opus 5.5 pricing piece has the standard-mode arithmetic.

User profiles

Released October 20, user profiles tag requests with an end customer. Create one with POST /v1/user_profiles (not idempotent), get a uprof_ ID, and send it as the anthropic-user-profile-id header or the user_profile_id SDK argument. It works on token counting, on Batches (applied to every request in the batch) and on the OpenAI-compatible endpoint, and profiles are not billable. User profiles The reason to adopt them is enforcement scope. Without profiles, “one end customer can trigger an enforcement action that applies to your whole organization.” With them, each profile carries an enforcement_status of unrestricted, restricted or banned, and “While an action is open, Anthropic refuses some or all inference requests that carry the profile’s ID.” User profiles Bedrock and the Google-managed Google Cloud offering have no profile endpoints and check only the ID format; the Bedrock user_profile_id body field applies to Claude in Amazon Bedrock, not the older InvokeModel/Converse path. Organization webhooks under the webhooks-2026-10-07 beta fire when a restriction or ban opens or closes. Release notes No source says profiles are required, and the page does not mention the Anthropic-managed Google Cloud offering.

Claude Models on Google Cloud, Anthropic managed

The October 22 entry adds a second way to reach Claude from Google Cloud. The Google-managed path is the one Google operates as part of Google Cloud’s Agent Platform, reached with the AnthropicVertex client, :streamRawPredict endpoints, @ in pre-4.6 model IDs. The Anthropic-managed path is the “Claude API, run by Anthropic and reached through your Google Cloud project”: an AnthropicGoogleCloud client, endpoint claude.googleapis.com, location global, with US-only inference through inference_geo: "us" at 1.1x. Overview Anthropic managed

The account model is the part to read before signing up. Each project gets a new Anthropic organization, separate from any existing one including Enterprise; API keys, workspaces and Console settings do not carry over, and ZDR has to be requested again. Billing runs through Google Cloud Marketplace in Claude Consumption Units at 1 CCU = $0.01, with no separate invoice, and counts toward a Google spend commitment. Access uses claude.admin, claude.user and claude.viewer roles rather than API keys, and MCP tunnels are unavailable. Anthropic is the data processor, some supporting services such as trust and safety process data outside Google Cloud, retention matches the Claude API, CMEK uses Google Cloud KMS, and Data Access logs are off by default. Anthropic managed On Bedrock and the Google-managed offering, regional and multi-region endpoints carry a 10 percent premium over global. Opus 4 and Haiku 3.5 are retired everywhere except Google managed; Opus 4.1 and Sonnet 4 remain only on Bedrock and Google managed. Pricing

Shorter items

  • October 14: OpenTelemetry export beta with SDK spans in all seven languages, and Managed Agents scheduled deployments on Claude Platform on AWS. Our Managed Agents piece has the context.
  • October 15: capabilities.thinking.types.between_tools in the Models API; the Compliance API returns members’ Instructions for Claude and Cowork global instructions (beta, Enterprise).
  • October 20: Claude Tag API beta for Enterprise under experimental-claude-tag-2026-10-21; inference hooks out of beta for Enterprise; a web fetch admin toggle that returns 400 when the tool is included while off; Managed Agents web fetch and search follow organization restrictions. Release notes

What the sources don’t say

There is no retirement date for 2023-06-01, no numeric fast-mode rate limit, and no statement of whether user profiles reach the Anthropic-managed Google Cloud offering. For a codebase on Claude 4.7 or later that never set a sampling parameter, the upgrade is a type-level cleanup and a license-allowlist entry. For anything with a tuned temperature on an older model, the decision is whether that tuning still matters, because once you upgrade there is nothing to replace it with.

Continue reading.

Insight10 min read

Claude's Usage and Cost API Goes Legacy: What Cost Dashboards Gain and Lose

Claude's Usage and Cost Analytics API adds actor and cost-type grouping, but data typically lags up to 4 hours and ranges cap at 31 days. Plus 128 MB requests.

Insight7 min read

Claude Managed Agents Adds Server-Run Workflows and OpenTelemetry Tracing

Anthropic's Managed Agents can now run fan-out workflows on its servers and export traces over OTLP. Limits, billing, content defaults and what to test.

Insight15 min read

Claude Haiku 5.5: A 90% List-Price Cut, a 75% Real One, and Five Ways to Get a 400

Haiku 5.5 lists at a tenth of Haiku 4.5's price; Anthropic says about 75% less in practice. The gap, the 400s after switching, and Sonnet 5.5 vs Luna.