Follow Discord
Sweep 22 Oct 2026 · 21:04Z Build v2.1.309 528 read Stable v2.1.308 Latest v2.1.309 Next v2.1.309 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One capture · api

One read of Claude Developer Platformapi-20261022T213726Z

115 pages moved out of 808 read.

Pages moved 115 significant first
Pages read 808 in this capture
Captured 21:37 UTC
Corpus hash 7969d7d723dd corpus-hash

What this read moved

1-25 of 115, page 1 of 5

This capture is too large to show at once. Changes 1-25 of 115 are below, significant first; the rest are on the following screens.

about-claude/models/model-ids-and-versions Changed · +3 / -3 lines

from line 32
3232 
3333Claude Opus 4.6 is the last Bedrock model ID to include the `-v1` suffix (`anthropic.claude-opus-4-6-v1`). Anthropic dropped the suffix starting with Claude Sonnet 4.6.
3434 
35On Google Cloud, the format matches the Claude API.
35On Claude Models on Google Cloud (Google managed), the format matches the Claude API.
3636 
3737### Before the 4.6 generation
3838 
from line 52
5252 
5353For example: `anthropic.claude-sonnet-4-5-20250929-v1:0`
5454 
55On Google Cloud, the date is separated with `@`:
55On Claude Models on Google Cloud (Google managed), the date is separated with `@`:
5656 
5757```text wrap
5858claude-{name}-{major}-{minor}@{YYYYMMDD}
from line 80
8080 
8181## Current model IDs
8282 
83For the full list of current model IDs and their Amazon Bedrock and Google Cloud equivalents, see [Models overview](https://platform.claude.com/docs/en/models/overview).
83For the full list of current model IDs and their Amazon Bedrock and Claude Models on Google Cloud (Google managed) equivalents, see [Models overview](https://platform.claude.com/docs/en/models/overview).
8484 

about-claude/pricing Changed · +7 / -7 lines

from line 55
5555 
5656## Cloud platform pricing
5757 
58This section covers partner-operated cloud platforms, where the cloud provider invoices you. For Anthropic-operated cloud platforms billed through a marketplace, see [Claude Platform on AWS pricing](https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing) and [Claude in Microsoft Foundry pricing](https://platform.claude.com/docs/en/about-claude/pricing#claude-in-microsoft-foundry-pricing).
58This section covers partner-operated cloud platforms, where the cloud provider invoices you. For Anthropic-operated cloud platforms billed through a marketplace, see [Claude Platform on AWS pricing](https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing), [Claude Models on Google Cloud (Anthropic managed) billing](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/anthropic-managed#billing), and [Claude in Microsoft Foundry pricing](https://platform.claude.com/docs/en/about-claude/pricing#claude-in-microsoft-foundry-pricing).
5959 
60Claude models are available on [Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock) and [Google Cloud](https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai). For official pricing, visit:
60Claude models are available on [Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock) and [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed). For official pricing, visit:
6161 
6262* [Amazon Bedrock pricing](https://aws.amazon.com/bedrock/pricing/)
6363* [Google Cloud pricing](https://cloud.google.com/vertex-ai/generative-ai/pricing#claude-models)
from line 68
6868 Starting with Claude Sonnet 4.5, Haiku 4.5, and Opus 4.5:
6969 
7070 * **Bedrock** offers two endpoint types: global endpoints (dynamic routing for maximum availability) and regional endpoints (guaranteed data routing through specific geographic regions).
71 * **Google Cloud** offers global endpoints and multi-region endpoints (dynamic routing within a geographic area) for these models, and regional endpoints for Claude Sonnet 4.6 and earlier models.
71 * **Claude Models on Google Cloud (Google managed)** offers global endpoints and multi-region endpoints (dynamic routing within a geographic area) for these models, and regional endpoints for Claude Sonnet 4.6 and earlier models.
7272 
7373 Regional and multi-region endpoints include a 10 percent premium over global endpoints. The Claude API (first-party) is global by default; for first-party data residency options and pricing, see [Data residency pricing](https://platform.claude.com/docs/en/about-claude/pricing#data-residency-pricing).
7474 
from line 77
7777 For implementation details and code examples:
7878 
7979 * [Amazon Bedrock global vs regional endpoints](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock#regions) for Opus 4.7, Haiku 4.5, and later models, or [the legacy integration](https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy#global-vs-regional-endpoints) for all other models on Bedrock
80 * [Google Cloud global, multi-region, and regional endpoints](https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai#global-multi-region-and-regional-endpoints)
80 * [Claude Models on Google Cloud (Google managed) global, multi-region, and regional endpoints](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#global-multi-region-and-regional-endpoints)
8181</Note>
8282 
8383## Claude Platform on AWS pricing
from line 159
159159 
160160For Claude 4.6 and later models, specifying US-only inference through the `inference_geo` parameter incurs a 1.1x multiplier on all token pricing categories, including input tokens, output tokens, cache writes, and cache reads. On Claude Haiku 5.5, the multiplier also applies to the higher prices for prompts over 100,000 tokens (see [Long context pricing](https://platform.claude.com/docs/en/about-claude/pricing#long-context-pricing)). Global routing (the default) uses standard pricing.
161161 
162This applies to the Claude API (first-party) and Claude Platform on AWS. On Claude in Microsoft Foundry, the same 1.1x multiplier applies to deployments that use the US Data Zone Standard deployment type (see [Inference geography](https://platform.claude.com/docs/en/about-claude/pricing#foundry-inference-geography)). Partner-operated platforms (Bedrock and Google Cloud) have independent regional pricing. See [Bedrock](https://aws.amazon.com/bedrock/pricing/) and [Google Cloud](https://cloud.google.com/vertex-ai/generative-ai/pricing#claude-models) for details. Earlier models do not support the `inference_geo` parameter and always use standard pricing; requests that include the parameter on these models return a 400 error.
162This applies to the Claude API (first-party), Claude Platform on AWS, and Claude Models on Google Cloud (Anthropic managed). On Claude in Microsoft Foundry, the same 1.1x multiplier applies to deployments that use the US Data Zone Standard deployment type (see [Inference geography](https://platform.claude.com/docs/en/about-claude/pricing#foundry-inference-geography)). Partner-operated platforms, Bedrock and Claude Models on Google Cloud (Google managed), have independent regional pricing. See [Bedrock](https://aws.amazon.com/bedrock/pricing/) and [Google Cloud](https://cloud.google.com/vertex-ai/generative-ai/pricing#claude-models) for details. Earlier models do not support the `inference_geo` parameter and always use standard pricing; requests that include the parameter on these models return a 400 error.
163163 
164164For more information, see [Data residency](https://platform.claude.com/docs/en/manage-claude/data-residency).
165165 
166166### Fast mode pricing
167167 
168[Fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode) provides significantly faster output for Claude Opus 5.5, Claude Opus 5, and Claude Opus 4.8 at premium pricing. Fast mode for Claude Opus 5 and Claude Opus 4.8 is in research preview. Fast mode pricing applies across the full context window, including requests over 200k input tokens. Fast mode is available on the Claude API (first-party) and, for Claude Opus 5.5, on [Claude in Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry) for deployments hosted on Azure; it is not available on Claude Platform on AWS or partner-operated cloud platforms.
168[Fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode) provides significantly faster output for Claude Opus 5.5, Claude Opus 5, and Claude Opus 4.8 at premium pricing. Fast mode for Claude Opus 5 and Claude Opus 4.8 is in research preview. Fast mode pricing applies across the full context window, including requests over 200k input tokens. Fast mode is available on the Claude API (first-party) and, for Claude Opus 5.5, on [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/anthropic-managed#billing) and on [Claude in Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry) for deployments hosted on Azure.
169169 
170170| Model | Input | Output |
171171| ------------------------------- | -------------- | -------------- |

agents-and-tools/tool-use/computer-use-tool Changed · +8 / -8 lines

from line 25
2525 Google Cloud: ga
2626 Microsoft Foundry: beta
2727 details:
28 - On the Claude API and Google Cloud, Claude 5.5 and later models support computer use only through the `computer_toolset_20260801` toolset and return an error for the earlier `computer_20251124` and `computer_20250124` tool versions. To move an existing integration, see [Migrate from `computer_20251124`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124). To move from `computer_20250124`, see [Move computer use to the toolset](https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide#computer-use-toolset) in the Claude Haiku 5.5 migration guide.
28 - On the Claude API and Claude Models on Google Cloud (Google managed), Claude 5.5 and later models support computer use only through the `computer_toolset_20260801` toolset and return an error for the earlier `computer_20251124` and `computer_20250124` tool versions. To move an existing integration, see [Migrate from `computer_20251124`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124). To move from `computer_20250124`, see [Move computer use to the toolset](https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide#computer-use-toolset) in the Claude Haiku 5.5 migration guide.
2929 - On Amazon Bedrock, Claude Opus 5.5, Claude Sonnet 5.5, and Claude Haiku 5.5 accept the earlier `computer_20251124` tool version as Claude Opus 5 and Claude Sonnet 5 do.
3030 - Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6, and Claude Opus 4.5 support computer use only through the earlier `computer_20251124` tool version, which requires a beta header; see [Earlier tool versions](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions).
31 - Platforms other than the Claude API and Google Cloud currently offer only the [earlier beta tool versions](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions).
31 - On Claude Platform on AWS, Amazon Bedrock, and Microsoft Foundry, computer use is available only through the [earlier beta tool versions](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions).
3232---
3333 
3434<Note>
from line 42
4242For tasks that stay inside webpages, the [browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool) is the closer fit: its member tools read and act on the page itself, and it doesn't need a full desktop environment.
4343 
4444<Note>
45 Computer use is available on the Claude API and [Google Cloud](https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai) as the `computer_toolset_20260801` toolset; see [Compatibility](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#compatibility) for the supported models.
45 Computer use is available on the Claude API and [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed) as the `computer_toolset_20260801` toolset; see [Compatibility](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#compatibility) for the supported models.
4646 
4747 Existing `computer_20251124` integrations keep working on the models listed for it under [Earlier tool versions](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions), and earlier tool versions remain available in beta for models and platforms that don't support the toolset. See [Migrate from `computer_20251124`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124) to upgrade, or [Earlier tool versions](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions) for the beta headers.
4848</Note>
from line 2105
21052105 
21062106## Migrate from `computer_20251124`
21072107 
2108Upgrading from `computer_20251124` to the toolset is optional: the models listed for `computer_20251124` under [Earlier tool versions](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions) keep accepting it with its beta header, so an existing integration keeps working until you change it. Claude 5.5 and later models are the exception on the Claude API and Google Cloud: there they accept only the toolset. Upgrade an integration before you move it to one of them. On Amazon Bedrock, Claude Opus 5.5, Claude Sonnet 5.5, and Claude Haiku 5.5 accept `computer_20251124`. To upgrade, make the following changes together:
2108Upgrading from `computer_20251124` to the toolset is optional: the models listed for `computer_20251124` under [Earlier tool versions](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions) keep accepting it with its beta header, so an existing integration keeps working until you change it. Claude 5.5 and later models are the exception on the Claude API and Claude Models on Google Cloud (Google managed): there they accept only the toolset. Upgrade an integration before you move it to one of them. On Amazon Bedrock, Claude Opus 5.5, Claude Sonnet 5.5, and Claude Haiku 5.5 accept `computer_20251124`. To upgrade, make the following changes together:
21092109 
211021101. **Remove the beta header.** Drop `anthropic-beta: computer-use-2025-11-24` from your requests. With the SDK, remove `betas` (csharp, go: `Betas`; java: `.addBeta()`) and call the Messages API through the standard client rather than the beta namespace.
211121112. **Change the `tools` entry.** Set `type` to `computer_toolset_20260801` and delete `name`, `display_width_px`, `display_height_px`, `display_number`, and `enable_zoom`. The toolset rejects each of these fields.
from line 2165
21652165 
21662166Two earlier versions of the computer use tool remain available in beta for existing integrations, for models that don't support the toolset, and on platforms where the toolset isn't currently available. Each requires its [beta header](https://platform.claude.com/docs/en/api/beta-headers) on every request, and their parameters are documented in the [beta Messages API reference](https://platform.claude.com/docs/en/api/beta/messages/create). With the SDK, pass the header through `betas` (csharp, go: `Betas`; java: `.addBeta()`) and use the beta namespace; only the computer use tool needs the header, not the bash or text editor tools in the same request.
21672167 
2168| Tool version | Beta header | Use with | Parameters |
2169| ------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
2170| `computer_20251124` | `computer-use-2025-11-24` | Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6, and Claude Opus 4.5; on Amazon Bedrock, also Claude Opus 5.5, Claude Sonnet 5.5, and Claude Haiku 5.5 | [API reference](https://platform.claude.com/docs/en/api/beta/messages/create) |
2171| `computer_20250124` | `computer-use-2025-01-24` | Claude Sonnet 4.5 ([deprecated](https://platform.claude.com/docs/en/about-claude/model-deprecations)), Claude Haiku 4.5, Claude Opus 4.1 ([retired, except on Bedrock and Google Cloud](https://platform.claude.com/docs/en/about-claude/model-deprecations)), Claude Sonnet 4 ([retired, except on Bedrock and Google Cloud](https://platform.claude.com/docs/en/about-claude/model-deprecations)), and Claude Opus 4 ([retired, except on Google Cloud](https://platform.claude.com/docs/en/about-claude/model-deprecations)) | [API reference](https://platform.claude.com/docs/en/api/beta/messages/create) |
2168| Tool version | Beta header | Use with | Parameters |
2169| ------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
2170| `computer_20251124` | `computer-use-2025-11-24` | Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6, and Claude Opus 4.5; on Amazon Bedrock, also Claude Opus 5.5, Claude Sonnet 5.5, and Claude Haiku 5.5 | [API reference](https://platform.claude.com/docs/en/api/beta/messages/create) |
2171| `computer_20250124` | `computer-use-2025-01-24` | Claude Sonnet 4.5 ([deprecated](https://platform.claude.com/docs/en/about-claude/model-deprecations)), Claude Haiku 4.5, Claude Opus 4.1 ([retired, except on Bedrock and Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/about-claude/model-deprecations)), Claude Sonnet 4 ([retired, except on Bedrock and Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/about-claude/model-deprecations)), and Claude Opus 4 ([retired, except on Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/about-claude/model-deprecations)) | [API reference](https://platform.claude.com/docs/en/api/beta/messages/create) |
21722172 
21732173***
21742174 

agents-and-tools/tool-use/programmatic-tool-calling Changed · +19 / -29 lines

from line 878
878878 },
879879 Messages: []anthropic.MessageParam{
880880 anthropic.NewUserMessage(anthropic.NewTextBlock("Query customer purchase history from the last quarter and identify our top 5 customers by revenue")),
881 {OfAssistant: &anthropic.AssistantMessageParam{
882 Content: []anthropic.ContentBlockParamUnion{
883 anthropic.NewTextBlock("I'll query the purchase history and analyze the results."),
884 {OfServerToolUse: &anthropic.ServerToolUseBlockParam{
885 ID: "srvtoolu_abc123",
886 Name: anthropic.ServerToolUseBlockParamNameCodeExecution,
887 Input: map[string]any{"code": "..."},
888 }},
889 {OfToolUse: &anthropic.ToolUseBlockParam{
890 ID: "toolu_def456",
891 Name: "query_database",
892 Input: map[string]any{"sql": "<sql>"},
893 Caller: anthropic.ServerToolUseBlockParamCallerUnion{
894 OfCodeExecution20260120: &anthropic.ServerToolCaller20260120Param{
895 ToolID: "srvtoolu_abc123",
896 },
881 anthropic.NewAssistantMessage(
882 anthropic.NewTextBlock("I'll query the purchase history and analyze the results."),
883 anthropic.NewServerToolUseBlock("srvtoolu_abc123", map[string]any{"code": "..."}, anthropic.ServerToolUseBlockParamNameCodeExecution),
884 anthropic.ContentBlockParamUnion{OfToolUse: &anthropic.ToolUseBlockParam{
885 ID: "toolu_def456",
886 Name: "query_database",
887 Input: map[string]any{"sql": "<sql>"},
888 Caller: anthropic.ToolUseBlockParamCallerUnion{
889 OfCodeExecution20260120: &anthropic.ServerToolCaller20260120Param{
890 ToolID: "srvtoolu_abc123",
897891 },
892 },
893 }},
894 ),
895 anthropic.NewUserMessage(anthropic.ContentBlockParamUnion{OfToolResult: &anthropic.ToolResultBlockParam{
896 ToolUseID: "toolu_def456",
897 Content: []anthropic.ToolResultBlockParamContentUnion{
898 {OfText: &anthropic.TextBlockParam{
899 Text: `[{"customer_id": "C1", "revenue": 45000}, {"customer_id": "C2", "revenue": 38000}, ...]`,
898900 }},
899901 },
900 }},
901 {OfUser: &anthropic.UserMessageParam{
902 Content: []anthropic.ContentBlockParamUnion{
903 {OfToolResult: &anthropic.ToolResultBlockParam{
904 ToolUseID: "toolu_def456",
905 Content: []anthropic.ToolResultBlockParamContentUnion{
906 {OfText: &anthropic.TextBlockParam{
907 Text: `[{"customer_id": "C1", "revenue": 45000}, {"customer_id": "C2", "revenue": 38000}, ...]`,
908 }},
909 },
910 }},
911 },
912 }},
902 }}),
913903 },
914904 // Same tools array as the original request
915905 Tools: []anthropic.ToolUnionParam{

agents-and-tools/tool-use/web-fetch-tool Changed · +4 / -4 lines

from line 12
1212 
1313The latest web fetch tool version (`web_fetch_20260318`) supports **dynamic filtering**: Claude can write and execute code to filter fetched content before it reaches the context window, keeping only relevant information and discarding the rest. This reduces token consumption while maintaining response quality. Dynamic filtering is available with Claude 4.6 and later models and [Claude Mythos Preview](https://anthropic.com/glasswing). `web_fetch_20260318` also adds [response inclusion](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool#response-inclusion) control for agentic workflows. The previous versions (`web_fetch_20260309` for dynamic filtering and [cache bypass](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool#cache-bypass), `web_fetch_20260209` for dynamic filtering only, `web_fetch_20250910` for basic fetch) remain available.
1414 
15Web fetch (with and without dynamic filtering) is available on the Claude API, [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws), and [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry). On Microsoft Foundry, deployments [hosted on Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#additional-features-not-supported-when-hosted-on-azure) support only the basic web fetch tool (`web_fetch_20250910`, without dynamic filtering). Deployments hosted on Anthropic support all versions. Web fetch is not currently available on Amazon Bedrock or Google Cloud.
15Web fetch (with and without dynamic filtering) is available on the Claude API, [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws), [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/anthropic-managed), and [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry). On Microsoft Foundry, deployments [hosted on Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#additional-features-not-supported-when-hosted-on-azure) support only the basic web fetch tool (`web_fetch_20250910`, without dynamic filtering). Deployments hosted on Anthropic support all versions.
1616 
1717<Note>
18 For [Claude Mythos Preview](https://anthropic.com/glasswing), web fetch is available on the Claude API and Microsoft Foundry. It is not currently available for Mythos Preview on Amazon Bedrock or Google Cloud.
18 For [Claude Mythos Preview](https://anthropic.com/glasswing), web fetch is available on the Claude API and Microsoft Foundry.
1919</Note>
2020 
2121<Note>

api/beta Changed · +30 / -27 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

Nothing in the body moved in this read. What changed is above.

api/beta/organization Changed · +30 / -27 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

from line 9635
96359635 
96369636 - `models: array of string or null`
96379637 
9638 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
9638 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
96399639 
96409640 - `rate_limit_id: string`
96419641 
from line 9888
98889888 
98899889 - `models: array of string or null`
98909890 
9891 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
9891 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
98929892 
98939893 - `rate_limit_id: string`
98949894 
from line 10465
1046510465 
1046610466 - `"extended-cache-ttl-2025-04-11"`
1046710467 
10468 - `"context-1m-2025-08-07"`
10469 
10470 - `"context-management-2025-06-27"`
10471 
10472 - `"model-context-window-exceeded-2025-08-26"`
10473 
10474 - `"skills-2025-10-02"`
10475 
10476 - `"fast-mode-2026-02-01"`
10477 
10478 - `"output-300k-2026-03
10468 - `"context-

api/beta/organization/plugin_marketplaces Changed · +6 / -6 lines

from line 865
865865The report says whether `marketplace.json` is well-formed, which plugins a
866866synchronization would skip and why, and which plugins would synchronize only in
867867part, with some files left out. A repository that is missing, private, or has no such branch or commit is reported, not refused: the response is a report with `valid: false`. Plugin sources outside the marketplace
868are fetched anonymously from GitHub, so a private one is reported as not found; a
869source on any other host is not fetched here, and the report notes that it will be
870checked when the marketplace actually synchronizes.
868are fetched anonymously from GitHub, so a private one is reported as not found or as
869needing a GitHub sign-in; a source on any other host is not fetched here, and the
870report notes that it will be checked when the marketplace actually synchronizes.
871871 
872872Nothing is recorded on the Compliance API activity feed.
873873 
from line 1135
11351135The report says whether `marketplace.json` is well-formed, which plugins a
11361136synchronization would skip and why, and which plugins would synchronize only in
11371137part, with some files left out. An archive that cannot be read as a marketplace is reported, not refused: the response is a report with `valid: false`. Plugin sources outside the marketplace
1138are fetched anonymously from GitHub, so a private one is reported as not found; a
1139source on any other host is not fetched here, and the report notes that it will be
1140checked when the marketplace actually synchronizes.
1138are fetched anonymously from GitHub, so a private one is reported as not found or as
1139needing a GitHub sign-in; a source on any other host is not fetched here, and the
1140report notes that it will be checked when the marketplace actually synchronizes.
11411141 
11421142Nothing is recorded on the Compliance API activity feed.
11431143 

api/beta/organization/plugin_marketplaces/validate_archive Changed · +3 / -3 lines

from line 15
1515The report says whether `marketplace.json` is well-formed, which plugins a
1616synchronization would skip and why, and which plugins would synchronize only in
1717part, with some files left out. An archive that cannot be read as a marketplace is reported, not refused: the response is a report with `valid: false`. Plugin sources outside the marketplace
18are fetched anonymously from GitHub, so a private one is reported as not found; a
19source on any other host is not fetched here, and the report notes that it will be
20checked when the marketplace actually synchronizes.
18are fetched anonymously from GitHub, so a private one is reported as not found or as
19needing a GitHub sign-in; a source on any other host is not fetched here, and the
20report notes that it will be checked when the marketplace actually synchronizes.
2121 
2222Nothing is recorded on the Compliance API activity feed.
2323 

api/beta/organization/plugin_marketplaces/validate_repository Changed · +3 / -3 lines

from line 15
1515The report says whether `marketplace.json` is well-formed, which plugins a
1616synchronization would skip and why, and which plugins would synchronize only in
1717part, with some files left out. A repository that is missing, private, or has no such branch or commit is reported, not refused: the response is a report with `valid: false`. Plugin sources outside the marketplace
18are fetched anonymously from GitHub, so a private one is reported as not found; a
19source on any other host is not fetched here, and the report notes that it will be
20checked when the marketplace actually synchronizes.
18are fetched anonymously from GitHub, so a private one is reported as not found or as
19needing a GitHub sign-in; a source on any other host is not fetched here, and the
20report notes that it will be checked when the marketplace actually synchronizes.
2121 
2222Nothing is recorded on the Compliance API activity feed.
2323 

api/beta/organization/plugins Changed · +25 / -22 lines

from line 217
217217 
218218 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
219219 
220 The scan's verdict; set only when `status` is `completed`.
220 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
221221 
222222 - `"fail"`
223223 
from line 233
233233 
234234 - `status: "completed" or "errored" or "processing"`
235235 
236 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
236 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
237237 
238238 - `"completed"`
239239 
from line 606
606606 
607607 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
608608 
609 The scan's verdict; set only when `status` is `completed`.
609 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
610610 
611611 - `"fail"`
612612 
from line 622
622622 
623623 - `status: "completed" or "errored" or "processing"`
624624 
625 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
625 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
626626 
627627 - `"completed"`
628628 
from line 824
824824start serving a version that was stored without being served, or the one already
825825served to pin it without changing what is served. No new version is created.
826826 
827When the organization has content scanning enabled, a version whose scan is still
828running is refused with a 409 (`error_code` `scan_pending`; retry once the scan
829finishes) and one whose scan failed, errored or reached no verdict with a 400
830(`scan_failed`; a `warn` is accepted). When the Plugin is in the organization's
827When the organization has content scanning enabled, a version whose
828`content_scan.status` is `processing` is refused with a 409 (`error_code`
829`scan_pending`; retry once the scan finishes). A version whose `content_scan.status`
830is `errored`, or whose `content_scan.assessment` is `fail` or `unknown`, is refused
831with a 400 (`error_code` `scan_failed`); a `warn` is accepted. If the scan outcome
832cannot be read at that moment, the request fails with a retryable 503 instead.
833When the Plugin is in the organization's
831834library marketplace, a version other than the one served is also refused with a 409
832835when one of its skills has a name that an organization skill (one an administrator
833836uploaded for the whole organization in claude.ai) has since taken: `error_code`
from line 1016
10131016 
10141017 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
10151018 
1016 The scan's verdict; set only when `status` is `completed`.
1019 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
10171020 
10181021 - `"fail"`
10191022 
from line 1032
10291032 
10301033 - `status: "completed" or "errored" or "processing"`
10311034 
1032 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
1035 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
10331036 
10341037 - `"completed"`
10351038 
from line 1461
14581461 
14591462 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
14601463 
1461 The scan's verdict; set only when `status` is `completed`.
1464 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
14621465 
14631466 - `"fail"`
14641467 
from line 1477
14741477 
14751478 - `status: "completed" or "errored" or "processing"`
14761479 
1477 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
1480 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
14781481 
14791482 - `"completed"`
14801483 
from line 1911
19081911 
19091912 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
19101913 
1911 The scan's verdict; set only when `status` is `completed`.
1914 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
19121915 
19131916 - `"fail"`
19141917 
from line 1927
19241927 
19251928 - `status: "completed" or "errored" or "processing"`
19261929 
1927 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
1930 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
19281931 
19291932 - `"completed"`
19301933 
from line 2113
21102113 
21112114 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
21122115 
2113 The scan's verdict; set only when `status` is `completed`.
2116 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
21142117 
21152118 - `"fail"`
21162119 
from line 2129
21262129 
21272130 - `status: "completed" or "errored" or "processing"`
21282131 
2129 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
2132 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
21302133 
21312134 - `"completed"`
21322135 
from line 2426
24232426 
24242427 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
24252428 
2426 The scan's verdict; set only when `status` is `completed`.
2429 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
24272430 
24282431 - `"fail"`
24292432 
from line 2442
24392442 
24402443 - `status: "completed" or "errored" or "processing"`
24412444 
2442 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
2445 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
24432446 
24442447 - `"completed"`
24452448 
from line 2761
27582761 
27592762 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
27602763 
2761 The scan's verdict; set only when `status` is `completed`.
2764 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
27622765 
27632766 - `"fail"`
27642767 
from line 2777
27742777 
27752778 - `status: "completed" or "errored" or "processing"`
27762779 
2777 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
2780 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
27782781 
27792782 - `"completed"`
27802783 
from line 3090
30873090 
30883091 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
30893092 
3090 The scan's verdict; set only when `status` is `completed`.
3093 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
30913094 
30923095 - `"fail"`
30933096 
from line 3106
31033106 
31043107 - `status: "completed" or "errored" or "processing"`
31053108 
3106 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
3109 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
31073110 
31083111 - `"completed"`
31093112 

api/beta/organization/plugins/update Changed · +9 / -6 lines

from line 16
1616start serving a version that was stored without being served, or the one already
1717served to pin it without changing what is served. No new version is created.
1818 
19When the organization has content scanning enabled, a version whose scan is still
20running is refused with a 409 (`error_code` `scan_pending`; retry once the scan
21finishes) and one whose scan failed, errored or reached no verdict with a 400
22(`scan_failed`; a `warn` is accepted). When the Plugin is in the organization's
19When the organization has content scanning enabled, a version whose
20`content_scan.status` is `processing` is refused with a 409 (`error_code`
21`scan_pending`; retry once the scan finishes). A version whose `content_scan.status`
22is `errored`, or whose `content_scan.assessment` is `fail` or `unknown`, is refused
23with a 400 (`error_code` `scan_failed`); a `warn` is accepted. If the scan outcome
24cannot be read at that moment, the request fails with a retryable 503 instead.
25When the Plugin is in the organization's
2326library marketplace, a version other than the one served is also refused with a 409
2427when one of its skills has a name that an organization skill (one an administrator
2528uploaded for the whole organization in claude.ai) has since taken: `error_code`
from line 208
205208 
206209 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
207210 
208 The scan's verdict; set only when `status` is `completed`.
211 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
209212 
210213 - `"fail"`
211214 
from line 224
221224 
222225 - `status: "completed" or "errored" or "processing"`
223226 
224 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
227 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
225228 
226229 - `"completed"`
227230 

api/beta/organization/plugins/versions Changed · +8 / -8 lines

from line 212
212212 
213213 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
214214 
215 The scan's verdict; set only when `status` is `completed`.
215 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
216216 
217217 - `"fail"`
218218 
from line 228
228228 
229229 - `status: "completed" or "errored" or "processing"`
230230 
231 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
231 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
232232 
233233 - `"completed"`
234234 
from line 547
547547 
548548 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
549549 
550 The scan's verdict; set only when `status` is `completed`.
550 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
551551 
552552 - `"fail"`
553553 
from line 563
563563 
564564 - `status: "completed" or "errored" or "processing"`
565565 
566 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
566 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
567567 
568568 - `"completed"`
569569 
from line 876
876876 
877877 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
878878 
879 The scan's verdict; set only when `status` is `completed`.
879 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
880880 
881881 - `"fail"`
882882 
from line 892
892892 
893893 - `status: "completed" or "errored" or "processing"`
894894 
895 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
895 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
896896 
897897 - `"completed"`
898898 
from line 1223
12231223 
12241224 - `assessment: "fail" or "pass" or "unknown" or "warn" or null`
12251225 
1226 The scan's verdict; set only when `status` is `completed`.
1226 The scan's verdict; set only when `status` is `completed`. A `warn` can mean a `fail` that was allowed in claude.ai.
12271227 
12281228 - `"fail"`
12291229 
from line 1239
12391239 
12401240 - `status: "completed" or "errored" or "processing"`
12411241 
1242 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
1242 `processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run. Once a scan of the version has completed, `content_scan` describes the newest completed scan, even while a later scan runs. While the scan outcome cannot be read, `status` is `errored` instead.
12431243 
12441244 - `"completed"`
12451245 

api/beta/organization/workspaces/rate_limits Changed · +3 / -3 lines

from line 201
201201 
202202 - `models: array of string or null`
203203 
204 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
204 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
205205 
206206 - `rate_limit_id: string`
207207 
from line 454
454454 
455455 - `models: array of string or null`
456456 
457 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
457 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
458458 
459459 - `rate_limit_id: string`
460460 
from line 639
639639 
640640 - `models: array of string or null`
641641 
642 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
642 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
643643 
644644 - `rate_limit_id: string`
645645 

api/compliance Changed · +8 / -0 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

Nothing in the body moved in this read. What changed is above.

api/compliance/activities Changed · +16 / -0 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

Nothing in the body moved in this read. What changed is above.

api/compliance/activities/list Changed · +8 / -0 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

Nothing in the body moved in this read. What changed is above.

api/organization Changed · +3 / -3 lines

from line 7215
72157215 
72167216 - `models: array of string or null`
72177217 
7218 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
7218 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
72197219 
72207220 - `rate_limit_id: string`
72217221 
from line 7468
74687468 
74697469 - `models: array of string or null`
74707470 
7471 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
7471 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
74727472 
74737473 - `rate_limit_id: string`
74747474 
from line 8625
86258625 
86268626 - `models: array of string or null`
86278627 
8628 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
8628 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models your organization has access to, so it can differ between organizations.
86298629 
86308630- `next_page: string or null`
86318631 

api/organization/workspaces/rate_limits Changed · +3 / -3 lines

from line 201
201201 
202202 - `models: array of string or null`
203203 
204 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
204 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
205205 
206206 - `rate_limit_id: string`
207207 
from line 454
454454 
455455 - `models: array of string or null`
456456 
457 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
457 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
458458 
459459 - `rate_limit_id: string`
460460 
from line 639
639639 
640640 - `models: array of string or null`
641641 
642 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`.
642 Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.
643643 
644644 - `rate_limit_id: string`
645645 

api/overview Changed · +10 / -9 lines

from line 87
8787Access Claude through AWS, Google Cloud, or Microsoft Azure:
8888 
8989* **Integrated** with cloud provider billing and IAM
90* **Feature availability varies by platform:** Anthropic-operated platforms include [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws) and [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry); partner-operated platforms include Amazon Bedrock and Google Cloud. See each platform's page for feature availability and timing.
90* **Feature availability varies by platform:** Anthropic-operated platforms include [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws), [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/anthropic-managed), and [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry); partner-operated platforms include Amazon Bedrock and Claude Models on Google Cloud (Google managed). See each platform's page for feature availability and timing.
9191* **Best for:** Existing cloud commitments, specific compliance requirements, consolidated cloud billing
9292 
93| Platform | Provider | Documentation |
94| ---------------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
95| Agent Platform | Google Cloud | [Claude on Google Cloud](https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai) |
96| Amazon Bedrock | AWS | [Claude in Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock) |
97| Claude Platform on AWS | AWS (Anthropic-operated) | [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws) |
98| Microsoft Foundry | Microsoft Azure (Anthropic-operated) | [Claude in Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry) |
93| Platform | Provider | Documentation |
94| ------------------------------------------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
95| Agent Platform | Google Cloud | [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed) |
96| Amazon Bedrock | AWS | [Claude in Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock) |
97| Claude Platform on AWS | AWS (Anthropic-operated) | [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws) |
98| Claude Models on Google Cloud (Anthropic managed) | Google Cloud (Anthropic-operated) | [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/anthropic-managed) |
99| Microsoft Foundry | Microsoft Azure (Anthropic-operated) | [Claude in Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry) |
99100 
100101<Note>
101 Claude Managed Agents is available through the direct Claude API and [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws). For feature availability across platforms, see the [Features overview](https://platform.claude.com/docs/en/build-with-claude/overview).
102 Claude Managed Agents is available through the direct Claude API, [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws), and [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/anthropic-managed). For feature availability across platforms, see the [Features overview](https://platform.claude.com/docs/en/build-with-claude/overview).
102103</Note>
103104 
104105## Request and response format
from line 116
115116If you exceed these limits, you'll receive a 413 `request_too_large` error.
116117 
117118<Note>
118 Partner-operated platforms have their own request size limits: Bedrock limits requests to 20 MB, and Google Cloud limits requests to 30 MB. Claude Platform on AWS uses the same limits as the direct Claude API. Consult your platform's documentation for current values.
119 Partner-operated platforms have their own request size limits: Bedrock limits requests to 20 MB, and Claude Models on Google Cloud (Google managed) limits requests to 30 MB. Claude Platform on AWS uses the same limits as the direct Claude API. Consult your platform's documentation for current values.
119120</Note>
120121 
121122### Response headers

api/rate-limits Changed · +36 / -36 lines

from line 136
136136 
137137<Tabs>
138138 <Tab title="Start tier">
139 | Model | Maximum requests per minute (RPM) | Maximum input tokens per minute (ITPM) | Maximum output tokens per minute (OTPM) |
140 | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | -------------------------------------- | --------------------------------------- |
141 | Claude Fable 5.x1 | 1,000 | 500,000 | 100,000 |
142 | Claude Opus 5.5 | 1,000 | 2,000,000 | 400,000 |
143 | Claude Opus 5 | 1,000 | 2,000,000 | 400,000 |
144 | Claude Opus 4.x2 | 1,000 | 2,000,000 | 400,000 |
145 | Claude Sonnet 5.5 | 1,000 | 2,000,000 | 400,000 |
146 | Claude Sonnet 5 | 1,000 | 2,000,000 | 400,000 |
147 | Claude Sonnet 4.x3 | 1,000 | 2,000,000 | 400,000 |
148 | Claude Haiku 5.5 | 1,000 | 2,000,000 | 400,000 |
149 | Claude Haiku 4.5 | 1,000 | 2,000,000 | 400,000 |
150 | Claude Haiku 3.5 ([retired, except on Google Cloud](https://platform.claude.com/docs/en/about-claude/model-deprecations)) | 1,000 | 100,0004 | 20,000 |
139 | Model | Maximum requests per minute (RPM) | Maximum input tokens per minute (ITPM) | Maximum output tokens per minute (OTPM) |
140 | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | -------------------------------------- | --------------------------------------- |
141 | Claude Fable 5.x1 | 1,000 | 500,000 | 100,000 |
142 | Claude Opus 5.5 | 1,000 | 2,000,000 | 400,000 |
143 | Claude Opus 5 | 1,000 | 2,000,000 | 400,000 |
144 | Claude Opus 4.x2 | 1,000 | 2,000,000 | 400,000 |
145 | Claude Sonnet 5.5 | 1,000 | 2,000,000 | 400,000 |
146 | Claude Sonnet 5 | 1,000 | 2,000,000 | 400,000 |
147 | Claude Sonnet 4.x3 | 1,000 | 2,000,000 | 400,000 |
148 | Claude Haiku 5.5 | 1,000 | 2,000,000 | 400,000 |
149 | Claude Haiku 4.5 | 1,000 | 2,000,000 | 400,000 |
150 | Claude Haiku 3.5 ([retired, except on Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/about-claude/model-deprecations)) | 1,000 | 100,0004 | 20,000 |
151151 </Tab>
152152 
153153 <Tab title="Build tier">
154 | Model | Maximum requests per minute (RPM) | Maximum input tokens per minute (ITPM) | Maximum output tokens per minute (OTPM) |
155 | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | -------------------------------------- | --------------------------------------- |
156 | Claude Fable 5.x1 | 2,000 | 1,500,000 | 300,000 |
157 | Claude Opus 5.5 | 5,000 | 5,000,000 | 1,000,000 |
158 | Claude Opus 5 | 5,000 | 5,000,000 | 1,000,000 |
159 | Claude Opus 4.x2 | 5,000 | 5,000,000 | 1,000,000 |
160 | Claude Sonnet 5.5 | 5,000 | 5,000,000 | 1,000,000 |
161 | Claude Sonnet 5 | 5,000 | 5,000,000 | 1,000,000 |
162 | Claude Sonnet 4.x3 | 5,000 | 5,000,000 | 1,000,000 |
163 | Claude Haiku 5.5 | 5,000 | 5,000,000 | 1,000,000 |
164 | Claude Haiku 4.5 | 5,000 | 5,000,000 | 1,000,000 |
165 | Claude Haiku 3.5 ([retired, except on Google Cloud](https://platform.claude.com/docs/en/about-claude/model-deprecations)) | 2,000 | 200,0004 | 40,000 |
154 | Model | Maximum requests per minute (RPM) | Maximum input tokens per minute (ITPM) | Maximum output tokens per minute (OTPM) |
155 | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | -------------------------------------- | --------------------------------------- |
156 | Claude Fable 5.x1 | 2,000 | 1,500,000 | 300,000 |
157 | Claude Opus 5.5 | 5,000 | 5,000,000 | 1,000,000 |
158 | Claude Opus 5 | 5,000 | 5,000,000 | 1,000,000 |
159 | Claude Opus 4.x2 | 5,000 | 5,000,000 | 1,000,000 |
160 | Claude Sonnet 5.5 | 5,000 | 5,000,000 | 1,000,000 |
161 | Claude Sonnet 5 | 5,000 | 5,000,000 | 1,000,000 |
162 | Claude Sonnet 4.x3 | 5,000 | 5,000,000 | 1,000,000 |
163 | Claude Haiku 5.5 | 5,000 | 5,000,000 | 1,000,000 |
164 | Claude Haiku 4.5 | 5,000 | 5,000,000 | 1,000,000 |
165 | Claude Haiku 3.5 ([retired, except on Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/about-claude/model-deprecations)) | 2,000 | 200,0004 | 40,000 |
166166 </Tab>
167167 
168168 <Tab title="Scale tier">
169 | Model | Maximum requests per minute (RPM) | Maximum input tokens per minute (ITPM) | Maximum output tokens per minute (OTPM) |
170 | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | -------------------------------------- | --------------------------------------- |
171 | Claude Fable 5.x1 | 4,000 | 4,000,000 | 800,000 |
172 | Claude Opus 5.5 | 10,000 | 10,000,000 | 2,000,000 |
173 | Claude Opus 5 | 10,000 | 10,000,000 | 2,000,000 |
174 | Claude Opus 4.x2 | 10,000 | 10,000,000 | 2,000,000 |
175 | Claude Sonnet 5.5 | 10,000 | 10,000,000 | 2,000,000 |
176 | Claude Sonnet 5 | 10,000 | 10,000,000 | 2,000,000 |
177 | Claude Sonnet 4.x3 | 10,000 | 10,000,000 | 2,000,000 |
178 | Claude Haiku 5.5 | 10,000 | 10,000,000 | 2,000,000 |
179 | Claude Haiku 4.5 | 10,000 | 10,000,000 | 2,000,000 |
180 | Claude Haiku 3.5 ([retired, except on Google Cloud](https://platform.claude.com/docs/en/about-claude/model-deprecations)) | 4,000 | 400,0004 | 80,000 |
169 | Model | Maximum requests per minute (RPM) | Maximum input tokens per minute (ITPM) | Maximum output tokens per minute (OTPM) |
170 | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | -------------------------------------- | --------------------------------------- |
171 | Claude Fable 5.x1 | 4,000 | 4,000,000 | 800,000 |
172 | Claude Opus 5.5 | 10,000 | 10,000,000 | 2,000,000 |
173 | Claude Opus 5 | 10,000 | 10,000,000 | 2,000,000 |
174 | Claude Opus 4.x2 | 10,000 | 10,000,000 | 2,000,000 |
175 | Claude Sonnet 5.5 | 10,000 | 10,000,000 | 2,000,000 |
176 | Claude Sonnet 5 | 10,000 | 10,000,000 | 2,000,000 |
177 | Claude Sonnet 4.x3 | 10,000 | 10,000,000 | 2,000,000 |
178 | Claude Haiku 5.5 | 10,000 | 10,000,000 | 2,000,000 |
179 | Claude Haiku 4.5 | 10,000 | 10,000,000 | 2,000,000 |
180 | Claude Haiku 3.5 ([retired, except on Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/about-claude/model-deprecations)) | 4,000 | 400,0004 | 80,000 |
181181 </Tab>
182182 
183183 <Tab title="Custom tier">

build-with-claude/claude-on-vertex-ai Changed · +561 / -805 lines

## Before making API calls ### Install an SDK ## Making requests ### API model IDs ## Billing, rate limits, and logging ### Rate limits ### Billing ### Data retention ### Monitoring and logging ## Migrating from Claude Models on Google Cloud (Anthropic managed) ## Next steps ## Install an SDK for accessing Agent Platform ## Accessing Agent Platform ### Model availability #### API model IDs ### Making requests ## Data retention ## Activity logging ### Supported feature highlights ### When to use each option ### Implementation ## Additional resources

The two sides of this change are more than 400 edits apart, too far apart to line up, so this is the differ's own diff of it and the words inside a line are not marked.

from line 1
11---
2title: Claude on Google Cloud
3url: https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai
4description: Anthropic's Claude models are available through [Google Cloud's Agent Platform](https://cloud.google.com/vertex-ai).
2title: Claude Models on Google Cloud (Google managed)
3url: https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed
4description: Google operates Claude Models on Google Cloud (Google managed) as part of Google Cloud's Agent Platform. You can call Claude with Anthropic's client SDKs.
55---
66 
7The API for accessing Claude on Google Cloud's Agent Platform is nearly identical to the [Messages API](https://platform.claude.com/docs/en/api/messages/create), with two key differences in request format:
8 
9* On Agent Platform, `model` is not passed in the request body. Instead, it is specified in the Google Cloud endpoint URL.
10* On Agent Platform, `anthropic_version` is passed in the request body (rather than as a header), and must be set to the value `vertex-2023-10-16`, or to [API version `2026-10-21`](https://platform.claude.com/docs/en/api/migration-2026-10-21).
11 
12Agent Platform is also supported by Anthropic's official [client SDKs](https://platform.claude.com/docs/en/cli-sdks-libraries/overview). This guide walks you through making a request to Claude on Agent Platform using one of Anthropic's client SDKs.
13 
14Note that this guide assumes you already have a Google Cloud project that is able to use Agent Platform. See [Anthropic Claude models on Agent Platform](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/claude) for more information on the setup required and a full walkthrough.
15 
16## Install an SDK for accessing Agent Platform
17 
18First, install Anthropic's [client SDK](https://platform.claude.com/docs/en/cli-sdks-libraries/overview) for your language of choice.
7[Claude Models on Google Cloud](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/overview) compares the two Google Cloud offerings. It also shows how to tell which one you use.
8 
9## Before making API calls
10 
11To use Claude Models on Google Cloud (Google managed), you need:
12 
131. A Google Cloud project that can use Agent Platform. For setup steps, see Google Cloud's [Anthropic Claude models on Agent Platform](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/claude) page.
142. The [gcloud CLI](https://cloud.google.com/sdk/docs/install) installed, for local development.
153. For the identity making the calls, an IAM role that includes the `aiplatform.endpoints.predict` permission, such as Agent Platform User (`roles/aiplatform.user`). For details, see Google Cloud's [Agent Platform partner models](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/use-partner-models) page.
164. Google Cloud credentials for that identity. For the SDK examples, you might need to run `gcloud auth application-default login` to authenticate with Google Cloud. The cURL examples for Claude Models on Google Cloud (Google managed) get their token with `gcloud auth print-access-token`. That command uses the gcloud CLI's own login, not Application Default Credentials. For those examples, run `gcloud auth login` or `gcloud init` first.
17 
18### Install an SDK
19 
20Anthropic's [client SDKs](https://platform.claude.com/docs/en/cli-sdks-libraries/overview) support Claude Models on Google Cloud (Google managed) through `AnthropicVertex` (csharp: `AnthropicVertexClient`; go: `vertex.WithGoogleAuth`; java: `VertexBackend`; php: `Anthropic\Vertex\Client`; ruby: `Anthropic::VertexClient`). Install the package that provides it:
1921 
2022<Tabs>
2123 <Tab title="Python">
from line 63
6163 <version>3.1.0</version>
6264 </dependency>
6365 ```
64 
65 ```java Java
66 import com.anthropic.client.AnthropicClient;
67 import com.anthropic.client.okhttp.AnthropicOkHttpClient;
68 import com.anthropic.models.messages.Message;
69 import com.anthropic.models.messages.MessageCreateParams;
70 import com.anthropic.models.messages.Model;
71 import com.anthropic.vertex.backends.VertexBackend;
72 import com.google.auth.oauth2.GoogleCredentials;
73 
74 void main() throws Exception {
75 AnthropicClient client = AnthropicOkHttpClient.builder()
76 .backend(
77 VertexBackend.builder()
78 .googleCredentials(GoogleCredentials.getApplicationDefault())
79 .region("global")
80 .project("MY_PROJECT_ID")
81 .build()
82 )
83 .build();
84 
85 MessageCreateParams params = MessageCreateParams.builder()
86 .model(Model.CLAUDE_OPUS_5_5)
87 .maxTokens(1024L)
88 .addUserMessage("What is the capital of France?")
89 .build();
90 
91 Message response = client.messages().create(params);
92 response.content().stream()
93 .flatMap(block -> block.text().stream())
94 .forEach(textBlock -> IO.println(textBlock.text()));
95 }
96 ```
9766 </CodeGroup>
9867 </Tab>
9968 
from line 81
11281 </Tab>
11382</Tabs>
11483 
115## Accessing Agent Platform
116 
117### Model availability
118 
119Note that Anthropic model availability varies by region. Search for "Claude" in the [Model Garden](https://cloud.google.com/model-garden) or go to [Anthropic Claude models](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/claude) for the latest information.
120 
121#### API model IDs
122 
123Lifecycle terms (Deprecated, Retired) are defined in [Model deprecations](https://platform.claude.com/docs/en/about-claude/model-deprecations). Lifecycle dates on partner-operated platforms are set by the partner and can differ from the Claude API schedule. For the current retirement date of any model on Agent Platform, see [Google Cloud's documentation for Claude models on Agent Platform](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/claude).
84The `ant` CLI doesn't support Claude Models on Google Cloud (Google managed).
85 
86## Making requests
87 
88Requests to Claude Models on Google Cloud (Google managed) go to an Agent Platform endpoint URL that ends in `:rawPredict`. Streaming requests use `:streamRawPredict` instead.
89 
90A request is nearly identical to a [Messages API](https://platform.claude.com/docs/en/api/messages/create) request. It differs in two main ways:
91 
92* **Model:** The endpoint URL names the model. In a cURL request, leave `model` out of the body.
93* **Version:** In a cURL request, pass `anthropic_version` in the body, not as a header. Set it to `vertex-2023-10-16`, or to [API version `2026-10-21`](https://platform.claude.com/docs/en/api/migration-2026-10-21).
94 
95The following examples use the global endpoint. For the other endpoint types, see [Global, multi-region, and regional endpoints](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#global-multi-region-and-regional-endpoints).
96 
97<CodeGroup exclude="shell:CLI">
98 ```bash cURL
99 curl https://aiplatform.googleapis.com/v1/projects/MY_PROJECT_ID/locations/global/publishers/anthropic/models/claude-opus-5-5:rawPredict \
100 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
101 -H "Content-Type: application/json" \
102 -d '{
103 "anthropic_version": "vertex-2023-10-16",
104 "messages": [{"role": "user", "content": "Hey Claude!"}],
105 "max_tokens": 100
106 }'
107 ```
108 
109 <CodeGroupItem language="CLI">
110 The `ant` CLI doesn't support Claude Models on Google Cloud (Google managed).
111 </CodeGroupItem>
112 
113 ```python Python
114 from anthropic import AnthropicVertex
115 
116 project_id = "MY_PROJECT_ID"
117 region = "global"
118 
119 client = AnthropicVertex(project_id=project_id, region=region)
120 
121 message = client.messages.create(
122 model="claude-opus-5-5",
123 max_tokens=100,
124 messages=[
125 {
126 "role": "user",
127 "content": "Hey Claude!",
128 }
129 ],
130 )
131 print(message)
132 ```
133 
134 ```typescript TypeScript
135 import { AnthropicVertex } from "@anthropic-ai/vertex-sdk";
136 
137 const projectId = "MY_PROJECT_ID";
138 const region = "global";
139 
140 // Goes through the standard `google-auth-library` flow.
141 const client = new AnthropicVertex({
142 projectId,
143 region
144 });
145 
146 const result = await client.messages.create({
147 model: "claude-opus-5-5",
148 max_tokens: 100,
149 messages: [
150 {
151 role: "user",
152 content: "Hey Claude!"
153 }
154 ]
155 });
156 console.log(JSON.stringify(result, null, 2));
157 ```
158 
159 ```csharp C#
160 using Anthropic.Models.Messages;
161 using Anthropic.Vertex;
162 
163 var projectId = "MY_PROJECT_ID";
164 var region = "global";
165 
166 var client = new AnthropicVertexClient(new AnthropicVertexCredentials(region, projectId));
167 
168 var parameters = new MessageCreateParams
169 {
170 Model = Model.ClaudeOpus5_5,
171 MaxTokens = 100,
172 Messages = [new UserMessageParam { Content = "Hey Claude!" }]
173 };
174 
175 var message = await client.Messages.Create(parameters);
176 Console.WriteLine(message);
177 ```
178 
179 ```go Go
180 import (
181 "context"
182 "fmt"
183 
184 "github.com/anthropics/anthropic-sdk-go/v2"
185 "github.com/anthropics/anthropic-sdk-go/v2/vertex"
186 )
187 // ...
188 // Uses default Google Cloud credentials
189 client := anthropic.NewClient(
190 vertex.WithGoogleAuth(context.Background(), "global", "MY_PROJECT_ID"),
191 )
192 
193 message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
194 Model: anthropic.ModelClaudeOpus5_5,
195 MaxTokens: 100,
196 Messages: []anthropic.MessageParam{
197 anthropic.NewUserMessage(anthropic.NewTextBlock("Hey Claude!")),
198 },
199 })
200 if err != nil {
201 panic(err)
202 }
203 fmt.Printf("%+v\n", message)
204 ```
205 
206 ```java Java
207 import com.anthropic.client.AnthropicClient;
208 import com.anthropic.client.okhttp.AnthropicOkHttpClient;
209 import com.anthropic.models.messages.Message;
210 import com.anthropic.models.messages.MessageCreateParams;
211 import com.anthropic.models.messages.Model;
212 import com.anthropic.vertex.backends.VertexBackend;
213 import com.google.auth.oauth2.GoogleCredentials;
214 
215 void main() throws Exception {
216 AnthropicClient client = AnthropicOkHttpClient.builder()
217 .backend(
218 VertexBackend.builder()
219 .googleCredentials(GoogleCredentials.getApplicationDefault())
220 .region("global")
221 .project("MY_PROJECT_ID")
222 .build()
223 )
224 .build();
225 
226 Message message = client
227 .messages()
228 .create(
229 MessageCreateParams.builder()
230 .model(Model.CLAUDE_OPUS_5_5)
231 .maxTokens(100)
232 .addUserMessage("Hey Claude!")
233 .build()
234 );
235 
236 IO.println(message);
237 }
238 ```
239 
240 ```php PHP
241 <?php
242 
243 use Anthropic\Messages\TextBlock;
244 use Anthropic\Vertex;
245 
246 $client = Vertex\Client::fromEnvironment(
247 region: 'global',
248 projectId: 'MY_PROJECT_ID',
249 );
250 
251 $message = $client->messages->create(
252 maxTokens: 100,
253 messages: [
254 ['role' => 'user', 'content' => 'Hey Claude!']
255 ],
256 model: 'claude-opus-5-5',
257 );
258 
259 foreach ($message->content as $block) {
260 if ($block instanceof TextBlock) {
261 echo $block->text . PHP_EOL;
262 }
263 }
264 ```
265 
266 ```ruby Ruby
267 require "anthropic"
268 
269 client = Anthropic::VertexClient.new(
270 region: "global",
271 project_id: "MY_PROJECT_ID"
272 )
273 
274 message = client.messages.create(
275 model: "claude-opus-5-5",
276 max_tokens: 100,
277 messages: [{role: "user", content: "Hey Claude!"}]
278 )
279 
280 puts message.content.find { it.type == :text }.text
281 ```
282</CodeGroup>
283 
284### API model IDs
124285 
125286| Model | Agent Platform API model ID |
126287| :---------------------------------------------------------------------------------------------------- | :--------------------------- |
from line 306
145306| Claude Haiku 4.5 | `claude-haiku-4-5@20251001` |
146307| Claude Haiku 3.5 ([deprecated](https://platform.claude.com/docs/en/about-claude/model-deprecations)) | `claude-3-5-haiku@20241022` |
147308 
309Claude Models on Google Cloud (Google managed) offers different Claude models in different regions. To check which models a region offers, search "Claude" in [Model Garden](https://cloud.google.com/model-garden) or see Google Cloud's [Anthropic Claude models on Agent Platform](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/claude) page.
310 
311Google sets the lifecycle dates for the models that Claude Models on Google Cloud (Google managed) serves. These dates can differ from the Claude API schedule. For a model's current retirement date, see Google Cloud's [Anthropic Claude models on Agent Platform](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/claude) page. For what Deprecated and Retired mean, see [Model deprecations](https://platform.claude.com/docs/en/about-claude/model-deprecations).
312 
313<Note>
314 Claude Mythos Preview is a research preview. Claude Models on Google Cloud (Google managed) offers it to invited customers. For more information, see [Project Glasswing](https://anthropic.com/glasswing).
315</Note>
316 
148317<Tip>
149318 Upgrading to a newer Claude model? The [Claude API skill](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model) in Claude Code applies model ID swaps and breaking parameter changes across your code base:
150319 
from line 326
157326 The skill detects which cloud platform your code targets and adjusts model ID formats and feature changes for that platform.
158327</Tip>
159328 
160### Making requests
161 
162Before running requests you might need to run `gcloud auth application-default login` to authenticate with Google Cloud.
163 
164The following examples show how to generate text from Claude on Agent Platform:
329## Global, multi-region, and regional endpoints
330 
331Claude Models on Google Cloud (Google managed) offers three endpoint types. You choose one with the region value you pass when you create the client. In a cURL request, the endpoint type sets the host and the `locations` segment of the URL.
332 
333| Endpoint type | Region value | Host |
334| ------------------------ | ------------------------------ | -------------------------------------------------------------------------- |
335| **Global** (recommended) | `"global"` | `aiplatform.googleapis.com` |
336| **Multi-region** | `"us"` or `"eu"` | `aiplatform.us.rep.googleapis.com`<br />`aiplatform.eu.rep.googleapis.com` |
337| **Regional** | A region, such as `"us-east5"` | `{region}-aiplatform.googleapis.com` |
338 
339The endpoint types differ in where they send requests:
340 
341* **Global:** Requests go to any region with available capacity. Use it when you want maximum availability and data residency is flexible.
342* **Multi-region:** Requests go to any region in the United States (`"us"`) or the European Union (`"eu"`). Use it when you need data residency within a broad geography and higher availability than a single region.
343* **Regional:** Requests go only to the region you name, such as `"us-east5"` or `"europe-west1"`. Use it when you need single-region data residency or must meet strict compliance mandates.
344 
345Multi-region and regional endpoints cost 10% more than global endpoints. All three endpoint types take pay-as-you-go traffic, and provisioned throughput needs a regional endpoint.
346 
347Regional endpoints serve Claude Sonnet 4.6 and earlier models only. For newer models, use a global or multi-region endpoint.
348 
349<Note>
350 The premium for multi-region and regional endpoints applies only to Claude Sonnet 4.5 (deprecated) and later models. For the models that keep their earlier pricing, see [Cloud platform pricing](https://platform.claude.com/docs/en/about-claude/pricing#cloud-platform-pricing). For regional endpoints, the premium reflects infrastructure costs for dedicated regional capacity.
351</Note>
352 
353The following examples use the `us` multi-region endpoint. The highlighted lines set the region. For a full request on the global endpoint, see [Making requests](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#accessing-vertex-ai).
165354 
166355<CodeGroup exclude="shell:CLI">
167356 ```bash cURL
168 curl https://aiplatform.googleapis.com/v1/projects/MY_PROJECT_ID/locations/global/publishers/anthropic/models/claude-opus-5-5:rawPredict \
169 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
170 -H "Content-Type: application/json" \
171 -d '{
172 "anthropic_version": "vertex-2023-10-16",
173 "messages": [{"role": "user", "content": "Hey Claude!"}],
174 "max_tokens": 100
175 }'
176 ```
177 
178 <CodeGroupItem language="CLI">
179 The `ant` CLI doesn't support Agent Platform.
180 </CodeGroupItem>
181 
182 ```python Python
183 from anthropic import AnthropicVertex
184 
185 project_id = "MY_PROJECT_ID"
186 region = "global"
187 
188 client = AnthropicVertex(project_id=project_id, region=region)
189 
190 message = client.messages.create(
191 model="claude-opus-5-5",
192 max_tokens=100,
193 messages=[
194 {
195 "role": "user",
196 "content": "Hey Claude!",
197 }
198 ],
199 )
200 print(message)
201 ```
202 
203 ```typescript TypeScript
204 import { AnthropicVertex } from "@anthropic-ai/vertex-sdk";
205 
206 const projectId = "MY_PROJECT_ID";
207 const region = "global";
208 
209 // Goes through the standard `google-auth-library` flow.
210 const client = new AnthropicVertex({
211 projectId,
212 region
213 });
214 
215 const result = await client.messages.create({
216 model: "claude-opus-5-5",
217 max_tokens: 100,
218 messages: [
219 {
220 role: "user",
221 content: "Hey Claude!"
222 }
223 ]
224 });
225 console.log(JSON.stringify(result, null, 2));
226 ```
227 
228 ```csharp C#
229 using Anthropic.Models.Messages;
230 using Anthropic.Vertex;
231 
232 var projectId = "MY_PROJECT_ID";
233 var region = "global";
234 
235 var client = new AnthropicVertexClient(new AnthropicVertexCredentials(region, projectId));
236 
237 var parameters = new MessageCreateParams
238 {
239 Model = Model.ClaudeOpus5_5,
240 MaxTokens = 100,
241 Messages = [new UserMessageParam { Content = "Hey Claude!" }]
242 };
243 
244 var message = await client.Messages.Create(parameters);
245 Console.WriteLine(message);
246 ```
247 
248 ```go Go
249 import (
250 "context"
251 "fmt"
252 
253 "github.com/anthropics/anthropic-sdk-go/v2"
254 "github.com/anthropics/anthropic-sdk-go/v2/vertex"
255 )
256 // ...
257 // Uses default Google Cloud credentials
258 client := anthropic.NewClient(
259 vertex.WithGoogleAuth(context.Background(), "global", "MY_PROJECT_ID"),
260 )
261 
262 message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
263 Model: anthropic.ModelClaudeOpus5_5,
264 MaxTokens: 100,
265 Messages: []anthropic.MessageParam{
266 anthropic.NewUserMessage(anthropic.NewTextBlock("Hey Claude!")),
267 },
268 })
269 if err != nil {
270 panic(err)
271 }
272 fmt.Printf("%+v\n", message)
273 ```
274 
275 ```java Java
276 import com.anthropic.client.AnthropicClient;
277 import com.anthropic.client.okhttp.AnthropicOkHttpClient;
278 import com.anthropic.models.messages.Message;
279 import com.anthropic.models.messages.MessageCreateParams;
280 import com.anthropic.models.messages.Model;
281 import com.anthropic.vertex.backends.VertexBackend;
282 import com.google.auth.oauth2.GoogleCredentials;
283 
284 void main() throws Exception {
285 AnthropicClient client = AnthropicOkHttpClient.builder()
286 .backend(
287 VertexBackend.builder()
288 .googleCredentials(GoogleCredentials.getApplicationDefault())
289 .region("global")
290 .project("MY_PROJECT_ID")
291 .build()
292 )
293 .build();
294 
295 Message message = client
296 .messages()
297 .create(
298 MessageCreateParams.builder()
299 .model(Model.CLAUDE_OPUS_5_5)
300 .maxTokens(100)
301 .addUserMessage("Hey Claude!")
302 .build()
303 );
304 
305 IO.println(message);
306 }
307 ```
308 
309 ```php PHP
310 <?php
311 
312 use Anthropic\Vertex;
313 
314 $client = Vertex\Client::fromEnvironment(
315 region: 'global',
316 projectId: 'MY_PROJECT_ID',
317 );
318 
319 $message = $client->messages->create(
320 maxTokens: 100,
321 messages: [
322 ['role' => 'user', 'content' => 'Hey Claude!']
323 ],
324 model: 'claude-opus-5-5',
325 );
326 $textBlock = array_find($message->content, static fn ($block): bool => $block->type === 'text');
327 echo $textBlock->text;
328 ```
329 
330 ```ruby Ruby
331 require "anthropic"
332 
333 client = Anthropic::VertexClient.new(
334 region: "global",
335 project_id: "MY_PROJECT_ID"
336 )
337 
338 message = client.messages.create(
339 model: "claude-opus-5-5",
340 max_tokens: 100,
341 messages: [{role: "user", content: "Hey Claude!"}]
342 )
343 
344 puts message.content.find { it.type == :text }.text
345 ```
346</CodeGroup>
347 
348See the [client SDKs](https://platform.claude.com/docs/en/cli-sdks-libraries/overview) and the official [Agent Platform docs](https://cloud.google.com/vertex-ai/docs) for more details.
349 
350Claude is also available through [Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock), [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws), and [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry).
351 
352## Data retention
353 
354Data handling for this offering is governed by Google Cloud. For details, see [Agent Platform and zero data retention](https://cloud.google.com/vertex-ai/generative-ai/docs/data-governance).
355 
356## Activity logging
357 
358Agent Platform provides a [request-response logging service](https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/request-response-logging) that allows you to log the prompts and completions associated with your usage.
359 
360Anthropic recommends that you log your activity on at least a 30-day rolling basis to understand your activity and investigate any potential misuse.
361 
362<Note>
363 Turning on this service does not give Google or Anthropic any access to your content.
364</Note>
365 
366## Feature support
367 
368For the full feature list with Google Cloud availability, see [Features overview](https://platform.claude.com/docs/en/build-with-claude/overview).
369 
370### Supported feature highlights
371 
372* [Messages API](https://platform.claude.com/docs/en/api/messages/create)
373* [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)
374* [Thinking](https://platform.claude.com/docs/en/build-with-claude/thinking)
375* [Tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), including the [Bash tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/bash-tool), [Browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool), [Computer use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool), [Memory tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool), and [Text editor tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/text-editor-tool)
376* [Web search tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool)
377* [Citations](https://platform.claude.com/docs/en/build-with-claude/citations)
378* [Structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)
379 
380### Features not supported
381 
382* Input sources (URL sources for images and documents, Files API)
383* Server-side tools (code execution, web fetch, advisor)
384* Agent infrastructure (Agent Skills, MCP connector, programmatic tool calling)
385* API endpoints (Message Batches, Models, Admin, Compliance, Usage and Cost)
386* Claude Managed Agents
387* Server-side fallback (the [`fallbacks` parameter](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#server-side-fallback); use the [client-side fallback pattern](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#client-side-fallback) instead)
388 
389### Context window
390 
391Claude Fable 5.1, Claude Fable 5, Claude Opus 5.5, Claude Opus 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 5.5, Claude Sonnet 5, Claude Sonnet 4.6, and Claude Haiku 5.5 have a [1M-token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) on Agent Platform. Other Claude models, including Sonnet 4.5 (deprecated) and Sonnet 4 (deprecated), have a 200k-token context window.
392 
393Agent Platform limits request payloads to 30 MB. When sending large documents or many images, you might reach this limit before the token limit.
394 
395## Global, multi-region, and regional endpoints
396 
397Agent Platform offers three endpoint types:
398 
399* **Global endpoints:** Dynamic routing for maximum availability
400* **Multi-region endpoints:** Dynamic routing within a geographic area (for example, the United States or the European Union) for data residency with high availability
401* **Regional endpoints:** Guaranteed data routing through specific geographic regions
402 
403Regional and multi-region endpoints include a 10 percent pricing premium over global endpoints.
404 
405<Note>
406 This applies to Claude Sonnet 4.5 (deprecated) and future models only. Older models (Claude Sonnet 4 (deprecated), Opus 4 (deprecated), and earlier) maintain their existing pricing structures.
407</Note>
408 
409### When to use each option
410 
411**Global endpoints (recommended):**
412 
413* Provide maximum availability and uptime
414* Dynamically route requests to regions with available capacity
415* Carry no pricing premium
416* Work best for applications where data residency is flexible
417* Only support pay-as-you-go traffic (provisioned throughput requires regional endpoints)
418 
419**Multi-region endpoints:**
420 
421* Dynamically route requests across regions within a geographic area (currently `us` and `eu`)
422* Are useful when you need data residency within a broad geography but want higher availability than a single region
423* Carry a 10 percent pricing premium over global endpoints
424* Only support pay-as-you-go traffic (provisioned throughput requires regional endpoints)
425 
426**Regional endpoints:**
427 
428* Route traffic through specific geographic regions
429* Are required for single-region data residency, strict compliance mandates, or provisioned throughput
430* Support both pay-as-you-go and provisioned throughput
431* Carry a 10 percent pricing premium that reflects infrastructure costs for dedicated regional capacity
432 
433### Implementation
434 
435**Using global endpoints (recommended):**
436 
437Set the `region` parameter to `"global"` when initializing the client:
438 
439<CodeGroup exclude="shell:CLI">
440 ```bash cURL
441 curl https://aiplatform.googleapis.com/v1/projects/MY_PROJECT_ID/locations/global/publishers/anthropic/models/claude-opus-5-5:rawPredict \
442 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
443 -H "Content-Type: application/json" \
444 -d '{
445 "anthropic_version": "vertex-2023-10-16",
446 "messages": [{"role": "user", "content": "Hey Claude!"}],
447 "max_tokens": 100
448 }'
449 ```
450 
451 <CodeGroupItem language="CLI">
452 The `ant` CLI doesn't support Agent Platform.
453 </CodeGroupItem>
454 
455 ```python Python
456 from anthropic import AnthropicVertex
457 
458 project_id = "MY_PROJECT_ID"
459 region = "global"
460 
461 client = AnthropicVertex(project_id=project_id, region=region)
462 
463 message = client.messages.create(
464 model="claude-opus-5-5",
465 max_tokens=100,
466 messages=[
467 {
468 "role": "user",
469 "content": "Hey Claude!",
470 }
471 ],
472 )
473 print(message)
474 ```
475 
476 ```typescript TypeScript
477 import { AnthropicVertex } from "@anthropic-ai/vertex-sdk";
478 
479 const projectId = "MY_PROJECT_ID";
480 const region = "global";
481 
482 const client = new AnthropicVertex({
483 projectId,
484 region
485 });
486 
487 const result = await client.messages.create({
488 model: "claude-opus-5-5",
489 max_tokens: 100,
490 messages: [
491 {
492 role: "user",
493 content: "Hey Claude!"
494 }
495 ]
496 });
497 console.log(JSON.stringify(result, null, 2));
498 ```
499 
500 ```csharp C#
501 using Anthropic.Models.Messages;
502 using Anthropic.Vertex;
503 
504 var projectId = "MY_PROJECT_ID";
505 var region = "global";
506 
507 var client = new AnthropicVertexClient(new AnthropicVertexCredentials(region, projectId));
508 
509 var parameters = new MessageCreateParams
510 {
511 Model = Model.ClaudeOpus5_5,
512 MaxTokens = 100,
513 Messages = [new UserMessageParam { Content = "Hey Claude!" }]
514 };
515 
516 var message = await client.Messages.Create(parameters);
517 Console.WriteLine(message);
518 ```
519 
520 ```go Go
521 import (
522 "context"
523 "fmt"
524 
525 "github.com/anthropics/anthropic-sdk-go/v2"
526 "github.com/anthropics/anthropic-sdk-go/v2/vertex"
527 )
528 // ...
529 // Uses default Google Cloud credentials
530 client := anthropic.NewClient(
531 vertex.WithGoogleAuth(context.Background(), "global", "MY_PROJECT_ID"),
532 )
533 
534 message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
535 Model: anthropic.ModelClaudeOpus5_5,
536 MaxTokens: 100,
537 Messages: []anthropic.MessageParam{
538 anthropic.NewUserMessage(anthropic.NewTextBlock("Hey Claude!")),
539 },
540 })
541 if err != nil {
542 panic(err)
543 }
544 fmt.Printf("%+v\n", message)
545 ```
546 
547 ```java Java
548 import com.anthropic.client.AnthropicClient;
549 import com.anthropic.client.okhttp.AnthropicOkHttpClient;
550 import com.anthropic.models.messages.MessageCreateParams;
551 import com.anthropic.models.messages.Model;
552 import com.anthropic.vertex.backends.VertexBackend;
553 import com.google.auth.oauth2.GoogleCredentials;
554 
555 void main() throws Exception {
556 AnthropicClient client = AnthropicOkHttpClient.builder()
557 .backend(
558 VertexBackend.builder()
559 .googleCredentials(GoogleCredentials.getApplicationDefault())
560 .region("global")
561 .project("MY_PROJECT_ID")
562 .build()
563 )
564 .build();
565 
566 var message = client
567 .messages()
568 .create(
569 MessageCreateParams.builder()
570 .model(Model.CLAUDE_OPUS_5_5)
571 .maxTokens(100)
572 .addUserMessage("Hey Claude!")
573 .build()
574 );
575 
576 IO.println(message);
577 }
578 ```
579 
580 ```php PHP
581 <?php
582 
583 use Anthropic\Vertex;
584 
585 $client = Vertex\Client::fromEnvironment(
586 region: 'global',
587 projectId: 'MY_PROJECT_ID',
588 );
589 
590 $message = $client->messages->create(
591 maxTokens: 100,
592 messages: [
593 ['role' => 'user', 'content' => 'Hey Claude!']
594 ],
595 model: 'claude-opus-5-5',
596 );
597 
598 $textBlock = array_find($message->content, static fn ($block): bool => $block->type === 'text');
599 echo $textBlock->text;
600 ```
601 
602 ```ruby Ruby
603 require "anthropic"
604 
605 client = Anthropic::VertexClient.new(
606 region: "global",
607 project_id: "MY_PROJECT_ID"
608 )
609 
610 message = client.messages.create(
611 model: "claude-opus-5-5",
612 max_tokens: 100,
613 messages: [{role: "user", content: "Hey Claude!"}]
614 )
615 
616 puts message.content.find { it.type == :text }.text
617 ```
618</CodeGroup>
619 
620**Using multi-region endpoints:**
621 
622Set the `region` parameter to a multi-region identifier: `"us"` for the United States or `"eu"` for the European Union. The SDK routes requests to the corresponding multi-region endpoint (`https://aiplatform.us.rep.googleapis.com` or `https://aiplatform.eu.rep.googleapis.com`), which dynamically balances traffic across regions within that geography.
623 
624<CodeGroup exclude="shell:CLI">
625 ```bash cURL
626 # The multi-region identifier, "us" or "eu", appears in the hostname and in the path
357 # The multi-region identifier, "us" or "eu", appears in the host name and in the path
627358 curl https://aiplatform.us.rep.googleapis.com/v1/projects/MY_PROJECT_ID/locations/us/publishers/anthropic/models/claude-opus-5-5:rawPredict \
628359 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
629360 -H "Content-Type: application/json" \
from line 366
635366 ```
636367 
637368 <CodeGroupItem language="CLI">
638 The `ant` CLI doesn't support Agent Platform.
369 The `ant` CLI doesn't support Claude Models on Google Cloud (Google managed).
639370 </CodeGroupItem>
640371 
641372 ```python Python
from line 376
645376 region = "us" # Multi-region identifier: "us" or "eu"
646377 
647378 client = AnthropicVertex(project_id=project_id, region=region)
648 
649 message = client.messages.create(
650 model="claude-opus-5-5",
651 max_tokens=100,
652 messages=[
653 {
654 "role": "user",
655 "content": "Hey Claude!",
656 }
657 ],
658 )
659 print(message)
660379 ```
661380 
662381 ```typescript TypeScript
from line 388
669388 projectId,
670389 region
671390 });
672 
673 const result = await client.messages.create({
674 model: "claude-opus-5-5",
675 max_tokens: 100,
676 messages: [
677 {
678 role: "user",
679 content: "Hey Claude!"
680 }
681 ]
682 });
683 console.log(JSON.stringify(result, null, 2));
684391 ```
685392 
686393 ```csharp C#
687 using Anthropic.Models.Messages;
688394 using Anthropic.Vertex;
689395 
690396 var projectId = "MY_PROJECT_ID";
691397 var region = "us"; // Multi-region identifier: "us" or "eu"
692398 
693399 var client = new AnthropicVertexClient(new AnthropicVertexCredentials(region, projectId));
694 
695 var parameters = new MessageCreateParams
696 {
697 Model = Model.ClaudeOpus5_5,
698 MaxTokens = 100,
699 Messages = [new UserMessageParam { Content = "Hey Claude!" }]
700 };
701 
702 var message = await client.Messages.Create(parameters);
703 Console.WriteLine(message);
704400 ```
705401 
706402 ```go Go
707403 import (
708404 "context"
709 "fmt"
710405 
711406 "github.com/anthropics/anthropic-sdk-go/v2"
712407 "github.com/anthropics/anthropic-sdk-go/v2/vertex"
from line 411
716411 client := anthropic.NewClient(
717412 vertex.WithGoogleAuth(context.Background(), "us", "MY_PROJECT_ID"),
718413 )
719 
720 message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
721 Model: anthropic.ModelClaudeOpus5_5,
722 MaxTokens: 100,
723 Messages: []anthropic.MessageParam{
724 anthropic.NewUserMessage(anthropic.NewTextBlock("Hey Claude!")),
725 },
726 })
727 if err != nil {
728 panic(err)
729 }
730 fmt.Printf("%+v\n", message)
731414 ```
732415 
733416 ```java Java
734417 import com.anthropic.client.AnthropicClient;
735418 import com.anthropic.client.okhttp.AnthropicOkHttpClient;
736 import com.anthropic.models.messages.MessageCreateParams;
737 import com.anthropic.models.messages.Model;
738419 import com.anthropic.vertex.backends.VertexBackend;
739420 import com.google.auth.oauth2.GoogleCredentials;
740421 
from line 430
749430 .build()
750431 )
751432 .build();
752 
753 var message = client
754 .messages()
755 .create(
756 MessageCreateParams.builder()
757 .model(Model.CLAUDE_OPUS_5_5)
758 .maxTokens(100)
759 .addUserMessage("Hey Claude!")
760 .build()
761 );
762 
763 IO.println(message);
764433 }
765434 ```
766435 
767436 ```php PHP
768 <?php
769 
770437 use Anthropic\Vertex;
771438 
772439 $client = Vertex\Client::fromEnvironment(
773440 region: 'us', // Multi-region identifier: "us" or "eu"
774441 projectId: 'MY_PROJECT_ID',
775442 );
776 
777 $message = $client->messages->create(
778 maxTokens: 100,
779 messages: [
780 ['role' => 'user', 'content' => 'Hey Claude!']
781 ],
782 model: 'claude-opus-5-5',
783 );
784 $textBlock = array_find($message->content, static fn ($block): bool => $block->type === 'text');
785 echo $textBlock->text;
786443 ```
787444 
788445 ```ruby Ruby
from line 449
792449 region: "us", # Multi-region identifier: "us" or "eu"
793450 project_id: "MY_PROJECT_ID"
794451 )
795 
796 message = client.messages.create(
797 model: "claude-opus-5-5",
798 max_tokens: 100,
799 messages: [{role: "user", content: "Hey Claude!"}]
800 )
801 
802 puts message.content.find { it.type == :text }.text
803452 ```
804453</CodeGroup>
805454 
806**Using regional endpoints:**
807 
808Specify a specific region such as `"us-east5"` or `"europe-west1"`:
809 
810<CodeGroup exclude="shell:CLI">
811 ```bash cURL
812 # Specific regional endpoints support Claude Sonnet 4.6 and earlier; newer models use the global or multi-region endpoints
813 # The region, here us-east5, appears in the hostname and in the path
814 curl https://us-east5-aiplatform.googleapis.com/v1/projects/MY_PROJECT_ID/locations/us-east5/publishers/anthropic/models/claude-sonnet-4-6:rawPredict \
815 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
816 -H "Content-Type: application/json" \
817 -d '{
818 "anthropic_version": "vertex-2023-10-16",
819 "messages": [{"role": "user", "content": "Hey Claude!"}],
820 "max_tokens": 100
821 }'
822 ```
823 
824 <CodeGroupItem language="CLI">
825 The `ant` CLI doesn't support Agent Platform.
826 </CodeGroupItem>
827 
828 ```python Python
829 from anthropic import AnthropicVertex
830 
831 project_id = "MY_PROJECT_ID"
832 region = "us-east5" # Specify a specific region
833 
834 client = AnthropicVertex(project_id=project_id, region=region)
835 
836 message = client.messages.create(
837 # Specific regional endpoints support Claude Sonnet 4.6 and earlier; newer models use the global or multi-region endpoints
838 model="claude-sonnet-4-6",
839 max_tokens=100,
840 messages=[
841 {
842 "role": "user",
843 "content": "Hey Claude!",
844 }
845 ],
846 )
847 print(message)
848 ```
849 
850 ```typescript TypeScript
851 import { AnthropicVertex } from "@anthropic-ai/vertex-sdk";
852 
853 const projectId = "MY_PROJECT_ID";
854 const region = "us-east5"; // Specify a specific region
855 
856 const client = new AnthropicVertex({
857 projectId,
858 region
859 });
860 
861 const result = await client.messages.create({
862 // Specific regional endpoints support Claude Sonnet 4.6 and earlier; newer models use the global or multi-region endpoints
863 model: "claude-sonnet-4-6",
864 max_tokens: 100,
865 messages: [
866 {
867 role: "user",
868 content: "Hey Claude!"
455## Feature support
456 
457Features supported on Claude Models on Google Cloud (Google managed) include the following:
458 
459* [Messages API](https://platform.claude.com/docs/en/api/messages/create)
460 
461* [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)
462 
463* [Thinking](https://platform.claude.com/docs/en/build-with-claude/thinking)
464 
465* [Tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), including these tools:
466 
467 * [Bash tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/bash-tool)
468 * [Browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool)
469 * [Computer use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool)
470 * [Memory tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool)
471 * [Text editor tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/text-editor-tool)
472 * [Web search tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool)
473 
474* [Citations](https://platform.claude.com/docs/en/build-with-claude/citations)
475 
476* [Structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)
477 
478[Features overview](https://platform.claude.com/docs/en/build-with-claude/overview) lists every feature and whether Claude Models on Google Cloud (Google managed) supports it.
479 
480### Features not supported
481 
482Claude Models on Google Cloud (Google managed) doesn't support the following:
483 
484* **Input sources:** URL sources for images and documents, and the Files API
485* **Server-side tools:** Code execution, web fetch, and advisor
486* **Agent infrastructure:** Agent Skills, MCP connector, and programmatic tool calling
487* **API endpoints:** Message Batches API, Models API, Admin API, Compliance API, and Usage and Cost API
488* **Claude Managed Agents**
489* **Server-side fallback:** The [`fallbacks` parameter](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#server-side-fallback)
490 
491Instead of server-side fallback, use the [client-side fallback pattern](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#client-side-fallback).
492 
493### Context window
494 
495Claude Models on Google Cloud (Google managed) offers a [1M-token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) for these models:
496 
497* Claude Fable 5.1
498* Claude Fable 5
499* Claude Opus 5.5
500* Claude Opus 5
501* Claude Opus 4.8
502* Claude Opus 4.7
503* Claude Opus 4.6
504* Claude Sonnet 5.5
505* Claude Sonnet 5
506* Claude Sonnet 4.6
507* Claude Haiku 5.5
508 
509Other Claude models have a 200k-token context window. These include Claude Sonnet 4.5 (deprecated) and Claude Sonnet 4 (deprecated).
510 
511Agent Platform limits request payloads to 30 MB. When you send large documents or many images, you might reach this limit before the token limit.
512 
513## Billing, rate limits, and logging
514 
515### Rate limits
516 
517Google Cloud manages rate limits and quotas for Claude Models on Google Cloud (Google managed). For details, including how to request a quota increase, see Google Cloud's [Quotas for Anthropic Claude models](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/claude/quotas) page.
518 
519### Billing
520 
521Google Cloud invoices you for Claude Models on Google Cloud (Google managed). For prices, see Google Cloud's [Generative AI pricing](https://cloud.google.com/vertex-ai/generative-ai/pricing#claude-models) page. Prices also depend on the endpoint type. See [Global, multi-region, and regional endpoints](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#global-multi-region-and-regional-endpoints).
522 
523### Data retention
524 
525Google Cloud governs data handling for Claude Models on Google Cloud (Google managed). For details, see [Agent Platform and zero data retention](https://cloud.google.com/vertex-ai/generative-ai/docs/data-governance).
526 
527### Monitoring and logging
528 
529To log prompts and completions for Claude Models on Google Cloud (Google managed), use Agent Platform's [request-response logging service](https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/request-response-logging).
530 
531Anthropic recommends that you keep at least the last 30 days of logs. The logs help you understand your activity and investigate possible misuse.
532 
533<Note>
534 Turning on this service doesn't give Google or Anthropic any access to your content.
535</Note>
536 
537## Migrating from Claude Models on Google Cloud (Anthropic managed)
538 
539For what changes when you move, see [How the two Google Cloud offerings differ](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/overview#how-the-two-google-cloud-offerings-differ). To move to Claude Models on Google Cloud (Google managed), follow these steps:
540 
541<Steps>
542 <Step title="Set up access">
543 Check that your project and the identity that makes the calls meet the requirements in [Before making API calls](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#before-making-api-calls).
544 </Step>
545 
546 <Step title="Install the SDK package">
547 Install the package that provides the client for Claude Models on Google Cloud (Google managed). See [Install an SDK](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#install-an-sdk-for-accessing-vertex-ai).
548 </Step>
549 
550 <Step title="Replace the import and the client">
551 Change the code that imports and creates your client. Use `AnthropicVertex` (csharp: `AnthropicVertexClient`; go: `vertex.WithGoogleAuth`; java: `VertexBackend`; php: `Anthropic\Vertex\Client`; ruby: `Anthropic::VertexClient`) in place of `AnthropicGoogleCloud` (csharp: `AnthropicGoogleCloudClient`; go: `googlecloud.NewClient`; java: `GoogleCloudBackend`; php: `Anthropic\GoogleCloud\Client`; ruby: `Anthropic::GoogleCloudClient`). A cURL request needs a new URL, new headers, and a new body. The following code creates the client for Claude Models on Google Cloud (Anthropic managed) that you use today:
552 
553 <CodeGroup>
554 ```bash cURL
555 curl "https://claude.googleapis.com/v1/projects/$ANTHROPIC_GOOGLE_CLOUD_PROJECT/locations/global/workspaces/$ANTHROPIC_GOOGLE_CLOUD_WORKSPACE_ID/invoke/v1/messages" \
556 -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
557 -H "content-type: application/json" \
558 -H "anthropic-version: 2023-06-01" \
559 -d '{
560 "model": "claude-opus-5-5",
561 "max_tokens": 1024,
562 "messages": [
563 {"role": "user", "content": "Hello, Claude"}
564 ]
565 }'
566 ```
567 
568 ```bash CLI
569 ant messages create \
570 --model claude-opus-5-5 \
571 --max-tokens 1024 \
572 --message '{role: user, content: "Hello, Claude"}'
573 ```
574 
575 ```python Python
576 from anthropic import AnthropicGoogleCloud
577 
578 client = AnthropicGoogleCloud()
579 ```
580 
581 ```typescript TypeScript
582 import { AnthropicGoogleCloud } from "@anthropic-ai/google-cloud-sdk";
583 
584 const client = new AnthropicGoogleCloud();
585 ```
586 
587 ```csharp C#
588 using Anthropic.GoogleCloud;
589 
590 var client = new AnthropicGoogleCloudClient();
591 ```
592 
593 ```go Go
594 import (
595 "context"
596 
597 "github.com/anthropics/anthropic-sdk-go/v2"
598 "github.com/anthropics/anthropic-sdk-go/v2/googlecloud"
599 )
600 // ...
601 client, err := googlecloud.NewClient(context.Background(), googlecloud.ClientConfig{})
602 if err != nil {
603 panic(err)
604 }
605 ```
606 
607 ```java Java
608 import com.anthropic.client.AnthropicClient;
609 import com.anthropic.client.okhttp.AnthropicOkHttpClient;
610 import com.anthropic.googlecloud.backends.GoogleCloudBackend;
611 
612 void main() {
613 AnthropicClient client = AnthropicOkHttpClient.builder()
614 .backend(GoogleCloudBackend.fromEnv())
615 .build();
869616 }
870 ]
871 });
872 console.log(JSON.stringify(result, null, 2));
873 ```
874 
875 ```csharp C#
876 using Anthropic.Models.Messages;
877 using Anthropic.Vertex;
878 
879 var projectId = "MY_PROJECT_ID";
880 var region = "us-east5"; // Specify a specific region
881 
882 var client = new AnthropicVertexClient(new AnthropicVertexCredentials(region, projectId));
883 
884 var parameters = new MessageCreateParams
885 {
886 // Specific regional endpoints support Claude Sonnet 4.6 and earlier; newer models use the global or multi-region endpoints
887 Model = Model.ClaudeSonnet4_6,
888 MaxTokens = 100,
889 Messages = [new UserMessageParam { Content = "Hey Claude!" }]
890 };
891 
892 var message = await client.Messages.Create(parameters);
893 Console.WriteLine(message);
894 ```
895 
896 ```go Go
897 import (
898 "context"
899 "fmt"
900 
901 "github.com/anthropics/anthropic-sdk-go/v2"
902 "github.com/anthropics/anthropic-sdk-go/v2/vertex"
903 )
904 // ...
905 // Specify a specific region
906 client := anthropic.NewClient(
907 vertex.WithGoogleAuth(context.Background(), "us-east5", "MY_PROJECT_ID"),
908 )
909 
910 message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
911 // Specific regional endpoints support Claude Sonnet 4.6 and earlier; newer models use the global or multi-region endpoints
912 Model: anthropic.ModelClaudeSonnet4_6,
913 MaxTokens: 100,
914 Messages: []anthropic.MessageParam{
915 anthropic.NewUserMessage(anthropic.NewTextBlock("Hey Claude!")),
916 },
917 })
918 if err != nil {
919 panic(err)
920 }
921 fmt.Printf("%+v\n", message)
922 ```
923 
924 ```java Java
925 import com.anthropic.client.AnthropicClient;
926 import com.anthropic.client.okhttp.AnthropicOkHttpClient;
927 import com.anthropic.models.messages.MessageCreateParams;
928 import com.anthropic.models.messages.Model;
929 import com.anthropic.vertex.backends.VertexBackend;
930 import com.google.auth.oauth2.GoogleCredentials;
931 
932 void main() throws Exception {
933 AnthropicClient client = AnthropicOkHttpClient.builder()
934 .backend(
935 VertexBackend.builder()
936 .googleCredentials(GoogleCredentials.getApplicationDefault())
937 .region("us-east5") // Specify a specific region
938 .project("MY_PROJECT_ID")
939 .build()
940 )
941 .build();
942 
943 var message = client
944 .messages()
945 .create(
946 MessageCreateParams.builder()
947 // Specific regional endpoints support Claude Sonnet 4.6 and earlier; newer models use the global or multi-region endpoints
948 .model(Model.CLAUDE_SONNET_4_6)
949 .maxTokens(100)
950 .addUserMessage("Hey Claude!")
951 .build()
952 );
953 
954 IO.println(message);
955 }
956 ```
957 
958 ```php PHP
959 <?php
960 
961 use Anthropic\Vertex;
962 
963 $client = Vertex\Client::fromEnvironment(
964 region: 'us-east5',
965 projectId: 'MY_PROJECT_ID',
966 );
967 
968 $message = $client->messages->create(
969 maxTokens: 100,
970 messages: [
971 ['role' => 'user', 'content' => 'Hey Claude!']
972 ],
973 // Specific regional endpoints support Claude Sonnet 4.6 and earlier; newer models use the global or multi-region endpoints
974 model: 'claude-sonnet-4-6',
975 );
976 echo $message->content[0]->text;
977 ```
978 
979 ```ruby Ruby
980 require "anthropic"
981 
982 client = Anthropic::VertexClient.new(
983 region: "us-east5", # Specify a specific region
984 project_id: "MY_PROJECT_ID"
985 )
986 
987 message = client.messages.create(
988 # Specific regional endpoints support Claude Sonnet 4.6 and earlier; newer models use the global or multi-region endpoints
989 model: "claude-sonnet-4-6",
990 max_tokens: 100,
991 messages: [{role: "user", content: "Hey Claude!"}]
992 )
993 
994 puts message.content.first.text
995 ```
996</CodeGroup>
997 
998<Note>
999 Claude Mythos Preview is a research preview available to invited customers on Agent Platform. For more information, see [Project Glasswing](https://anthropic.com/glasswing).
1000</Note>
1001 
1002## Additional resources
1003 
1004* **Agent Platform pricing:** [Generative AI pricing on cloud.google.com](https://cloud.google.com/vertex-ai/generative-ai/pricing)
1005* **Claude models documentation:** [Claude on Agent Platform](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/claude)
1006* **Google blog post:** [Global endpoint for Claude models](https://cloud.google.com/blog/products/ai-machine-learning/global-endpoint-for-claude-models-generally-available-on-vertex-ai)
1007* **Anthropic pricing details:** [Cloud platform pricing](https://platform.claude.com/docs/en/about-claude/pricing#cloud-platform-pricing)
617 ```
618 
619 ```php PHP
620 use Anthropic\GoogleCloud\Client;
621 
622 $client = new Client();
623 ```
624 
625 ```ruby Ruby
626 require "anthropic"
627 
628 client = Anthropic::GoogleCloudClient.new
629 ```
630 </CodeGroup>
631 
632 The following code creates the client for Claude Models on Google Cloud (Google managed). It uses the global endpoint. For the other endpoint types, see [Global, multi-region, and regional endpoints](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#global-multi-region-and-regional-endpoints).
633 
634 <CodeGroup exclude="shell:CLI">
635 ```bash cURL
636 curl https://aiplatform.googleapis.com/v1/projects/MY_PROJECT_ID/locations/global/publishers/anthropic/models/claude-opus-5-5:rawPredict \
637 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
638 -H "Content-Type: application/json" \
639 -d '{
640 "anthropic_version": "vertex-2023-10-16",
641 "messages": [{"role": "user", "content": "Hey Claude!"}],
642 "max_tokens": 100
643 }'
644 ```
645 
646 <CodeGroupItem language="CLI">
647 The `ant` CLI doesn't support Claude Models on Google Cloud (Google managed). Use cURL or an SDK instead.
648 </CodeGroupItem>
649 
650 ```python Python
651 from anthropic import AnthropicVertex
652 
653 project_id = "MY_PROJECT_ID"
654 region = "global"
655 
656 client = AnthropicVertex(project_id=project_id, region=region)
657 ```
658 
659 ```typescript TypeScript
660 import { AnthropicVertex } from "@anthropic-ai/vertex-sdk";
661 
662 const projectId = "MY_PROJECT_ID";
663 const region = "global";
664 
665 const client = new AnthropicVertex({
666 projectId,
667 region
668 });
669 ```
670 
671 ```csharp C#
672 using Anthropic.Vertex;
673 
674 var projectId = "MY_PROJECT_ID";
675 var region = "global";
676 
677 var client = new AnthropicVertexClient(new AnthropicVertexCredentials(region, projectId));
678 ```
679 
680 ```go Go
681 import (
682 "context"
683 
684 "github.com/anthropics/anthropic-sdk-go/v2"
685 "github.com/anthropics/anthropic-sdk-go/v2/vertex"
686 )
687 // ...
688 // Uses default Google Cloud credentials
689 client := anthropic.NewClient(
690 vertex.WithGoogleAuth(context.Background(), "global", "MY_PROJECT_ID"),
691 )
692 ```
693 
694 ```java Java
695 import com.anthropic.client.AnthropicClient;
696 import com.anthropic.client.okhttp.AnthropicOkHttpClient;
697 import com.anthropic.vertex.backends.VertexBackend;
698 import com.google.auth.oauth2.GoogleCredentials;
699 
700 void main() throws Exception {
701 AnthropicClient client = AnthropicOkHttpClient.builder()
702 .backend(
703 VertexBackend.builder()
704 .googleCredentials(GoogleCredentials.getApplicationDefault())
705 .region("global")
706 .project("MY_PROJECT_ID")
707 .build()
708 )
709 .build();
710 }
711 ```
712 
713 ```php PHP
714 use Anthropic\Vertex;
715 
716 $client = Vertex\Client::fromEnvironment(
717 region: 'global',
718 projectId: 'MY_PROJECT_ID',
719 );
720 ```
721 
722 ```ruby Ruby
723 require "anthropic"
724 
725 client = Anthropic::VertexClient.new(
726 region: "global",
727 project_id: "MY_PROJECT_ID"
728 )
729 ```
730 </CodeGroup>
731 
732 This code passes your project ID and a region when it creates the client. Replace `MY_PROJECT_ID` with your project ID. The Messages API calls that you make with the client stay as they are. The exceptions are the model IDs and features in the next step.
733 </Step>
734 
735 <Step title="Check model IDs and features">
736 * **Model IDs:** If you use a model earlier than Claude 4.6, replace the hyphen before the snapshot date in its ID with `@`. For example, `claude-haiku-4-5-20251001` becomes `claude-haiku-4-5@20251001`. For the models and their IDs, see [API model IDs](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#api-model-ids).
737 * **Features:** Check that the features your code uses aren't listed in [Features not supported](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#features-not-supported).
738 </Step>
739 
740 <Step title="Run a test request">
741 Run the request in [Making requests](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#accessing-vertex-ai) to check that your setup works. Then run your own code. Before you move production traffic, read about [rate limits for Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed#rate-limits).
742 </Step>
743</Steps>
744 
745## Next steps
746 
747<CardGroup cols={2}>
748 <Card title="Features overview" icon="stack" href="https://platform.claude.com/docs/en/build-with-claude/overview">
749 Explore Claude's features.
750 </Card>
751 
752 <Card title="Anthropic Claude models on Agent Platform" icon="book" href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/partner-models/claude">
753 Check which Claude models each region offers, and their retirement dates.
754 </Card>
755 
756 <Card title="Agent Platform documentation" icon="book" href="https://cloud.google.com/vertex-ai/docs">
757 Read Google Cloud's Agent Platform documentation.
758 </Card>
759 
760 <Card title="Global endpoint for Claude models" icon="link" href="https://cloud.google.com/blog/products/ai-machine-learning/global-endpoint-for-claude-models-generally-available-on-vertex-ai">
761 Read Google Cloud's blog post about the global endpoint for Claude models.
762 </Card>
763</CardGroup>
1008764 

build-with-claude/fallback-credit Changed · +5 / -5 lines

from line 14
1414 
1515<Steps>
1616 <Step title="Opt in with the beta header">
17 Send the request that may be refused with the `anthropic-beta: fallback-credit-2026-07-01` header. The `server-side-fallback-2026-07-01` header also grants the same fields, except on Amazon Bedrock and Google Cloud, which return a 400 error for that header. The earlier `fallback-credit-2026-06-01` header remains accepted and grants the same fields.
17 Send the request that may be refused with the `anthropic-beta: fallback-credit-2026-07-01` header. The `server-side-fallback-2026-07-01` header also grants the same fields, except on Amazon Bedrock and Claude Models on Google Cloud (Google managed), which return a 400 error for that header. The earlier `fallback-credit-2026-06-01` header remains accepted and grants the same fields.
1818 </Step>
1919 
2020 <Step title="Read two fields from the refusal">
from line 504
504504 
505505## Where it works
506506 
507Fallback credit is in beta on the Claude API, Amazon Bedrock, Claude Platform on AWS, Google Cloud, and Microsoft Foundry. Refusals in [Message Batches](https://platform.claude.com/docs/en/build-with-claude/batch-processing) don't mint credit tokens, and redemption applies only to direct Messages API requests: a token passed on a batch request is accepted but ignored. A Claude Haiku 5.5 refusal carries no fallback credit, so a retry after one pays the full cost of writing the fallback model's prompt cache.
507Fallback credit is in beta on the Claude API, Amazon Bedrock, Claude Platform on AWS, Claude Models on Google Cloud (Google managed), and Microsoft Foundry. Refusals in [Message Batches](https://platform.claude.com/docs/en/build-with-claude/batch-processing) don't mint credit tokens, and redemption applies only to direct Messages API requests: a token passed on a batch request is accepted but ignored. A Claude Haiku 5.5 refusal carries no fallback credit, so a retry after one pays the full cost of writing the fallback model's prompt cache.
508508 
509509The retry model must be one of the refused model's permitted fallback targets. For Claude Fable 5.1, Claude Fable 5, and Claude Opus 5.5, those are Claude Opus 4.8 (`claude-opus-4-8`) and Claude Opus 5 (`claude-opus-5`). For Claude Opus 5, it is Claude Opus 4.8. For Claude Sonnet 5.5, it is Claude Sonnet 5 (`claude-sonnet-5`).
510510 
511511<Accordion title="Looking up permitted fallback targets programmatically">
512 On the Claude API and Claude Platform on AWS, the target list is published as `allowed_fallback_models` on each model's entry in the [Models API](https://platform.claude.com/docs/en/api/beta/models/list) when the `server-side-fallback-2026-07-01` beta header is set. The list is not yet visible under the `fallback-credit-*` header alone. It is not exposed on Amazon Bedrock, Google Cloud, or Microsoft Foundry.
512 On the Claude API and Claude Platform on AWS, the target list is published as `allowed_fallback_models` on each model's entry in the [Models API](https://platform.claude.com/docs/en/api/beta/models/list) when the `server-side-fallback-2026-07-01` beta header is set. The list is not yet visible under the `fallback-credit-*` header alone. It is not exposed on Amazon Bedrock, Claude Models on Google Cloud (Google managed), or Microsoft Foundry.
513513</Accordion>
514514 
515515## Checking that the credit applied
from line 569
569569</Accordion>
570570 
571571<Accordion title="When fallback_has_prefill_claim is absent">
572 The field has no value only when the token has none either, so while you hold a token the field has a value, except on Amazon Bedrock, Google Cloud, and Microsoft Foundry, where it can still be absent while their support for the field rolls out. In that case, treat the retry shape as unknown rather than as `false` (python: `False`). Try the appended-assistant-message shape first, and rely on the rejection handling in [When a retry is rejected](https://platform.claude.com/docs/en/build-with-claude/fallback-credit#when-a-retry-is-rejected), which falls back to the unchanged body.
572 The field has no value only when the token has none either, so while you hold a token the field has a value, except on Amazon Bedrock, Claude Models on Google Cloud (Google managed), and Microsoft Foundry, where it can still be absent while their support for the field rolls out. In that case, treat the retry shape as unknown rather than as `false` (python: `False`). Try the appended-assistant-message shape first, and rely on the rejection handling in [When a retry is rejected](https://platform.claude.com/docs/en/build-with-claude/fallback-credit#when-a-retry-is-rejected), which falls back to the unchanged body.
573573</Accordion>
574574 
575575<Accordion title="Echoing the refused response's content">
from line 584
584584</Accordion>
585585 
586586<Accordion title="Token scope and lifetime">
587 The token redeems only from the organization and workspace that received the refusal, including on Microsoft Foundry. On Amazon Bedrock and Google Cloud, which do not have workspaces, the token is bound to the platform's caller identity instead.
587 The token redeems only from the organization and workspace that received the refusal, including on Microsoft Foundry. On Amazon Bedrock and Claude Models on Google Cloud (Google managed), which do not have workspaces, the token is bound to the platform's caller identity instead.
588588 
589589 The token expires 5 minutes after the refusal. After that, send the retry without it. The token is also stateless: the server stores nothing about it, and there is no endpoint to inspect or revoke it.
590590</Accordion>

build-with-claude/mid-conversation-system-messages Changed · +35 / -41 lines

from line 13
1313Mid-conversation system messages close that gap. You append a `{"role": "system"}` message at the point in the conversation where the new instruction becomes relevant, instead of editing the top-level `system` field. The cached prefix stays the same, so the next request still reads it from cache, and the new instruction is still applied as a system instruction rather than as ordinary user text.
1414 
1515<Note>
16 Mid-conversation system messages are available on the Claude API, [Claude in Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock), and [Google Cloud](https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai).
16 Mid-conversation system messages are available on the Claude API, [Claude in Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock), and [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed).
1717 
1818 This feature is available on Claude Fable 5.1, [Claude Mythos 5.1](https://platform.claude.com/docs/en/models/mythos-5-1/overview), Claude Fable 5, [Claude Mythos 5](https://platform.claude.com/docs/en/models/mythos-5/overview), Claude Opus 5.5, Claude Opus 4.8, Claude Opus 5, Claude Sonnet 5.5, and Claude Haiku 5.5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5. Use the top-level `system` field there instead.
1919 
20 [Mid-conversation tool changes](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#mid-conversation-tool-changes) are in beta on the same models. On the Claude API, send the `inline-tools-2026-09-15` beta header, which also covers [defining a tool inside a `tool_addition` block](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#define-tools-in-a-message-beta). [Adding an MCP server that way](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#add-an-mcp-server-mid-conversation-beta) needs a second beta header, `mcp-client-2026-09-15`, which is available on the Claude API. The `mid-conversation-tool-changes-2026-07-01` header works for changes that name a tool by reference, on the Claude API, Amazon Bedrock, and Google Cloud.
20 [Mid-conversation tool changes](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#mid-conversation-tool-changes) are in beta on the same models. On the Claude API, send the `inline-tools-2026-09-15` beta header, which also covers [defining a tool inside a `tool_addition` block](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#define-tools-in-a-message-beta). [Adding an MCP server that way](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#add-an-mcp-server-mid-conversation-beta) needs a second beta header, `mcp-client-2026-09-15`, which is available on the Claude API. The `mid-conversation-tool-changes-2026-07-01` header works for changes that name a tool by reference, on the Claude API, Amazon Bedrock, and Claude Models on Google Cloud (Google managed).
2121 
2222 [Turn-scoped system messages](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#turn-scoped-system-messages) (`clear_at`) are in beta and require the `mid-conversation-system-clear-at-2026-08-21` beta header, on the same models and platforms as mid-conversation system messages.
2323</Note>
from line 283
283283 // Withdraw get_weather from this point onward. The block references
284284 // the tool by name instead of editing Tools, so earlier turns stay
285285 // byte-identical and the cache still hits.
286 {OfSystem: &anthropic.BetaSystemMessageParam{
287 Content: []anthropic.BetaSystemMessageParamContentUnion{{
288 OfToolRemoval: &anthropic.BetaRequestToolRemovalBlockParam{
289 Tool: anthropic.BetaRequestToolRemovalBlockToolUnionParam{
290 OfToolReference: &anthropic.BetaToolChangeToolReferenceParam{
291 Name: "get_weather",
292 },
286 anthropic.NewBetaSystemMessage(anthropic.BetaSystemMessageOutputConfigParam{}, anthropic.BetaSystemMessageParamContentUnion{
287 OfToolRemoval: &anthropic.BetaRequestToolRemovalBlockParam{
288 Tool: anthropic.BetaRequestToolRemovalBlockToolUnionParam{
289 OfToolReference: &anthropic.BetaToolChangeToolReferenceParam{
290 Name: "get_weather",
293291 },
294292 },
295 }},
296 }},
293 },
294 }),
297295 },
298296 })
299297 if err != nil {
from line 783
785783 anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("How many orders shipped yesterday?")),
786784 // Define db_query by value from this point onward. Tools and the
787785 // earlier messages stay exactly as sent, so the cache still hits.
788 {OfSystem: &anthropic.BetaSystemMessageParam{
789 Content: []anthropic.BetaSystemMessageParamContentUnion{{
790 OfToolAddition: &anthropic.BetaRequestToolAdditionBlockParam{
791 Tool: anthropic.BetaRequestToolAdditionBlockToolUnionParam{
792 OfToolDefinition: &anthropic.BetaToolChangeToolDefinitionParam{
793 Definition: anthropic.BetaToolUnionParam{OfTool: &anthropic.BetaToolParam{
794 Name: "db_query",
795 Description: anthropic.String("Run a read-only SQL query against the analytics database."),
796 InputSchema: anthropic.BetaToolInputSchemaParam{
797 Properties: map[string]any{
798 "sql": map[string]any{"type": "string"},
799 },
800 Required: []string{"sql"},
786 anthropic.NewBetaSystemMessage(anthropic.BetaSystemMessageOutputConfigParam{}, anthropic.BetaSystemMessageParamContentUnion{
787 OfToolAddition: &anthropic.BetaRequestToolAdditionBlockParam{
788 Tool: anthropic.BetaRequestToolAdditionBlockToolUnionParam{
789 OfToolDefinition: &anthropic.BetaToolChangeToolDefinitionParam{
790 Definition: anthropic.BetaToolUnionParam{OfTool: &anthropic.BetaToolParam{
791 Name: "db_query",
792 Description: anthropic.String("Run a read-only SQL query against the analytics database."),
793 InputSchema: anthropic.BetaToolInputSchemaParam{
794 Properties: map[string]any{
795 "sql": map[string]any{"type": "string"},
801796 },
802 }},
803 },
797 Required: []string{"sql"},
798 },
799 }},
804800 },
805801 },
806 }},
807 }},
802 },
803 }),
808804 },
809805 })
810806 if err != nil {
from line 1368
13721368 anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("What's on my calendar tomorrow?")),
13731369 // Make the calendar server's tools available from this point onward.
13741370 // The block names the server; it never holds a URL or token.
1375 {OfSystem: &anthropic.BetaSystemMessageParam{
1376 Content: []anthropic.BetaSystemMessageParamContentUnion{{
1377 OfToolAddition: &anthropic.BetaRequestToolAdditionBlockParam{
1378 Tool: anthropic.BetaRequestToolAdditionBlockToolUnionParam{
1379 OfToolDefinition: &anthropic.BetaToolChangeToolDefinitionParam{
1380 Definition: anthropic.BetaToolUnionParam{OfMCPToolset: &anthropic.BetaMCPToolsetParam{
1381 MCPServerName: "calendar",
1382 }},
1383 },
1371 anthropic.NewBetaSystemMessage(anthropic.BetaSystemMessageOutputConfigParam{}, anthropic.BetaSystemMessageParamContentUnion{
1372 OfToolAddition: &anthropic.BetaRequestToolAdditionBlockParam{
1373 Tool: anthropic.BetaRequestToolAdditionBlockToolUnionParam{
1374 OfToolDefinition: &anthropic.BetaToolChangeToolDefinitionParam{
1375 Definition: anthropic.BetaToolUnionParam{OfMCPToolset: &anthropic.BetaMCPToolsetParam{
1376 MCPServerName: "calendar",
1377 }},
13841378 },
13851379 },
1386 }},
1387 }},
1380 },
1381 }),
13881382 },
13891383 })
13901384 if err != nil {
from line 1637
16431637 
16441638You can still set the top-level `system` field for instructions that should apply to the entire conversation. Reserve mid-conversation system messages for instructions that only become relevant later, or that you want to add without invalidating the cached prefix.
16451639 
1646A `role: "system"` message can also carry `output_config.effort` to change the [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level partway through a conversation. This is in beta on Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5.5, and Claude Haiku 5.5 on the Claude API and Google Cloud, and requires the `mid-conversation-output-config-2026-07-01` beta header. On Amazon Bedrock, it's in beta on Claude Fable 5.1, Claude Mythos 5.1, and Claude Opus 5.5, with the same beta value. Claude Opus 5 doesn't support it on Amazon Bedrock. See [Per-message effort](https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta).
1640A `role: "system"` message can also carry `output_config.effort` to change the [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level partway through a conversation. This is in beta on Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5.5, and Claude Haiku 5.5 on the Claude API and Claude Models on Google Cloud (Google managed), and requires the `mid-conversation-output-config-2026-07-01` beta header. On Amazon Bedrock, it's in beta on Claude Fable 5.1, Claude Mythos 5.1, and Claude Opus 5.5, with the same beta value. Claude Opus 5 doesn't support it on Amazon Bedrock. See [Per-message effort](https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta).
16471641 
16481642<CodeGroup>
16491643 ```bash cURL
from line 2094
21002094messages.3.content.0: cache_control is not permitted on a turn-scoped system message (clear_at: 'next_user_message')
21012095```
21022096 
2103The first is the error returned without the beta header. On Google Cloud and [Claude in Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock), send the beta value in the `anthropic-beta` header, as on the Claude API (see [Beta headers](https://platform.claude.com/docs/en/api/beta-headers)). With the Amazon Bedrock [InvokeModel API](https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy), put it in the `anthropic_beta` array of the request body instead.
2097The first is the error returned without the beta header. On Claude Models on Google Cloud (Google managed) and [Claude in Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock), send the beta value in the `anthropic-beta` header, as on the Claude API (see [Beta headers](https://platform.claude.com/docs/en/api/beta-headers)). With the Amazon Bedrock [InvokeModel API](https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy), put it in the `anthropic_beta` array of the request body instead.
21042098 
21052099Through the SDK, set `clear_at` (csharp, go: `ClearAt`; java: `.clearAt()`; php: `clearAt`) on the `role: "system"` entry in `messages` and send the beta header. The following example appends a turn-scoped reminder after the user turn; on the next request, once a later user message exists, the reminder stays in the array but no longer renders:
21062100 

build-with-claude/preserved-thinking Changed · +18 / -18 lines

from line 36
3636 
3737Claude Fable 5.1 and Claude Mythos 5.1 read thinking blocks produced by each other and by earlier Claude models. No other model reads thinking blocks from Claude Fable 5.1 or Claude Mythos 5.1.
3838 
39Claude Opus 5.5 reads thinking blocks from Claude Opus 5, from earlier Opus, Sonnet, and Haiku models, and, on the Claude API and Google Cloud, from Claude Sonnet 5.5 and Claude Haiku 5.5, but not from Claude Fable or Claude Mythos models. On the Claude API, Claude Fable 5.1 and Claude Mythos 5.1 read thinking blocks from Claude Opus 5.5; no other model does. So a conversation that moves from Claude Opus 5 onto Claude Opus 5.5 keeps its reasoning, and so does one that moves from Claude Opus 5.5 up to Claude Fable 5.1 or Claude Mythos 5.1 on the Claude API. One that moves from Claude Fable 5.1 or Claude Mythos 5.1 to Claude Opus 5.5, or from Claude Opus 5.5 to any model other than those two, runs the turns after the switch without the previous model's reasoning. The blocks are dropped, not rejected, as described later in this section.
39Claude Opus 5.5 reads thinking blocks from Claude Opus 5, from earlier Opus, Sonnet, and Haiku models, and, on the Claude API and Claude Models on Google Cloud (Google managed), from Claude Sonnet 5.5 and Claude Haiku 5.5, but not from Claude Fable or Claude Mythos models. On the Claude API, Claude Fable 5.1 and Claude Mythos 5.1 read thinking blocks from Claude Opus 5.5; no other model does. So a conversation that moves from Claude Opus 5 onto Claude Opus 5.5 keeps its reasoning, and so does one that moves from Claude Opus 5.5 up to Claude Fable 5.1 or Claude Mythos 5.1 on the Claude API. One that moves from Claude Fable 5.1 or Claude Mythos 5.1 to Claude Opus 5.5, or from Claude Opus 5.5 to any model other than those two, runs the turns after the switch without the previous model's reasoning. The blocks are dropped, not rejected, as described later in this section.
4040 
41Claude Sonnet 5.5 reads thinking blocks from Claude Sonnet 5, Claude Opus 4.8, Claude Haiku 4.5, and earlier models, and, on the Claude API and Google Cloud, from Claude Haiku 5.5, but not from Claude Opus 5, Claude Opus 5.5, or any Claude Fable or Claude Mythos model. On the Claude API and Google Cloud, Claude Opus 5.5 reads thinking blocks from Claude Sonnet 5.5; no other model does. So a conversation that moves from Claude Sonnet 5 onto Claude Sonnet 5.5 keeps its reasoning, and so does one that moves from Claude Sonnet 5.5 up to Claude Opus 5.5 on the Claude API and Google Cloud. One that moves onto Claude Sonnet 5.5 from Claude Opus 5, Claude Opus 5.5, or a Claude Fable or Claude Mythos model runs the turns after the switch without the previous model's reasoning. So does any other move away from Claude Sonnet 5.5, for example a [server-side fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#server-side-fallback) to Claude Sonnet 5.
41Claude Sonnet 5.5 reads thinking blocks from Claude Sonnet 5, Claude Opus 4.8, Claude Haiku 4.5, and earlier models, and, on the Claude API and Claude Models on Google Cloud (Google managed), from Claude Haiku 5.5, but not from Claude Opus 5, Claude Opus 5.5, or any Claude Fable or Claude Mythos model. On those two platforms, Claude Opus 5.5 reads thinking blocks from Claude Sonnet 5.5; no other model does. So a conversation that moves from Claude Sonnet 5 onto Claude Sonnet 5.5 keeps its reasoning, and so does one that moves from Claude Sonnet 5.5 up to Claude Opus 5.5 on those platforms. One that moves onto Claude Sonnet 5.5 from Claude Opus 5, Claude Opus 5.5, or a Claude Fable or Claude Mythos model runs the turns after the switch without the previous model's reasoning. So does any other move away from Claude Sonnet 5.5, for example a [server-side fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#server-side-fallback) to Claude Sonnet 5.
4242 
43Claude Haiku 5.5 reads thinking blocks from Claude Sonnet 5, Claude Opus 4.8, Claude Haiku 4.5, and earlier models, but not from Claude Opus 5, Claude Opus 5.5, Claude Sonnet 5.5, or any Claude Fable or Claude Mythos model. On the Claude API and Google Cloud, Claude Opus 5.5 and Claude Sonnet 5.5 read thinking blocks from Claude Haiku 5.5; no other model does. So a conversation that moves from Claude Haiku 4.5 onto Claude Haiku 5.5 keeps its reasoning, and so does one that moves from Claude Haiku 5.5 up to Claude Opus 5.5 or Claude Sonnet 5.5 on the Claude API and Google Cloud. One that moves onto Claude Haiku 5.5 from Claude Opus 5, Claude Opus 5.5, Claude Sonnet 5.5, or a Claude Fable or Claude Mythos model runs the turns after the switch without the previous model's reasoning, and so does any other move away from Claude Haiku 5.5.
43Claude Haiku 5.5 reads thinking blocks from Claude Sonnet 5, Claude Opus 4.8, Claude Haiku 4.5, and earlier models, but not from Claude Opus 5, Claude Opus 5.5, Claude Sonnet 5.5, or any Claude Fable or Claude Mythos model. On the Claude API and Claude Models on Google Cloud (Google managed), Claude Opus 5.5 and Claude Sonnet 5.5 read thinking blocks from Claude Haiku 5.5; no other model does. So a conversation that moves from Claude Haiku 4.5 onto Claude Haiku 5.5 keeps its reasoning, and so does one that moves from Claude Haiku 5.5 up to Claude Opus 5.5 or Claude Sonnet 5.5 on the Claude API and Claude Models on Google Cloud (Google managed). One that moves onto Claude Haiku 5.5 from Claude Opus 5, Claude Opus 5.5, Claude Sonnet 5.5, or a Claude Fable or Claude Mythos model runs the turns after the switch without the previous model's reasoning, and so does any other move away from Claude Haiku 5.5.
4444 
4545* **A conversation that moves to Claude Fable 5.1 from an earlier model, or from Claude Opus 5.5 on the Claude API, keeps its reasoning.** The earlier model's thinking blocks stay readable, so the model thinks as usual from the first turn after the switch.
4646* **A conversation that moves from Claude Fable 5.1 to any model other than Claude Mythos 5.1 loses Claude Fable 5.1's reasoning for that request.** This occurs when a router sends a turn to a cheaper model, after a [classifier refusal fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback), or during a [server-side fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#server-side-fallback). The API removes the unreadable blocks before the prompt reaches the model. They aren't billed and don't count toward `input_tokens`.
from line 71
7171 
7272Thinking blocks that Claude Sonnet 5.5 or Claude Haiku 5.5 produces work only in the account that produced them, or in an account linked to it. When another account sends one of these blocks, the API drops the block before the model sees it, and the request succeeds. The model answers without the reasoning in the dropped blocks. Blocks from earlier models aren't affected.
7373 
74On the Claude API and Google Cloud, with the `thinking-binding-controls-2026-08-01` [beta header](https://platform.claude.com/docs/en/api/beta-headers), the response lists each dropped block in `input_transformations` as a `thinking_dropped` entry with `reason: "organization_binding_mismatch"`. Without the header, the drop is silent.
74On the Claude API and Claude Models on Google Cloud (Google managed), with the `thinking-binding-controls-2026-08-01` [beta header](https://platform.claude.com/docs/en/api/beta-headers), the response lists each dropped block in `input_transformations` as a `thinking_dropped` entry with `reason: "organization_binding_mismatch"`. Without the header, the drop is silent.
7575 
7676## Keeping the prefix unchanged
7777 
from line 1046
10461046 
10471047Each common prefix edit has a replacement that gives the model the same information and leaves earlier bytes unchanged, so later thinking stays valid. Find the edit your code makes today in the first column:
10481048 
1049| Instead of | Use | Beta header |
1050| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
1051| Rebuilding the top-level `system` prompt | A [mid-conversation system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#new-instructions) | None |
1052| Re-rendering the context in your first user message (environment, date, memory, project instructions) on each request | Render it once and resend it unchanged. When something changes, [put the new version in the newest turn](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#changing-context) | None |
1053| Clearing or shortening old `tool_result` content, or re-encoding old images, in place | Shorten a tool result or downscale an image before the first time you send it, not after. To clear old results later, [trim context on the server](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#server-side-trimming) with `clear_tool_uses_20250919` | `context-management-2025-06-27` |
1054| Injecting a reminder and deleting it on the next request | A [turn-scoped system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#per-turn-reminders) (`clear_at: "next_user_message"`) | `mid-conversation-system-clear-at-2026-08-21` |
1055| Adding or removing entries in `tools` | [`tool_addition` and `tool_removal` blocks](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#tool-changes) | `inline-tools-2026-09-15` (add `mcp-client-2026-09-15` when the tool comes from an MCP server connected through the MCP connector), or the older `mid-conversation-tool-changes-2026-07-01`, which works on the Claude API, Amazon Bedrock, and Google Cloud |
1056| Changing top-level `output_config.effort` (restarts the cache, doesn't affect thinking) | A [per-message `output_config`](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#effort-changes) | `mid-conversation-output-config-2026-07-01` |
1057| Dropping or summarizing old turns on the client | [On-demand compaction](https://platform.claude.com/docs/en/build-with-claude/compaction-on-demand) to keep the recent turns with their thinking, other server-side [compaction or context editing](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#server-side-trimming), or [client-side compaction](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#custom-compaction-on-the-client) that keeps no stale thinking | `compact-2026-09-04` |
1058| An image or document URL whose bytes change between requests | A [`file_id` from the Files API](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#files-by-id), or base64 | None |
1049| Instead of | Use | Beta header |
1050| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1051| Rebuilding the top-level `system` prompt | A [mid-conversation system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#new-instructions) | None |
1052| Re-rendering the context in your first user message (environment, date, memory, project instructions) on each request | Render it once and resend it unchanged. When something changes, [put the new version in the newest turn](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#changing-context) | None |
1053| Clearing or shortening old `tool_result` content, or re-encoding old images, in place | Shorten a tool result or downscale an image before the first time you send it, not after. To clear old results later, [trim context on the server](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#server-side-trimming) with `clear_tool_uses_20250919` | `context-management-2025-06-27` |
1054| Injecting a reminder and deleting it on the next request | A [turn-scoped system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#per-turn-reminders) (`clear_at: "next_user_message"`) | `mid-conversation-system-clear-at-2026-08-21` |
1055| Adding or removing entries in `tools` | [`tool_addition` and `tool_removal` blocks](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#tool-changes) | `inline-tools-2026-09-15` (add `mcp-client-2026-09-15` when the tool comes from an MCP server connected through the MCP connector), or the older `mid-conversation-tool-changes-2026-07-01`, which works on the Claude API, Amazon Bedrock, and Claude Models on Google Cloud (Google managed) |
1056| Changing top-level `output_config.effort` (restarts the cache, doesn't affect thinking) | A [per-message `output_config`](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#effort-changes) | `mid-conversation-output-config-2026-07-01` |
1057| Dropping or summarizing old turns on the client | [On-demand compaction](https://platform.claude.com/docs/en/build-with-claude/compaction-on-demand) to keep the recent turns with their thinking, other server-side [compaction or context editing](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#server-side-trimming), or [client-side compaction](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#custom-compaction-on-the-client) that keeps no stale thinking | `compact-2026-09-04` |
1058| An image or document URL whose bytes change between requests | A [`file_id` from the Files API](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#files-by-id), or base64 | None |
10591059 
10601060All of these assume you [send assistant turns back exactly as returned](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#append-assistant-turns-exactly-as-returned). Mid-conversation system messages, turn-scoped system messages, and tool changes aren't available on every model: [Mid-conversation system messages and tool changes](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) lists the models that accept them. If your code serves several models, keep editing the top-level `system` prompt for the models that don't accept them.
10611061 
from line 1161
11611161 
11621162### Add or remove tools with `tool_addition` and `tool_removal`
11631163 
1164Editing the `tools` array mid-session invalidates preserved thinking blocks. Leave the array as you first sent it, and change which tools the model can use by appending a `role: "system"` message that carries `tool_addition` or `tool_removal` blocks. These are [mid-conversation tool changes](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#mid-conversation-tool-changes) and need the beta header `inline-tools-2026-09-15`, which is available on the Claude API. The older `mid-conversation-tool-changes-2026-07-01` header still works for changes that name a tool by reference, on the Claude API, Amazon Bedrock, and Google Cloud.
1164Editing the `tools` array mid-session invalidates preserved thinking blocks. Leave the array as you first sent it, and change which tools the model can use by appending a `role: "system"` message that carries `tool_addition` or `tool_removal` blocks. These are [mid-conversation tool changes](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#mid-conversation-tool-changes) and need the beta header `inline-tools-2026-09-15`, which is available on the Claude API. The older `mid-conversation-tool-changes-2026-07-01` header still works for changes that name a tool by reference, on the Claude API, Amazon Bedrock, and Claude Models on Google Cloud (Google managed).
11651165 
11661166You have two ways to use these blocks:
11671167 
from line 1229
12291229 
12301230### Change effort with a per-message `output_config`
12311231 
1232Changing top-level `output_config.effort` between requests doesn't invalidate thinking, because effort isn't part of the prefix. Changing top-level effort does restart the prompt cache. Where the model and platform support [per-message effort](https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta), use it instead: append a `role: "system"` message with empty `content` and the new level. It needs the beta header `mid-conversation-output-config-2026-07-01`. On Claude Haiku 5.5, per-message effort is available on the Claude API and Google Cloud and needs adaptive thinking.
1232Changing top-level `output_config.effort` between requests doesn't invalidate thinking, because effort isn't part of the prefix. Changing top-level effort does restart the prompt cache. Where the model and platform support [per-message effort](https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta), use it instead: append a `role: "system"` message with empty `content` and the new level. It needs the beta header `mid-conversation-output-config-2026-07-01`. On Claude Haiku 5.5, per-message effort is available on the Claude API and Claude Models on Google Cloud (Google managed) and needs adaptive thinking.
12331233 
12341234```json
12351235{ "role": "system", "content": [], "output_config": { "effort": "low" } }
Feedback