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

One read of Claude Developer Platformapi-20260824T210708Z

95 pages moved out of 612 read.

Pages moved 95 significant first
Pages read 612 in this capture
Captured 21:07 UTC
Corpus hash 91049975d04a corpus-hash

What this read moved

1-25 of 95, page 1 of 4

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

about-claude/models/choosing-a-model Changed · +4 / -4 lines

from line 60
6060 
6161**Claude Opus 5** (`claude-opus-5`) is a step-change improvement over Claude Opus 4.8, strong on deep reasoning, agentic and long-horizon tasks, and test-time compute scaling. Claude Opus 5 supports a 1M token context window by default and up to 128k output tokens, and is priced at $5 USD per million input tokens and $25 USD per million output tokens.
6262 
63**Claude Fable 5** (`claude-fable-5`) is Anthropic's most capable widely released model, delivering next-generation intelligence for long-running agents. **Claude Mythos 5** (`claude-mythos-5`) is available through [Project Glasswing](https://anthropic.com/glasswing). Both models support a 1M token context window by default, up to 128k output tokens, and always-on [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). See [Introducing Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5) for launch details.
63**Claude Fable 5** (`claude-fable-5`) is Anthropic's most capable widely released model, delivering next-generation intelligence for long-running agents. **Claude Mythos 5** (`claude-mythos-5`) is available through [Project Glasswing](https://anthropic.com/glasswing). Both models support a 1M token context window by default, up to 128k output tokens, and always-on [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). See [Introducing Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) for launch details.
6464 
6565Claude Fable 5 and Claude Mythos 5 are priced at $10 USD per million input tokens and $50 USD per million output tokens.
6666 
from line 98
9898## Next steps
9999 
100100<CardGroup cols={2}>
101 <Card title="Model comparison chart" icon="settings" href="https://platform.claude.com/docs/en/about-claude/models/overview">
101 <Card title="Model comparison chart" icon="settings" href="https://platform.claude.com/docs/en/models/overview">
102102 See detailed specifications and pricing for the latest Claude models
103103 </Card>
104104 
105 <Card title="What's new in Claude Opus 5" icon="sparkle" href="https://platform.claude.com/docs/en/about-claude/models/whats-new-opus-5">
105 <Card title="What's new in Claude Opus 5" icon="sparkle" href="https://platform.claude.com/docs/en/models/opus-5/whats-new-opus-5">
106106 Explore the latest improvements in Claude Opus 5
107107 </Card>
108108 
109 <Card title="What's new in Claude Sonnet 5" icon="sparkle" href="https://platform.claude.com/docs/en/about-claude/models/whats-new-sonnet-5">
109 <Card title="What's new in Claude Sonnet 5" icon="sparkle" href="https://platform.claude.com/docs/en/models/sonnet-5/whats-new-sonnet-5">
110110 The best combination of speed and intelligence
111111 </Card>
112112 

about-claude/models/introducing-claude-fable-5-and-claude-mythos-5 Page removed · 133 lines, page removed

## Models ## Refusals, fallback, and billing on Claude Fable 5 ### Refusals ### Fallback ### Billing ## Availability ## Working with Claude Fable 5 and Claude Mythos 5 ### Prompting ## Messages API on Claude Fable 5 and Claude Mythos 5 ### Adaptive thinking is always on ### Raw thinking content is never returned ## Supported features ## Migrating from earlier models ## Next steps

The page is gone upstream. What it last said is kept here.

about-claude/models/migration-guide Changed · +13 / -13 lines

from line 20
2020 
2121## Migrating to Claude Mythos 5 and Claude Fable 5
2222 
23[Claude Fable 5](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5) is Anthropic's most capable widely released model, available on the Claude API, [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), [Google Cloud](https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai), and [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry). [Claude Mythos 5](https://anthropic.com/glasswing) shares the same capabilities and is offered only to approved customers in Project Glasswing.
23[Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) is Anthropic's most capable widely released model, available on the Claude API, [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), [Google Cloud](https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai), and [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry). [Claude Mythos 5](https://anthropic.com/glasswing) shares the same capabilities and is offered only to approved customers in Project Glasswing.
2424 
2525The baseline settings shared by `claude-fable-5` and `claude-mythos-5`:
2626 
from line 38
3838 
3939### Migrating to Claude Mythos 5 and Claude Fable 5 from Claude Mythos Preview
4040 
41[Claude Mythos 5](https://anthropic.com/glasswing) is the access-gated successor to [Claude Mythos Preview](https://anthropic.com/glasswing), the invitation-only research preview. [Claude Fable 5](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5) offers the same capabilities and does not require access approval. The changes in this section apply equally to both targets.
41[Claude Mythos 5](https://anthropic.com/glasswing) is the access-gated successor to [Claude Mythos Preview](https://anthropic.com/glasswing), the invitation-only research preview. [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) offers the same capabilities and does not require access approval. The changes in this section apply equally to both targets.
4242 
4343Migration is mostly drop-in. Claude Mythos 5 and Claude Fable 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Mythos Preview, and token counts are roughly unchanged because all three models use the same tokenizer. The key changes to check are the features that are no longer available (listed in the next section) and thinking output. If you migrate to Claude Fable 5, also plan for safety classifier refusals, which Claude Mythos Preview and Claude Mythos 5 do not have; see [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
4444 
from line 330
330330 
331331### Migrating to Claude Mythos 5 and Claude Fable 5 from Claude Opus 5
332332 
333Claude Fable 5 and Claude Mythos 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Opus 5, with the same [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default and the same [128k max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview). The prefill and sampling-parameter restrictions, and the thinking display behavior, carry over from Claude Opus 5 unchanged. The changes to check are always-on thinking, pricing, Priority Tier, and data retention.
333Claude Fable 5 and Claude Mythos 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Opus 5, with the same [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default and the same [128k max output tokens](https://platform.claude.com/docs/en/models/overview). The prefill and sampling-parameter restrictions, and the thinking display behavior, carry over from Claude Opus 5 unchanged. The changes to check are always-on thinking, pricing, Priority Tier, and data retention.
334334 
335335#### Update your model name
336336 
from line 365
365365 If your code is on Claude Opus 4.7 or earlier, first apply the relevant [Migrating to Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-opus-5) from-section for the API-level changes from your current model, then the remaining delta in this section.
366366</Note>
367367 
368Migration is mostly drop-in. Claude Fable 5 and Claude Mythos 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Opus 4.8, with the same [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default and the same [128k max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview). Token counts are roughly unchanged because the models use the same tokenizer. The key changes to check are always-on [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), thinking output, safety classifier refusals (Claude Fable 5 only), and pricing.
368Migration is mostly drop-in. Claude Fable 5 and Claude Mythos 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Opus 4.8, with the same [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default and the same [128k max output tokens](https://platform.claude.com/docs/en/models/overview). Token counts are roughly unchanged because the models use the same tokenizer. The key changes to check are always-on [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), thinking output, safety classifier refusals (Claude Fable 5 only), and pricing.
369369 
370370#### Update your model name
371371 
from line 701
701701 
702702Claude Opus 5 is a step-change improvement over Claude Opus 4.8, strong on deep reasoning, agentic and long-horizon tasks, and test-time compute scaling. For behavioral differences and model-specific prompting patterns, see [Prompting Claude Opus 5](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5).
703703 
704Claude Opus 5 is a drop-in upgrade for Claude Opus 4.8 at the same pricing of $5 per million input tokens and $25 per million output tokens; see [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing). There are two breaking changes for code already running on Claude Opus 4.8, covered under Breaking changes below. Claude Opus 5 supports the same set of features as Claude Opus 4.8, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) (the default, with no beta header), [128k max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), with two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. See each tool page for model availability.
704Claude Opus 5 is a drop-in upgrade for Claude Opus 4.8 at the same pricing of $5 per million input tokens and $25 per million output tokens; see [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing). There are two breaking changes for code already running on Claude Opus 4.8, covered under Breaking changes below. Claude Opus 5 supports the same set of features as Claude Opus 4.8, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) (the default, with no beta header), [128k max output tokens](https://platform.claude.com/docs/en/models/overview), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), with two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. See each tool page for model availability.
705705 
706706### Migrating to Claude Opus 5 from Claude Opus 4.8
707707 
from line 794
794794 
795795### Migrating to Claude Opus 5 from Claude Opus 4.7
796796 
797Claude Opus 5 should have strong out-of-the-box performance on existing Claude Opus 4.7 prompts and evals, at the same pricing of $5 per million input tokens and $25 per million output tokens. It supports the same set of features as Claude Opus 4.7, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows), [128k max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), with two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. It also adds [mid-conversation system messages](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) and publicly documents [refusal stop details](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response). On the Claude API, Claude Opus 5 also supports [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool) as the stable `computer_toolset_20260801` toolset and the [browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool) for tasks inside webpages, neither of which Claude Opus 4.7 supports; existing integrations on the earlier `computer_20251124` version continue to work unchanged on both models. To upgrade 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).
797Claude Opus 5 should have strong out-of-the-box performance on existing Claude Opus 4.7 prompts and evals, at the same pricing of $5 per million input tokens and $25 per million output tokens. It supports the same set of features as Claude Opus 4.7, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows), [128k max output tokens](https://platform.claude.com/docs/en/models/overview), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), with two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. It also adds [mid-conversation system messages](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) and publicly documents [refusal stop details](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response). On the Claude API, Claude Opus 5 also supports [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool) as the stable `computer_toolset_20260801` toolset and the [browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool) for tasks inside webpages, neither of which Claude Opus 4.7 supports; existing integrations on the earlier `computer_20251124` version continue to work unchanged on both models. To upgrade 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).
798798 
799799<Note>
800800 If your code is on Claude Opus 4.6 or earlier, use [Migrating to Claude Opus 5 from Claude Opus 4.6 and earlier Opus models](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-46) instead. That section includes breaking changes (sampling parameters rejected, manual extended thinking rejected, new tokenizer) that the upgrade from Claude Opus 4.7 alone does not cover.
from line 906
906906Claude Opus 5 should have strong out-of-the-box performance on existing Claude Opus 4.6 prompts and evals at the same pricing, but there are a handful of behavioral and API changes worth knowing about as you migrate. Most of these changes took effect in Claude Opus 4.7; two more, thinking on by default and an effort cap on disabling thinking, take effect on Claude Opus 5. All of them are covered below, so this section is complete for code coming straight from Claude Opus 4.6. Claude Opus 5 supports the same set of features as Claude Opus 4.6, including:
907907 
908908* [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) at standard API pricing with no long-context premium
909* [128k max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview)
909* [128k max output tokens](https://platform.claude.com/docs/en/models/overview)
910910* [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking)
911911* [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)
912912* [Batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing)
from line 2012
20122012 
20132013### Migrating to Claude Opus 5 from Claude Sonnet 5
20142014 
2015Claude Opus 5 and Claude Sonnet 5 share the same API surface: both run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, both default the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to `high` on the Claude API and Claude Code, both serve a [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default with [128k max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview), and neither supports [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models). Manual extended thinking and non-default sampling parameters return a 400 error on both models, as does assistant prefill.
2015Claude Opus 5 and Claude Sonnet 5 share the same API surface: both run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, both default the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to `high` on the Claude API and Claude Code, both serve a [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default with [128k max output tokens](https://platform.claude.com/docs/en/models/overview), and neither supports [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models). Manual extended thinking and non-default sampling parameters return a 400 error on both models, as does assistant prefill.
20162016 
20172017#### Update your model name
20182018 
from line 2027
20272027 
202820282. **Disabling thinking is capped at `high` effort:** On Claude Sonnet 5, `thinking: {type: "disabled"}` is accepted at any effort level. On Claude Opus 5, it is accepted only at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below; a request that combines `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error, enforced on each request. Audit requests that disable thinking before you migrate.
20292029 
20303. **Mid-conversation system messages:** Claude Opus 5 accepts `role: "system"` messages immediately after a user turn in the `messages` array (subject to [placement rules](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#limitations)). This feature is not available on Claude Sonnet 5; use the top-level `system` field instead. If you maintain code paths that rebuild the full message history to update instructions, you can simplify them and preserve [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns.
20303. **Mid-conversation system messages:** Claude Opus 5 accepts `role: "system"` messages immediately after a user turn in the `messages` array (subject to [placement rules](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#limitations)). This feature is not available on Claude Sonnet 5. If you maintain code paths that rebuild the full message history to update instructions, you can simplify them and preserve [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns.
20312031 
203220324. **Web fetch is not available:** The [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) tool is available on Claude Sonnet 5 but not on Claude Opus 5.
20332033 
from line 2651
26512651 
26522652### Migrating to Claude Sonnet 5 from Claude Haiku 4.5
26532653 
2654Claude Haiku 4.5 and Claude Sonnet 5 differ more at the API level than adjacent models within one class: Claude Haiku 4.5 uses manual [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) (off by default), a 200k token context window, and up to 64k output tokens, while Claude Sonnet 5 runs with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, serves a [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default, and supports up to [128k output tokens](https://platform.claude.com/docs/en/about-claude/models/overview).
2654Claude Haiku 4.5 and Claude Sonnet 5 differ more at the API level than adjacent models within one class: Claude Haiku 4.5 uses manual [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) (off by default), a 200k token context window, and up to 64k output tokens, while Claude Sonnet 5 runs with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, serves a [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default, and supports up to [128k output tokens](https://platform.claude.com/docs/en/models/overview).
26552655 
26562656#### Update your model name
26572657 
from line 2691
26912691 
26922692Claude Haiku 4.5 is the fastest and most intelligent Haiku model with near-frontier performance, delivering premium model quality for interactive applications and high-volume processing.
26932693 
2694For a complete overview of capabilities, see the [models overview](https://platform.claude.com/docs/en/about-claude/models/overview).
2694For a complete overview of capabilities, see the [models overview](https://platform.claude.com/docs/en/models/overview).
26952695 
26962696<Note>
26972697 For Claude Haiku 4.5 pricing, see [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing).
from line 2719
27192719 
27202720**Review new rate limits:** Haiku 4.5 has separate rate limits from Haiku 3.5. See [Rate limits](https://platform.claude.com/docs/en/api/rate-limits) documentation for details.
27212721 
2722**Explore new capabilities:** See the [models overview](https://platform.claude.com/docs/en/about-claude/models/overview) for details on context awareness, increased output capacity (64k tokens), higher intelligence, and improved speed.
2722**Explore new capabilities:** See the [models overview](https://platform.claude.com/docs/en/models/overview) for details on context awareness, increased output capacity (64k tokens), higher intelligence, and improved speed.
27232723 
27242724#### Breaking changes
27252725 
from line 2766
27662766## Get help
27672767 
27682768* Check the [API documentation](https://platform.claude.com/docs/en/api/overview) for detailed specifications
2769* Review [model capabilities](https://platform.claude.com/docs/en/about-claude/models/overview) for performance comparisons
2769* Review [model capabilities](https://platform.claude.com/docs/en/models/overview) for performance comparisons
27702770* Review [API release notes](https://platform.claude.com/docs/en/release-notes/api) for API updates
27712771* Contact support if you encounter any issues during migration
27722772 

about-claude/models/optimizing-for-cost-and-intelligence Changed · +14 / -2 lines

### Upgrade the model

from line 21
2121| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2222| Any workload, any model | Turn on prompt caching and trim unneeded tokens; both are free | [Cache repeated context](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#cache-repeated-context) · [Trim tokens](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#trim-input-and-context-tokens) |
2323| Costs are too high; quality is fine | Sweep effort down on your current model | [Tune effort](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#tune-effort) |
24| You are not on the latest model | Upgrade; the current model solves more, usually at lower cost per solved task | [Upgrade the model](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#upgrade-the-model) |
2425| You are choosing or switching models | Compare on cost per completed task, not per token | [Compare models](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#compare-models-on-cost-per-task) |
2526| Quality isn't good enough | If you lowered effort, restore it; otherwise try the next tier up at `low` effort | [Tune effort](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#tune-effort) · [Compare models](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#compare-models-on-cost-per-task) |
2627| Attempts end with `stop_reason: max_tokens` | Raise `max_tokens`; 64,000 covered every turn measured and cost nothing extra per solved task | [Set budgets](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#set-budgets-and-output-caps) |
from line 177
176177 
177178## Trade cost against intelligence
178179 
179These levers set where a single model sits between cost and intelligence: model choice, effort, re-running failures at a higher setting, and the budgets and caps it works within. Start with an effort sweep on your current model ([Tune effort](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#tune-effort)). From lowest to highest cost and capability, the current models are Claude Haiku 4.5, Claude Sonnet 5, Claude Opus 5, and Claude Fable 5 (the frontier model); [Models overview](https://platform.claude.com/docs/en/about-claude/models/overview) has the full lineup and prices.
180These levers set where a single model sits between cost and intelligence: model choice, effort, re-running failures at a higher setting, and the budgets and caps it works within. Start with an effort sweep on your current model ([Tune effort](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#tune-effort)). From lowest to highest cost and capability, the current models are Claude Haiku 4.5, Claude Sonnet 5, Claude Opus 5, and Claude Fable 5 (the frontier model); [Models overview](https://platform.claude.com/docs/en/models/overview) has the full lineup and prices.
180181 
181182### Compare models on cost per task
182183 
from line 199
198199 
199200The [multi-model strategies](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#combine-models) exist to spend frontier intelligence on that tail without paying frontier rates for the rest.
200201 
202### Upgrade the model
203 
204If you are a model or two behind, the cheapest lever is the model string. Anthropic ran recent Claude Opus and Claude Sonnet models through the same harness on the SWE-bench Pro[3](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#refs) subset, each at its shipped defaults, and priced each at list rates:
205 
206![Scatter chart: the current model in each family solves more tasks than its predecessor, usually at lower cost per solved task](https://platform.claude.com/docs/images/cost-intel-upgrade-ladder.png)
207 
208Anthropic prices the Opus line identically per token across versions, so any saving comes from efficiency: Opus 4.8 takes fewer turns and rereads less than Opus 4.7, so each solved task costs 13% less, and Opus 5 then solves 11 more points of tasks at the same cost. Sonnet 5's savings come from its lower per-token price, which more than offsets the extra tokens it uses per task compared with Sonnet 4.6.
209 
210Compare on cost per solved task, not per token: the same text costs about 30% more tokens on Claude Opus 4.7 and later, so a per-token comparison makes the newer models look more expensive by construction.
211 
201212### Tune effort
202213 
203214Effort is the most direct way to tune a model to your task. The `effort` parameter governs how much thinking, tool calling, and self-verification the model does, and the default (`high`) suits demanding tasks. Cost scales with all that activity; accuracy scales only with the part your task needs. Below the model's ceiling, the highest effort levels pay for depth the task never uses.
from line 619
608619| Data files through code execution | 92% on a 25-question data task | A gain, 25 of 25 instead of 6 of 25 | Faster | [Trim input and context tokens](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#trim-input-and-context-tokens) |
609620| Batch API | 50% | None | Results within 24 hours | [Batch work that can wait](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#batch-work-that-can-wait) |
610621| Prompt audit against the current model | 14% on both migrations measured | None; a gain on one | Faster (fewer tool rounds) | [Audit prompts against the current model](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#audit-prompts-against-the-current-model) |
622| Upgrade the model | Opus 4.7 to Opus 5: about 12% less per solved task, 11 more points; Sonnet 4.6 to Sonnet 5: 14% less, 5 more points | A gain | Neutral | [Upgrade the model](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#upgrade-the-model) |
611623| Lower effort | Knowledge work: `medium` 15% to 30%, `low` a third to a half; long coding: `medium` about half, `low` about three quarters | 1 to 3 points on knowledge work, 2 to 8 on long coding | Faster | [Tune effort](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#tune-effort) |
612624| Re-run failures | About half, at the same pass rate | None | Two runs on the tasks that fail | [Re-run failures at higher effort](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#re-run-failures-at-higher-effort) |
613625| Task budget | 18% to 47% | 3 to 4 points | Faster | [Set budgets and output caps](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#set-budgets-and-output-caps) |
from line 634
622634 
6236351. **WideSearch:** Wong et al., "WideSearch: Benchmarking Agentic Broad Info-Seeking," arXiv:2508.07999, 2025. Broad web-research tasks graded on a many-row table's completeness and accuracy; 200 problems, 3 runs per configuration. The caching and effort charts come from separate runs, so per-problem costs differ slightly. The cost-concentration chart is a separate 20-problem run, 3 runs per problem, costed from per-request billing records.
6246362. **GDPval:** OpenAI, "GDPval: Evaluating AI Model Performance on Real-World Economically Valuable Tasks," 2025. Knowledge-work deliverables graded against task rubrics; a 210-task run of the released gold set, one attempt per task. A Claude model grades, so absolute scores may differ from published results.
6253. **SWE-bench Pro:** Scale AI, "SWE-Bench Pro: Can AI Agents Solve Long-Horizon Software Engineering Tasks?", 2025. A 482-problem subset selected for compatibility with Anthropic's evaluation harness; scores are not comparable to the public leaderboard. Claude Opus 5 at the default effort averages two runs; reduced-effort settings are single runs. Escalation figures come task by task from those runs: `low` first, then the default on its failures, solved 92.5% to 93.6% across run pairings for about $0.70; `medium` first, 93.8% to 94.2% for about $0.95; the default re-run on its own failures, 94.0% for $1.58; everything at the default, 90.9% to 92.5% for $1.39. The Claude Sonnet 5 executor pairings on the advisor chart come from the same August 2026 series on this subset: the Sonnet-plus-Opus pairing was run twice (a run and an exact replication), the low-effort pairing once, and Claude Sonnet 5 alone twice (77.4%, the baseline for both Pro rows); the task-budget figures are one run per budget on the same subset. The Claude Fable 5 figure in [Compare models](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#compare-models-on-cost-per-task) is a single July 2026 run, also the task-budget chart's unbudgeted baseline; every budgeted run completed all 482 problems without harness errors.
6373. **SWE-bench Pro:** Scale AI, "SWE-Bench Pro: Can AI Agents Solve Long-Horizon Software Engineering Tasks?", 2025. A 482-problem subset selected for compatibility with Anthropic's evaluation harness; scores are not comparable to the public leaderboard. Claude Opus 5 at the default effort averages two runs; reduced-effort settings are single runs. Escalation figures come task by task from those runs: `low` first, then the default on its failures, solved 92.5% to 93.6% across run pairings for about $0.70; `medium` first, 93.8% to 94.2% for about $0.95; the default re-run on its own failures, 94.0% for $1.58; everything at the default, 90.9% to 92.5% for $1.39. The Claude Sonnet 5 executor pairings on the advisor chart come from the same August 2026 series on this subset: the Sonnet-plus-Opus pairing was run twice (a run and an exact replication), the low-effort pairing once, and Claude Sonnet 5 alone twice (77.4%, the baseline for both Pro rows); the task-budget figures are one run per budget on the same subset. The Claude Fable 5 figure in [Compare models](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#compare-models-on-cost-per-task) is a single July 2026 run, also the task-budget chart's unbudgeted baseline; every budgeted run completed all 482 problems without harness errors. The upgrade ladder is one run per model at its shipped defaults (two each for Opus 5 and Sonnet 5), run the same week in one harness and organization.
6266384. **BrowseComp:** Wei et al., "BrowseComp: A Simple Yet Challenging Benchmark for Browsing Agents," OpenAI, 2025. Effort figures use a 500-problem cut, one to three runs per setting. The cost-insurance chart uses 10 reliably solved problems from a 26-problem slice, 50 delegated and 70 solo runs ($6.45 compared with $11.99 per run in expectation); delegated figures carry a measurement band of about 20%.
6276395. **Agent-architecture scaling:** Kim et al., "Towards a Science of Scaling Agent Systems," arXiv:2512.08296, 2025. Independent external study, cited only for the direction of the finding on when delegation does not pay, not for any figure.
6286406. **DeepWideSearch:** "DeepWideSearch: Benchmarking Depth and Width in Agentic Information Seeking," arXiv:2510.20168, 2025. The 220 questions span 15 domains, each combining many-row collection with multi-hop retrieval; measured on the benchmark's standing row set, 3 runs per configuration.

about-claude/models/overview Page removed · 183 lines, page removed

## Choosing a model ### Claude Fable 5 and Claude Mythos 5 ### Latest models comparison ## Prompt and output performance ## Migrating to Claude Opus 5 ## Get started with Claude

The page is gone upstream. What it last said is kept here.

about-claude/models/whats-new-opus-5 Page removed · 351 lines, page removed

## New model ## New features ### Mid-conversation tool changes (beta) ### Default fallbacks mode ### Lower prompt cache minimum ### Fast mode ## Behavior changes ### Thinking on by default ### Effort matters more ### Disabling thinking requires effort `high` or below ### Model behavior differences ## Capability improvements ## Pricing ## Availability ## Migration guide ## Next steps

The page is gone upstream. What it last said is kept here.

about-claude/models/whats-new-sonnet-5 Page removed · 216 lines, page removed

## New model ## Behavior changes ### Adaptive thinking on by default ### Sampling parameters not accepted ### Manual extended thinking removed ## New tokenizer ## API constraints inherited from Claude Sonnet 4.6 ### Assistant message prefilling not supported ## Capability improvements ## Cybersecurity safeguards ## Pricing ## Availability ## Migration guide ## Next steps

The page is gone upstream. What it last said is kept here.

api/compliance Changed · +104447 / -30540 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 · +104368 / -30512 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 · +52228 / -15260 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/apps Changed · +73 / -26 lines

from line 15
1515compliance review. Results are sorted chronologically (time ascending)
1616by the `order_by` key, with ties broken by id.
1717 
18**Deprecation notice:** Combining `user_ids[]` with any `updated_at.*`
19filter is deprecated and will be rejected with HTTP 400 after
202026-09-22. For incremental polling by update time, omit `user_ids[]`
21and set `order_by=updated_at` with `after_id` cursor pagination —
22this returns the same chats across the whole organization in a single
23request stream. For per-user listing, use `created_at.*` filters (or
24no time filter) with the default `order_by`. `user_ids[]` with
25`order_by=updated_at` is already rejected.
26 
1827### Query Parameters
1928 
2029- `after_id: optional string`
from line 76
6776 
6877 - `gt: optional string`
6978 
70 Filter chats updated after this time (RFC 3339 format)
79 Filter chats updated after this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
7180 
7281 - `gte: optional string`
7382 
74 Filter chats updated at or after this time (RFC 3339 format)
83 Filter chats updated at or after this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
7584 
7685 - `lt: optional string`
7786 
78 Filter chats updated before this time (RFC 3339 format)
87 Filter chats updated before this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
7988 
8089 - `lte: optional string`
8190 
82 Filter chats updated at or before this time (RFC 3339 format)
91 Filter chats updated at or before this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
8392 
8493- `user_ids: optional array of string`
8594 
86 Filter to chats created by specific users (max 10 per request). Omit for an org-wide query. Enumerate IDs via `GET /v1/compliance/organizations/{org_uuid}/users`.
95 Filter to chats created by specific users (max 10 per request). Omit for an org-wide query. Enumerate IDs via `GET /v1/compliance/organizations/{org_uuid}/users`. Deprecated combination: passing `user_ids[]` together with any `updated_at.*` filter is deprecated and will be rejected after 2026-09-22. For `updated_at`-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
8796 
8897### Header Parameters
8998 
from line 122
113122 
114123 - `model: string or null`
115124 
116 Model selected for this chat (e.g. 'claude-opus-4-7'). May be null for legacy chats that never had a model recorded.
125 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
117126 
118127 - `name: string`
119128 
from line 186
177186 "created_at": "2025-06-07T08:09:10Z",
178187 "updated_at": "2025-06-07T09:10:11Z",
179188 "organization_id": "org_abc123",
180 "organization_uuid": "abcdef0123-4567-89ab-cdef-0123456789ab",
189 "organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
181190 "project_id": "claude_proj_xyz789",
182 "model": "claude-opus-4-7",
191 "model": "claude-opus-5",
183192 "user": {
184193 "id": "user_xyz456",
185194 "email_address": "[email protected]"
from line 274
265274 
266275 - `model: string or null`
267276 
268 Model selected for this chat (e.g. 'claude-opus-4-7'). May be null for legacy chats that never had a model recorded.
277 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
269278 
270279 - `name: string`
271280 
from line 632
623632 
624633- `model: string or null`
625634 
626 Model selected for this chat (e.g. 'claude-opus-4-7'). May be null for legacy chats that never had a model recorded.
635 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
627636 
628637- `name: string`
629638 
from line 682
673682 "created_at": "2025-06-07T08:09:10Z",
674683 "updated_at": "2025-06-07T08:09:11Z",
675684 "organization_id": "org_abc123",
676 "organization_uuid": "abcdef0123-4567-89ab-cdef-0123456789ab",
685 "organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
677686 "project_id": "claude_proj_xyz789",
678 "model": "claude-opus-4-7",
687 "model": "claude-opus-5",
679688 "user": {
680689 "id": "user_xyz456",
681690 "email_address": "[email protected]"
from line 2789
27802789 
27812790 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.
27822791 
2792- `updated_at: optional object { gte }`
2793 
2794 - `gte: optional string`
2795 
2796 Only return sessions whose last inference call is at or after this time (RFC 3339; a UTC offset is required). Combines with `created_at.gte` / `created_at.lt`; the ordering and pagination are unchanged. Use it to poll for sessions that have been active since a previous pass — a session that becomes active later can only enter the result, never leave it.
2797 
27832798### Header Parameters
27842799 
27852800- `"x-api-key": optional string`
from line 2801
27862801 
27872802### Returns
27882803 
2789- `data: array of object { id, created_at, organization_uuid, 4 more }`
2804- `data: array of object { id, created_at, organization_uuid, 5 more }`
27902805 
2791 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order.
2806 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order. `updated_at` never participates in the ordering; the `updated_at.gte` query parameter filters on it without changing the order or the pagination cursor.
27922807 
27932808 - `id: string`
27942809 
from line 2825
28102825 
28112826 - `"compliance_local_session"`
28122827 
2828 - `updated_at: string`
2829 
2830 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
2831 
28132832 - `user: object { id, email_address }`
28142833 
28152834 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 2871
28522871 "email_address": "[email protected]"
28532872 },
28542873 "product_surface": "cowork",
2855 "created_at": "2026-07-09T14:02:11Z"
2874 "created_at": "2026-07-09T14:02:11Z",
2875 "updated_at": "2026-07-09T15:47:33Z"
28562876 }
28572877 ]
28582878}
from line 2919
28992919 
29002920 - `"compliance_local_session"`
29012921 
2922- `updated_at: string`
2923 
2924 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
2925 
29022926- `user: object { id, email_address }`
29032927 
29042928 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 2959
29352959 "email_address": "[email protected]"
29362960 },
29372961 "product_surface": "cowork",
2938 "created_at": "2026-07-09T14:02:11Z"
2962 "created_at": "2026-07-09T14:02:11Z",
2963 "updated_at": "2026-07-09T15:47:33Z"
29392964}
29402965```
29412966 
from line 2968
29432968 
29442969### Local List Response
29452970 
2946- `LocalListResponse object { id, created_at, organization_uuid, 4 more }`
2971- `LocalListResponse object { id, created_at, organization_uuid, 5 more }`
29472972 
29482973 A Cowork or Claude Code session that a user ran on their own computer
29492974 while signed in with their organization account.
from line 2993
29682993 
29692994 - `"compliance_local_session"`
29702995 
2996 - `updated_at: string`
2997 
2998 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
2999 
29713000 - `user: object { id, email_address }`
29723001 
29733002 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 3015
29863015 
29873016### Local Retrieve Response
29883017 
2989- `LocalRetrieveResponse object { id, created_at, organization_uuid, 4 more }`
3018- `LocalRetrieveResponse object { id, created_at, organization_uuid, 5 more }`
29903019 
29913020 A Cowork or Claude Code session that a user ran on their own computer
29923021 while signed in with their organization account.
from line 3040
30113040 
30123041 - `"compliance_local_session"`
30133042 
3043 - `updated_at: string`
3044 
3045 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
3046 
30143047 - `user: object { id, email_address }`
30153048 
30163049 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 3112
30793112 
30803113### Returns
30813114 
3082- `data: array of object { id, content, created_at, 3 more }`
3115- `data: array of object { id, content, created_at, 4 more }`
30833116 
3084 Transcript turns for this page, ordered by `created_at` in the direction selected by the `order` parameter (ascending by default). Turns sharing a `created_at` (all messages of one inference call carry the call's timestamp) are returned in transcript order.
3117 Transcript turns for this page, in call order: oldest call first by default, newest call first with `order=desc`. The messages of one call carry the call's timestamp and follow each other in transcript order; a page boundary can fall between them.
30853118 
30863119 - `id: string`
30873120 
from line 3204
31713204 
31723205 When the message was recorded (RFC 3339, UTC)
31733206 
3207 - `model: string or null`
3208 
3209 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
3210 
31743211 - `provenance: object { reason, type } or object { type } or object { type } or null`
31753212 
31763213 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
from line 3218
31813218 
31823219 - `reason: string`
31833220 
3184 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
3221 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
31853222 
31863223 - `type: "content_unavailable"`
31873224 
from line 3268
32313268 
32323269 Opaque pagination cursor (prefixed `page_`) for the next page. Null when there is no further page. Treat as an opaque string; the format may change without notice.
32333270 
3234- `session: object { id, created_at, organization_uuid, 4 more }`
3271- `session: object { id, created_at, organization_uuid, 5 more }`
32353272 
32363273 The local session the messages belong to. `user.email_address` is always null on this endpoint; the messages endpoint does not resolve email addresses.
32373274 
from line 3292
32553292 
32563293 - `"compliance_local_session"`
32573294 
3295 - `updated_at: string`
3296 
3297 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
3298 
32583299 - `user: object { id, email_address }`
32593300 
32603301 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 3334
32933334 }
32943335 ],
32953336 "created_at": "2025-03-12T18:22:41.123456Z",
3337 "model": "claude-opus-5",
32963338 "provenance": {
32973339 "reason": "not_captured",
32983340 "type": "content_unavailable"
from line 3350
33083350 "organization_uuid": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
33093351 "product_surface": "cowork",
33103352 "type": "compliance_local_session",
3353 "updated_at": "2025-03-12T18:22:41.123456Z",
33113354 "user": {
33123355 "id": "user_01WCz1FkmYMm4gnmykNKUu3Q",
33133356 "email_address": "[email protected]"
from line 3364
33213364 
33223365### Message List Response
33233366 
3324- `MessageListResponse object { id, content, created_at, 3 more }`
3367- `MessageListResponse object { id, content, created_at, 4 more }`
33253368 
33263369 A single user or assistant turn in a local session transcript.
33273370 
from line 3456
34133456 
34143457 When the message was recorded (RFC 3339, UTC)
34153458 
3459 - `model: string or null`
3460 
3461 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
3462 
34163463 - `provenance: object { reason, type } or object { type } or object { type } or null`
34173464 
34183465 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
from line 3470
34233470 
34243471 - `reason: string`
34253472 
3426 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
3473 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
34273474 
34283475 - `type: "content_unavailable"`
34293476 

api/compliance/apps/chats Changed · +21 / -12 lines

from line 13
1313compliance review. Results are sorted chronologically (time ascending)
1414by the `order_by` key, with ties broken by id.
1515 
16**Deprecation notice:** Combining `user_ids[]` with any `updated_at.*`
17filter is deprecated and will be rejected with HTTP 400 after
182026-09-22. For incremental polling by update time, omit `user_ids[]`
19and set `order_by=updated_at` with `after_id` cursor pagination —
20this returns the same chats across the whole organization in a single
21request stream. For per-user listing, use `created_at.*` filters (or
22no time filter) with the default `order_by`. `user_ids[]` with
23`order_by=updated_at` is already rejected.
24 
1625### Query Parameters
1726 
1827- `after_id: optional string`
from line 74
6574 
6675 - `gt: optional string`
6776 
68 Filter chats updated after this time (RFC 3339 format)
77 Filter chats updated after this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
6978 
7079 - `gte: optional string`
7180 
72 Filter chats updated at or after this time (RFC 3339 format)
81 Filter chats updated at or after this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
7382 
7483 - `lt: optional string`
7584 
76 Filter chats updated before this time (RFC 3339 format)
85 Filter chats updated before this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
7786 
7887 - `lte: optional string`
7988 
80 Filter chats updated at or before this time (RFC 3339 format)
89 Filter chats updated at or before this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
8190 
8291- `user_ids: optional array of string`
8392 
84 Filter to chats created by specific users (max 10 per request). Omit for an org-wide query. Enumerate IDs via `GET /v1/compliance/organizations/{org_uuid}/users`.
93 Filter to chats created by specific users (max 10 per request). Omit for an org-wide query. Enumerate IDs via `GET /v1/compliance/organizations/{org_uuid}/users`. Deprecated combination: passing `user_ids[]` together with any `updated_at.*` filter is deprecated and will be rejected after 2026-09-22. For `updated_at`-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
8594 
8695### Header Parameters
8796 
from line 120
111120 
112121 - `model: string or null`
113122 
114 Model selected for this chat (e.g. 'claude-opus-4-7'). May be null for legacy chats that never had a model recorded.
123 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
115124 
116125 - `name: string`
117126 
from line 184
175184 "created_at": "2025-06-07T08:09:10Z",
176185 "updated_at": "2025-06-07T09:10:11Z",
177186 "organization_id": "org_abc123",
178 "organization_uuid": "abcdef0123-4567-89ab-cdef-0123456789ab",
187 "organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
179188 "project_id": "claude_proj_xyz789",
180 "model": "claude-opus-4-7",
189 "model": "claude-opus-5",
181190 "user": {
182191 "id": "user_xyz456",
183192 "email_address": "[email protected]"
from line 272
263272 
264273 - `model: string or null`
265274 
266 Model selected for this chat (e.g. 'claude-opus-4-7'). May be null for legacy chats that never had a model recorded.
275 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
267276 
268277 - `name: string`
269278 
from line 630
621630 
622631- `model: string or null`
623632 
624 Model selected for this chat (e.g. 'claude-opus-4-7'). May be null for legacy chats that never had a model recorded.
633 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
625634 
626635- `name: string`
627636 
from line 680
671680 "created_at": "2025-06-07T08:09:10Z",
672681 "updated_at": "2025-06-07T08:09:11Z",
673682 "organization_id": "org_abc123",
674 "organization_uuid": "abcdef0123-4567-89ab-cdef-0123456789ab",
683 "organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
675684 "project_id": "claude_proj_xyz789",
676 "model": "claude-opus-4-7",
685 "model": "claude-opus-5",
677686 "user": {
678687 "id": "user_xyz456",
679688 "email_address": "[email protected]"

api/compliance/apps/chats/list Changed · +17 / -8 lines

from line 11
1111compliance review. Results are sorted chronologically (time ascending)
1212by the `order_by` key, with ties broken by id.
1313 
14**Deprecation notice:** Combining `user_ids[]` with any `updated_at.*`
15filter is deprecated and will be rejected with HTTP 400 after
162026-09-22. For incremental polling by update time, omit `user_ids[]`
17and set `order_by=updated_at` with `after_id` cursor pagination —
18this returns the same chats across the whole organization in a single
19request stream. For per-user listing, use `created_at.*` filters (or
20no time filter) with the default `order_by`. `user_ids[]` with
21`order_by=updated_at` is already rejected.
22 
1423### Query Parameters
1524 
1625- `after_id: optional string`
from line 72
6372 
6473 - `gt: optional string`
6574 
66 Filter chats updated after this time (RFC 3339 format)
75 Filter chats updated after this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
6776 
6877 - `gte: optional string`
6978 
70 Filter chats updated at or after this time (RFC 3339 format)
79 Filter chats updated at or after this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
7180 
7281 - `lt: optional string`
7382 
74 Filter chats updated before this time (RFC 3339 format)
83 Filter chats updated before this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
7584 
7685 - `lte: optional string`
7786 
78 Filter chats updated at or before this time (RFC 3339 format)
87 Filter chats updated at or before this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
7988 
8089- `user_ids: optional array of string`
8190 
82 Filter to chats created by specific users (max 10 per request). Omit for an org-wide query. Enumerate IDs via `GET /v1/compliance/organizations/{org_uuid}/users`.
91 Filter to chats created by specific users (max 10 per request). Omit for an org-wide query. Enumerate IDs via `GET /v1/compliance/organizations/{org_uuid}/users`. Deprecated combination: passing `user_ids[]` together with any `updated_at.*` filter is deprecated and will be rejected after 2026-09-22. For `updated_at`-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.
8392 
8493### Header Parameters
8594 
from line 118
109118 
110119 - `model: string or null`
111120 
112 Model selected for this chat (e.g. 'claude-opus-4-7'). May be null for legacy chats that never had a model recorded.
121 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
113122 
114123 - `name: string`
115124 
from line 182
173182 "created_at": "2025-06-07T08:09:10Z",
174183 "updated_at": "2025-06-07T09:10:11Z",
175184 "organization_id": "org_abc123",
176 "organization_uuid": "abcdef0123-4567-89ab-cdef-0123456789ab",
185 "organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
177186 "project_id": "claude_proj_xyz789",
178 "model": "claude-opus-4-7",
187 "model": "claude-opus-5",
179188 "user": {
180189 "id": "user_xyz456",
181190 "email_address": "[email protected]"

api/compliance/apps/chats/messages Changed · +3 / -3 lines

from line 311
311311 
312312- `model: string or null`
313313 
314 Model selected for this chat (e.g. 'claude-opus-4-7'). May be null for legacy chats that never had a model recorded.
314 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
315315 
316316- `name: string`
317317 
from line 361
361361 "created_at": "2025-06-07T08:09:10Z",
362362 "updated_at": "2025-06-07T08:09:11Z",
363363 "organization_id": "org_abc123",
364 "organization_uuid": "abcdef0123-4567-89ab-cdef-0123456789ab",
364 "organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
365365 "project_id": "claude_proj_xyz789",
366 "model": "claude-opus-4-7",
366 "model": "claude-opus-5",
367367 "user": {
368368 "id": "user_xyz456",
369369 "email_address": "[email protected]"

api/compliance/apps/chats/messages/list Changed · +3 / -3 lines

from line 309
309309 
310310- `model: string or null`
311311 
312 Model selected for this chat (e.g. 'claude-opus-4-7'). May be null for legacy chats that never had a model recorded.
312 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
313313 
314314- `name: string`
315315 
from line 359
359359 "created_at": "2025-06-07T08:09:10Z",
360360 "updated_at": "2025-06-07T08:09:11Z",
361361 "organization_id": "org_abc123",
362 "organization_uuid": "abcdef0123-4567-89ab-cdef-0123456789ab",
362 "organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
363363 "project_id": "claude_proj_xyz789",
364 "model": "claude-opus-4-7",
364 "model": "claude-opus-5",
365365 "user": {
366366 "id": "user_xyz456",
367367 "email_address": "[email protected]"

api/compliance/apps/sessions Changed · +52 / -14 lines

from line 36
3636 
3737 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.
3838 
39- `updated_at: optional object { gte }`
40 
41 - `gte: optional string`
42 
43 Only return sessions whose last inference call is at or after this time (RFC 3339; a UTC offset is required). Combines with `created_at.gte` / `created_at.lt`; the ordering and pagination are unchanged. Use it to poll for sessions that have been active since a previous pass — a session that becomes active later can only enter the result, never leave it.
44 
3945### Header Parameters
4046 
4147- `"x-api-key": optional string`
from line 48
4248 
4349### Returns
4450 
45- `data: array of object { id, created_at, organization_uuid, 4 more }`
51- `data: array of object { id, created_at, organization_uuid, 5 more }`
4652 
47 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order.
53 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order. `updated_at` never participates in the ordering; the `updated_at.gte` query parameter filters on it without changing the order or the pagination cursor.
4854 
4955 - `id: string`
5056 
from line 72
6672 
6773 - `"compliance_local_session"`
6874 
75 - `updated_at: string`
76 
77 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
78 
6979 - `user: object { id, email_address }`
7080 
7181 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 118
108118 "email_address": "[email protected]"
109119 },
110120 "product_surface": "cowork",
111 "created_at": "2026-07-09T14:02:11Z"
121 "created_at": "2026-07-09T14:02:11Z",
122 "updated_at": "2026-07-09T15:47:33Z"
112123 }
113124 ]
114125}
from line 166
155166 
156167 - `"compliance_local_session"`
157168 
169- `updated_at: string`
170 
171 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
172 
158173- `user: object { id, email_address }`
159174 
160175 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 206
191206 "email_address": "[email protected]"
192207 },
193208 "product_surface": "cowork",
194 "created_at": "2026-07-09T14:02:11Z"
209 "created_at": "2026-07-09T14:02:11Z",
210 "updated_at": "2026-07-09T15:47:33Z"
195211}
196212```
197213 
from line 215
199215 
200216### Local List Response
201217 
202- `LocalListResponse object { id, created_at, organization_uuid, 4 more }`
218- `LocalListResponse object { id, created_at, organization_uuid, 5 more }`
203219 
204220 A Cowork or Claude Code session that a user ran on their own computer
205221 while signed in with their organization account.
from line 240
224240 
225241 - `"compliance_local_session"`
226242 
243 - `updated_at: string`
244 
245 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
246 
227247 - `user: object { id, email_address }`
228248 
229249 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 262
242262 
243263### Local Retrieve Response
244264 
245- `LocalRetrieveResponse object { id, created_at, organization_uuid, 4 more }`
265- `LocalRetrieveResponse object { id, created_at, organization_uuid, 5 more }`
246266 
247267 A Cowork or Claude Code session that a user ran on their own computer
248268 while signed in with their organization account.
from line 287
267287 
268288 - `"compliance_local_session"`
269289 
290 - `updated_at: string`
291 
292 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
293 
270294 - `user: object { id, email_address }`
271295 
272296 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 359
335359 
336360### Returns
337361 
338- `data: array of object { id, content, created_at, 3 more }`
362- `data: array of object { id, content, created_at, 4 more }`
339363 
340 Transcript turns for this page, ordered by `created_at` in the direction selected by the `order` parameter (ascending by default). Turns sharing a `created_at` (all messages of one inference call carry the call's timestamp) are returned in transcript order.
364 Transcript turns for this page, in call order: oldest call first by default, newest call first with `order=desc`. The messages of one call carry the call's timestamp and follow each other in transcript order; a page boundary can fall between them.
341365 
342366 - `id: string`
343367 
from line 451
427451 
428452 When the message was recorded (RFC 3339, UTC)
429453 
454 - `model: string or null`
455 
456 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
457 
430458 - `provenance: object { reason, type } or object { type } or object { type } or null`
431459 
432460 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
from line 465
437465 
438466 - `reason: string`
439467 
440 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
468 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
441469 
442470 - `type: "content_unavailable"`
443471 
from line 515
487515 
488516 Opaque pagination cursor (prefixed `page_`) for the next page. Null when there is no further page. Treat as an opaque string; the format may change without notice.
489517 
490- `session: object { id, created_at, organization_uuid, 4 more }`
518- `session: object { id, created_at, organization_uuid, 5 more }`
491519 
492520 The local session the messages belong to. `user.email_address` is always null on this endpoint; the messages endpoint does not resolve email addresses.
493521 
from line 539
511539 
512540 - `"compliance_local_session"`
513541 
542 - `updated_at: string`
543 
544 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
545 
514546 - `user: object { id, email_address }`
515547 
516548 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 581
549581 }
550582 ],
551583 "created_at": "2025-03-12T18:22:41.123456Z",
584 "model": "claude-opus-5",
552585 "provenance": {
553586 "reason": "not_captured",
554587 "type": "content_unavailable"
from line 597
564597 "organization_uuid": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
565598 "product_surface": "cowork",
566599 "type": "compliance_local_session",
600 "updated_at": "2025-03-12T18:22:41.123456Z",
567601 "user": {
568602 "id": "user_01WCz1FkmYMm4gnmykNKUu3Q",
569603 "email_address": "[email protected]"
from line 611
577611 
578612### Message List Response
579613 
580- `MessageListResponse object { id, content, created_at, 3 more }`
614- `MessageListResponse object { id, content, created_at, 4 more }`
581615 
582616 A single user or assistant turn in a local session transcript.
583617 
from line 703
669703 
670704 When the message was recorded (RFC 3339, UTC)
671705 
706 - `model: string or null`
707 
708 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
709 
672710 - `provenance: object { reason, type } or object { type } or object { type } or null`
673711 
674712 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
from line 717
679717 
680718 - `reason: string`
681719 
682 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
720 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
683721 
684722 - `type: "content_unavailable"`
685723 

api/compliance/apps/sessions/local Changed · +52 / -14 lines

from line 34
3434 
3535 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.
3636 
37- `updated_at: optional object { gte }`
38 
39 - `gte: optional string`
40 
41 Only return sessions whose last inference call is at or after this time (RFC 3339; a UTC offset is required). Combines with `created_at.gte` / `created_at.lt`; the ordering and pagination are unchanged. Use it to poll for sessions that have been active since a previous pass — a session that becomes active later can only enter the result, never leave it.
42 
3743### Header Parameters
3844 
3945- `"x-api-key": optional string`
from line 46
4046 
4147### Returns
4248 
43- `data: array of object { id, created_at, organization_uuid, 4 more }`
49- `data: array of object { id, created_at, organization_uuid, 5 more }`
4450 
45 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order.
51 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order. `updated_at` never participates in the ordering; the `updated_at.gte` query parameter filters on it without changing the order or the pagination cursor.
4652 
4753 - `id: string`
4854 
from line 70
6470 
6571 - `"compliance_local_session"`
6672 
73 - `updated_at: string`
74 
75 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
76 
6777 - `user: object { id, email_address }`
6878 
6979 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 116
106116 "email_address": "[email protected]"
107117 },
108118 "product_surface": "cowork",
109 "created_at": "2026-07-09T14:02:11Z"
119 "created_at": "2026-07-09T14:02:11Z",
120 "updated_at": "2026-07-09T15:47:33Z"
110121 }
111122 ]
112123}
from line 164
153164 
154165 - `"compliance_local_session"`
155166 
167- `updated_at: string`
168 
169 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
170 
156171- `user: object { id, email_address }`
157172 
158173 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 204
189204 "email_address": "[email protected]"
190205 },
191206 "product_surface": "cowork",
192 "created_at": "2026-07-09T14:02:11Z"
207 "created_at": "2026-07-09T14:02:11Z",
208 "updated_at": "2026-07-09T15:47:33Z"
193209}
194210```
195211 
from line 213
197213 
198214### Local List Response
199215 
200- `LocalListResponse object { id, created_at, organization_uuid, 4 more }`
216- `LocalListResponse object { id, created_at, organization_uuid, 5 more }`
201217 
202218 A Cowork or Claude Code session that a user ran on their own computer
203219 while signed in with their organization account.
from line 238
222238 
223239 - `"compliance_local_session"`
224240 
241 - `updated_at: string`
242 
243 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
244 
225245 - `user: object { id, email_address }`
226246 
227247 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 260
240260 
241261### Local Retrieve Response
242262 
243- `LocalRetrieveResponse object { id, created_at, organization_uuid, 4 more }`
263- `LocalRetrieveResponse object { id, created_at, organization_uuid, 5 more }`
244264 
245265 A Cowork or Claude Code session that a user ran on their own computer
246266 while signed in with their organization account.
from line 285
265285 
266286 - `"compliance_local_session"`
267287 
288 - `updated_at: string`
289 
290 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
291 
268292 - `user: object { id, email_address }`
269293 
270294 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 357
333357 
334358### Returns
335359 
336- `data: array of object { id, content, created_at, 3 more }`
360- `data: array of object { id, content, created_at, 4 more }`
337361 
338 Transcript turns for this page, ordered by `created_at` in the direction selected by the `order` parameter (ascending by default). Turns sharing a `created_at` (all messages of one inference call carry the call's timestamp) are returned in transcript order.
362 Transcript turns for this page, in call order: oldest call first by default, newest call first with `order=desc`. The messages of one call carry the call's timestamp and follow each other in transcript order; a page boundary can fall between them.
339363 
340364 - `id: string`
341365 
from line 449
425449 
426450 When the message was recorded (RFC 3339, UTC)
427451 
452 - `model: string or null`
453 
454 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
455 
428456 - `provenance: object { reason, type } or object { type } or object { type } or null`
429457 
430458 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
from line 463
435463 
436464 - `reason: string`
437465 
438 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
466 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
439467 
440468 - `type: "content_unavailable"`
441469 
from line 513
485513 
486514 Opaque pagination cursor (prefixed `page_`) for the next page. Null when there is no further page. Treat as an opaque string; the format may change without notice.
487515 
488- `session: object { id, created_at, organization_uuid, 4 more }`
516- `session: object { id, created_at, organization_uuid, 5 more }`
489517 
490518 The local session the messages belong to. `user.email_address` is always null on this endpoint; the messages endpoint does not resolve email addresses.
491519 
from line 537
509537 
510538 - `"compliance_local_session"`
511539 
540 - `updated_at: string`
541 
542 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
543 
512544 - `user: object { id, email_address }`
513545 
514546 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 579
547579 }
548580 ],
549581 "created_at": "2025-03-12T18:22:41.123456Z",
582 "model": "claude-opus-5",
550583 "provenance": {
551584 "reason": "not_captured",
552585 "type": "content_unavailable"
from line 595
562595 "organization_uuid": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
563596 "product_surface": "cowork",
564597 "type": "compliance_local_session",
598 "updated_at": "2025-03-12T18:22:41.123456Z",
565599 "user": {
566600 "id": "user_01WCz1FkmYMm4gnmykNKUu3Q",
567601 "email_address": "[email protected]"
from line 609
575609 
576610### Message List Response
577611 
578- `MessageListResponse object { id, content, created_at, 3 more }`
612- `MessageListResponse object { id, content, created_at, 4 more }`
579613 
580614 A single user or assistant turn in a local session transcript.
581615 
from line 701
667701 
668702 When the message was recorded (RFC 3339, UTC)
669703 
704 - `model: string or null`
705 
706 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
707 
670708 - `provenance: object { reason, type } or object { type } or object { type } or null`
671709 
672710 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
from line 715
677715 
678716 - `reason: string`
679717 
680 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
718 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
681719 
682720 - `type: "content_unavailable"`
683721 

api/compliance/apps/sessions/local/list Changed · +14 / -3 lines

from line 32
3232 
3333 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.
3434 
35- `updated_at: optional object { gte }`
36 
37 - `gte: optional string`
38 
39 Only return sessions whose last inference call is at or after this time (RFC 3339; a UTC offset is required). Combines with `created_at.gte` / `created_at.lt`; the ordering and pagination are unchanged. Use it to poll for sessions that have been active since a previous pass — a session that becomes active later can only enter the result, never leave it.
40 
3541### Header Parameters
3642 
3743- `"x-api-key": optional string`
from line 44
3844 
3945### Returns
4046 
41- `data: array of object { id, created_at, organization_uuid, 4 more }`
47- `data: array of object { id, created_at, organization_uuid, 5 more }`
4248 
43 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order.
49 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order. `updated_at` never participates in the ordering; the `updated_at.gte` query parameter filters on it without changing the order or the pagination cursor.
4450 
4551 - `id: string`
4652 
from line 68
6268 
6369 - `"compliance_local_session"`
6470 
71 - `updated_at: string`
72 
73 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
74 
6575 - `user: object { id, email_address }`
6676 
6777 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 114
104114 "email_address": "[email protected]"
105115 },
106116 "product_surface": "cowork",
107 "created_at": "2026-07-09T14:02:11Z"
117 "created_at": "2026-07-09T14:02:11Z",
118 "updated_at": "2026-07-09T15:47:33Z"
108119 }
109120 ]
110121}

api/compliance/apps/sessions/local/messages Changed · +21 / -7 lines

from line 55
5555 
5656### Returns
5757 
58- `data: array of object { id, content, created_at, 3 more }`
58- `data: array of object { id, content, created_at, 4 more }`
5959 
60 Transcript turns for this page, ordered by `created_at` in the direction selected by the `order` parameter (ascending by default). Turns sharing a `created_at` (all messages of one inference call carry the call's timestamp) are returned in transcript order.
60 Transcript turns for this page, in call order: oldest call first by default, newest call first with `order=desc`. The messages of one call carry the call's timestamp and follow each other in transcript order; a page boundary can fall between them.
6161 
6262 - `id: string`
6363 
from line 147
147147 
148148 When the message was recorded (RFC 3339, UTC)
149149 
150 - `model: string or null`
151 
152 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
153 
150154 - `provenance: object { reason, type } or object { type } or object { type } or null`
151155 
152156 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
from line 161
157161 
158162 - `reason: string`
159163 
160 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
164 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
161165 
162166 - `type: "content_unavailable"`
163167 
from line 211
207211 
208212 Opaque pagination cursor (prefixed `page_`) for the next page. Null when there is no further page. Treat as an opaque string; the format may change without notice.
209213 
210- `session: object { id, created_at, organization_uuid, 4 more }`
214- `session: object { id, created_at, organization_uuid, 5 more }`
211215 
212216 The local session the messages belong to. `user.email_address` is always null on this endpoint; the messages endpoint does not resolve email addresses.
213217 
from line 235
231235 
232236 - `"compliance_local_session"`
233237 
238 - `updated_at: string`
239 
240 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
241 
234242 - `user: object { id, email_address }`
235243 
236244 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 277
269277 }
270278 ],
271279 "created_at": "2025-03-12T18:22:41.123456Z",
280 "model": "claude-opus-5",
272281 "provenance": {
273282 "reason": "not_captured",
274283 "type": "content_unavailable"
from line 293
284293 "organization_uuid": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
285294 "product_surface": "cowork",
286295 "type": "compliance_local_session",
296 "updated_at": "2025-03-12T18:22:41.123456Z",
287297 "user": {
288298 "id": "user_01WCz1FkmYMm4gnmykNKUu3Q",
289299 "email_address": "[email protected]"
from line 307
297307 
298308### Message List Response
299309 
300- `MessageListResponse object { id, content, created_at, 3 more }`
310- `MessageListResponse object { id, content, created_at, 4 more }`
301311 
302312 A single user or assistant turn in a local session transcript.
303313 
from line 399
389399 
390400 When the message was recorded (RFC 3339, UTC)
391401 
402 - `model: string or null`
403 
404 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
405 
392406 - `provenance: object { reason, type } or object { type } or object { type } or null`
393407 
394408 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
from line 413
399413 
400414 - `reason: string`
401415 
402 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
416 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
403417 
404418 - `type: "content_unavailable"`
405419 

api/compliance/apps/sessions/local/messages/list Changed · +15 / -5 lines

from line 53
5353 
5454### Returns
5555 
56- `data: array of object { id, content, created_at, 3 more }`
56- `data: array of object { id, content, created_at, 4 more }`
5757 
58 Transcript turns for this page, ordered by `created_at` in the direction selected by the `order` parameter (ascending by default). Turns sharing a `created_at` (all messages of one inference call carry the call's timestamp) are returned in transcript order.
58 Transcript turns for this page, in call order: oldest call first by default, newest call first with `order=desc`. The messages of one call carry the call's timestamp and follow each other in transcript order; a page boundary can fall between them.
5959 
6060 - `id: string`
6161 
from line 145
145145 
146146 When the message was recorded (RFC 3339, UTC)
147147 
148 - `model: string or null`
149 
150 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
151 
148152 - `provenance: object { reason, type } or object { type } or object { type } or null`
149153 
150154 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
from line 159
155159 
156160 - `reason: string`
157161 
158 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
162 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
159163 
160164 - `type: "content_unavailable"`
161165 
from line 209
205209 
206210 Opaque pagination cursor (prefixed `page_`) for the next page. Null when there is no further page. Treat as an opaque string; the format may change without notice.
207211 
208- `session: object { id, created_at, organization_uuid, 4 more }`
212- `session: object { id, created_at, organization_uuid, 5 more }`
209213 
210214 The local session the messages belong to. `user.email_address` is always null on this endpoint; the messages endpoint does not resolve email addresses.
211215 
from line 233
229233 
230234 - `"compliance_local_session"`
231235 
236 - `updated_at: string`
237 
238 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
239 
232240 - `user: object { id, email_address }`
233241 
234242 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 275
267275 }
268276 ],
269277 "created_at": "2025-03-12T18:22:41.123456Z",
278 "model": "claude-opus-5",
270279 "provenance": {
271280 "reason": "not_captured",
272281 "type": "content_unavailable"
from line 291
282291 "organization_uuid": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
283292 "product_surface": "cowork",
284293 "type": "compliance_local_session",
294 "updated_at": "2025-03-12T18:22:41.123456Z",
285295 "user": {
286296 "id": "user_01WCz1FkmYMm4gnmykNKUu3Q",
287297 "email_address": "[email protected]"

api/compliance/apps/sessions/local/retrieve Changed · +6 / -1 lines

from line 44
4444 
4545 - `"compliance_local_session"`
4646 
47- `updated_at: string`
48 
49 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
50 
4751- `user: object { id, email_address }`
4852 
4953 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
from line 84
8084 "email_address": "[email protected]"
8185 },
8286 "product_surface": "cowork",
83 "created_at": "2026-07-09T14:02:11Z"
87 "created_at": "2026-07-09T14:02:11Z",
88 "updated_at": "2026-07-09T15:47:33Z"
8489}
8590```
8691 

api/compliance/organizations Changed · +6 / -2 lines

from line 625
625625 
626626 A setting whose enforced value is a single true/false flag.
627627 
628 - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 43 more`
628 - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 44 more`
629629 
630630 - `"ai_powered_artifacts_enabled"`
631631 
from line 685
685685 
686686 - `"frontier_data_use_enabled"`
687687 
688 - `"group_skill_sharing_enabled"`
689 
688690 - `"hipaa_compliance_enabled"`
689691 
690692 - `"inline_visualizations_enabled"`
from line 950
948950 
949951 A setting whose enforced value is a single true/false flag.
950952 
951 - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 43 more`
953 - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 44 more`
952954 
953955 - `"ai_powered_artifacts_enabled"`
954956 
from line 1009
10071009 - `"directory_sync_enabled"`
10081010 
10091011 - `"frontier_data_use_enabled"`
1012 
1013 - `"group_skill_sharing_enabled"`
10101014 
10111015 - `"hipaa_compliance_enabled"`
10121016 

api/compliance/organizations/settings Changed · +6 / -2 lines

from line 76
7676 
7777 A setting whose enforced value is a single true/false flag.
7878 
79 - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 43 more`
79 - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 44 more`
8080 
8181 - `"ai_powered_artifacts_enabled"`
8282 
from line 136
136136 
137137 - `"frontier_data_use_enabled"`
138138 
139 - `"group_skill_sharing_enabled"`
140 
139141 - `"hipaa_compliance_enabled"`
140142 
141143 - `"inline_visualizations_enabled"`
from line 401
399401 
400402 A setting whose enforced value is a single true/false flag.
401403 
402 - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 43 more`
404 - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 44 more`
403405 
404406 - `"ai_powered_artifacts_enabled"`
405407 
from line 460
458460 - `"directory_sync_enabled"`
459461 
460462 - `"frontier_data_use_enabled"`
463 
464 - `"group_skill_sharing_enabled"`
461465 
462466 - `"hipaa_compliance_enabled"`
463467 

home Changed · +8 / -8 lines

from line 86
8686 Get API key
8787 </HomeJourneyLink>
8888 
89 <HomeJourneyLink icon="settings" href="https://platform.claude.com/docs/en/about-claude/models/overview">
89 <HomeJourneyLink icon="settings" href="https://platform.claude.com/docs/en/models/overview">
9090 Choose a model
9191 </HomeJourneyLink>
9292 
from line 242
242242 <HomeSectionHeader label="Models" title="The Claude model family" description="Choose the right model for your use case." />
243243 
244244 <HomeModelCards>
245 <HomeModelCard name="Fable 5" badge="Most capable" modelId="claude-fable-5" description="Highest capability for the most demanding reasoning and long-horizon agentic work." href="https://platform.claude.com/docs/en/about-claude/models/overview" />
245 <HomeModelCard name="Fable 5" badge="Most capable" modelId="claude-fable-5" description="Highest capability for the most demanding reasoning and long-horizon agentic work." href="https://platform.claude.com/docs/en/models/fable-5/overview" />
246246 
247 <HomeModelCard name="Opus 5" badge="Advanced" modelId="claude-opus-5" description="Excellent for complex analysis, coding, and creative tasks requiring deep reasoning." href="https://platform.claude.com/docs/en/about-claude/models/overview" />
247 <HomeModelCard name="Opus 5" badge="Advanced" modelId="claude-opus-5" description="Excellent for complex analysis, coding, and creative tasks requiring deep reasoning." href="https://platform.claude.com/docs/en/models/opus-5/overview" />
248248 
249 <HomeModelCard name="Sonnet 5" badge="Best balance" modelId="claude-sonnet-5" description="Ideal balance of intelligence and speed for most production workloads." href="https://platform.claude.com/docs/en/about-claude/models/overview" />
249 <HomeModelCard name="Sonnet 5" badge="Best balance" modelId="claude-sonnet-5" description="Ideal balance of intelligence and speed for most production workloads." href="https://platform.claude.com/docs/en/models/sonnet-5/overview" />
250250 
251 <HomeModelCard name="Haiku 4.5" badge="Fastest" modelId="claude-haiku-4-5" description="Lightning-fast responses for high-volume, latency-sensitive applications." href="https://platform.claude.com/docs/en/about-claude/models/overview" />
251 <HomeModelCard name="Haiku 4.5" badge="Fastest" modelId="claude-haiku-4-5" description="Lightning-fast responses for high-volume, latency-sensitive applications." href="https://platform.claude.com/docs/en/models/haiku-4-5/overview" />
252252 </HomeModelCards>
253253 </HomeSection>
254254 

manage-claude/compliance-faq Changed · +16 / -29 lines

from line 24
2424 </Accordion>
2525 
2626 <Accordion title="Is turning the Compliance API off in Claude Console recorded anywhere?">
27 Yes. When the Compliance API is turned off (or back on) in Claude Console, the change is recorded as an organization settings-updated activity in the [Activity Feed](https://platform.claude.com/docs/en/manage-claude/compliance-activity-feed), so your audit trail shows who changed the setting and when. This activity is an exception to the recording stop: the disable is recorded even though no other activity is recorded while the Compliance API is off.
27 Yes. When the Compliance API is turned off (or back on) in Claude Console, the change is recorded as an `org_compliance_api_settings_updated` activity in the [Activity Feed](https://platform.claude.com/docs/en/manage-claude/compliance-activity-feed), so your audit trail shows who changed the setting and when. This activity is an exception to the recording stop: the disable is recorded even though no other activity is recorded while the Compliance API is off.
2828 </Accordion>
2929 
3030 <Accordion title="Why doesn't my parent organization appear in Claude Console when creating an Admin API key?">
from line 52
5252 }
5353 ```
5454 
55 To access content endpoints, the primary owner of your parent organization (or an organization owner, for their own organization only) must [create a Compliance Access Key](https://platform.claude.com/docs/en/manage-claude/compliance-api-access#set-up-the-compliance-api) with `read:compliance_user_data` (and `delete:compliance_user_data` for deletes), or `read:compliance_org_data` for organization, role, group, and effective-settings endpoints. See [Handle Compliance API errors](https://platform.claude.com/docs/en/manage-claude/compliance-errors#403-forbidden) for the full per-endpoint catalog.
55 To access content endpoints, the primary owner of your parent organization (or an organization owner, for their own organization only) must [create a Compliance Access Key](https://platform.claude.com/docs/en/manage-claude/compliance-api-access#set-up-the-compliance-api) with `read:compliance_user_data` (and `delete:compliance_user_data` for deletes), or `read:compliance_org_data` for organization, role, group, and effective-settings endpoints. A standalone Claude Console organization (one with no parent organization) cannot create a Compliance Access Key, so the content endpoints are not available to it; it can query the Activity Feed only. See [Handle Compliance API errors](https://platform.claude.com/docs/en/manage-claude/compliance-errors#403-forbidden) for the full per-endpoint catalog.
5656 </Accordion>
5757</AccordionGroup>
5858 
from line 60
6060 
6161<AccordionGroup>
6262 <Accordion title="How far back does the Activity Feed go?">
63 The Activity Feed retains 6 years of organization activity, and new events are queryable within 1 minute of occurring. Activity Feed retention is independent of your organization's content retention policy: chat, file, and project content follows the retention rules configured for your organization (indefinite by default).
63 The Activity Feed retains 6 years of organization activity, and new events are queryable within 1 minute of occurring. The feed reaches back at most to the point the Compliance API was first enabled for your organization: recording is not retroactive, and activity from before enablement is not backfilled. Activity Feed retention is independent of your organization's content retention policy: chat, file, and project content follows the retention rules configured for your organization (indefinite by default).
6464 </Accordion>
6565 
6666 <Accordion title="Does the Activity Feed include prompt or message content?">
from line 80
8080 <Accordion title="What do Cowork and Claude Code session transcripts include?">
8181 Local and remote session transcripts both carry user prompts, assistant responses, and tool calls and results. For local sessions (Cowork and Claude Code on users' machines), that is what Claude was asked to do and what it returned, not what happened on the device.
8282 
83 | Data | Local sessions (on users' machines) | Remote sessions (in the cloud) |
84 | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
85 | User prompts | Yes; returned as `text` blocks. | Yes; returned as `text` blocks. |
86 | Assistant responses | Yes; text output only. | Yes; text output only. |
87 | Tool calls and results | Yes; each `tool_use` input and each `text` entry in a `tool_result` is truncated to 10,000 bytes by default (up to about 1 MiB each on request). | Yes; each `tool_use` input and each `text` entry in a `tool_result` is truncated to 10,000 bytes by default (up to about 1 MiB each on request). |
88 | File contents and file names | Yes; text that Claude reads through tools appears in the transcript, subject to the same truncation. Images, PDFs, and other binary or structured content appear only as placeholder `text` blocks. File names appear in tool-call inputs and outputs. | Yes; file contents and file names appear in the transcript through tool-call inputs and outputs (text only; other content is omitted). |
89 | Artifacts | Yes; generated content appears inside tool-call inputs in the transcript. | Yes; generated content appears inside tool-call inputs in the transcript. |
90 | Skills | Yes; skill content appears when the client sends it as message content, and it is not distinguished from other user text. | Yes; skill content appears in the transcript. |
91 | Session metadata | Yes; owner (`user.id` and email address), organization, workspace, `product_surface`, and `created_at`, from the list and retrieve endpoints. Local sessions carry no `status` or `updated_at`. | Yes; owner, organization, status, timestamps, and `product_surface`, from the list endpoint. |
92 | Thinking blocks | No. | No. |
93 | Images and other non-text content | No; each image, PDF, or other binary or structured block appears as a placeholder `text` block (for example, `[image content not shown]`) with `truncated` set to `true`. Raw file bytes are never returned. | No; non-text blocks are omitted, and raw file bytes are never returned. |
94 | Token usage, cost, and latency | No; use [Cowork's OpenTelemetry logging](https://support.claude.com/en/articles/14477985-monitor-claude-cowork-activity-with-opentelemetry) or [Claude Code monitoring](https://code.claude.com/docs/en/monitoring-usage) for usage and performance telemetry. | No; use [OpenTelemetry logging](https://support.claude.com/en/articles/14477985-monitor-claude-cowork-activity-with-opentelemetry) for usage and performance telemetry. |
83 | Data | Local sessions (on users' machines) | Remote sessions (in the cloud) |
84 | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
85 | User prompts | Yes; returned as `text` blocks. | Yes; returned as `text` blocks. |
86 | Assistant responses | Yes; text output only. | Yes; text output only. |
87 | Tool calls and results | Yes; each `tool_use` input and each `text` entry in a `tool_result` is truncated to 10,000 bytes by default (up to about 1 MiB each on request). | Yes; each `tool_use` input and each `text` entry in a `tool_result` is truncated to 10,000 bytes by default (up to about 1 MiB each on request). |
88 | File contents and file names | Yes; text that Claude reads through tools appears in the transcript, subject to the same truncation. Images, PDFs, and other binary or structured content appear only as placeholder `text` blocks. File names appear in tool-call inputs and outputs. | Yes; file contents and file names appear in the transcript through tool-call inputs and outputs (text only; other content is omitted). |
89 | Artifacts | Yes; generated content appears inside tool-call inputs in the transcript. | Yes; generated content appears inside tool-call inputs in the transcript. |
90 | Skills | Yes; skill content appears when the client sends it as message content, and it is not distinguished from other user text. | Yes; skill content appears in the transcript. |
91 | Session metadata | Yes; owner (`user.id` and email address), organization, workspace, `product_surface`, `created_at`, and `updated_at`, from the list and retrieve endpoints. Local sessions carry no `status`. | Yes; owner, organization, status, timestamps, and `product_surface`, from the list endpoint. |
92 | Thinking blocks | No. | No. |
93 | Images and other non-text content | No; each image, PDF, or other binary or structured block appears as a placeholder `text` block (for example, `[image content not shown]`) with `truncated` set to `true`. Raw file bytes are never returned. | No; non-text blocks are omitted, and raw file bytes are never returned. |
94 | Token usage, cost, and latency | No; token usage and cost are available through the [Claude Enterprise Analytics API](https://platform.claude.com/docs/en/manage-claude/analytics-api#get-access-to-the-claude-enterprise-analytics-api). | No; token usage and cost are available through the [Claude Enterprise Analytics API](https://platform.claude.com/docs/en/manage-claude/analytics-api#get-access-to-the-claude-enterprise-analytics-api). |
9595 
9696 See [Sessions on users' machines](https://platform.claude.com/docs/en/manage-claude/compliance-sessions#retrieve-local-sessions) and [Sessions in the cloud](https://platform.claude.com/docs/en/manage-claude/compliance-sessions#retrieve-remote-sessions) for the endpoints and parameters.
9797 </Accordion>
9898 
9999 <Accordion title="How does session coverage compare with OpenTelemetry logging (OTEL) for Cowork and Claude Code?">
100 [Cowork's OpenTelemetry logging](https://support.claude.com/en/articles/14477985-monitor-claude-cowork-activity-with-opentelemetry) and [Claude Code monitoring](https://code.claude.com/docs/en/monitoring-usage) overlap with the session endpoints but answer different needs: OTEL streams per-event telemetry to infrastructure you run as activity happens, whereas the Compliance API lets you retrieve retained per-session transcripts from Anthropic after the fact.
101 
102 | | Local sessions (on users' machines) | Remote sessions (in the cloud) | OpenTelemetry logging |
103 | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
104 | Delivery | Pull: query and export over HTTPS | Pull: query and export over HTTPS | Push: streamed to your OTLP collector |
105 | Setup | Works with your existing Compliance Access Key | Works with your existing Compliance Access Key | Admin configures an OTLP endpoint and content-capture settings |
106 | Infrastructure | Anthropic-hosted | Anthropic-hosted | You run the collector and storage |
107 | Retention | 6 years by default, or your organization's custom conversation retention period when a finite one is set; held by Anthropic | 6 years, held by Anthropic | Your infrastructure, your policies |
108 | User prompts and assistant responses | Yes | Yes | Yes, subject to content-capture settings |
109 | Tool inputs | Truncated to 10,000 bytes per input by default; up to about 1 MiB on request | Truncated to 10,000 bytes per input by default; up to about 1 MiB on request | Truncated summaries |
110 | Tool result content | Each text entry truncated to 10,000 bytes by default; up to about 1 MiB on request | Each text entry truncated to 10,000 bytes by default; up to about 1 MiB on request | Metadata such as size and success; Claude Code can also capture content with an optional, size-capped setting |
111 | File contents | Yes, through transcript tool calls (text only; other content appears as a placeholder) | Yes, through transcript tool calls (text only; other content is omitted) | File paths; Claude Code can also capture contents with an optional, size-capped setting |
112 | Host and device metadata (terminal type, workspace paths) | No | No | Yes |
113 | Token usage and cost | No | No | Yes |
100 [Cowork's OpenTelemetry logging](https://support.claude.com/en/articles/14477985-monitor-claude-cowork-activity-with-opentelemetry) and [Claude Code monitoring](https://code.claude.com/docs/en/monitoring-usage) overlap with the session endpoints but answer different needs: OTEL streams per-event telemetry to infrastructure you run as activity happens, whereas the Compliance API lets you retrieve retained per-session transcripts from Anthropic after the fact. OTEL can also capture prompts and responses, but Anthropic recommends the Compliance API for retrieving the content of Cowork and Claude Code sessions. For a table comparing local sessions, remote sessions, and OTEL, see the introduction to [Retrieve session transcripts](https://platform.claude.com/docs/en/manage-claude/compliance-sessions).
114101 
115102 OTEL events and Compliance API records share organization and user identifiers, so you can join them.
116103 </Accordion>
Feedback