One read of Claude Developer Platformapi-20261022T020713Z
168 pages moved out of 808 read.
Pages moved
168
significant first
Pages read
808
in this capture
Captured
02:07 UTC
Corpus hash
f3f082ef7981
index-hash
What this read moved
101-125 of 168, page 5 of 7This capture is too large to show at once. Changes 101-125 of 168 are below, significant first; the rest are on the following screens.
build-with-claude/overview Changed · +1 / -1 lines
from line 85
8585| [Agent Skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview) | Extend Claude's capabilities with Skills. Use pre-built Skills (PowerPoint, Excel, Word, PDF) or create custom Skills with instructions and scripts. Skills use progressive disclosure to efficiently manage context. | Not ZDR eligible | <PlatformAvailability claudeApi claudePlatformAws azureAi />†‡ |
8686| [Fine-grained tool streaming](https://platform.claude.com/docs/en/agents-and-tools/tool-use/fine-grained-tool-streaming) | Stream tool use parameters without buffering/JSON validation, reducing latency for receiving large parameters. | ZDR eligible | <PlatformAvailability claudeApi claudePlatformAws bedrock vertexAi azureAi /> |
8787| [MCP connector](https://platform.claude.com/docs/en/agents-and-tools/mcp-connector) | Connect to remote [MCP](https://modelcontextprotocol.io/) servers directly from the Messages API without a separate MCP client. | Not ZDR eligible | <PlatformAvailability claudeApiBeta claudePlatformAwsBeta azureAiBeta /> |
88| [Programmatic tool calling](https://platform.claude.com/docs/en/agents-and-tools/tool-use/programmatic-tool-calling) | Enable Claude to call your tools programmatically from within code execution containers, reducing latency and token consumption for multi-tool workflows. | Not ZDR eligible | <PlatformAvailability claudeApi claudePlatformAws azureAi />† |
88| [Programmatic tool calling](https://platform.claude.com/docs/en/agents-and-tools/tool-use/programmatic-tool-calling) | Allow Claude to call your tools programmatically from within code execution containers, reducing latency and token consumption for multi-tool workflows. | Not ZDR eligible | <PlatformAvailability claudeApi claudePlatformAws azureAi />† |
8989| [Tool search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool) | Scale to thousands of tools by dynamically discovering and loading tools on demand using regex- and BM25-based search, optimizing context usage and improving tool selection accuracy. | ZDR eligible | <PlatformAvailability claudeApi claudePlatformAws bedrock vertexAi azureAi /> |
9090
9191## Context management
build-with-claude/pdf-support Changed · +2 / -2 lines
from line 349
349349
350350The response returns Claude's analysis as text blocks in `content`, with token consumption in `usage`:
351351
352```json Output
352```text Output
353353{
354354 "id": "msg_01Hfp8YuFjQ55VgWbpdHDehB",
355355 "type": "message",
from line 1012
10121012 * The text from each page is extracted and provided alongside each page's image.
10131013 </Step>
10141014
1015 <Step title="Claude analyzes both the text and images to better understand the document.">
1015 <Step title="Claude analyzes both the text and images.">
10161016 * Documents are provided as a combination of text and images for analysis.
10171017 * This allows users to ask for insights on visual elements of a PDF, such as charts, diagrams, and other non-textual content.
10181018 </Step>
build-with-claude/prompt-engineering/claude-prompting-best-practices Changed · +2 / -2 lines
from line 485
485485</do_not_act_before_instructions>
486486```
487487
488Claude Opus 4.5 and Claude Opus 4.6 are also more responsive to the system prompt than previous models. If your prompts were designed to reduce undertriggering on tools or skills, these models might now overtrigger. The fix is to soften any aggressive language. Where you might have said "CRITICAL: You MUST use this tool when...", you can use more normal prompting such as "Use this tool when...".
488Claude Opus 4.5 and Claude Opus 4.6 are also more responsive to the system prompt than previous models. If your prompts were designed to reduce undertriggering on tools or skills, these models might now overtrigger. The fix is to soften any aggressive language. Where you might have said "CRITICAL: You MUST use this tool when...," you can use more normal prompting such as "Use this tool when..." instead.
489489
490490### Optimize parallel tool calling
491491
from line 822
822822
8238233. **Set up convenience tools:** Encourage Claude to create setup scripts (for example, `init.sh`) to gracefully start servers and run test suites and linters. This prevents repeated work when continuing from a fresh context window.
824824
8254. **Starting fresh versus compacting:** When a context window is cleared, consider starting with a brand new context window rather than using compaction. Claude's latest models are extremely effective at discovering state from the local filesystem. In some cases, you might want to take advantage of this over compaction. Be prescriptive about how it should start:
8254. **Choose between starting fresh and compacting:** When a context window is cleared, consider starting with a brand new context window rather than using compaction. Claude's latest models are extremely effective at discovering state from the local filesystem. In some cases, you might want to take advantage of this over compaction. Be prescriptive about how it should start:
826826
827827 * "Call pwd; you can only read and write files in this directory."
828828 * "Review progress.txt, tests.json, and the git logs."
build-with-claude/prompt-engineering/prompting-claude-fable-5 Changed · +1 / -1 lines
from line 171
171171
172172* **Start at the top of your difficulty range.** Pick a task harder than what you'd assign to prior models, and have Claude Fable 5 scope it, ask clarifying questions, and carry it out.
173173* **Make self-verification explicit in long-run prompts.** Separate, fresh-context verifier subagents tend to outperform self-critique. For long-running tasks, instruct: `Establish a method for checking your own work at an interval of [X] as you build. Run this every [X interval], verifying your work with subagents against the specification.`
174* **Refactor existing prompts and skills.** Skills developed for prior models are often too prescriptive for Claude Fable 5 and can degrade output quality. Review and consider removing older instructions if default performance is better. Claude Fable 5 also does a good job of updating skills on the fly based on what it learns from the task at hand.
174* **Refactor existing prompts and skills.** Skills developed for prior models are often too prescriptive for Claude Fable 5 and can degrade output quality. Review and consider removing older instructions if default performance is better. Claude Fable 5 also does a good job of updating skills as it works, based on what it learns from the current task.
175175* **Don't instruct Claude to reproduce its reasoning in the response.** Prompts, skills, or harness instructions that tell the model to echo, transcribe, or explain its internal reasoning as response text might trigger the [`reasoning_extraction` refusal category](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response) on Claude Fable 5. Server-side fallback with `fallbacks: "default"` doesn't retry requests declined with `reasoning_extraction`; that refusal is returned to you. Audit existing skills and system prompts for reflection or show-your-thinking instructions when migrating. If your application needs reasoning visibility, read the structured `thinking` blocks from [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) instead, and use a [send-to-user tool](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5#create-a-send-to-user-tool) to surface progress during long runs. You can still ask for a short explanation of the answer or a summary of the actions taken; see [Keep reasoning in thinking blocks](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#keep-reasoning-in-thinking-blocks).
176176* **Create a send-to-user tool.** For long, asynchronous agents, a client-side tool delivers messages to the user verbatim without ending the turn. See [Create a send-to-user tool](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5#create-a-send-to-user-tool).
177177
build-with-claude/prompt-engineering/prompting-claude-opus-5 Changed · +1 / -1 lines
from line 14
1414
1515* **Agentic coding:** Claude Opus 5 is strongest on difficult coding tasks: multifile features, larger refactors, and end-to-end feature work. It completes full tasks rather than leaving stubs or placeholders, and it performs best when given the complete task specification up front and left to run. It also performs well on easier tasks such as single-turn edits, where the difference from prior models is smaller.
1616* **Code review and bug-finding:** Claude Opus 5 reviews code with high precision and recall: it finds real bugs at a high rate per pass, and its additional findings are mostly real issues rather than false positives. Accuracy holds at lower effort settings, which supports a fast pass at review time and a more thorough pass later. If your review prompt says "only report high-severity issues" or "be conservative," the model might follow that instruction literally and report less; ask it to report everything and filter in a separate pass instead.
17* **Efficiency at lower effort:** `low` and `medium` [effort](https://platform.claude.com/docs/en/build-with-claude/effort) produce strong quality at a fraction of the tokens and latency of higher settings. Start with the default (`high`) and adjust based on your evals: use `low` and `medium` liberally as your primary control for token cost and response time wherever quality holds, and step up to `xhigh` for demanding coding and agentic work. If you carried effort defaults over from a prior model, re-run an effort sweep on your own evals. See [Effort](https://platform.claude.com/docs/en/build-with-claude/effort#recommended-effort-levels-for-claude-opus-5) for the full recommendations.
17* **Efficiency at lower effort:** `low` and `medium` [effort](https://platform.claude.com/docs/en/build-with-claude/effort) produce strong quality at a fraction of the tokens and latency of higher settings. Start with the default (`high`) and adjust based on your evals: use `low` and `medium` liberally as your primary control for token cost and response time wherever quality holds, and step up to `xhigh` for demanding coding and agentic work. If you carried effort defaults over from a prior model, re-run an effort sweep on your own evals. See [recommended effort levels](https://platform.claude.com/docs/en/build-with-claude/effort#recommended-effort-levels-for-claude-opus-5) for the full guidance.
1818* **Vision:** Claude Opus 5 is strong on chart, document, and diagram understanding, and on UI and frontend visual replication. Re-validate any prompt-side vision workarounds you tuned for prior models; they might no longer be needed. Vision performance is strongest when the model has tools to iteratively analyze, crop, and visually verify its work, and tool use is a more cost-effective lever than thinking alone.
1919* **Long-context work:** Claude Opus 5 has a [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) as both the default and the maximum, and its instruction following, tool calling, and reasoning stay consistent throughout the window.
2020* **Office and document tasks:** Claude Opus 5 generates and works with complex, multisheet spreadsheets with non-trivial formulas, and it produces well-structured slide decks. Prompt it with any specific styles or templates it needs to follow.
build-with-claude/prompt-engineering/prompting-claude-opus-5-5 Changed · +2 / -2 lines
from line 78
7878
7979Claude Opus 5.5 runs safety classifiers, including for biology, cybersecurity, and reasoning extraction.
8080
81* **Biology:** The biology safeguards are the same as Claude Fable 5.1's and are new if you're coming from Claude Opus 5. Everyday health and educational questions are unaffected. If the biology classifier gets in the way of your organization's life sciences work, apply to the [Life Sciences Verification Program](https://www.anthropic.com/news/life-sciences-verification-program).
82* **Cybersecurity:** Finding vulnerabilities in source code is allowed. High-risk dual-use cybersecurity activities are not. If the cybersecurity classifier gets in the way of your organization's legitimate security work, apply to the [Cyber Verification Program](https://support.claude.com/en/articles/14604842).
81* **Biology:** The biology safeguards are the same as Claude Fable 5.1's and are new if you're coming from Claude Opus 5. Everyday health and educational questions are unaffected. If the biology classifier blocks your organization's life sciences work, apply to the [Life Sciences Verification Program](https://www.anthropic.com/news/life-sciences-verification-program).
82* **Cybersecurity:** Finding vulnerabilities in source code is allowed. High-risk dual-use cybersecurity activities are not. If the cybersecurity classifier blocks your organization's legitimate security work, apply to the [Cyber Verification Program](https://support.claude.com/en/articles/14604842).
8383* **Reasoning extraction:** Requests that push the model to reproduce its internal reasoning in the response text might be declined with the `reasoning_extraction` category. If your prompts ask the model to write its reasoning in the response, remove those instructions, set `display: "summarized"`, and read the summarized reasoning from the thinking blocks instead; see [Prompts written for thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5-5#prompts-written-for-thinking-disabled). You can still ask for a short explanation of the answer or a summary of the actions taken; see [Keep reasoning in thinking blocks](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#keep-reasoning-in-thinking-blocks).
8484
8585A classifier decline arrives as a normal response with `stop_reason: "refusal"` and a `stop_details` object naming the category. You can have the request retried automatically on a fallback model, except for `reasoning_extraction` declines, which server-side fallback returns to you instead of retrying; see [Refusals and fallback](https://platform.claude.com/docs/en/models/opus-5-5/whats-new-opus-5-5#refusals-and-fallback).
build-with-claude/prompt-engineering/prompting-claude-sonnet-5-5 Changed · +2 / -2 lines
from line 110
110110
111111Next, remove older instructions such as "hold all findings for the final response." If you then want updates at predictable points, for example a line on what the model is about to do before its first tool call and a short recap at the end, say so in the system prompt. The model follows instructions like this. Updates at set points help most in human-in-the-loop work.
112112
113If long tool-calling turns still go quiet for longer than you want, your harness can prompt an update. Have it count consecutive tool-calling steps that send the user no text or progress update. After several in a row, for example five, append a one-turn reminder after the latest tool results. Send it as a [turn-scoped system message](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#turn-scoped-system-messages) (beta), with text like this:
113If long tool-calling turns still go quiet for longer than you want, your harness can prompt an update. Have it count consecutive tool-calling steps that send the user no text or progress update. After several in a row, for example five, append a one-turn reminder after the latest tool results. Send it as a [turn-scoped system message](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#turn-scoped-system-messages) (beta), with text such as the following:
114114
115115```text wrap
116116The user hasn't heard from you in a while — say in a few words what you're doing, then continue.
from line 134
134134
135135Claude Sonnet 5.5 is trained to resist indirect prompt injection, meaning malicious instructions that arrive through tool results and other content it reads during a task. Sometimes it treats a genuine user message as a possible injection. Suppose a message the user typed mid-task reaches the model as a [mid-conversation system message](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) placed directly after a tool result, or inside a `tool_result` block. The model can then tell the user that the tool result contained text posing as a message from them, and ignore the message or ask the user to confirm it.
136136
137A token countdown that your harness adds after every tool result can cause this. So can letting users send messages while the model is partway through a multistep turn, or having your harness add instructions or context after the tool results on every step. In each case, text arrives right after the tool results. With a countdown or per-step instructions, that can occur on every tool call. An occasional one-turn reminder, like the one in [User-facing progress updates](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-sonnet-5-5#user-facing-progress-updates), arrives far less often. If you see this reaction to a reminder of your own, send the reminder less often. To avoid the misread:
137A token countdown that your harness adds after every tool result can cause this. So can letting users send messages while the model is partway through a multistep turn, or having your harness add instructions or context after the tool results on every step. In each case, text arrives right after the tool results. With a countdown or per-step instructions, that can occur on every tool call. An occasional one-turn reminder, such as the one in [User-facing progress updates](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-sonnet-5-5#user-facing-progress-updates), arrives far less often. If you see this reaction to a reminder of your own, send the reminder less often. To avoid the misread:
138138
139139* Never put user text inside a `tool_result` block. The model misreads that placement most often.
140140* Deliver mid-turn user input as a user turn. Append the user's words as a text block in the user message that carries the `tool_result` blocks, after the last `tool_result`.
build-with-claude/skills-guide Changed · +2 / -2 lines
from line 4522
45224522To migrate:
45234523
452445241. **Remove the beta header.** Drop `anthropic-beta: skills-2025-10-02` from your requests. With the SDK, call `client.skills` (csharp, go: `client.Skills`; java: `client.skills()`; php: `$client->skills`) instead of `client.beta.skills` (csharp, go: `client.Beta.Skills`; java: `client.beta().skills()`; php: `$client->beta->skills`); keeping `client.beta.skills` (csharp, go: `client.Beta.Skills`; java: `client.beta().skills()`; php: `$client->beta->skills`) works only on the [SDK releases that no longer send the header](https://platform.claude.com/docs/en/build-with-claude/skills-guide#sdk-beta-namespace). Earlier releases send it from `client.beta.skills` (csharp, go: `client.Beta.Skills`; java: `client.beta().skills()`; php: `$client->beta->skills`) even when you pass no beta names.
45252. **Rename fields** in your code: `display_title` to `display_name`, `latest_version` to `latest_version_id`, and read `source.type` instead of comparing `source` to a string.
45252. **Rename fields** in your code: `display_title` to `display_name` and `latest_version` to `latest_version_id`. Read `source.type` instead of comparing `source` to a string.
452645263. **Use version IDs.** Wherever you stored an epoch-microsecond version, store the version's `id` instead, or use `latest`. Skill references in Messages requests accept a version ID, `latest`, or (for Anthropic Skills) the catalog version.
452745274. **Review delete calls.** `DELETE /v1/skills/{skill_id}` now deletes every version with the Skill. If you relied on the beta's refusal as a safeguard, add your own check.
45284528
45294529<Warning>
4530 After migrating, deleting a Skill through `client.skills` (csharp, go: `client.Skills`; java: `client.skills()`; php: `$client->skills`) or `client.beta.skills` (csharp, go: `client.Beta.Skills`; java: `client.beta().skills()`; php: `$client->beta->skills`) removes the Skill together with all of its versions in one call.
4530 After migrating, deleting a Skill through `client.skills` (csharp, go: `client.Skills`; java: `client.skills()`; php: `$client->skills`) or `client.beta.skills` (csharp, go: `client.Beta.Skills`; java: `client.beta().skills()`; php: `$client->beta->skills`) also deletes all of its versions in one call.
45314531</Warning>
45324532
45334533A Skill whose versions were all deleted under the beta has no current version to return: `GET /v1/skills/{skill_id}` returns a 400 error and the Skill is omitted from list responses until you upload a version to it. You can still delete it.
cli-sdks-libraries/cli/scripting Changed · +1 / -1 lines
from line 25
2525 --title "Summarization task"
2626 ```
2727
28 ```json Output
28 ```text Output wrap
2929 {
3030 "id": "session_01JZCh78XvmxJjiXVy3oSi7K",
3131 "status": "running"
cli-sdks-libraries/cli/using Changed · +2 / -2 lines
from line 48
4848ant models retrieve --model-id claude-opus-5-5 --format yaml
4949```
5050
51```yaml Output
51```text Output wrap
5252type: model
5353id: claude-opus-5-5
5454display_name: Claude Opus 5.5
from line 74
7474ant beta:agents list --transform "{id,name,model}" --format jsonl
7575```
7676
77```jsonl Output
77```text Output
7878{"id": "agent_011CYm1BLqPX...", "name": "Docs CLI Test Agent", "model": "claude-opus-5-5"}
7979{"id": "agent_011CYkVwfaEt...", "name": "Coffee Making Assistant", "model": "claude-opus-5-5"}
8080{"id": "agent_011CYixHhtUP...", "name": "Coding Assistant", "model": "claude-opus-5-5"}
cli-sdks-libraries/sdks/go Changed · +2 / -2 lines
from line 26
2626
2727## Requirements
2828
29This library requires Go 1.24+.
29This library requires Go 1.25+.
3030
3131## Usage
3232
from line 716
716716
717717#### Undocumented request parameters
718718
719To make requests using undocumented parameters, you can use either the `option.WithQuerySet()` or the `option.WithJSONSet()` functions.
719To make requests using undocumented parameters, you can use either the `option.WithQuerySet()` or the `option.WithJSONSet()` function.
720720
721721```go
722722params := FooNewParams{
cli-sdks-libraries/sdks/ruby Changed · +1 / -1 lines
from line 80
8080
8181## Input schema and tool calling
8282
83The SDK provides helper mechanisms to define structured data classes for tools and let Claude automatically run them. For detailed documentation on tool use patterns including the tool runner, see [Tool Runner (SDK)](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-runner).
83The SDK provides helper mechanisms to define structured data classes for tools and let Claude automatically run them. For detailed documentation on tool use patterns including the tool runner, see [Tool runner (SDK)](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-runner).
8484
8585```ruby
8686anthropic = Anthropic::Client.new
manage-claude/admin-api Changed · +1 / -1 lines
from line 1704
17041704 ```
17051705</CodeGroup>
17061706
1707```json
1707```text wrap
17081708{
17091709 "id": "12345678-1234-5678-1234-567812345678",
17101710 "type": "organization",
manage-claude/claude-code-analytics-api Changed · +1 / -1 lines
from line 147
147147
148148The API returns data in the following format:
149149
150```json
150```text wrap
151151{
152152 "data": [
153153 {
manage-claude/compliance-activity-feed Changed · +1 / -1 lines
from line 23
2323 -H "anthropic-version: 2023-06-01"
2424```
2525
26```json Response
26```text Response wrap
2727{
2828 "data": [
2929 {
manage-claude/compliance-api Changed · +1 / -1 lines
from line 21
2121
2222A successful response returns a JSON object containing `data` (an array of `Activity` records), `has_more`, `first_id`, and `last_id`:
2323
24```json Response
24```text Response wrap
2525{
2626 "data": [
2727 {
manage-claude/compliance-api-access Changed · +1 / -1 lines
from line 129
129129* **Settings UI.** For a Compliance Access Key, open the **Keys** section in [claude.ai > Organization settings > API](https://claude.ai/admin-settings/api-access) and read the **Scopes** column for the key. Admin API keys, listed on the [Admin keys](https://platform.claude.com/settings/admin-keys) page (`platform.claude.com/settings/admin-keys`) in the Claude Console, have no selectable scopes.
130130* **Error responses.** A call that exceeds the key's scopes returns a 403 with a message in the format `Missing required scopes. Got: [<scopes the key carries>] Needed one of: [<scopes the endpoint accepts>]` (`Needed: [...]` on the delete endpoints). See [Handle Compliance API errors](https://platform.claude.com/docs/en/manage-claude/compliance-errors#403-forbidden) for the full error catalog.
131131
132```json
132```text
133133{
134134 "error": {
135135 "type": "permission_error",
manage-claude/compliance-faq Changed · +1 / -1 lines
from line 43
4343 <Accordion title="Why does my Admin API key return 403 on chat or file endpoints?">
4444 An Admin API key's only Compliance API scope is `read:compliance_activities`, which authorizes the Activity Feed only. Every other Compliance API endpoint requires a scope that only a Compliance Access Key created in claude.ai can carry. Calling a content or directory endpoint with an Admin API key returns a 403 naming the scope that endpoint family requires: `read:compliance_user_data` for chats, files, projects, project attachments, sessions, users, and group members, and `read:compliance_org_data` for organizations, roles, groups, and effective organization settings. For example, listing chats returns the following response.
4545
46 ```json Response
46 ```text Response
4747 {
4848 "error": {
4949 "type": "permission_error",
manage-claude/organization-webhooks Changed · +2 / -2 lines
from line 85
8585| `updated_at` | string | When the endpoint last changed. Set by Anthropic. |
8686| `signing_secret` | string | A `whsec_`-prefixed secret, created with the endpoint. Only the responses that create the endpoint or replace the secret include it, so store it securely. |
8787
88```json
88```text wrap
8989{
9090 "id": "wep_011CZkZDf8HnUq2mTxRbVn4s",
9191 "url": "https://example.com/anthropic-webhooks",
from line 232
232232
233233With no endpoints, the API returns an empty list:
234234
235```json
235```text wrap
236236{
237237 "data": [],
238238 "has_more": false
manage-claude/rate-limits-api Changed · +1 / -1 lines
from line 493
493493For complete parameter details and response schemas, see the [Workspace Rate Limits API reference](https://platform.claude.com/docs/en/api/organization/workspaces/rate_limits/list).
494494
495495<Tip>
496 To retrieve your organization's workspace IDs, use the [List Workspaces](https://platform.claude.com/docs/en/api/organization/workspaces/list) endpoint, or find them on the [Workspaces](https://platform.claude.com/settings/workspaces) page in the Claude Console. List Workspaces includes the default workspace only when you pass `include_default=true`.
496 To retrieve your organization's workspace IDs, use the [List Workspaces](https://platform.claude.com/docs/en/api/organization/workspaces/list) endpoint, or find them under [Workspaces in the Claude Console](https://platform.claude.com/settings/workspaces). List Workspaces includes the default workspace only when you pass `include_default=true`.
497497</Tip>
498498
499499<CodeGroup>
manage-claude/spend-limits-api Changed · +2 / -2 lines
from line 372
372372 ```
373373</CodeGroup>
374374
375```json
375```text wrap
376376{
377377 "data": [
378378 {
from line 625
625625 ```
626626</CodeGroup>
627627
628```json
628```text wrap
629629{
630630 "type": "spend_limit",
631631 "id": "spl_01RsTuVwXyZaBcDeFgHiJk",
manage-claude/user-profiles Changed · +2 / -2 lines
from line 181
181181
182182The response is the new profile:
183183
184```json
184```text wrap
185185{
186186 "type": "user_profile",
187187 "id": "uprof_011CZkZCu8hGbp5mYRQgUmz9",
from line 403
403403
404404A profile's `enforcement_status` and `enforcement_actions` fields report the enforcement actions that Anthropic has open on the end customer. An enforcement action is a restriction or a ban. Every response that returns a profile includes both fields: create, retrieve, update, and each profile in a list. Send these requests with no `user-profiles-` value in the `anthropic-beta` header, because `user-profiles-2026-09-04` and earlier values leave the fields out. The following example shows the fields on a retrieved profile, with the other fields left out:
405405
406```json
406```text wrap
407407{
408408 "type": "user_profile",
409409 "id": "uprof_011CZkZCu8hGbp5mYRQgUmz9",
manage-claude/user-profiles-verification-portal Changed · +1 / -1 lines
from line 127
127127
128128The response contains the link and the time it stops working:
129129
130```json
130```text wrap
131131{
132132 "type": "user_profile_action_url",
133133 "url": "https://portal.anthropic.com/enroll?enrollment_token=...",
manage-claude/wif-admin-api Changed · +2 / -2 lines
from line 471
471471
472472The create endpoint returns the new service account:
473473
474```json
474```text wrap
475475{
476476 "id": "svac_...",
477477 "name": "inference-worker",
from line 1242
12421242
12431243The list endpoint returns a page of rules and the cursor for the next page:
12441244
1245```json
1245```text wrap
12461246{
12471247 "data": [{ "id": "fdrl_...", "name": "gha-deploy", "...": "..." }],
12481248 "next_page": "..."
manage-claude/wif-providers/gcp Changed · +1 / -1 lines
from line 101
101101}
102102```
103103
104**Federation rule:** Match on both the `sub` and `email` claims. `email` is the readable service-account address; `sub` is the service account's numeric unique ID, which Google never reuses, so pinning it protects the rule if the service account is deleted and a new one is later created with the same email. Find the unique ID with `gcloud iam service-accounts describe SA_EMAIL --format='value(uniqueId)'`.
104**Federation rule:** Match on both the `sub` and `email` claims. `email` is the readable service-account address; `sub` is the service account's numeric unique ID, which Google never reuses, so pinning it protects the rule if the service account is deleted and a new one is later created with the same email. Find the unique ID with `gcloud iam service-accounts describe [email protected] --format='value(uniqueId)'`.
105105
106106```json
107107{