One read of Claude Developer Platformapi-20261020T020708Z
124 pages moved out of 785 read.
Pages moved
124
significant first
Pages read
785
in this capture
Captured
02:07 UTC
Corpus hash
05505ffc3bb1
index-hash
What this read moved
101-124 of 124, page 5 of 5This capture is too large to show at once. Changes 101-124 of 124 are below, significant first; the rest are on the following screens.
build-with-claude/fast-mode Changed · +1 / -3 lines
from line 95
9595 ]
9696 });
9797
98 const textBlock = response.content.find(
99 (block): block is Anthropic.TextBlock => block.type === "text"
100 );
98 const textBlock = response.content.find((block) => block.type === "text");
10199 console.log(textBlock?.text);
102100 ```
103101
build-with-claude/mid-conversation-system-messages Changed · +1 / -3 lines
from line 1770
17701770 ]
17711771 });
17721772
1773 const textBlock = response.content.find(
1774 (block): block is Anthropic.TextBlock => block.type === "text"
1775 );
1773 const textBlock = response.content.find((block) => block.type === "text");
17761774 console.log(textBlock?.text);
17771775 ```
17781776
build-with-claude/prompt-caching Changed · +1 / -3 lines
from line 1293
12931293
12941294 // Later, when the user submits a message, the system-prompt prefix is already cached.
12951295 const response = await respond("How do I implement a binary search tree?");
1296 const textBlock = response.content.find(
1297 (block): block is Anthropic.TextBlock => block.type === "text"
1298 );
1296 const textBlock = response.content.find((block) => block.type === "text");
12991297 console.log(textBlock?.text);
13001298 ```
13011299
build-with-claude/refusals-and-fallback Changed · +1 / -1 lines
from line 627
627627A few rules apply to the `fallbacks` list:
628628
629629* Entries are tried in order. Each must be distinct from the other entries and from the requested model.
630* Each entry must be one of the requested model's permitted targets. With the beta header set, that list is published as `allowed_fallback_models` on the model's entry in the [Models API](https://platform.claude.com/docs/en/api/models/list).
630* Each entry must be one of the requested model's permitted targets. With the beta header set, that list is published as `allowed_fallback_models` on the model's entry in the [Models API](https://platform.claude.com/docs/en/api/beta/models/list).
631631* Each entry names a `model` and can override `max_tokens`, `thinking`, `output_config`, and `speed` for that attempt only.
632632* The request must be valid as a direct request to every model named. If a fallback model does not support a feature the request uses, the API rejects the request up front. Under the `2026-07-01` header, `thinking: {"type": "between_tools"}` is the exception: when a Claude Sonnet 5.5 request falls back to Claude Sonnet 5, the fallback attempt runs with `thinking: {"type": "disabled"}` and `display: "omitted"`. Under `2026-06-01`, set `thinking` on the Claude Sonnet 5 entry, or the request is rejected up front.
633633* As with the default mode, only a safety classifier decline triggers the fallback. A rate limit, overload, or server error on the requested model is returned to you as-is.
build-with-claude/search-results Changed · +1 / -3 lines
from line 247
247247
248248 // Handle tool use and provide results.
249249 // The tool_use block is not always first: find it in the content array.
250 const toolUse = response.content.find(
251 (block): block is Anthropic.ToolUseBlock => block.type === "tool_use"
252 );
250 const toolUse = response.content.find((block) => block.type === "tool_use");
253251 if (toolUse) {
254252 const input = toolUse.input as { query: string };
255253 const toolResult = searchKnowledgeBase(input.query);
build-with-claude/structured-outputs Changed · +1 / -3 lines
from line 28
2828 supportedPlatforms:
2929 Claude API: ga
3030 Claude Platform on AWS: ga
31 Amazon Bedrock:
32 availability: ga
33 note: On Amazon Bedrock, structured outputs are available on the legacy [Amazon Bedrock (Opus 4.6 and earlier)](https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy) integration for Claude Opus 4.6, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Opus 4.5, and Claude Haiku 4.5, and not on [Claude in Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock).
31 Amazon Bedrock: ga
3432 Google Cloud: ga
3533 Microsoft Foundry: ga
3634---
build-with-claude/thinking Changed · +1 / -1 lines
from line 471
471471
472472Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, and Claude Mythos Preview reject `thinking: {type: "disabled"}`. Thinking can't be turned off on these models.
473473
474To check whether a model accepts `"disabled"` before you send a request, read its `capabilities.thinking.types.disabled.supported` value from the Models API. [Using the Models API](https://platform.claude.com/docs/en/models/overview#using-the-models-api) describes the field.
474To check whether a model accepts `"disabled"` or `"between_tools"` before you send a request, read its `capabilities.thinking.types.disabled.supported` or `capabilities.thinking.types.between_tools.supported` value from the Models API. [Using the Models API](https://platform.claude.com/docs/en/models/overview#using-the-models-api) describes both fields.
475475
476476If your model supports only extended thinking (see the [per-model configuration table](https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting#supported-models)), configure it with `type: "enabled"` and a `budget_tokens` value instead. The [Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) page covers that configuration. And if any thinking configuration comes back with a 400 error, [Troubleshooting thinking](https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting) matches each error message to its fix.
477477
build-with-claude/thinking-tool-workflows Changed · +1 / -3 lines
from line 400
400400 });
401401
402402 // Extract the tool use block to get its ID for the tool result
403 const toolUseBlock = response.content.find(
404 (block): block is Anthropic.ToolUseBlock => block.type === "tool_use"
405 );
403 const toolUseBlock = response.content.find((block) => block.type === "tool_use");
406404
407405 // Call your actual weather API, here is where your actual API call would go
408406 // Let's pretend this is what we get back
build-with-claude/token-counting Changed · +1 / -1 lines
from line 1406
14061406
14071407## Pricing and rate limits
14081408
1409Token counting is **free to use** but subject to requests per minute rate limits based on your [usage tier](https://platform.claude.com/docs/en/api/rate-limits#rate-limits). If you need higher limits, use **Request tier increase** on the [Rate limits](https://platform.claude.com/usage/limits) page.
1409Token counting is **free to use** but subject to requests per minute rate limits based on your [usage tier](https://platform.claude.com/docs/en/api/rate-limits#rate-limits). If you need higher limits, use **Request tier increase** on the [Rate limits](https://platform.claude.com/usage/limits) page in the Claude Console.
14101410
14111411| Usage tier | Requests per minute (RPM) |
14121412| ---------- | ------------------------- |
cli-sdks-libraries/cli/authentication Changed · +1 / -1 lines
from line 71
7171 </Tab>
7272</Tabs>
7373
74To override the key for a single invocation, pass `--api-key`. To point at a different API host, set `ANTHROPIC_BASE_URL` or pass `--base-url`.
74To override the key for a single invocation, pass [`--api-key-stdin`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/using#global-flags) and pipe the key to the command. To point at a different API host, set `ANTHROPIC_BASE_URL` or pass `--base-url`.
7575
7676If you are using an API key scoped to multiple workspaces, such as a [personal or service account key](https://platform.claude.com/docs/en/manage-claude/authentication#key-types), you must [specify the workspace](https://platform.claude.com/docs/en/manage-claude/authentication#select-a-workspace) to run your command in. Do this by setting an `ANTHROPIC_WORKSPACE_ID` environment variable, which the CLI reads automatically, or by using the [`--workspace-id` flag](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/using#global-flags). The value must be a `wrkspc_...` ID.
7777
cli-sdks-libraries/cli/using Changed · +2 / -0 lines
from line 30
3030| Flag | Description |
3131| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
3232| `--profile` | Named profile to use for this invocation (equivalent to setting `ANTHROPIC_PROFILE`). See [Switch between workspaces](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication#switch-between-workspaces). |
33| `--api-key-stdin` | Read the API key from standard input. The flag reads all of standard input, so pass the request body with [flags](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/using#flags). |
34| `--auth-token-stdin` | Read the bearer token from standard input. The flag reads all of standard input, so pass the request body with [flags](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/using#flags). |
3335| `--format` | Output format: `auto`, `json`, `jsonl`, `yaml`, `pretty`, `raw`, `explore` |
3436| `--transform` | Filter or reshape the response with a [GJSON path](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/using#transform-output-with-gjson) |
3537| `-r`, `--raw-output` | Print string results without surrounding quotes, like `jq -r` |
cli-sdks-libraries/libraries/apple-foundation-models Changed · +1 / -1 lines
from line 147
147147)
148148```
149149
150Your proxy receives standard [Messages API](https://platform.claude.com/docs/en/api/messages/create) requests, attaches the `x-api-key` header, and forwards them to `https://api.anthropic.com`.
150Your proxy receives standard [Messages API](https://platform.claude.com/docs/en/api/messages/create) requests, attaches your API key as `Authorization: Bearer <key>`, and forwards them to `https://api.anthropic.com`.
151151
152152### API key (development)
153153
cli-sdks-libraries/libraries/openai-sdk Changed · +1 / -1 lines
from line 25
25252. Change the following
2626
2727 * Update your base URL to point to the Claude API
28 * Replace your API key with a [Claude API key](https://platform.claude.com/settings/keys)
28 * Replace your API key with a [Claude API key](https://platform.claude.com/settings/keys) from the Claude Console
2929 * If your key is a [personal or service account key](https://platform.claude.com/docs/en/manage-claude/authentication#key-types) with access to multiple workspaces, also send the `anthropic-workspace-id` header on every request (for example, `default_headers` in the Python SDK or `defaultHeaders` in TypeScript); see [Select a workspace](https://platform.claude.com/docs/en/manage-claude/authentication#select-a-workspace)
3030 * Update your model name to use a [Claude model](https://platform.claude.com/docs/en/models/overview)
3131
cli-sdks-libraries/sdks/php Changed · +2 / -2 lines
from line 72
7272Streaming requires an HTTP client that returns the response body incrementally. When Guzzle is the discovered PSR-18 client, the SDK configures it for streaming automatically. With a buffering client, the `foreach` loop yields every event at once when the response completes instead of incrementally; if you observe that symptom, install Guzzle or supply a streaming-capable PSR-18 client through the `streamingTransporter` request option:
7373
7474```php
75$client = new \Anthropic\Client(
76 requestOptions: \Anthropic\RequestOptions::with(streamingTransporter: $myStreamingClient),
75$client = new Client(
76 requestOptions: RequestOptions::with(streamingTransporter: $myStreamingClient),
7777);
7878```
7979
get-api-key Changed · +1 / -1 lines
from line 42
4242export ANTHROPIC_API_KEY="sk-ant-api03-..."
4343```
4444
45The [client SDK](https://platform.claude.com/docs/en/cli-sdks-libraries/overview) reads `ANTHROPIC_API_KEY` automatically. Direct HTTP requests send the key in the `x-api-key` header. If your API key works on multiple workspaces, you must also send the `anthropic-workspace-id` header on each Claude API request, as shown in [Select a workspace](https://platform.claude.com/docs/en/manage-claude/authentication#select-a-workspace). For the Admin API, see [API keys and the Admin API](https://platform.claude.com/docs/en/get-api-key#api-keys-and-the-admin-api).
45The [client SDK](https://platform.claude.com/docs/en/cli-sdks-libraries/overview) reads `ANTHROPIC_API_KEY` automatically. Direct HTTP requests send the key as `Authorization: Bearer <key>`. If your API key works on multiple workspaces, you must also send the `anthropic-workspace-id` header on each Claude API request, as shown in [Select a workspace](https://platform.claude.com/docs/en/manage-claude/authentication#select-a-workspace). For the Admin API, see [API keys and the Admin API](https://platform.claude.com/docs/en/get-api-key#api-keys-and-the-admin-api).
4646
4747To make your first request, follow the [Quickstart](https://platform.claude.com/docs/en/get-started), and see [Authentication](https://platform.claude.com/docs/en/manage-claude/authentication) for the full picture, including short-lived credentials with Workload Identity Federation.
4848
manage-claude/claude-code-analytics-api Changed · +2 / -2 lines
from line 8
88 **The Admin API is unavailable for individual accounts.** To collaborate with teammates and add members, set up your organization on the [Organization](https://platform.claude.com/settings/organization) page (`platform.claude.com/settings/organization`) in the Claude Console.
99</Tip>
1010
11The Claude Code Analytics Admin API provides programmatic access to daily aggregated usage metrics for Claude Code users, enabling organizations to analyze developer productivity and build custom dashboards. This API provides more detail than the basic [Analytics dashboard](https://platform.claude.com/claude-code) without the complexity of the OpenTelemetry integration.
11The Claude Code Analytics Admin API provides programmatic access to daily aggregated usage metrics for Claude Code users, enabling organizations to analyze developer productivity and build custom dashboards. This API provides more detail than the basic [Analytics dashboard](https://platform.claude.com/claude-code) in the Claude Console, without the complexity of the OpenTelemetry integration.
1212
1313This API enables you to better monitor, analyze, and optimize your Claude Code adoption:
1414
from line 272
272272
273273* [Admin API](https://platform.claude.com/docs/en/manage-claude/admin-api)
274274* [Admin API reference](https://platform.claude.com/docs/en/api/beta/organization)
275* [Claude Code Analytics dashboard](https://platform.claude.com/claude-code)
275* [Claude Code Analytics dashboard](https://platform.claude.com/claude-code) in the Claude Console
276276* [Usage and Cost API](https://platform.claude.com/docs/en/manage-claude/usage-cost-api) - Track API usage across all Anthropic services
277277* [Compliance API](https://platform.claude.com/docs/en/manage-claude/compliance-api) - Retrieve audit and activity data
278278* [Identity and access management](https://code.claude.com/docs/en/iam)
manage-claude/cmek Changed · +0 / -1 lines
from line 83
8383**Claude Platform**
8484
8585* Playground in the Claude Console is disabled.
86* Portions of the Compliance API that return raw content, such as prompts, responses, and files, are disabled.
8786* Structured outputs are not available for Claude Fable or Claude Mythos models in CMEK organizations.
8887* Other beta and research preview features might not be covered by CMEK.
8988
manage-claude/data-residency Changed · +1 / -3 lines
from line 87
8787 ]
8888 });
8989
90 const textBlock = response.content.find(
91 (block): block is Anthropic.TextBlock => block.type === "text"
92 );
90 const textBlock = response.content.find((block) => block.type === "text");
9391 console.log(textBlock?.text);
9492 // Check where inference actually ran
9593 console.log(`Inference geo: ${response.usage.inference_geo}`);
manage-claude/opentelemetry/api Changed · +2 / -2 lines
from line 221
221221* **Selected:** Only the workspaces that you select.
222222* **All except:** Like **All**, but without the workspaces that you select.
223223
224For **Selected** or **All except**, select the workspaces in the search box that appears under the options. To change a destination's workspaces later, open its **More actions** menu on the [OpenTelemetry settings page](https://platform.claude.com/settings/telemetry-destinations) while the **Workspace** filter shows **All**. Click **Edit**, then choose another **Workspaces** option or change the workspaces in the search box.
224For **Selected** or **All except**, select the workspaces in the search box that appears under the options. To change a destination's workspaces later, open its **More actions** menu on the [OpenTelemetry settings page](https://platform.claude.com/settings/telemetry-destinations) in the Console while the **Workspace** filter shows **All**. Click **Edit**, then choose another **Workspaces** option or change the workspaces in the search box.
225225
226226If you have the developer role in the organization and the Workspace Admin role in a workspace, you can add that workspace to a **Selected** destination or remove it. Set the **Workspace** filter to that workspace, then open the destination's **More actions** menu. On Claude Platform on AWS, the Console has no Workspace Admin role. There, your [IAM policy](https://platform.claude.com/docs/en/api/claude-platform-on-aws-iam-actions) determines who can add a workspace to a destination or remove it.
227227
from line 659
659659* The endpoint's hostname resolves to an IP address that isn't public.
660660* All deliveries fail for 24 hours.
661661
662The API doesn't send spans to a disabled destination. To resume export, fix the cause. Then, with the **Workspace** filter on the [OpenTelemetry settings page](https://platform.claude.com/settings/telemetry-destinations) showing **All**, click **Enable** in the destination's **More actions** menu. Export starts again within about a minute.
662The API doesn't send spans to a disabled destination. To resume export, fix the cause. Then, on the [OpenTelemetry settings page](https://platform.claude.com/settings/telemetry-destinations) in the Console, click **Enable** in the destination's **More actions** menu while the **Workspace** filter shows **All**. Export starts again within about a minute.
663663
664664To change a destination, open its **More actions** menu while the **Workspace** filter shows **All**. Then click **Edit**, **Disable**, **Enable**, or **Delete**. If you change the host of the **OTLP endpoint URL**, enter the header values again. If the destination has an **OTLP traces endpoint URL**, give it the same new host, or clear it.
665665
managed-agents/onboarding Changed · +1 / -1 lines
from line 14
1414
1515## How to build an agent
1616
17The [visual interface](https://platform.claude.com/workspaces/default/agent-quickstart/) walks you through each field of an agent definition:
17The [visual interface](https://platform.claude.com/workspaces/default/agent-quickstart/) in the Claude Console walks you through each field of an agent definition:
1818
1919* **Model and system prompt:** Pick a model and write the system prompt in a full-width editor.
2020* **MCP servers:** Add remote MCP servers by URL and authenticate your agent to take action on your behalf.
managed-agents/overview Changed · +1 / -1 lines
from line 102
102102
103103To get started, you need:
104104
1051. A [Claude API key](https://platform.claude.com/settings/keys)
1051. A [Claude API key](https://platform.claude.com/settings/keys) from the Claude Console
1061062. The `managed-agents-2026-04-01` beta header on all requests
1071073. Access to Claude Managed Agents (enabled by default for all API accounts)
108108
models/haiku-5-5/migration-guide Changed · +1 / -2 lines
from line 38
38388. If you replay stored conversations through a different account, replay each one through the account that produced it. See [Replay thinking blocks through the account that produced them](https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide#replay-thinking-blocks-through-the-producing-account).
39399. If your code changes `system`, `tools`, or earlier `messages` between requests in a conversation and sends thinking blocks back, keep the conversation append-only. See [Keep earlier turns unchanged](https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide#keep-earlier-turns-unchanged).
404010. Handle `stop_reason: "refusal"`. Claude Haiku 5.5 runs safety classifiers that can decline a request, and it has no server-side fallback. See [Safeguard refusals](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-haiku-5-5#safeguard-refusals).
4111. If you use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) (`output_config.format` or `strict: true` tools) on Amazon Bedrock, describe the format in the prompt or use a tool without `strict`, and validate the output in your code. Structured outputs aren't available for Claude Haiku 5.5 on Amazon Bedrock.
4241
4342If your organization has a [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) commitment on Claude Haiku 4.5, plan capacity separately: Priority Tier is not supported on Claude Haiku 5.5.
4443
from line 124
125124
126125A prefill is a final assistant turn in `messages` that the model continues. Claude Haiku 4.5 accepts one when thinking is off. Claude Haiku 5.5 rejects it with a 400 error, even with thinking turned off. End `messages` with a user turn, and replace each prefill according to what it was for:
127126
128* **Output format:** use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), or tools with enum fields for classification. On Amazon Bedrock, structured outputs aren't available for Claude Haiku 5.5. There, describe the format in the prompt or use a tool without `strict`, and validate the output in your code.
127* **Output format:** use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), or tools with enum fields for classification.
129128* **Preambles:** ask in the system prompt for a direct answer.
130129* **Continuations:** move them to the user message, for example "Your previous response was interrupted and ended with `[previous_response]`. Continue from where you left off."
131130* **Context reminders:** put them in the user turn.
models/haiku-5-5/whats-new-haiku-5-5 Changed · +0 / -1 lines
from line 22
2222| [Sampling parameters can return an error](https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide#remove-sampling-parameters) | Breaking | Omit `temperature`, `top_p`, and `top_k`. |
2323| [Assistant message prefill returns an error](https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide#replace-assistant-prefill) | Breaking | End `messages` with a user turn. |
2424| [`computer_20250124` returns an error on the Claude API, Google Cloud, and Amazon Bedrock](https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide#computer-use-toolset) | Breaking | Replace it with `computer_toolset_20260801` on the Claude API and Google Cloud, or with `computer_20251124` on Amazon Bedrock. |
25| [Structured outputs aren't available on Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | Breaking | On Amazon Bedrock, describe the format in the prompt or use a tool without `strict`, and validate the output in your code. |
2625| [Changing earlier turns invalidates thinking blocks](https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide#keep-earlier-turns-unchanged) | Breaking | Keep conversations append-only if you send thinking blocks back. |
2726| [Responses can begin with thinking blocks](https://platform.claude.com/docs/en/models/haiku-5-5/whats-new-haiku-5-5#responses-can-begin-with-thinking-blocks) | Changed | Select content blocks by `type`, not by position. |
2827| [Thinking text is omitted by default](https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide#configure-thinking) | Changed | To receive summarized thinking, set `thinking.display` to `"summarized"`. |
models/overview Changed · +2 / -0 lines
from line 73
7373
7474Each model's `capabilities` object includes `thinking.types.disabled`, which reports whether the model accepts `thinking: {type: "disabled"}`, the setting that [turns thinking off](https://platform.claude.com/docs/en/build-with-claude/thinking#turning-thinking-off). `supported` is `false` when the model rejects `"disabled"` with a 400 error, and `true` on a model that doesn't support thinking. Even when `supported` is `true`, the API can still reject a `"disabled"` request for another reason. One such reason is an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level that the model doesn't allow with thinking off.
7575
76Each model's `capabilities` object also includes `thinking.types.between_tools`, which reports whether the model accepts `thinking: {type: "between_tools"}`, the setting that [turns off up-front thinking](https://platform.claude.com/docs/en/build-with-claude/thinking#turning-thinking-off). `supported` is `false` when the model rejects `"between_tools"` with a 400 error. Even when `supported` is `true`, the API can still reject a `"between_tools"` request for another reason, such as an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level that the model doesn't allow with `"between_tools"`. For Claude Sonnet 5.5, for example, the Models API reports `thinking.types.between_tools.supported` as `true` and `thinking.types.disabled.supported` as `false`.
77
7678Each model's `capabilities` object also includes `server_tools`, which reports whether the model accepts the [web search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) and [code execution](https://platform.claude.com/docs/en/agents-and-tools/tool-use/code-execution-tool) tools. It doesn't cover other server tools, such as web fetch. `server_tools.web_search.supported` and `server_tools.code_execution.supported` are `true` when the model accepts at least one version of that tool, not necessarily every version. `server_tools.supported` is `true` when the model accepts at least one of the two tools. Even when a tool is supported, your organization's settings can still cause a request that uses it to fail. For example, an administrator can [disable web search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool#how-to-use-web-search).
7779
7880The top-level `code_execution` capability is a different check. It reports whether code that Claude runs in the code execution tool can call the request's other tools, as in [programmatic tool calling](https://platform.claude.com/docs/en/agents-and-tools/tool-use/programmatic-tool-calling). For Claude Haiku 4.5, for example, the Models API reports `server_tools.code_execution.supported` as `true` and `code_execution.supported` as `false`.