Follow Discord
Sweep 03 Nov 2026 · 22:27Z Build v2.1.318 536 read Stable v2.1.311 Latest v2.1.318 Next v2.1.318 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One capture · api

One read of Claude Developer Platformapi-20261105T050710Z

156 pages moved out of 885 read.

Pages moved 156 significant first
Pages read 885 in this capture
Captured 05:07 UTC
Corpus hash 3705f4897ac4 corpus-hash

What this read moved

51-75 of 156, page 3 of 7

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

api/beta/sessions/threads/events/list Changed · +57 / -1 lines

from line 873
873873 
874874 Unique identifier for this event.
875875 
876 - `error: BetaManagedAgentsUnknownError or BetaManagedAgentsModelOverloadedError or BetaManagedAgentsModelRateLimitedError or 10 more`
876 - `error: BetaManagedAgentsUnknownError or BetaManagedAgentsModelOverloadedError or BetaManagedAgentsModelRateLimitedError or 12 more`
877877 
878878 - `BetaManagedAgentsUnknownError object`
879879 
from line 1105
11051105 
11061106 ID of the vault containing the affected credential.
11071107 
1108 - `BetaManagedAgentsToolUseLimitReachedError object`
1109 
1110 The turn stopped because the agent loop reached its limit on tool-use rounds (one model response that calls tools, plus running those tools, is one round), not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.
1111 
1112 - `type: "tool_use_limit_reached_error"`
1113 
1114 - `message: string`
1115 
1116 Human-readable error description.
1117 
1118 - `retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal`
1119 
1120 What the client should do next.
1121 
1122 - `BetaManagedAgentsRetryStatusRetrying object`
1123 
1124 The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.
1125 
1126 - `BetaManagedAgentsRetryStatusExhausted object`
1127 
1128 This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.
1129 
1130 - `BetaManagedAgentsRetryStatusTerminal object`
1131 
1132 The session encountered a terminal error and will transition to `terminated` state.
1133 
1134 - `BetaManagedAgentsCompactionLimitReachedError object`
1135 
1136 The turn stopped because the context was compacted the maximum number of times in a row without the model producing a message or a tool call, not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.
1137 
1138 - `type: "compaction_limit_reached_error"`
1139 
1140 - `message: string`
1141 
1142 Human-readable error description.
1143 
1144 - `retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal`
1145 
1146 What the client should do next.
1147 
1148 - `BetaManagedAgentsRetryStatusRetrying object`
1149 
1150 The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.
1151 
1152 - `BetaManagedAgentsRetryStatusExhausted object`
1153 
1154 This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.
1155 
1156 - `BetaManagedAgentsRetryStatusTerminal object`
1157 
1158 The session encountered a terminal error and will transition to `terminated` state.
1159 
11081160 - `BetaManagedAgentsRepositoryAuthenticationError object`
11091161 
11101162 The repository host rejected the credentials, or required credentials and received none.
from line 2449
23972449 
23982450 Two-letter ISO 3166-1 country code, uppercase.
23992451 
2452 pattern: ^[A-Z]{2}$
2453 
24002454 - `region: optional string or null`
24012455 
24022456 Region or state name.
from line 2752
26982752 - `amount: string`
26992753 
27002754 Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.
2755 
2756 pattern: ^(0|[1-9]\d*)$
27012757 
27022758 - `currency: BetaCurrency`
27032759 

api/beta/sessions/threads/events/stream Changed · +57 / -1 lines

from line 875
875875 
876876 Unique identifier for this event.
877877 
878 - `error: BetaManagedAgentsUnknownError or BetaManagedAgentsModelOverloadedError or BetaManagedAgentsModelRateLimitedError or 10 more`
878 - `error: BetaManagedAgentsUnknownError or BetaManagedAgentsModelOverloadedError or BetaManagedAgentsModelRateLimitedError or 12 more`
879879 
880880 - `BetaManagedAgentsUnknownError object`
881881 
from line 1107
11071107 
11081108 ID of the vault containing the affected credential.
11091109 
1110 - `BetaManagedAgentsToolUseLimitReachedError object`
1111 
1112 The turn stopped because the agent loop reached its limit on tool-use rounds (one model response that calls tools, plus running those tools, is one round), not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.
1113 
1114 - `type: "tool_use_limit_reached_error"`
1115 
1116 - `message: string`
1117 
1118 Human-readable error description.
1119 
1120 - `retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal`
1121 
1122 What the client should do next.
1123 
1124 - `BetaManagedAgentsRetryStatusRetrying object`
1125 
1126 The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.
1127 
1128 - `BetaManagedAgentsRetryStatusExhausted object`
1129 
1130 This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.
1131 
1132 - `BetaManagedAgentsRetryStatusTerminal object`
1133 
1134 The session encountered a terminal error and will transition to `terminated` state.
1135 
1136 - `BetaManagedAgentsCompactionLimitReachedError object`
1137 
1138 The turn stopped because the context was compacted the maximum number of times in a row without the model producing a message or a tool call, not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.
1139 
1140 - `type: "compaction_limit_reached_error"`
1141 
1142 - `message: string`
1143 
1144 Human-readable error description.
1145 
1146 - `retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal`
1147 
1148 What the client should do next.
1149 
1150 - `BetaManagedAgentsRetryStatusRetrying object`
1151 
1152 The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.
1153 
1154 - `BetaManagedAgentsRetryStatusExhausted object`
1155 
1156 This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.
1157 
1158 - `BetaManagedAgentsRetryStatusTerminal object`
1159 
1160 The session encountered a terminal error and will transition to `terminated` state.
1161 
11101162 - `BetaManagedAgentsRepositoryAuthenticationError object`
11111163 
11121164 The repository host rejected the credentials, or required credentials and received none.
from line 2451
23992451 
24002452 Two-letter ISO 3166-1 country code, uppercase.
24012453 
2454 pattern: ^[A-Z]{2}$
2455 
24022456 - `region: optional string or null`
24032457 
24042458 Region or state name.
from line 2754
27002754 - `amount: string`
27012755 
27022756 Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.
2757 
2758 pattern: ^(0|[1-9]\d*)$
27032759 
27042760 - `currency: BetaCurrency`
27052761 

api/beta/sessions/update Changed · +12 / -2 lines

from line 563
563563 
564564 Two-letter ISO 3166-1 country code, uppercase.
565565 
566 pattern: ^[A-Z]{2}$
567 
566568 - `region: optional string or null`
567569 
568570 Region or state name.
from line 693
691693 
692694 Unique name for the tool. 1-128 characters; letters, digits, underscores, and hyphens.
693695 
694 minLength: 1, maxLength: 128
696 minLength: 1, maxLength: 128, pattern: ^[a-zA-Z0-9_-]{1,128}$
695697 
696698- `budget: optional BetaManagedAgentsBudgetLimit or null`
697699 
from line 709
707709 
708710 Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.
709711 
712 pattern: ^(0|[1-9]\d*)$
713 
710714 - `currency: BetaCurrency`
711715 
712716 Uppercase ISO-4217 currency code. `USD` is the only currency currently supported; the accepted set is closed and grows only when a new currency is priced.
from line 1297
12931297 
12941298 Two-letter ISO 3166-1 country code, uppercase.
12951299 
1300 pattern: ^[A-Z]{2}$
1301 
12961302 - `region: optional string or null`
12971303 
12981304 Region or state name.
from line 1607
16011607 
16021608 Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.
16031609 
1610 pattern: ^(0|[1-9]\d*)$
1611 
16041612 - `currency: BetaCurrency`
16051613 
16061614 Uppercase ISO-4217 currency code. `USD` is the only currency currently supported; the accepted set is closed and grows only when a new currency is priced.
from line 1701
16931701 
16941702 Full commit SHA to check out.
16951703 
1696 minLength: 7, maxLength: 64
1704 minLength: 7, maxLength: 64, pattern: ^[0-9a-fA-F]+$
16971705 
16981706 - `BetaManagedAgentsFileResource object`
16991707 
from line 1734
17261734 - `memory_store_id: string`
17271735 
17281736 The memory store ID (memstore_...). Must belong to the caller's organization and workspace.
1737 
1738 pattern: ^memstore_[a-zA-Z0-9_]+$
17291739 
17301740 - `access: optional "read_write" or "read_only" or null`
17311741 

api/beta/user_profiles Changed · +6 / -0 lines

from line 185
185185 
186186 The country of the entity (not of the platform), as the platform determines it: an ISO 3166-1 alpha-2 code in upper case, for example `US`. Only the form, two uppercase ASCII letters, is checked.
187187 
188 pattern: ^[A-Z]{2}$
189 
188190 - `email_hash: optional string or null`
189191 
190192 A hash of the entity's email address, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.
from line 1255
12531255 
12541256 The country of the entity (not of the platform), as the platform determines it: an ISO 3166-1 alpha-2 code in upper case, for example `US`. Only the form, two uppercase ASCII letters, is checked.
12551257 
1258 pattern: ^[A-Z]{2}$
1259 
12561260 - `email_hash: optional string or null`
12571261 
12581262 A hash of the entity's email address, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.
from line 2074
20702074 - `country: optional string or null`
20712075 
20722076 The country of the entity (not of the platform), as the platform determines it: an ISO 3166-1 alpha-2 code in upper case, for example `US`. Only the form, two uppercase ASCII letters, is checked.
2077 
2078 pattern: ^[A-Z]{2}$
20732079 
20742080 - `email_hash: optional string or null`
20752081 

api/beta/vaults Changed · +7 / -7 lines

from line 1467
14671467 
14681468 The OAuth access token to send to the MCP server.
14691469 
1470 minLength: 1, maxLength: 8192
1470 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
14711471 
14721472 - `mcp_server_url: string`
14731473 
from line 1559
15591559 
15601560 The static bearer token to send to the MCP server, such as an API key or personal access token.
15611561 
1562 minLength: 1, maxLength: 8192
1562 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
15631563 
15641564 - `mcp_server_url: string`
15651565 
from line 1599
15991599 
16001600 Name of the environment variable. Immutable after create.
16011601 
1602 minLength: 1, maxLength: 255
1602 minLength: 1, maxLength: 255, pattern: ^[A-Z_][A-Z0-9_]*$
16031603 
16041604 - `secret_value: string`
16051605 
16061606 The secret to substitute into the agent's outbound requests. It's write-only and never returned in responses.
16071607 
1608 minLength: 1, maxLength: 4096
1608 minLength: 1, maxLength: 4096, pattern: ^[^\x00-\x1f\x7f]*$
16091609 
16101610 - `injection_location: optional BetaManagedAgentsInjectionLocationParams`
16111611 
from line 2674
26742674 
26752675 The new OAuth access token to replace the stored one.
26762676 
2677 minLength: 1, maxLength: 8192
2677 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
26782678 
26792679 - `expires_at: optional string or null`
26802680 
from line 2742
27422742 
27432743 The new static bearer token to replace the stored one.
27442744 
2745 minLength: 1, maxLength: 8192
2745 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
27462746 
27472747 - `BetaManagedAgentsEnvironmentVariableUpdateParams object`
27482748 
from line 2788
27882788 
27892789 The new secret value to replace the stored one.
27902790 
2791 minLength: 1, maxLength: 4096
2791 minLength: 1, maxLength: 4096, pattern: ^[^\x00-\x1f\x7f]*$
27922792 
27932793- `display_name: optional string or null`
27942794 

api/beta/vaults/credentials Changed · +454 / -454 lines

from line 163
163163 
164164 The OAuth access token to send to the MCP server.
165165 
166 minLength: 1, maxLength: 8192
166 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
167167 
168168 - `mcp_server_url: string`
169169 
from line 255
255255 
256256 The static bearer token to send to the MCP server, such as an API key or personal access token.
257257 
258 minLength: 1, maxLength: 8192
258 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
259259 
260260 - `mcp_server_url: string`
261261 
from line 295
295295 
296296 Name of the environment variable. Immutable after create.
297297 
298 minLength: 1, maxLength: 255
298 minLength: 1, maxLength: 255, pattern: ^[A-Z_][A-Z0-9_]*$
299299 
300300 - `secret_value: string`
301301 
302302 The secret to substitute into the agent's outbound requests. It's write-only and never returned in responses.
303303 
304 minLength: 1, maxLength: 4096
304 minLength: 1, maxLength: 4096, pattern: ^[^\x00-\x1f\x7f]*$
305305 
306306 - `injection_location: optional BetaManagedAgentsInjectionLocationParams`
307307 
from line 1370
13701370 
13711371 The new OAuth access token to replace the stored one.
13721372 
1373 minLength: 1, maxLength: 8192
1373 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
13741374 
13751375 - `expires_at: optional string or null`
13761376 
from line 1438
14381438 
14391439 The new static bearer token to replace the stored one.
14401440 
1441 minLength: 1, maxLength: 8192
1441 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
14421442 
14431443 - `BetaManagedAgentsEnvironmentVariableUpdateParams object`
14441444 
from line 1484
14841484 
14851485 The new secret value to replace the stored one.
14861486 
1487 minLength: 1, maxLength: 4096
1487 minLength: 1, maxLength: 4096, pattern: ^[^\x00-\x1f\x7f]*$
14881488 
14891489- `display_name: optional string or null`
14901490 
from line 2876
28762876 
28772877 Name of the environment variable. Immutable after create.
28782878 
2879 minLength: 1, maxLength: 255
2879 minLength: 1, maxLength: 255, pattern: ^[A-Z_][A-Z0-9_]*$
28802880 
28812881 - `secret_value: string`
28822882 
28832883 The secret to substitute into the agent's outbound requests. It's write-only and never returned in responses.
28842884 
2885 minLength: 1, maxLength: 4096
2885 minLength: 1, maxLength: 4096, pattern: ^[^\x00-\x1f\x7f]*$
28862886 
28872887 - `injection_location: optional BetaManagedAgentsInjectionLocationParams`
28882888 
from line 2942
29422942 
29432943 The new secret value to replace the stored one.
29442944 
2945 minLength: 1, maxLength: 4096
2945 minLength: 1, maxLength: 4096, pattern: ^[^\x00-\x1f\x7f]*$
29462946 
29472947### Beta Managed Agents Injection Location Params
29482948 
from line 3088
30883088 
30893089 The OAuth access token to send to the MCP server.
30903090 
3091 minLength: 1, maxLength: 8192
3091 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
30923092 
30933093 - `mcp_server_url: string`
30943094 
from line 3340
33403340 
33413341 The new OAuth access token to replace the stored one.
33423342 
3343 minLength: 1, maxLength: 8192
3343 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
33443344 
33453345 - `expires_at: optional string or null`
33463346 
from line 3526
35263526 
35273527 The static bearer token to send to the MCP server, such as an API key or personal access token.
35283528 
3529 minLength: 1, maxLength: 8192
3529 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
35303530 
35313531 - `mcp_server_url: string`
35323532 
from line 3546
35463546 
35473547 The new static bearer token to replace the stored one.
35483548 
3549 minLength: 1, maxLength: 8192
3549 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
35503550 
35513551### Beta Managed Agents Token Endpoint Auth Basic Param
35523552 

api/beta/vaults/credentials/create Changed · +4 / -4 lines

from line 161
161161 
162162 The OAuth access token to send to the MCP server.
163163 
164 minLength: 1, maxLength: 8192
164 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
165165 
166166 - `mcp_server_url: string`
167167 
from line 253
253253 
254254 The static bearer token to send to the MCP server, such as an API key or personal access token.
255255 
256 minLength: 1, maxLength: 8192
256 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
257257 
258258 - `mcp_server_url: string`
259259 
from line 293
293293 
294294 Name of the environment variable. Immutable after create.
295295 
296 minLength: 1, maxLength: 255
296 minLength: 1, maxLength: 255, pattern: ^[A-Z_][A-Z0-9_]*$
297297 
298298 - `secret_value: string`
299299 
300300 The secret to substitute into the agent's outbound requests. It's write-only and never returned in responses.
301301 
302 minLength: 1, maxLength: 4096
302 minLength: 1, maxLength: 4096, pattern: ^[^\x00-\x1f\x7f]*$
303303 
304304 - `injection_location: optional BetaManagedAgentsInjectionLocationParams`
305305 

api/beta/vaults/credentials/update Changed · +3 / -3 lines

from line 165
165165 
166166 The new OAuth access token to replace the stored one.
167167 
168 minLength: 1, maxLength: 8192
168 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
169169 
170170 - `expires_at: optional string or null`
171171 
from line 233
233233 
234234 The new static bearer token to replace the stored one.
235235 
236 minLength: 1, maxLength: 8192
236 minLength: 1, maxLength: 8192, pattern: ^[^\x00-\x1f\x7f]*$
237237 
238238 - `BetaManagedAgentsEnvironmentVariableUpdateParams object`
239239 
from line 279
279279 
280280 The new secret value to replace the stored one.
281281 
282 minLength: 1, maxLength: 4096
282 minLength: 1, maxLength: 4096, pattern: ^[^\x00-\x1f\x7f]*$
283283 
284284- `display_name: optional string or null`
285285 

api/completions Page removed · 598 lines, page removed

# Completions ## Create a Text Completion ### Headers ### Body parameters ### Returns ### Example #### Response (200) ## Domain types ### Completion

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

api/completions/create Page removed · 473 lines, page removed

# Create a Text Completion ## Headers ## Body parameters ## Returns ## Example ### Response (200)

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

api/compliance Changed · +101 / -39 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 · +190 / -66 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 · +95 / -33 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 · +6 / -6 lines

from line 847
847847 
848848- `claude_file_id: string`
849849 
850 The file ID (tagged ID, e.g., claude_file_abc123)
850 The file ID (tagged ID, e.g., claude_file_abc123). Also use this endpoint for any id in `chat_messages[].generated_files[].id` that starts with `claude_file_`.
851851 
852852#### Headers
853853 
from line 985
985985 
986986- `claude_file_id: string`
987987 
988 The file ID (tagged ID, e.g., claude_file_abc123)
988 The file ID (tagged ID, e.g., claude_file_abc123). Also use this endpoint for any id in `chat_messages[].generated_files[].id` that starts with `claude_file_`.
989989 
990990#### Headers
991991 
from line 1019
10191019 
10201020- `claude_gen_file_id: string`
10211021 
1022 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from GET /apps/chats/{claude_chat_id}/messages.
1022 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from `GET /v1/compliance/apps/chats/{claude_chat_id}/messages`. An id that does not start with `claude_gen_file_` returns a 400 error. `generated_files` can also list ids that start with `claude_file_`; request those from `GET /v1/compliance/apps/chats/files/{claude_file_id}` instead.
10231023 
10241024#### Headers
10251025 
from line 1095
10951095 
10961096- `claude_gen_file_id: string`
10971097 
1098 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from GET /apps/chats/{claude_chat_id}/messages.
1098 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from `GET /v1/compliance/apps/chats/{claude_chat_id}/messages`. An id that does not start with `claude_gen_file_` returns a 400 error. `generated_files` can also list ids that start with `claude_file_`; request those from `GET /v1/compliance/apps/chats/files/{claude_file_id}/content` instead.
10991099 
11001100#### Headers
11011101 
from line 2660
26602660 
26612661 - `provenance: ContentUnavailable or ClientAsserted or SyntheticMarker or null`
26622662 
2663 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.
2663 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 client sent in a user turn, not necessarily written by a person. `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.
26642664 
26652665 - `ContentUnavailable object`
26662666 
from line 2706
27062706 
27072707 - `role: "assistant" or "user"`
27082708 
2709 Message sender (`user` or `assistant`)
2709 Message role (`user` or `assistant`)
27102710 
27112711 - `"assistant"`
27122712 

api/compliance/apps/chats Changed · +4 / -4 lines

from line 929
929929 
930930- `claude_file_id: string`
931931 
932 The file ID (tagged ID, e.g., claude_file_abc123)
932 The file ID (tagged ID, e.g., claude_file_abc123). Also use this endpoint for any id in `chat_messages[].generated_files[].id` that starts with `claude_file_`.
933933 
934934#### Headers
935935 
from line 1067
10671067 
10681068- `claude_file_id: string`
10691069 
1070 The file ID (tagged ID, e.g., claude_file_abc123)
1070 The file ID (tagged ID, e.g., claude_file_abc123). Also use this endpoint for any id in `chat_messages[].generated_files[].id` that starts with `claude_file_`.
10711071 
10721072#### Headers
10731073 
from line 1101
11011101 
11021102- `claude_gen_file_id: string`
11031103 
1104 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from GET /apps/chats/{claude_chat_id}/messages.
1104 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from `GET /v1/compliance/apps/chats/{claude_chat_id}/messages`. An id that does not start with `claude_gen_file_` returns a 400 error. `generated_files` can also list ids that start with `claude_file_`; request those from `GET /v1/compliance/apps/chats/files/{claude_file_id}` instead.
11051105 
11061106#### Headers
11071107 
from line 1177
11771177 
11781178- `claude_gen_file_id: string`
11791179 
1180 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from GET /apps/chats/{claude_chat_id}/messages.
1180 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from `GET /v1/compliance/apps/chats/{claude_chat_id}/messages`. An id that does not start with `claude_gen_file_` returns a 400 error. `generated_files` can also list ids that start with `claude_file_`; request those from `GET /v1/compliance/apps/chats/files/{claude_file_id}/content` instead.
11811181 
11821182#### Headers
11831183 

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

from line 186
186186 
187187 - `provenance: ContentUnavailable or ClientAsserted or SyntheticMarker or null`
188188 
189 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.
189 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 client sent in a user turn, not necessarily written by a person. `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.
190190 
191191 - `ContentUnavailable object`
192192 
from line 232
232232 
233233 - `role: "assistant" or "user"`
234234 
235 Message sender (`user` or `assistant`)
235 Message role (`user` or `assistant`)
236236 
237237 - `"assistant"`
238238 
from line 460
460460 
461461 - `provenance: ContentUnavailable or ClientAsserted or SyntheticMarker or null`
462462 
463 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.
463 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 client sent in a user turn, not necessarily written by a person. `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.
464464 
465465 - `ContentUnavailable object`
466466 
from line 506
506506 
507507 - `role: "assistant" or "user"`
508508 
509 Message sender (`user` or `assistant`)
509 Message role (`user` or `assistant`)
510510 
511511 - `"assistant"`
512512 

api/organization Changed · +4708 / -0 lines

## Organization › Analytics › Summaries ### Get Activity Summaries ## Organization › Analytics › Users ### List User Activity ## Organization › Analytics › Apps › Chat › Projects ### Get Chat Project Usage ## Organization › Analytics › Connectors ### Get Connector Usage ## Organization › Analytics › Plugins ### Get Plugin Usage ## Organization › Analytics › Skills ### Get Skill Usage ## Organization › Analytics › Artifacts ### Get Artifact Activity ## Organization › Spend Limits › Effective ### List Effective Spend Limits ## Organization › Spend Limits › Increase Requests ### List Spend Limit Increase Requests ### Get Spend Limit Increase Request ### Approve Spend Limit Increase Request ### Deny Spend Limit Increase Request ## Organization › RBAC Groups ### Create RBAC Group ### List RBAC Groups ### Get RBAC Group ### Update RBAC Group ### Delete RBAC Group ## Organization › RBAC Groups › Members ### List RBAC Group Members ### Add RBAC Group Member ### Remove RBAC Group Member ## Organization › RBAC Roles ### List RBAC Roles ### Get RBAC Role ## Organization › RBAC Roles › Permissions ### List RBAC Role Permissions

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

from line 8884
88848884}
88858885```
88868886 
8887## Organization › Analytics › Summaries
8888 
8889### Get Activity Summaries
8890 
8891**GET** `/v1/organizations/analytics/summaries`
8892 
8893Get organization-wide activity summaries for a date range.
8894 
8895Returns one entry per day from `starting_date` (inclusive) to `ending_date`
8896(exclusive) in `data`, the same `data` / `next_page` envelope as the other
8897analytics list endpoints; the series is currently returned in full, so
8898`next_page` is always null.
8899Data is typically available with a 1-day lag and may be revised by a few
8900percent over the following days: when `ending_date` is omitted it
8901defaults to the most recent available day + 1, so the last entry covers
8902the most recent available day. The series can be scoped to an RBAC group
8903via `filter[]=rbac_group_id:{id}`. Available to organizations on a Claude
8904Enterprise plan. Requires an API key with the `read:analytics` scope.
8905 
8906#### Query parameters
8907 
8908- `starting_date: string`
8909 
8910 UTC date in YYYY-MM-DD format. Start of the date range (inclusive). Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.
8911 
8912 format: date
8913 
8914- `ending_date: optional string`
8915 
8916 UTC date in YYYY-MM-DD format. End of the date range (exclusive). Data is typically available with a 1-day lag, so this can be at most today — which is also the default when omitted, making the last entry cover the most recent available day. Data may be revised by a few percent over the following days. The range may span at most 366 days.
8917 
8918 format: date
8919 
8920- `filter: optional array of string`
8921 
8922 Filters as `dimension:value`. Only `rbac_group_id` is supported (e.g. `filter[]=rbac_group_id:{id}`); repeat the param to OR across groups. Scopes the whole day series to members of the matching group(s), re-aggregated from member-level activity — org-wide seat/invite fields and the adoption rates derived from them are null on scoped rows. `rbac_group_id` accepts the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each UTC day (time-of-usage attribution). At most 100 entries.
8923 
8924 maxItems: 100
8925 
8926- `limit: optional number`
8927 
8928 Number of results per page (1-1000, default 100). The day series (at most 366 entries) is currently returned in full in a single page, so `limit` does not yet shorten it.
8929 
8930 minimum: 1, maximum: 1000
8931 
8932- `page: optional string`
8933 
8934 Opaque cursor from a previous response's `next_page` field. `next_page` is currently always null, so there is never a cursor to send.
8935 
8936#### Headers
8937 
8938- `"anthropic-version": optional string`
8939 
8940 The version of the Claude API you want to use.
8941 
8942 Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).
8943 
8944#### Returns
8945 
8946- `data: array of AnalyticsSingleDayActivitySummary`
8947 
8948 One entry per day in the requested range, ascending by date.
8949 
8950 - `assigned_seat_count: number or null`
8951 
8952 Number of seats currently assigned to members. Null when the response is scoped to an RBAC group — seat assignment is org-wide and has no per-group analogue.
8953 
8954 - `cowork_daily_active_user_count: number`
8955 
8956 Number of users with Cowork activity on the requested day
8957 
8958 - `cowork_monthly_active_user_count: number`
8959 
8960 Number of users with Cowork activity in the 30-day rolling window
8961 
8962 - `cowork_weekly_active_user_count: number`
8963 
8964 Number of users with Cowork activity in the 7-day rolling window
8965 
8966 - `daily_active_user_count: number`
8967 
8968 Number of users with token consumption on the requested day
8969 
8970 - `daily_adoption_rate: number or null`
8971 
8972 Percentage of assigned seats with activity on the requested day (`DAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.
8973 
8974 - `ending_at: string`
8975 
8976 End of the aggregation period (exclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-16T00:00:00Z`).
8977 
8978 format: date-time
8979 
8980 - `monthly_active_user_count: number`
8981 
8982 Number of users with token consumption in the 30-day rolling window
8983 
8984 - `monthly_adoption_rate: number or null`
8985 
8986 Percentage of assigned seats with activity in the 30-day rolling window (`MAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.
8987 
8988 - `pending_invite_count: number or null`
8989 
8990 Number of pending invitations to join the organization. Null when the response is scoped to an RBAC group.
8991 
8992 - `starting_at: string`
8993 
8994 Start of the aggregation period (inclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-15T00:00:00Z`).
8995 
8996 format: date-time
8997 
8998 - `weekly_active_user_count: number`
8999 
9000 Number of users with token consumption in the 7-day rolling window
9001 
9002 - `weekly_adoption_rate: number or null`
9003 
9004 Percentage of assigned seats with activity in the 7-day rolling window (`WAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.
9005 
9006 - `chat_cowork_unified_daily_active_user_count: optional number or null`
9007 
9008 Number of users with activity in Chat and Cowork unified on the requested day. Omitted from the response on deployments that do not offer Chat and Cowork unified.
9009 
9010 - `chat_cowork_unified_monthly_active_user_count: optional number or null`
9011 
9012 Number of users with activity in Chat and Cowork unified in the 28-day rolling window (30 days when the request filters by `rbac_group_id`). Omitted from the response on deployments that do not offer Chat and Cowork unified.
9013 
9014 - `chat_cowork_unified_weekly_active_user_count: optional number or null`
9015 
9016 Number of users with activity in Chat and Cowork unified in the 7-day rolling window. Omitted from the response on deployments that do not offer Chat and Cowork unified.
9017 
9018 - `chat_daily_active_user_count: optional number or null`
9019 
9020 Number of users with claude.ai (chat) activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.
9021 
9022 - `chat_monthly_active_user_count: optional number or null`
9023 
9024 Number of users with claude.ai (chat) activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9025 
9026 - `chat_weekly_active_user_count: optional number or null`
9027 
9028 Number of users with claude.ai (chat) activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9029 
9030 - `claude_code_daily_active_user_count: optional number or null`
9031 
9032 Number of users with Claude Code activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.
9033 
9034 - `claude_code_monthly_active_user_count: optional number or null`
9035 
9036 Number of users with Claude Code activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9037 
9038 - `claude_code_weekly_active_user_count: optional number or null`
9039 
9040 Number of users with Claude Code activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9041 
9042 - `claude_design_daily_active_user_count: optional number or null`
9043 
9044 Number of users with Claude Design activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.
9045 
9046 - `claude_design_monthly_active_user_count: optional number or null`
9047 
9048 Number of users with Claude Design activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9049 
9050 - `claude_design_weekly_active_user_count: optional number or null`
9051 
9052 Number of users with Claude Design activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9053 
9054 - `office_agent_daily_active_user_count: optional number or null`
9055 
9056 Number of users with Claude in Office activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.
9057 
9058 - `office_agent_monthly_active_user_count: optional number or null`
9059 
9060 Number of users with Claude in Office activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9061 
9062 - `office_agent_weekly_active_user_count: optional number or null`
9063 
9064 Number of users with Claude in Office activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9065 
9066 - `science_daily_active_user_count: optional number or null`
9067 
9068 Number of users with Claude Science activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.
9069 
9070 - `science_entitled_user_count: optional number or null`
9071 
9072 Number of users with a Claude Science seat entitlement (per-seat RBAC) at the time of the daily snapshot. The funnel top; independent of the org-level Claude Science toggle. Null when the response is scoped to an RBAC group — entitlement is org-wide and has no per-group analogue. Omitted from the response while the per-product breakdown is not enabled for this organization.
9073 
9074 - `science_monthly_active_user_count: optional number or null`
9075 
9076 Number of users with Claude Science activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9077 
9078 - `science_weekly_active_user_count: optional number or null`
9079 
9080 Number of users with Claude Science activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.
9081 
9082- `next_page: string or null`
9083 
9084 Opaque cursor for the next page, or null if no more results. Currently always null: the day series is returned in full.
9085 
9086#### Example
9087 
9088```bash
9089curl https://api.anthropic.com/v1/organizations/analytics/summaries \
9090 -H 'anthropic-version: 2026-10-21' \
9091 -H "Authorization: Bearer $ANTHROPIC_API_KEY"
9092```
9093 
9094##### Response (200)
9095 
9096```json
9097{
9098 "data": [
9099 {
9100 "assigned_seat_count": 0,
9101 "cowork_daily_active_user_count": 0,
9102 "cowork_monthly_active_user_count": 0,
9103 "cowork_weekly_active_user_count": 0,
9104 "daily_active_user_count": 0,
9105 "daily_adoption_rate": 0,
9106 "ending_at": "2019-12-27T18:11:19.117Z",
9107 "monthly_active_user_count": 0,
9108 "monthly_adoption_rate": 0,
9109 "pending_invite_count": 0,
9110 "starting_at": "2019-12-27T18:11:19.117Z",
9111 "weekly_active_user_count": 0,
9112 "weekly_adoption_rate": 0,
9113 "chat_cowork_unified_daily_active_user_count": 0,
9114 "chat_cowork_unified_monthly_active_user_count": 0,
9115 "chat_cowork_unified_weekly_active_user_count": 0,
9116 "chat_daily_active_user_count": 0,
9117 "chat_monthly_active_user_count": 0,
9118 "chat_weekly_active_user_count": 0,
9119 "claude_code_daily_active_user_count": 0,
9120 "claude_code_monthly_active_user_count": 0,
9121 "claude_code_weekly_active_user_count": 0,
9122 "claude_design_daily_active_user_count": 0,
9123 "claude_design_monthly_active_user_count": 0,
9124 "claude_design_weekly_active_user_count": 0,
9125 "office_agent_daily_active_user_count": 0,
9126 "office_agent_monthly_active_user_count": 0,
9127 "office_agent_weekly_active_user_count": 0,
9128 "science_daily_active_user_count": 0,
9129 "science_entitled_user_count": 0,
9130 "science_monthly_active_user_count": 0,
9131 "science_weekly_active_user_count": 0
9132 }
9133 ],
9134 "next_page": "next_page"
9135}
9136```
9137 
9138## Organization › Analytics › Users
9139 
9140### List User Activity
9141 
9142**GET** `/v1/organizations/analytics/users`
9143 
9144Get per-user activity for a given day, with cursor-based pagination.
9145 
9146Returns activity metrics for each user in the organization, sorted by email
9147address. Use `group_by[]` for per-RBAC-group aggregates, or `filter[]` to
9148scope results to specific members, groups, or a chat project. Available
9149to organizations on a Claude Enterprise plan. Requires an API key with
9150the `read:analytics` scope.
9151 
9152#### Query parameters
9153 
9154- `date: optional string`
9155 
9156 UTC date in YYYY-MM-DD format. The day to get user activity for. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.
9157 
9158 format: date
9159 
9160- `ending_date: optional string`
9161 
9162 UTC date in YYYY-MM-DD format. End of the date range (exclusive); only valid with `starting_date`. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day), so this can be at most today — which is also the default when omitted, resolved once when the first page is served and reused for the rest of the pagination sequence. At most 366 days after `starting_date`.
9163 
9164 format: date
9165 
9166- `filter: optional array of string`
9167 
9168 Filters as `dimension:value`, e.g. `filter[]=rbac_group_id:{id}`. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: `project_id`, `rbac_group_id`, `user_id`. Value forms: `project_id` takes a tagged project id (`claude_proj_...`); `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries. A `project_id` filter limits each member's row to their claude.ai chat activity in that project and cannot be combined with `group_by[]` or an `rbac_group_id` filter. On these rows, every count in `chat_cowork_unified_metrics.sessions` is 0, because sessions are not measured per project. On any day a member sent a chat message in Chat and Cowork unified, all of that member's project activity for the day is counted in `chat_cowork_unified_metrics.chat` instead of `chat_metrics`.
9169 
9170 maxItems: 100
9171 
9172- `group_by: optional array of AnalyticsUserGroupBy`
9173 
9174 Dimensions to break results out by (e.g. `group_by[]=rbac_group_id`). Supported on this endpoint: `rbac_group_id`. Rows are already per-member, so the one supported grouping aggregates them per RBAC group instead. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via `next_page`; an unsupported dimension returns 400. `rbac_group_id` attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.
9175 
9176 maxItems: 100
9177 
9178- `limit: optional number`
9179 
9180 Number of results per page (1-1000, default 100).
9181 
9182 minimum: 1, maximum: 1000
9183 
9184- `order: optional AnalyticsOrder`
9185 
9186 Sort direction: `asc` or `desc`. Defaults to `asc` for the endpoint's sort column and to `desc` when `order_by` names a metric (a top-N ranking). Applies to `order_by`, or to the endpoint's default sort field when `order_by` is omitted.
9187 
9188 - `"asc"`
9189 
9190 - `"desc"`
9191 
9192- `order_by: optional string`
9193 
9194 Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).
9195 
9196- `page: optional string`
9197 
9198 Opaque cursor from a previous response's `next_page` field.
9199 
9200- `starting_date: optional string`
9201 
9202 UTC date in YYYY-MM-DD format. Start of a date range (inclusive). Enables rollup mode: one row per entity aggregated over the whole range — addable counters are summed across days, and a distinct count is never summed where summing could double-count (a field's range value is recomputed exactly over the window, approximate via HLL with typical error under 2%, null, or — for the creation-event counts, whose per-day values cannot overlap — a per-day sum that is itself exact; each field's own description says which). Use either `date` or `starting_date`, not both. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.
9203 
9204 format: date
9205 
9206#### Headers
9207 
9208- `"anthropic-version": optional string`
9209 
9210 The version of the Claude API you want to use.
9211 
9212 Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).
9213 
9214#### Returns
9215 
9216- `data: array of AnalyticsUserActivity`
9217 
9218 - `chat_metrics: AnalyticsChatMetrics`
9219 
9220 Claude.ai activity metrics for a single user on a given day.
9221 
9222 - `connectors_used_count: number`
9223 
9224 Number of MCP connector invocations.
9225 
9226 - `distinct_artifacts_created_count: number`
9227 
9228 Number of distinct artifacts created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
9229 
9230 - `distinct_connectors_used_count: number or null`
9231 
9232 Distinct claude.ai connectors this user used. Excludes calls whose connector could not be identified and all calls from organizations with zero data retention. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9233 
9234 - `distinct_conversation_count: number or null`
9235 
9236 Number of distinct conversations the user participated in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9237 
9238 - `distinct_files_uploaded_count: number or null`
9239 
9240 Number of distinct files uploaded. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9241 
9242 - `distinct_projects_created_count: number`
9243 
9244 Number of distinct projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
9245 
9246 - `distinct_projects_used_count: number or null`
9247 
9248 Number of distinct projects used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9249 
9250 - `distinct_shared_artifacts_viewed_count: number or null`
9251 
9252 Number of distinct shared artifacts the user viewed. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9253 
9254 - `distinct_skills_used_count: number or null`
9255 
9256 Number of distinct skills used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9257 
9258 - `message_count: number`
9259 
9260 Number of messages sent
9261 
9262 - `shared_conversations_viewed_count: number`
9263 
9264 Number of times the user opened a shared conversation in a project
9265 
9266 - `thinking_message_count: number`
9267 
9268 Number of messages that used extended thinking
9269 
9270 - `claude_code_metrics: AnalyticsClaudeCodeMetrics`
9271 
9272 Claude Code activity metrics for a single user on a given day.
9273 
9274 - `core_metrics: AnalyticsCoreCodeMetrics`
9275 
9276 Core Claude Code activity metrics for a single user on a given day.
9277 
9278 - `artifacts_created_count: number`
9279 
9280 Number of artifacts created in Claude Code sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct c

api/organization/analytics New page · 4081 lines, new page

# Analytics ## Domain types ### Analytics Artifact Activity ### Analytics Artifact Group By ### Analytics Chat Cowork Unified Chat Metrics ### Analytics Chat Cowork Unified Metrics ### Analytics Chat Cowork Unified Sessions Metrics ### Analytics Chat Metrics ### Analytics Claude Code Metrics ### Analytics Connector Activity ### Analytics Connector Chat Cowork Unified Chat Metrics ### Analytics Connector Chat Cowork Unified Metrics ### Analytics Connector Chat Cowork Unified Sessions Metrics ### Analytics Connector Chat Metrics ### Analytics Connector Claude Code Metrics ### Analytics Connector Cowork Metrics ### Analytics Connector Group By ### Analytics Connector Office Metrics ### Analytics Connector Office Product Metrics ### Analytics Core Code Metrics ### Analytics Cowork Metrics ### Analytics Design Metrics ### Analytics Lines Of Code ### Analytics Office Metrics ### Analytics Office Product Metrics ### Analytics Order ### Analytics Plugin Activity ### Analytics Plugin Chat Cowork Unified Metrics ### Analytics Plugin Claude Code Metrics ### Analytics Plugin Cowork Metrics ### Analytics Plugin Group By ### Analytics Project Activity ### Analytics Project Group By ### Analytics Science Metrics ### Analytics Single Day Activity Summary ### Analytics Skill Activity ### Analytics Skill Chat Cowork Unified Chat Metrics ### Analytics Skill Chat Cowork Unified Metrics ### Analytics Skill Chat Cowork Unified Sessions Metrics ### Analytics Skill Chat Metrics ### Analytics Skill Claude Code Metrics ### Analytics Skill Cowork Metrics ### Analytics Skill Group By ### Analytics Skill Office Metrics ### Analytics Skill Office Product Metrics ### Analytics Tool Action Counts ### Analytics Tool Actions ### Analytics User ### Analytics User Activity ### Analytics User Group By ## Analytics › Summaries ### Get Activity Summaries #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ## Analytics › Users ### List User Activity #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ## Analytics › Apps › Chat › Projects ### Get Chat Project Usage #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ## Analytics › Connectors ### Get Connector Usage #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ## Analytics › Plugins ### Get Plugin Usage #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ## Analytics › Skills ### Get Skill Usage #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ## Analytics › Artifacts ### Get Artifact Activity #### Query parameters #### Headers #### Returns #### Example ##### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Analytics
url: https://platform.claude.com/docs/en/api/organization/analytics
---

# Analytics

## Domain types

### Analytics Artifact Activity

- `AnalyticsArtifactActivity object`

  Artifact-creation activity for one (`artifact_type`, `is_shared`) bucket
  on a given day.

  Artifacts form a small finite cube — the canonical MIME type (8 values incl.
  `other`) crossed with shared-vs-private — so the response is the full set of
  non-empty buckets, not a ranked/paginated list. Claude Code and Cowork
  artifacts report under `text/html` and are counted from 2026-08-17
  onward; earlier days contain claude.ai chat artifacts only. With
  `group_by[]=product` / `user_id` / `rbac_group_id` each row is further
  split by the flat group keys and counts are scoped to that cut.

  - `artifact_type: string`

    Canonical artifact MIME type (e.g. `text/markdown`, `application/vnd.ant.react`, `image/svg+xml`), or `other`. Claude Code and Cowork artifacts report as `text/html`.

  - `artifacts_created_count: number`

    Number of artifacts created in this bucket on the requested day

  - `distinct_user_count: number`

    Number of distinct users who created artifacts in this bucket on the requested day

  - `is_shared: boolean`

    Whether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).

  - `published_artifacts_created_count: number`

    Number of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds `artifacts_created_count`

  - `product: optional string or null`

    Product that produced this row's activity: one of `chat`, `claude_code`, `cowork`, `office_agent`, or `chat_cowork_unified` (Chat and Cowork unified). These are the canonical Cost & Usage product names; an `office_agent` row's per-surface breakdown is in its `office_metrics`. On `/plugins` only `cowork`, `claude_code` and `chat_cowork_unified` occur (the only surfaces with plugin attribution); on `/artifacts` only `chat`, `claude_code`, `cowork` and `chat_cowork_unified` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.

  - `rbac_group_id: optional string or null`

    Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

  - `rbac_group_name: optional string or null`

    Resolved RBAC group display name, alongside `rbac_group_id` when name resolution is available. Null if the group has been deleted or its name could not be resolved; `rbac_group_id` remains the stable key.

  - `user_id: optional string or null`

    Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

### Analytics Artifact Group By

- `AnalyticsArtifactGroupBy = "product" or "rbac_group_id" or "user_id"`

  A dimension to group artifact activity by.

  - `"product"`

  - `"rbac_group_id"`

  - `"user_id"`

### Analytics Chat Cowork Unified Chat Metrics

- `AnalyticsChatCoworkUnifiedChatMetrics object`

  Chat activity recorded while members had Chat and Cowork unified turned
  on.

  - `connectors_used_count: number`

    Same measure as `chat_metrics.connectors_used_count`, for activity recorded while members had Chat and Cowork unified turned on.

  - `distinct_artifacts_created_count: number`

    Same measure as `chat_metrics.distinct_artifacts_created_count`, for activity recorded while members had Chat and Cowork unified turned on. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.

  - `distinct_connectors_used_count: number or null`

    Same measure as `chat_metrics.distinct_connectors_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_conversation_count: number or null`

    Same measure as `chat_metrics.distinct_conversation_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_files_uploaded_count: number or null`

    Same measure as `chat_metrics.distinct_files_uploaded_count`, for activity recorded while members had Chat and Cowork unified turned on. It counts uploaded files as well as files Claude created and images returned by Claude's tools, such as screenshots. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_projects_created_count: number`

    Same measure as `chat_metrics.distinct_projects_created_count`, for activity recorded while members had Chat and Cowork unified turned on. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.

  - `distinct_projects_used_count: number or null`

    Same measure as `chat_metrics.distinct_projects_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_shared_artifacts_viewed_count: number or null`

    Always null: shared-artifact views are not currently measured.

  - `distinct_skills_used_count: number or null`

    Same measure as `chat_metrics.distinct_skills_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `message_count: number`

    Same measure as `chat_metrics.message_count`, for activity recorded while members had Chat and Cowork unified turned on.

  - `shared_conversations_viewed_count: number`

    Same measure as `chat_metrics.shared_conversations_viewed_count`, for activity recorded while members had Chat and Cowork unified turned on.

  - `thinking_message_count: number`

    Same measure as `chat_metrics.thinking_message_count`, for activity recorded while members had Chat and Cowork unified turned on.

### Analytics Chat Cowork Unified Metrics

- `AnalyticsChatCoworkUnifiedMetrics object`

  Activity in Chat and Cowork unified for one user on one day: `chat` holds
  chat activity and `sessions` holds Cowork session activity.

  - `chat: AnalyticsChatCoworkUnifiedChatMetrics`

    Chat activity recorded while members had Chat and Cowork unified turned
    on.

    - `connectors_used_count: number`

      Same measure as `chat_metrics.connectors_used_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `distinct_artifacts_created_count: number`

      Same measure as `chat_metrics.distinct_artifacts_created_count`, for activity recorded while members had Chat and Cowork unified turned on. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.

    - `distinct_connectors_used_count: number or null`

      Same measure as `chat_metrics.distinct_connectors_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `distinct_conversation_count: number or null`

      Same measure as `chat_metrics.distinct_conversation_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `distinct_files_uploaded_count: number or null`

      Same measure as `chat_metrics.distinct_files_uploaded_count`, for activity recorded while members had Chat and Cowork unified turned on. It counts uploaded files as well as files Claude created and images returned by Claude's tools, such as screenshots. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `distinct_projects_created_count: number`

      Same measure as `chat_metrics.distinct_projects_created_count`, for activity recorded while members had Chat and Cowork unified turned on. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.

    - `distinct_projects_used_count: number or null`

      Same measure as `chat_metrics.distinct_projects_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `distinct_shared_artifacts_viewed_count: number or null`

      Always null: shared-artifact views are not currently measured.

    - `distinct_skills_used_count: number or null`

      Same measure as `chat_metrics.distinct_skills_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `message_count: number`

      Same measure as `chat_metrics.message_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `shared_conversations_viewed_count: number`

      Same measure as `chat_metrics.shared_conversations_viewed_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `thinking_message_count: number`

      Same measure as `chat_metrics.thinking_message_count`, for activity recorded while members had Chat and Cowork unified turned on.

  - `sessions: AnalyticsChatCoworkUnifiedSessionsMetrics`

    Cowork session activity recorded while members had Chat and Cowork
    unified turned on.

    - `action_count: number`

      Same measure as `cowork_metrics.action_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `artifacts_created_count: number`

      Same measure as `cowork_metrics.artifacts_created_count`, for activity recorded while members had Chat and Cowork unified turned on. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.

    - `connectors_used_count: number`

      Same measure as `cowork_metrics.connectors_used_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `dispatch_turn_count: number`

      Same measure as `cowork_metrics.dispatch_turn_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `distinct_connectors_used_count: number or null`

      Same measure as `cowork_metrics.distinct_connectors_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `distinct_plugins_used_count: number or null`

      Same measure as `cowork_metrics.distinct_plugins_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `distinct_session_count: number or null`

      Same measure as `cowork_metrics.distinct_session_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `distinct_skills_used_count: number or null`

      Same measure as `cowork_metrics.distinct_skills_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `edit_tool_count: number or null`

      Same measure as `cowork_metrics.edit_tool_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `file_edit_count: number or null`

      Same measure as `cowork_metrics.file_edit_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `message_count: number`

      Same measure as `cowork_metrics.message_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `multi_edit_tool_count: number or null`

      Same measure as `cowork_metrics.multi_edit_tool_count`, for activity recorded while members had Chat and Cowork unified turned on. Claude no longer has a multi-edit tool, so expect 0 when not null; each edit is now a separate Edit tool call, counted in `edit_tool_count` and `file_edit_count`.

    - `notebook_edit_tool_count: number or null`

      Same measure as `cowork_metrics.notebook_edit_tool_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `plugins_used_count: number or null`

      Same measure as `cowork_metrics.plugins_used_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `sessions_with_file_edits_count: number or null`

      Same measure as `cowork_metrics.sessions_with_file_edits_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `skills_used_count: number`

      Same measure as `cowork_metrics.skills_used_count`, for activity recorded while members had Chat and Cowork unified turned on.

    - `write_tool_count: number or null`

      Same measure as `cowork_metrics.write_tool_count`, for activity recorded while members had Chat and Cowork unified turned on.

### Analytics Chat Cowork Unified Sessions Metrics

- `AnalyticsChatCoworkUnifiedSessionsMetrics object`

  Cowork session activity recorded while members had Chat and Cowork
  unified turned on.

  - `action_count: number`

    Same measure as `cowork_metrics.action_count`, for activity recorded while members had Chat and Cowork unified turned on.

  - `artifacts_created_count: number`

    Same measure as `cowork_metrics.artifacts_created_count`, for activity recorded while members had Chat and Cowork unified turned on. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.

  - `connectors_used_count: number`

    Same measure as `cowork_metrics.connectors_used_count`, for activity recorded while members had Chat and Cowork unified turned on.

  - `dispatch_turn_count: number`

    Same measure as `cowork_metrics.dispatch_turn_count`, for activity recorded while members had Chat and Cowork unified turned on.

  - `distinct_connectors_used_count: number or null`

    Same measure as `cowork_metrics.distinct_connectors_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_plugins_used_count: number or null`

    Same measure as `cowork_metrics.distinct_plugins_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_session_count: number or null`

    Same measure as `cowork_metrics.distinct_session_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_skills_used_count: number or null`

    Same measure as `cowork_metrics.distinct_skills_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `edit_tool_count: number or null`

Cut at 300 lines. The page has the rest.

api/organization/analytics/apps New page · 184 lines, new page

# Apps ## Apps › Chat › Projects ### Get Chat Project Usage #### Query parameters #### Headers #### Returns #### Example ##### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Apps
url: https://platform.claude.com/docs/en/api/organization/analytics/apps
---

# Apps

## Apps › Chat › Projects

### Get Chat Project Usage

**GET** `/v1/organizations/analytics/apps/chat/projects`

Get per-project activity for a given day, with cursor-based pagination.

Returns activity metrics for each project in the organization, sorted by
project ID. Use `group_by[]` to break projects out per member or per RBAC
group, and `filter[]` to scope results; the parameter descriptions list the
supported dimensions. Available to organizations on a Claude Enterprise
plan. Requires an API key with the `read:analytics` scope.

#### Query parameters

- `date: optional string`

  UTC date in YYYY-MM-DD format. The day to get project activity for. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

- `ending_date: optional string`

  UTC date in YYYY-MM-DD format. End of the date range (exclusive); only valid with `starting_date`. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day), so this can be at most today — which is also the default when omitted, resolved once when the first page is served and reused for the rest of the pagination sequence. At most 366 days after `starting_date`.

  format: date

- `filter: optional array of string`

  Filters as `dimension:value`, e.g. `filter[]=rbac_group_id:{id}`. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: `project_id`, `rbac_group_id`, `user_id`. Value forms: `project_id` takes a tagged project id (`claude_proj_...`); `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.

  maxItems: 100

- `group_by: optional array of AnalyticsProjectGroupBy`

  Dimensions to break results out by (e.g. `group_by[]=user_id`). Supported on this endpoint: `rbac_group_id`, `user_id`. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via `next_page`; an unsupported dimension returns 400. `rbac_group_id` attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.

  maxItems: 100

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

  Number of results per page (1-1000, default 100).

  minimum: 1, maximum: 1000

- `order: optional AnalyticsOrder`

  Sort direction: `asc` or `desc`. Defaults to `asc` for the endpoint's sort column and to `desc` when `order_by` names a metric (a top-N ranking). Applies to `order_by`, or to the endpoint's default sort field when `order_by` is omitted.

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

  Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field.

- `starting_date: optional string`

  UTC date in YYYY-MM-DD format. Start of a date range (inclusive). Enables rollup mode: one row per entity aggregated over the whole range — addable counters are summed across days, and a distinct count is never summed where summing could double-count (a field's range value is recomputed exactly over the window, approximate via HLL with typical error under 2%, null, or — for the creation-event counts, whose per-day values cannot overlap — a per-day sum that is itself exact; each field's own description says which). Use either `date` or `starting_date`, not both. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

#### Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

#### Returns

- `data: array of AnalyticsProjectActivity`

  - `created_at: string or null`

    Project creation timestamp in RFC 3339 format. Null if the project was deleted before attribution was recorded.

    format: date-time

  - `created_by: AnalyticsUser or null`

    User who created the project. Null if the project was deleted before attribution was recorded, or if the creator's account no longer exists.

    - `type: "user"`

      Object type. Always `user`.

      default: user

    - `id: string`

      Tagged user identifier (e.g. `user_...`)

    - `email_address: string`

      Email address of the user

  - `distinct_conversation_count: number or null`

    Number of distinct conversations in the project. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_user_count: number`

    Number of distinct users who used the project on the requested day, or, in date-range mode, over the requested window — recomputed as an exact distinct count over the window's per-member daily rows, never a sum of per-day values.

  - `message_count: number`

    Number of messages sent in the project on the requested day

  - `project_id: string`

    Tagged project identifier (e.g. `claude_proj_...`)

  - `project_name: string`

    Name of the project

  - `rbac_group_id: optional string or null`

    Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

  - `rbac_group_name: optional string or null`

    Resolved RBAC group display name, alongside `rbac_group_id` when name resolution is available. Null if the group has been deleted or its name could not be resolved; `rbac_group_id` remains the stable key.

  - `user_id: optional string or null`

    Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

- `next_page: string or null`

  Opaque cursor for the next page, or null if no more results

#### Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
    -H 'anthropic-version: 2026-10-21' \
    -H "Authorization: Bearer $ANTHROPIC_API_KEY"
```

##### Response (200)

```json
{
  "data": [
    {
      "created_at": "2019-12-27T18:11:19.117Z",
      "created_by": {
        "id": "id",
        "email_address": "email_address",
        "type": "user"
      },
      "distinct_conversation_count": 0,
      "distinct_user_count": 0,
      "message_count": 0,
      "project_id": "project_id",
      "project_name": "project_name",
      "rbac_group_id": "rbac_group_id",
      "rbac_group_name": "rbac_group_name",
      "user_id": "user_id"
    }
  ],
  "next_page": "next_page"
}
```

api/organization/analytics/apps/chat New page · 184 lines, new page

# Chat ## Chat › Projects ### Get Chat Project Usage #### Query parameters #### Headers #### Returns #### Example ##### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Chat
url: https://platform.claude.com/docs/en/api/organization/analytics/apps/chat
---

# Chat

## Chat › Projects

### Get Chat Project Usage

**GET** `/v1/organizations/analytics/apps/chat/projects`

Get per-project activity for a given day, with cursor-based pagination.

Returns activity metrics for each project in the organization, sorted by
project ID. Use `group_by[]` to break projects out per member or per RBAC
group, and `filter[]` to scope results; the parameter descriptions list the
supported dimensions. Available to organizations on a Claude Enterprise
plan. Requires an API key with the `read:analytics` scope.

#### Query parameters

- `date: optional string`

  UTC date in YYYY-MM-DD format. The day to get project activity for. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

- `ending_date: optional string`

  UTC date in YYYY-MM-DD format. End of the date range (exclusive); only valid with `starting_date`. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day), so this can be at most today — which is also the default when omitted, resolved once when the first page is served and reused for the rest of the pagination sequence. At most 366 days after `starting_date`.

  format: date

- `filter: optional array of string`

  Filters as `dimension:value`, e.g. `filter[]=rbac_group_id:{id}`. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: `project_id`, `rbac_group_id`, `user_id`. Value forms: `project_id` takes a tagged project id (`claude_proj_...`); `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.

  maxItems: 100

- `group_by: optional array of AnalyticsProjectGroupBy`

  Dimensions to break results out by (e.g. `group_by[]=user_id`). Supported on this endpoint: `rbac_group_id`, `user_id`. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via `next_page`; an unsupported dimension returns 400. `rbac_group_id` attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.

  maxItems: 100

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

  Number of results per page (1-1000, default 100).

  minimum: 1, maximum: 1000

- `order: optional AnalyticsOrder`

  Sort direction: `asc` or `desc`. Defaults to `asc` for the endpoint's sort column and to `desc` when `order_by` names a metric (a top-N ranking). Applies to `order_by`, or to the endpoint's default sort field when `order_by` is omitted.

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

  Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field.

- `starting_date: optional string`

  UTC date in YYYY-MM-DD format. Start of a date range (inclusive). Enables rollup mode: one row per entity aggregated over the whole range — addable counters are summed across days, and a distinct count is never summed where summing could double-count (a field's range value is recomputed exactly over the window, approximate via HLL with typical error under 2%, null, or — for the creation-event counts, whose per-day values cannot overlap — a per-day sum that is itself exact; each field's own description says which). Use either `date` or `starting_date`, not both. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

#### Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

#### Returns

- `data: array of AnalyticsProjectActivity`

  - `created_at: string or null`

    Project creation timestamp in RFC 3339 format. Null if the project was deleted before attribution was recorded.

    format: date-time

  - `created_by: AnalyticsUser or null`

    User who created the project. Null if the project was deleted before attribution was recorded, or if the creator's account no longer exists.

    - `type: "user"`

      Object type. Always `user`.

      default: user

    - `id: string`

      Tagged user identifier (e.g. `user_...`)

    - `email_address: string`

      Email address of the user

  - `distinct_conversation_count: number or null`

    Number of distinct conversations in the project. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_user_count: number`

    Number of distinct users who used the project on the requested day, or, in date-range mode, over the requested window — recomputed as an exact distinct count over the window's per-member daily rows, never a sum of per-day values.

  - `message_count: number`

    Number of messages sent in the project on the requested day

  - `project_id: string`

    Tagged project identifier (e.g. `claude_proj_...`)

  - `project_name: string`

    Name of the project

  - `rbac_group_id: optional string or null`

    Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

  - `rbac_group_name: optional string or null`

    Resolved RBAC group display name, alongside `rbac_group_id` when name resolution is available. Null if the group has been deleted or its name could not be resolved; `rbac_group_id` remains the stable key.

  - `user_id: optional string or null`

    Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

- `next_page: string or null`

  Opaque cursor for the next page, or null if no more results

#### Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
    -H 'anthropic-version: 2026-10-21' \
    -H "Authorization: Bearer $ANTHROPIC_API_KEY"
```

##### Response (200)

```json
{
  "data": [
    {
      "created_at": "2019-12-27T18:11:19.117Z",
      "created_by": {
        "id": "id",
        "email_address": "email_address",
        "type": "user"
      },
      "distinct_conversation_count": 0,
      "distinct_user_count": 0,
      "message_count": 0,
      "project_id": "project_id",
      "project_name": "project_name",
      "rbac_group_id": "rbac_group_id",
      "rbac_group_name": "rbac_group_name",
      "user_id": "user_id"
    }
  ],
  "next_page": "next_page"
}
```

api/organization/analytics/apps/chat/projects New page · 182 lines, new page

# Projects ## Get Chat Project Usage ### Query parameters ### Headers ### Returns ### Example #### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Projects
url: https://platform.claude.com/docs/en/api/organization/analytics/apps/chat/projects
---

# Projects

## Get Chat Project Usage

**GET** `/v1/organizations/analytics/apps/chat/projects`

Get per-project activity for a given day, with cursor-based pagination.

Returns activity metrics for each project in the organization, sorted by
project ID. Use `group_by[]` to break projects out per member or per RBAC
group, and `filter[]` to scope results; the parameter descriptions list the
supported dimensions. Available to organizations on a Claude Enterprise
plan. Requires an API key with the `read:analytics` scope.

### Query parameters

- `date: optional string`

  UTC date in YYYY-MM-DD format. The day to get project activity for. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

- `ending_date: optional string`

  UTC date in YYYY-MM-DD format. End of the date range (exclusive); only valid with `starting_date`. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day), so this can be at most today — which is also the default when omitted, resolved once when the first page is served and reused for the rest of the pagination sequence. At most 366 days after `starting_date`.

  format: date

- `filter: optional array of string`

  Filters as `dimension:value`, e.g. `filter[]=rbac_group_id:{id}`. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: `project_id`, `rbac_group_id`, `user_id`. Value forms: `project_id` takes a tagged project id (`claude_proj_...`); `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.

  maxItems: 100

- `group_by: optional array of AnalyticsProjectGroupBy`

  Dimensions to break results out by (e.g. `group_by[]=user_id`). Supported on this endpoint: `rbac_group_id`, `user_id`. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via `next_page`; an unsupported dimension returns 400. `rbac_group_id` attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.

  maxItems: 100

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

  Number of results per page (1-1000, default 100).

  minimum: 1, maximum: 1000

- `order: optional AnalyticsOrder`

  Sort direction: `asc` or `desc`. Defaults to `asc` for the endpoint's sort column and to `desc` when `order_by` names a metric (a top-N ranking). Applies to `order_by`, or to the endpoint's default sort field when `order_by` is omitted.

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

  Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field.

- `starting_date: optional string`

  UTC date in YYYY-MM-DD format. Start of a date range (inclusive). Enables rollup mode: one row per entity aggregated over the whole range — addable counters are summed across days, and a distinct count is never summed where summing could double-count (a field's range value is recomputed exactly over the window, approximate via HLL with typical error under 2%, null, or — for the creation-event counts, whose per-day values cannot overlap — a per-day sum that is itself exact; each field's own description says which). Use either `date` or `starting_date`, not both. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

### Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

### Returns

- `data: array of AnalyticsProjectActivity`

  - `created_at: string or null`

    Project creation timestamp in RFC 3339 format. Null if the project was deleted before attribution was recorded.

    format: date-time

  - `created_by: AnalyticsUser or null`

    User who created the project. Null if the project was deleted before attribution was recorded, or if the creator's account no longer exists.

    - `type: "user"`

      Object type. Always `user`.

      default: user

    - `id: string`

      Tagged user identifier (e.g. `user_...`)

    - `email_address: string`

      Email address of the user

  - `distinct_conversation_count: number or null`

    Number of distinct conversations in the project. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_user_count: number`

    Number of distinct users who used the project on the requested day, or, in date-range mode, over the requested window — recomputed as an exact distinct count over the window's per-member daily rows, never a sum of per-day values.

  - `message_count: number`

    Number of messages sent in the project on the requested day

  - `project_id: string`

    Tagged project identifier (e.g. `claude_proj_...`)

  - `project_name: string`

    Name of the project

  - `rbac_group_id: optional string or null`

    Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

  - `rbac_group_name: optional string or null`

    Resolved RBAC group display name, alongside `rbac_group_id` when name resolution is available. Null if the group has been deleted or its name could not be resolved; `rbac_group_id` remains the stable key.

  - `user_id: optional string or null`

    Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

- `next_page: string or null`

  Opaque cursor for the next page, or null if no more results

### Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
    -H 'anthropic-version: 2026-10-21' \
    -H "Authorization: Bearer $ANTHROPIC_API_KEY"
```

#### Response (200)

```json
{
  "data": [
    {
      "created_at": "2019-12-27T18:11:19.117Z",
      "created_by": {
        "id": "id",
        "email_address": "email_address",
        "type": "user"
      },
      "distinct_conversation_count": 0,
      "distinct_user_count": 0,
      "message_count": 0,
      "project_id": "project_id",
      "project_name": "project_name",
      "rbac_group_id": "rbac_group_id",
      "rbac_group_name": "rbac_group_name",
      "user_id": "user_id"
    }
  ],
  "next_page": "next_page"
}
```

api/organization/analytics/apps/chat/projects/list New page · 180 lines, new page

# Get Chat Project Usage ## Query parameters ## Headers ## Returns ## Example ### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Get Chat Project Usage
url: https://platform.claude.com/docs/en/api/organization/analytics/apps/chat/projects/list
---

# Get Chat Project Usage

**GET** `/v1/organizations/analytics/apps/chat/projects`

Get per-project activity for a given day, with cursor-based pagination.

Returns activity metrics for each project in the organization, sorted by
project ID. Use `group_by[]` to break projects out per member or per RBAC
group, and `filter[]` to scope results; the parameter descriptions list the
supported dimensions. Available to organizations on a Claude Enterprise
plan. Requires an API key with the `read:analytics` scope.

## Query parameters

- `date: optional string`

  UTC date in YYYY-MM-DD format. The day to get project activity for. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

- `ending_date: optional string`

  UTC date in YYYY-MM-DD format. End of the date range (exclusive); only valid with `starting_date`. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day), so this can be at most today — which is also the default when omitted, resolved once when the first page is served and reused for the rest of the pagination sequence. At most 366 days after `starting_date`.

  format: date

- `filter: optional array of string`

  Filters as `dimension:value`, e.g. `filter[]=rbac_group_id:{id}`. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: `project_id`, `rbac_group_id`, `user_id`. Value forms: `project_id` takes a tagged project id (`claude_proj_...`); `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.

  maxItems: 100

- `group_by: optional array of AnalyticsProjectGroupBy`

  Dimensions to break results out by (e.g. `group_by[]=user_id`). Supported on this endpoint: `rbac_group_id`, `user_id`. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via `next_page`; an unsupported dimension returns 400. `rbac_group_id` attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.

  maxItems: 100

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

  Number of results per page (1-1000, default 100).

  minimum: 1, maximum: 1000

- `order: optional AnalyticsOrder`

  Sort direction: `asc` or `desc`. Defaults to `asc` for the endpoint's sort column and to `desc` when `order_by` names a metric (a top-N ranking). Applies to `order_by`, or to the endpoint's default sort field when `order_by` is omitted.

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

  Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field.

- `starting_date: optional string`

  UTC date in YYYY-MM-DD format. Start of a date range (inclusive). Enables rollup mode: one row per entity aggregated over the whole range — addable counters are summed across days, and a distinct count is never summed where summing could double-count (a field's range value is recomputed exactly over the window, approximate via HLL with typical error under 2%, null, or — for the creation-event counts, whose per-day values cannot overlap — a per-day sum that is itself exact; each field's own description says which). Use either `date` or `starting_date`, not both. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

## Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

## Returns

- `data: array of AnalyticsProjectActivity`

  - `created_at: string or null`

    Project creation timestamp in RFC 3339 format. Null if the project was deleted before attribution was recorded.

    format: date-time

  - `created_by: AnalyticsUser or null`

    User who created the project. Null if the project was deleted before attribution was recorded, or if the creator's account no longer exists.

    - `type: "user"`

      Object type. Always `user`.

      default: user

    - `id: string`

      Tagged user identifier (e.g. `user_...`)

    - `email_address: string`

      Email address of the user

  - `distinct_conversation_count: number or null`

    Number of distinct conversations in the project. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_user_count: number`

    Number of distinct users who used the project on the requested day, or, in date-range mode, over the requested window — recomputed as an exact distinct count over the window's per-member daily rows, never a sum of per-day values.

  - `message_count: number`

    Number of messages sent in the project on the requested day

  - `project_id: string`

    Tagged project identifier (e.g. `claude_proj_...`)

  - `project_name: string`

    Name of the project

  - `rbac_group_id: optional string or null`

    Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

  - `rbac_group_name: optional string or null`

    Resolved RBAC group display name, alongside `rbac_group_id` when name resolution is available. Null if the group has been deleted or its name could not be resolved; `rbac_group_id` remains the stable key.

  - `user_id: optional string or null`

    Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

- `next_page: string or null`

  Opaque cursor for the next page, or null if no more results

## Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
    -H 'anthropic-version: 2026-10-21' \
    -H "Authorization: Bearer $ANTHROPIC_API_KEY"
```

### Response (200)

```json
{
  "data": [
    {
      "created_at": "2019-12-27T18:11:19.117Z",
      "created_by": {
        "id": "id",
        "email_address": "email_address",
        "type": "user"
      },
      "distinct_conversation_count": 0,
      "distinct_user_count": 0,
      "message_count": 0,
      "project_id": "project_id",
      "project_name": "project_name",
      "rbac_group_id": "rbac_group_id",
      "rbac_group_name": "rbac_group_name",
      "user_id": "user_id"
    }
  ],
  "next_page": "next_page"
}
```

api/organization/analytics/artifacts New page · 135 lines, new page

# Artifacts ## Get Artifact Activity ### Query parameters ### Headers ### Returns ### Example #### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Artifacts
url: https://platform.claude.com/docs/en/api/organization/analytics/artifacts
---

# Artifacts

## Get Artifact Activity

**GET** `/v1/organizations/analytics/artifacts`

Get artifact-creation activity for a given day, broken out by MIME type.

Returns the full (`artifact_type`, `is_shared`) cube for the organization;
`next_page` is null except for grouped queries, which paginate. The cube
can be broken out per product, per member, or per RBAC group via
`group_by[]`, and scoped via `filter[]`. Requires an API key with the
`read:analytics` scope.

### Query parameters

- `date: string`

  UTC date in YYYY-MM-DD format. The day to get artifact activity for. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

- `filter: optional array of string`

  Filters as `dimension:value`, e.g. `filter[]=rbac_group_id:{id}`. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: `artifact_type`, `is_shared`, `product`, `rbac_group_id`, `user_id`. Value forms: `artifact_type` is a canonical artifact MIME type (e.g. `text/markdown`) or `other`; `is_shared` is `true` or `false`; `product` is `chat_cowork_unified`, `chat`, `claude_code`, or `cowork` (the surfaces that create artifacts); `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries. `chat_cowork_unified` is accepted as a `product` value only on deployments that offer Chat and Cowork unified.

  maxItems: 100

- `group_by: optional array of AnalyticsArtifactGroupBy`

  Dimensions to break results out by: `product`, `user_id` and/or `rbac_group_id`. The ungrouped artifact-type cube is finite and returned in full; grouped queries multiply the cube and paginate via `next_page`. `product` takes the values `chat_cowork_unified`, `chat`, `claude_code`, or `cowork` (the surfaces that create artifacts). `rbac_group_id` attributes a user to every group they held at any point during the requested UTC day, so grouped rows are not an exclusive partition. At most 100 entries.

  maxItems: 100

  - `"product"`

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

  Maximum rows to return (1-1000, default 100). The ungrouped artifact-type cube is finite and returned in full; `limit` is the page size only when `group_by[]` multiplies the cube.

  minimum: 1, maximum: 1000

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field. Only valid with `group_by[]` — the ungrouped cube is never paginated.

### Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

### Returns

- `data: array of AnalyticsArtifactActivity`

  - `artifact_type: string`

    Canonical artifact MIME type (e.g. `text/markdown`, `application/vnd.ant.react`, `image/svg+xml`), or `other`. Claude Code and Cowork artifacts report as `text/html`.

  - `artifacts_created_count: number`

    Number of artifacts created in this bucket on the requested day

  - `distinct_user_count: number`

    Number of distinct users who created artifacts in this bucket on the requested day

  - `is_shared: boolean`

    Whether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).

  - `published_artifacts_created_count: number`

    Number of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds `artifacts_created_count`

  - `product: optional string or null`

    Product that produced this row's activity: one of `chat`, `claude_code`, `cowork`, `office_agent`, or `chat_cowork_unified` (Chat and Cowork unified). These are the canonical Cost & Usage product names; an `office_agent` row's per-surface breakdown is in its `office_metrics`. On `/plugins` only `cowork`, `claude_code` and `chat_cowork_unified` occur (the only surfaces with plugin attribution); on `/artifacts` only `chat`, `claude_code`, `cowork` and `chat_cowork_unified` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.

  - `rbac_group_id: optional string or null`

    Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

  - `rbac_group_name: optional string or null`

    Resolved RBAC group display name, alongside `rbac_group_id` when name resolution is available. Null if the group has been deleted or its name could not be resolved; `rbac_group_id` remains the stable key.

  - `user_id: optional string or null`

    Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

- `next_page: string or null`

  Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.

### Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/artifacts \
    -H 'anthropic-version: 2026-10-21' \
    -H "Authorization: Bearer $ANTHROPIC_API_KEY"
```

#### Response (200)

```json
{
  "data": [
    {
      "artifact_type": "artifact_type",
      "artifacts_created_count": 0,
      "distinct_user_count": 0,
      "is_shared": true,
      "published_artifacts_created_count": 0,
      "product": "product",
      "rbac_group_id": "rbac_group_id",
      "rbac_group_name": "rbac_group_name",
      "user_id": "user_id"
    }
  ],
  "next_page": "next_page"
}
```

api/organization/analytics/artifacts/list New page · 133 lines, new page

# Get Artifact Activity ## Query parameters ## Headers ## Returns ## Example ### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Get Artifact Activity
url: https://platform.claude.com/docs/en/api/organization/analytics/artifacts/list
---

# Get Artifact Activity

**GET** `/v1/organizations/analytics/artifacts`

Get artifact-creation activity for a given day, broken out by MIME type.

Returns the full (`artifact_type`, `is_shared`) cube for the organization;
`next_page` is null except for grouped queries, which paginate. The cube
can be broken out per product, per member, or per RBAC group via
`group_by[]`, and scoped via `filter[]`. Requires an API key with the
`read:analytics` scope.

## Query parameters

- `date: string`

  UTC date in YYYY-MM-DD format. The day to get artifact activity for. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

- `filter: optional array of string`

  Filters as `dimension:value`, e.g. `filter[]=rbac_group_id:{id}`. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: `artifact_type`, `is_shared`, `product`, `rbac_group_id`, `user_id`. Value forms: `artifact_type` is a canonical artifact MIME type (e.g. `text/markdown`) or `other`; `is_shared` is `true` or `false`; `product` is `chat_cowork_unified`, `chat`, `claude_code`, or `cowork` (the surfaces that create artifacts); `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries. `chat_cowork_unified` is accepted as a `product` value only on deployments that offer Chat and Cowork unified.

  maxItems: 100

- `group_by: optional array of AnalyticsArtifactGroupBy`

  Dimensions to break results out by: `product`, `user_id` and/or `rbac_group_id`. The ungrouped artifact-type cube is finite and returned in full; grouped queries multiply the cube and paginate via `next_page`. `product` takes the values `chat_cowork_unified`, `chat`, `claude_code`, or `cowork` (the surfaces that create artifacts). `rbac_group_id` attributes a user to every group they held at any point during the requested UTC day, so grouped rows are not an exclusive partition. At most 100 entries.

  maxItems: 100

  - `"product"`

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

  Maximum rows to return (1-1000, default 100). The ungrouped artifact-type cube is finite and returned in full; `limit` is the page size only when `group_by[]` multiplies the cube.

  minimum: 1, maximum: 1000

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field. Only valid with `group_by[]` — the ungrouped cube is never paginated.

## Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

## Returns

- `data: array of AnalyticsArtifactActivity`

  - `artifact_type: string`

    Canonical artifact MIME type (e.g. `text/markdown`, `application/vnd.ant.react`, `image/svg+xml`), or `other`. Claude Code and Cowork artifacts report as `text/html`.

  - `artifacts_created_count: number`

    Number of artifacts created in this bucket on the requested day

  - `distinct_user_count: number`

    Number of distinct users who created artifacts in this bucket on the requested day

  - `is_shared: boolean`

    Whether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).

  - `published_artifacts_created_count: number`

    Number of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds `artifacts_created_count`

  - `product: optional string or null`

    Product that produced this row's activity: one of `chat`, `claude_code`, `cowork`, `office_agent`, or `chat_cowork_unified` (Chat and Cowork unified). These are the canonical Cost & Usage product names; an `office_agent` row's per-surface breakdown is in its `office_metrics`. On `/plugins` only `cowork`, `claude_code` and `chat_cowork_unified` occur (the only surfaces with plugin attribution); on `/artifacts` only `chat`, `claude_code`, `cowork` and `chat_cowork_unified` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.

  - `rbac_group_id: optional string or null`

    Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

  - `rbac_group_name: optional string or null`

    Resolved RBAC group display name, alongside `rbac_group_id` when name resolution is available. Null if the group has been deleted or its name could not be resolved; `rbac_group_id` remains the stable key.

  - `user_id: optional string or null`

    Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

- `next_page: string or null`

  Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.

## Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/artifacts \
    -H 'anthropic-version: 2026-10-21' \
    -H "Authorization: Bearer $ANTHROPIC_API_KEY"
```

### Response (200)

```json
{
  "data": [
    {
      "artifact_type": "artifact_type",
      "artifacts_created_count": 0,
      "distinct_user_count": 0,
      "is_shared": true,
      "published_artifacts_created_count": 0,
      "product": "product",
      "rbac_group_id": "rbac_group_id",
      "rbac_group_name": "rbac_group_name",
      "user_id": "user_id"
    }
  ],
  "next_page": "next_page"
}
```

api/organization/analytics/connectors New page · 278 lines, new page

# Connectors ## Get Connector Usage ### Query parameters ### Headers ### Returns ### Example #### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Connectors
url: https://platform.claude.com/docs/en/api/organization/analytics/connectors
---

# Connectors

## Get Connector Usage

**GET** `/v1/organizations/analytics/connectors`

Get per-connector usage for a given day, with cursor-based pagination.

Returns connector usage metrics for the organization, sorted by connector
name. Connector names are normalized from their various sources — for
example, "Atlassian MCP server" and "mcp-atlassian" both appear as
"atlassian". Use `group_by[]` to break usage out per member, per RBAC
group, or per product surface, and `filter[]` to scope results; the
parameter descriptions list the supported dimensions. Available to
organizations on a Claude Enterprise plan. Requires an API key with the
`read:analytics` scope.

### Query parameters

- `date: optional string`

  UTC date in YYYY-MM-DD format. The day to get connector usage for. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

- `ending_date: optional string`

  UTC date in YYYY-MM-DD format. End of the date range (exclusive); only valid with `starting_date`. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day), so this can be at most today — which is also the default when omitted, resolved once when the first page is served and reused for the rest of the pagination sequence. At most 366 days after `starting_date`.

  format: date

- `filter: optional array of string`

  Filters as `dimension:value`, e.g. `filter[]=rbac_group_id:{id}`. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: `connector_name`, `product`, `rbac_group_id`, `user_id`. Value forms: `connector_name` matches case-insensitively, a display name such as 'GitHub MCP' also matches its normalized stored form ('github'), and for rows whose `connector_name` is an opaque connector id the connector's display name (`connector_display_name`) also matches; `product` is one of `chat_cowork_unified`, `chat`, `claude_code`, `cowork`, or `office_agent`; `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries. `chat_cowork_unified` is accepted as a `product` value only on deployments that offer Chat and Cowork unified.

  maxItems: 100

- `group_by: optional array of AnalyticsConnectorGroupBy`

  Dimensions to break results out by (e.g. `group_by[]=user_id`). Supported on this endpoint: `product`, `rbac_group_id`, `user_id`. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via `next_page`; an unsupported dimension returns 400. `rbac_group_id` attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.

  maxItems: 100

  - `"product"`

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

  Number of results per page (1-1000, default 100).

  minimum: 1, maximum: 1000

- `order: optional AnalyticsOrder`

  Sort direction: `asc` or `desc`. Defaults to `asc` for the endpoint's sort column and to `desc` when `order_by` names a metric (a top-N ranking). Applies to `order_by`, or to the endpoint's default sort field when `order_by` is omitted.

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

  Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field.

- `starting_date: optional string`

  UTC date in YYYY-MM-DD format. Start of a date range (inclusive). Enables rollup mode: one row per entity aggregated over the whole range — addable counters are summed across days, and a distinct count is never summed where summing could double-count (a field's range value is recomputed exactly over the window, approximate via HLL with typical error under 2%, null, or — for the creation-event counts, whose per-day values cannot overlap — a per-day sum that is itself exact; each field's own description says which). Use either `date` or `starting_date`, not both. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.

  format: date

### Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

### Returns

- `data: array of AnalyticsConnectorActivity`

  - `chat_metrics: AnalyticsConnectorChatMetrics`

    Claude.ai activity metrics for a single connector on a given day.

    - `distinct_conversation_connector_used_count: number or null`

      Number of distinct conversations in which the connector was used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `claude_code_metrics: AnalyticsConnectorClaudeCodeMetrics`

    Claude Code activity metrics for a single connector on a given day.

    - `distinct_session_connector_used_count: number or null`

      Number of distinct Claude Code sessions in which the connector was used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `connector_display_name: string or null`

    Human-readable display name for rows whose `connector_name` is an opaque connector id rather than a readable name, resolved at request time from the organization's connectors (including connectors that have since been removed). `connector_name` remains the row's stable key for sorting and pagination, and `filter[]=connector_name:{value}` also matches these rows by display name. Display names are not unique, and the same connector's claude.ai usage can appear under a separate row with a readable `connector_name`. Null when `connector_name` is already a readable name, when the id cannot be resolved to one of the organization's connectors, or when display-name resolution is not enabled for this organization.

  - `connector_name: string`

    Name of the connector. Some rows carry an opaque connector id here instead of a readable name; `connector_display_name` holds the resolved name for those rows.

  - `cowork_metrics: AnalyticsConnectorCoworkMetrics`

    Cowork activity metrics for a single connector on a given day.

    - `distinct_session_connector_used_count: number or null`

      Number of distinct Cowork sessions in which the connector was used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `distinct_user_count: number`

    Number of distinct users who used the connector on the requested day, or, in date-range mode, over the requested window — recomputed as an exact distinct count over the window's per-member daily rows, never a sum of per-day values.

  - `individual_auth_distinct_user_count: number or null`

    Number of distinct users whose use of this connector on the requested day ran on their own individual credential, connected through their own consent flow. Companion bucket to `managed_auth_distinct_user_count`, which carries the measurement, attribution, and null rules. Users whose requests used no stored credential count in neither bucket.

  - `managed_auth_distinct_user_count: number or null`

    Number of distinct users whose use of this connector on the requested day ran on Enterprise Managed Auth (an organization-managed credential provisioned through the organization's identity provider), read from the token record each request used. Null, never 0, when managed-auth reporting is not enabled for the organization, the value cannot be attributed to the row, no credentialed requests and no managed-token mint events (a managed credential being provisioned for a user's use of the connector) were observed that day, or the day predates 2026-07-01, the first day the backing data exists (forward-only data, no backfill). When credentialed requests or mint events were observed and attributed, both managed-auth fields populate, reporting 0 for a bucket with no users; the two counts are independent, not a partition — a user whose requests that day used both kinds of credential counts in both. Mint events carry user but not surface attribution, so they count as observed auth activity on `user_id` and `rbac_group_id` cuts — attributed to the user the credential was provisioned for — but never on a cut that references `product` (group or filter). Date-range rollup mode (`starting_date`/`ending_date`) computes both fields exactly over the window — distinct users with at least one qualifying day — when the whole window starts on or after 2026-07-01, with the null-versus-0 and mint-event rules applying with the window in place of the day; a range starting earlier reports every managed-auth field as null, never a partial-window value.

  - `office_metrics: AnalyticsConnectorOfficeMetrics`

    Office Agent activity metrics for a single connector on a given day, broken out by Office product.

    - `excel: AnalyticsConnectorOfficeProductMetrics`

      Office Agent activity metrics for a single connector on a given day within one Office product.

      - `distinct_session_connector_used_count: number or null`

        Number of distinct Office Agent sessions in which the connector was used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `outlook: AnalyticsConnectorOfficeProductMetrics`

      Office Agent activity metrics for a single connector on a given day within one Office product.

    - `powerpoint: AnalyticsConnectorOfficeProductMetrics`

      Office Agent activity metrics for a single connector on a given day within one Office product.

    - `word: AnalyticsConnectorOfficeProductMetrics`

      Office Agent activity metrics for a single connector on a given day within one Office product.

  - `read_call_count: number or null`

    Number of connector tool calls on the requested day whose trusted read-only annotation marked them read-only. Call count, not distinct users. Every call recorded on a classified surface lands in exactly one of `read_call_count`, `write_call_count`, or `unclassified_call_count`, so the three sum to the day's classified calls. Classification is forward-only per surface: claude.ai from 2026-06-01, Claude Code from 2026-05-30, Claude in Office from 2026-05-29, Cowork from 2026-06-02 (Cowork clients predating annotation forwarding land in `unclassified_call_count`). Null, never 0, when the value cannot be stated: the read/write split is not enabled for this organization, or the day predates 2026-05-29. For a date-range total, sum the per-day values, but treat a window that extends before 2026-05-29 as null rather than summing only its covered days — date-range rollup mode (`starting_date`/`ending_date`) applies both rules server-side.

  - `unclassified_call_count: number or null`

    Number of connector tool calls on the requested day with no trusted read-only annotation — the annotation is optional in the MCP spec and is discarded when connector access controls are active, so unclassified calls are common. This field shows how much of the day's classified activity the read/write split actually covers. Call count, not distinct users. One of the three call-classification buckets; see `read_call_count` for the per-surface data-start dates, null conditions, and date-range guidance.

  - `write_call_count: number or null`

    Number of connector tool calls on the requested day whose trusted read-only annotation marked them not read-only. Call count, not distinct users. One of the three call-classification buckets; see `read_call_count` for the per-surface data-start dates, null conditions, and date-range guidance.

  - `chat_cowork_unified_metrics: optional AnalyticsConnectorChatCoworkUnifiedMetrics or null`

    Connector use recorded while members had Chat and Cowork unified (Cowork's features inside claude.ai chat) turned on, split into chat conversations and Cowork sessions. A count is null in date-range mode where it cannot be computed. Omitted from the response on deployments that do not offer Chat and Cowork unified.

    - `chat: AnalyticsConnectorChatCoworkUnifiedChatMetrics`

      A connector's use in chat conversations recorded while members had
      Chat and Cowork unified turned on.

      - `distinct_conversation_connector_used_count: number or null`

        Same measure as `chat_metrics.distinct_conversation_connector_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

    - `sessions: AnalyticsConnectorChatCoworkUnifiedSessionsMetrics`

      A connector's use in Cowork sessions recorded while members had
      Chat and Cowork unified turned on.

      - `distinct_session_connector_used_count: number or null`

        Same measure as `cowork_metrics.distinct_session_connector_used_count`, for activity recorded while members had Chat and Cowork unified turned on. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.

  - `product: optional string or null`

    Product that produced this row's activity: one of `chat`, `claude_code`, `cowork`, `office_agent`, or `chat_cowork_unified` (Chat and Cowork unified). These are the canonical Cost & Usage product names; an `office_agent` row's per-surface breakdown is in its `office_metrics`. On `/plugins` only `cowork`, `claude_code` and `chat_cowork_unified` occur (the only surfaces with plugin attribution); on `/artifacts` only `chat`, `claude_code`, `cowork` and `chat_cowork_unified` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.

  - `rbac_group_id: optional string or null`

    Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

  - `rbac_group_name: optional string or null`

    Resolved RBAC group display name, alongside `rbac_group_id` when name resolution is available. Null if the group has been deleted or its name could not be resolved; `rbac_group_id` remains the stable key.

  - `user_id: optional string or null`

    Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

- `next_page: string or null`

  Opaque cursor for the next page, or null if no more results

### Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/connectors \
    -H 'anthropic-version: 2026-10-21' \
    -H "Authorization: Bearer $ANTHROPIC_API_KEY"
```

#### Response (200)

```json
{
  "data": [
    {
      "chat_metrics": {
        "distinct_conversation_connector_used_count": 0
      },
      "claude_code_metrics": {
        "distinct_session_connector_used_count": 0
      },
      "connector_display_name": "connector_display_name",
      "connector_name": "connector_name",
      "cowork_metrics": {
        "distinct_session_connector_used_count": 0
      },
      "distinct_user_count": 0,
      "individual_auth_distinct_user_count": 0,
      "managed_auth_distinct_user_count": 0,
      "office_metrics": {
        "excel": {
          "distinct_session_connector_used_count": 0
        },
        "outlook": {
          "distinct_session_connector_used_count": 0
        },
        "powerpoint": {
          "distinct_session_connector_used_count": 0
        },
        "word": {
          "distinct_session_connector_used_count": 0
        }
      },
      "read_call_count": 0,
      "unclassified_call_count": 0,
      "write_call_count": 0,
      "chat_cowork_unified_metrics": {
        "chat": {
          "distinct_conversation_connector_used_count": 0
        },
        "sessions": {
          "distinct_session_connector_used_count": 0
        }
      },
      "product": "product",
      "rbac_group_id": "rbac_group_id",
      "rbac_group_name": "rbac_group_name",
      "user_id": "user_id"
    }
  ],
  "next_page": "next_page"
}
```
Feedback