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

One read of Claude Developer Platformapi-20260825T033708Z

377 pages moved out of 612 read.

Pages moved 377 significant first
Pages read 612 in this capture
Captured 03:37 UTC
Corpus hash 7d98cae5bb87 corpus-hash

What this read moved

1-25 of 377, page 1 of 16

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

api/admin Changed · +2775 / -6566 lines

## Admin › Organizations ### Get Current Organization #### Returns #### Example ##### Response (200) ## Admin › Invites ### Create Invite #### Body parameters #### Returns #### Example ##### Response (200) ### Get Invite #### Path parameters #### Returns #### Example ##### Response (200) ### List Invites #### Query parameters #### Returns #### Example ##### Response (200) ### Delete Invite #### Path parameters #### Returns #### Example ##### Response (200) ## Admin › Users ### Get User #### Path parameters #### Returns #### Example ##### Response (200) ### List Users #### Query parameters #### Returns #### Example ##### Response (200) ### Update User #### Path parameters #### Body parameters #### Returns #### Example ##### Response (200) ### Remove User #### Path parameters #### Returns #### Example ##### Response (200) ## Admin › RBAC Groups ### List RBAC Groups #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Get RBAC Group #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ### Create RBAC Group #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Update RBAC Group #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Delete RBAC Group #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › RBAC Groups › Members ### List RBAC Group Members #### Path parameters #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Add RBAC Group Member #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Remove RBAC Group Member #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › RBAC Roles ### List RBAC Roles #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Get RBAC Role #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › RBAC Roles › Permissions ### List RBAC Role Permissions #### Path parameters #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › Workspaces ### Create Workspace #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Get Workspace #### Path parameters #### Returns #### Example ##### Response (200) ### List Workspaces #### Query parameters #### Returns #### Example ##### Response (200) ### Update Workspace #### Path parameters #### Body parameters #### Returns #### Example ##### Response (200) ### Archive Workspace #### Path parameters #### Returns #### Example ##### Response (200) ## Admin › Workspaces › Members ### Create Workspace Member #### Path parameters #### Body parameters #### Returns #### Example ##### Response (200) ### Get Workspace Member #### Path parameters #### Returns #### Example ##### Response (200) ### List Workspace Members #### Path parameters #### Query parameters #### Returns #### Example ##### Response (200) ### Update Workspace Member #### Path parameters #### Body parameters #### Returns #### Example ##### Response (200) ### Delete Workspace Member #### Path parameters #### Returns #### Example ##### Response (200) ## Admin › Workspaces › Rate Limits ### List Workspace Rate Limits #### Path parameters #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Workspaces › Service Accounts ### Create Service Account Workspace Member #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Get Service Account Workspace Member #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ### List Service Account Workspace Members #### Path parameters #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Update Service Account Workspace Member #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Delete Service Account Workspace Member #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › API Keys ### Retrieve API Key (Admin API) #### Path parameters #### Returns #### Example ##### Response (200) ### List API Keys #### Query parameters #### Returns #### Example ##### Response (200) ### Update API Key #### Path parameters #### Body parameters #### Returns #### Example ##### Response (200) ## Admin › External Keys ### Create External Key #### Body parameters #### Returns #### Example ##### Response (200) ### List External Keys #### Query parameters #### Returns #### Example ##### Response (200) ### Get External Key #### Path parameters #### Returns #### Example ##### Response (200) ### Update External Key #### Path parameters #### Body parameters #### Returns #### Example ##### Response (200) ### Delete External Key #### Path parameters #### Returns #### Example ##### Response (200) ### Validate External Key #### Path parameters #### Returns #### Example ##### Response (200) ## Admin › Usage Report ### Get Messages Usage Report #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Get Claude Code Usage Report #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Cost Report ### Get Cost Report #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › Analytics ### Get Activity Summaries #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Analytics › Usage ### Get Token Usage Over Time #### Query parameters #### Returns #### Example ##### Response (200) ### Get Per-User Token Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Analytics › Cost ### Get Cost Over Time #### Query parameters #### Returns #### Example ##### Response (200) ### Get Per-User Cost #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Analytics › Users ### List User Activity #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Analytics › Skills ### Get Skill Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Analytics › Connectors ### Get Connector Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Analytics › Chat Projects ### Get Chat Project Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Analytics › Plugins ### Get Plugin Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Analytics › Artifacts ### Get Artifact Activity #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Spend Limits ### Set Spend Limit #### Body parameters #### Returns #### Example ##### Response (200) ### Get Spend Limit #### Path parameters #### Returns #### Example ##### Response (200) ### Delete Spend Limit #### Path parameters #### Returns #### Example ##### Response (200) ### List Effective Spend Limits #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Spend Limits › Increase Requests ### List Spend Limit Increase Requests #### Query parameters #### Returns #### Example ##### Response (200) ### Get Spend Limit Increase Request #### Path parameters #### Returns #### Example ##### Response (200) ### Approve Spend Limit Increase Request #### Path parameters #### Body parameters #### Returns #### Example ##### Response (200) ### Deny Spend Limit Increase Request #### Path parameters #### Body parameters #### Returns #### Example ##### Response (200) ## Admin › Rate Limits ### List Organization Rate Limits #### Query parameters #### Returns #### Example ##### Response (200) ## Admin › Service Accounts ### Create Service Account #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Get Service Account #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ### List Service Accounts #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Update Service Account #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Archive Service Account #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › Service Accounts › Workspaces ### Add Workspace To Service Account #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### List Workspaces For Service Account #### Path parameters #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Remove Workspace From Service Account #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › Federation Issuers ### Create Federation Issuer #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Get Federation Issuer #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ### List Federation Issuers #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Update Federation Issuer #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Archive Federation Issuer #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › Federation Rules ### Create Federation Rule #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Get Federation Rule #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ### List Federation Rules #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Update Federation Rule #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Archive Federation Rule #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › Federation Rules › Workspaces ### List Federation Rule Workspaces #### Path parameters #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Add Federation Rule Workspace #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Remove Federation Rule Workspace #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › MCP Tunnels ### Get Tunnel #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ### List Tunnels #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Reveal Tunnel Token #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ### Rotate Tunnel Token #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Archive Tunnel #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ## Admin › MCP Tunnels › Tunnel Certificates ### Create Tunnel Certificate #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200) ### Get Tunnel Certificate #### Path parameters #### Headers #### Returns #### Example ##### Response (200) ### List Tunnel Certificates #### Path parameters #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Archive Tunnel Certificate #### Path parameters #### Headers #### Returns #### Example ##### Response (200) # Organizations ## Get Current Organization ### Returns ### Example #### Response ## Domain Types ### Organization # Invites ## Create Invite ### Body Parameters ### Returns ### Example #### Response ## Get Invite ### Path Parameters ### Returns ### Example #### Response ## List Invites ### Query Parameters ### Returns ### Example #### Response ## Delete Invite ### Path Parameters ### Returns ### Example #### Response ## Domain Types ### Invite ### Invite Delete Response # Users ## Get User ### Path Parameters ### Returns ### Example #### Response ## List Users ### Query Parameters ### Returns ### Example #### Response ## Update User ### Path Parameters ### Body Parameters ### Returns ### Example #### Response ## Remove User ### Path Parameters ### Returns ### Example #### Response ## Domain Types ### User ### User Delete Response # RBAC Groups ## List RBAC Groups ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Get RBAC Group ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Create RBAC Group ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Update RBAC Group ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Delete RBAC Group ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Rbac Group ### Rbac Group Deleted # Members ## List RBAC Group Members ### Path Parameters ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Add RBAC Group Member ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Remove RBAC Group Member ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Rbac Group Member ### Rbac Group Member Deleted # RBAC Roles ## List RBAC Roles ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Get RBAC Role ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Rbac Role # Permissions ## List RBAC Role Permissions ### Path Parameters ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Rbac Role Permission # Workspaces ## Create Workspace ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Get Workspace ### Path Parameters ### Returns ### Example #### Response ## List Workspaces ### Query Parameters ### Returns ### Example #### Response ## Update Workspace ### Path Parameters ### Body Parameters ### Returns ### Example #### Response ## Archive Workspace ### Path Parameters ### Returns ### Example #### Response # Members ## Create Workspace Member ### Path Parameters ### Body Parameters ### Returns ### Example #### Response ## Get Workspace Member ### Path Parameters ### Returns ### Example #### Response ## List Workspace Members ### Path Parameters ### Query Parameters ### Returns ### Example #### Response ## Update Workspace Member ### Path Parameters ### Body Parameters ### Returns ### Example #### Response ## Delete Workspace Member ### Path Parameters ### Returns ### Example #### Response ## Domain Types ### Workspace Member ### Member Delete Response # Rate Limits ## List Workspace Rate Limits ### Path Parameters ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Rate Limit List Response # Service Accounts ## Create Service Account Workspace Member ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Get Service Account Workspace Member ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## List Service Account Workspace Members ### Path Parameters ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Update Service Account Workspace Member ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Delete Service Account Workspace Member ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Service Account Create Response ### Service Account Retrieve Response ### Service Account List Response ### Service Account Update Response ### Service Account Delete Response # API Keys ## Retrieve API Key (Admin API) ### Path Parameters ### Returns ### Example #### Response ## List API Keys ### Query Parameters ### Returns ### Example #### Response ## Update API Key ### Path Parameters ### Body Parameters ### Returns ### Example #### Response # External Keys ## Create External Key ### Body Parameters ### Returns ### Example #### Response ## List External Keys ### Query Parameters ### Returns ### Example #### Response ## Get External Key ### Path Parameters ### Returns ### Example #### Response ## Update External Key ### Path Parameters ### Body Parameters ### Returns ### Example #### Response ## Delete External Key ### Path Parameters ### Returns ### Example #### Response ## Validate External Key ### Path Parameters ### Returns ### Example #### Response ## Domain Types ### External Key Create Response ### External Key List Response ### External Key Retrieve Response ### External Key Update Response ### External Key Delete Response ### External Key Validate Response # Usage Report ## Get Messages Usage Report ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Get Claude Code Usage Report ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Claude Code Usage Report ### Messages Usage Report # Cost Report ## Get Cost Report ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Cost Report # Analytics ## Get Activity Summaries ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Activity Summary ### Analytics User ### Analytics User Actor ### Connector Office Product Metrics ### Office Product Metrics ### Skill Office Product Metrics ### Tool Action Counts # Usage ## Get Token Usage Over Time ### Query Parameters ### Returns ### Example #### Response ## Get Per-User Token Usage ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Usage Bucket ### User Usage # Cost ## Get Cost Over Time ### Query Parameters ### Returns ### Example #### Response ## Get Per-User Cost ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Cost Bucket ### User Cost # Users ## List User Activity ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### User Activity # Skills ## Get Skill Usage ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Skill Usage # Connectors ## Get Connector Usage ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Connector Usage # Chat Projects ## Get Chat Project Usage ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Chat Project Usage # Plugins ## Get Plugin Usage ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Plugin Usage # Artifacts ## Get Artifact Activity ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Artifact Usage # Spend Limits ## Set Spend Limit ### Body Parameters ### Returns ### Example #### Response ## Get Spend Limit ### Path Parameters ### Returns ### Example #### Response ## Delete Spend Limit ### Path Parameters ### Returns ### Example #### Response ## List Effective Spend Limits ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Spend Limit ### Spend Summary ### Spend Limit Delete Response # Increase Requests ## List Spend Limit Increase Requests ### Query Parameters ### Returns ### Example #### Response ## Get Spend Limit Increase Request ### Path Parameters ### Returns ### Example #### Response ## Approve Spend Limit Increase Request ### Path Parameters ### Body Parameters ### Returns ### Example #### Response ## Deny Spend Limit Increase Request ### Path Parameters ### Body Parameters ### Returns ### Example #### Response ## Domain Types ### Spend Limit Increase Request ### Increase Request Approve Response # Rate Limits ## List Organization Rate Limits ### Query Parameters ### Returns ### Example #### Response ## Domain Types ### Rate Limit List Response # Service Accounts ## Create Service Account ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Get Service Account ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## List Service Accounts ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Update Service Account ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Archive Service Account ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Service Account # Workspaces ## Add Workspace To Service Account ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## List Workspaces For Service Account ### Path Parameters ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Remove Workspace From Service Account ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Workspace Create Response ### Workspace List Response ### Workspace Delete Response # Federation Issuers ## Create Federation Issuer ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Get Federation Issuer ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## List Federation Issuers ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Update Federation Issuer ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Archive Federation Issuer ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Federation Issuer # Federation Rules ## Create Federation Rule ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Get Federation Rule ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## List Federation Rules ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Update Federation Rule ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Archive Federation Rule ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Federation Rule # Workspaces ## List Federation Rule Workspaces ### Path Parameters ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Add Federation Rule Workspace ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Remove Federation Rule Workspace ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Workspace List Response ### Workspace Create Response ### Workspace Delete Response # MCP Tunnels ## Get Tunnel ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## List Tunnels ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Reveal Tunnel Token ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Rotate Tunnel Token ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Archive Tunnel ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### MCP Tunnel Retrieve Response ### MCP Tunnel List Response ### MCP Tunnel Reveal Token Response ### MCP Tunnel Rotate Token Response ### MCP Tunnel Archive Response # Tunnel Certificates ## Create Tunnel Certificate ### Path Parameters ### Header Parameters ### Body Parameters ### Returns ### Example #### Response ## Get Tunnel Certificate ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## List Tunnel Certificates ### Path Parameters ### Query Parameters ### Header Parameters ### Returns ### Example #### Response ## Archive Tunnel Certificate ### Path Parameters ### Header Parameters ### Returns ### Example #### Response ## Domain Types ### Tunnel Certificate Create Response ### Tunnel Certificate Retrieve Response ### Tunnel Certificate List Response ### Tunnel Certificate Archive Response

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/admin/analytics Changed · +398 / -1454 lines

### Query parameters #### Response (200) ## Domain types ## Analytics › Usage ### Get Token Usage Over Time #### Query parameters #### Returns #### Example ##### Response (200) ### Get Per-User Token Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Analytics › Cost ### Get Cost Over Time #### Query parameters #### Returns #### Example ##### Response (200) ### Get Per-User Cost #### Query parameters #### Returns #### Example ##### Response (200) ## Analytics › Users ### List User Activity #### Query parameters #### Returns #### Example ##### Response (200) ## Analytics › Skills ### Get Skill Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Analytics › Connectors ### Get Connector Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Analytics › Chat Projects ### Get Chat Project Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Analytics › Plugins ### Get Plugin Usage #### Query parameters #### Returns #### Example ##### Response (200) ## Analytics › Artifacts ### Get Artifact Activity #### Query parameters #### Returns #### Example ##### Response (200) ### Query Parameters #### Response ## Domain Types # Usage ## Get Token Usage Over Time ### Query Parameters #### Response ## Get Per-User Token Usage ### Query Parameters #### Response ## Domain Types ### Usage Bucket ### User Usage # Cost ## Get Cost Over Time ### Query Parameters #### Response ## Get Per-User Cost ### Query Parameters #### Response ## Domain Types ### Cost Bucket ### User Cost # Users ## List User Activity ### Query Parameters #### Response ## Domain Types ### User Activity # Skills ## Get Skill Usage ### Query Parameters #### Response ## Domain Types ### Skill Usage # Connectors ## Get Connector Usage ### Query Parameters #### Response ## Domain Types ### Connector Usage # Chat Projects ## Get Chat Project Usage ### Query Parameters #### Response ## Domain Types ### Chat Project Usage # Plugins ## Get Plugin Usage ### Query Parameters #### Response ## Domain Types ### Plugin Usage # Artifacts ## Get Artifact Activity ### Query Parameters #### Response ## Domain Types ### Artifact Usage

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

from line 1
1---
2title: Analytics
3url: https://platform.claude.com/docs/en/api/admin/analytics
4---
5 
61# Analytics
72 
83## Get Activity Summaries
94 
10**get** `/v1/organizations/analytics/summaries`
5**GET** `/v1/organizations/analytics/summaries`
116 
127Get organization-wide activity summaries for a date range.
138 
from line 14
1914filter[]=rbac_group_id:<id>. Available to organizations on a Claude
2015Enterprise plan. Requires an API key with the `read:analytics` scope.
2116 
22### Query Parameters
17### Query parameters
2318 
2419- `starting_date: string`
2520 
2621 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.
2722 
23 format: date
24 
2825- `ending_date: optional string`
2926 
3027 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.
3128 
29 format: date
30 
3231- `filter: optional array of string`
3332 
3433 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.
3534 
35 maxItems: 100
36 
3637### Returns
3738 
38- `ActivitySummary object { summaries }`
39- `ActivitySummary object`
3940 
4041 Response for GET /v1/organizations/analytics/summaries.
4142 
42 - `summaries: array of object { assigned_seat_count, cowork_daily_active_user_count, cowork_monthly_active_user_count, 26 more }`
43 - `summaries: array of object`
4344 
4445 - `assigned_seat_count: number or null`
4546 
from line 160
159160 
160161### Example
161162 
162```http
163```bash
163164curl https://api.anthropic.com/v1/organizations/analytics/summaries \
164165 -H 'anthropic-version: 2023-06-01' \
165166 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
166167```
167168 
168#### Response
169#### Response (200)
169170 
170171```json
171172{
from line 206
205206}
206207```
207208 
208## Domain Types
209## Domain types
209210 
210211### Activity Summary
211212 
212- `ActivitySummary object { summaries }`
213- `ActivitySummary object`
213214 
214215 Response for GET /v1/organizations/analytics/summaries.
215216 
216 - `summaries: array of object { assigned_seat_count, cowork_daily_active_user_count, cowork_monthly_active_user_count, 26 more }`
217 - `summaries: array of object`
217218 
218219 - `assigned_seat_count: number or null`
219220 
from line 334
333334 
334335### Analytics User
335336 
336- `AnalyticsUser object { id, email_address, type }`
337- `AnalyticsUser object`
337338 
338339 User identifier.
339340 
from line 350
349350 
350351 Object type. Always `user`.
351352 
352 - `"user"`
353 default: user
353354 
354355### Analytics User Actor
355356 
356- `AnalyticsUserActor object { deleted, email, name, 2 more }`
357- `AnalyticsUserActor object`
357358 
358359 - `deleted: boolean`
359360 
from line 372
371372 
372373 Actor type. Always `"user_actor"`.
373374 
374 - `"user_actor"`
375 
376375 - `user_id: string`
377376 
378377 Tagged user ID.
379378 
380379### Connector Office Product Metrics
381380 
382- `ConnectorOfficeProductMetrics object { distinct_session_connector_used_count }`
381- `ConnectorOfficeProductMetrics object`
383382 
384383 Office Agent activity metrics for a single connector on a given day within one Office product.
385384 
from line 388
389388 
390389### Office Product Metrics
391390 
392- `OfficeProductMetrics object { connectors_used_count, distinct_connectors_used_count, distinct_session_count, 3 more }`
391- `OfficeProductMetrics object`
393392 
394393 Office Agent activity metrics for a single user on a given day within one Office product.
395394 
from line 418
419418 
420419### Skill Office Product Metrics
421420 
422- `SkillOfficeProductMetrics object { distinct_session_skill_used_count }`
421- `SkillOfficeProductMetrics object`
423422 
424423 Office Agent activity metrics for a single skill on a given day within one Office product.
425424 
from line 428
429428 
430429### Tool Action Counts
431430 
432- `ToolActionCounts object { accepted_count, rejected_count }`
431- `ToolActionCounts object`
433432 
434433 Accepted/rejected counts for a single Claude Code tool type.
435434 
from line 440
441440 
442441 Number of tool proposals rejected
443442 
444# Usage
445 
446## Get Token Usage Over Time
447 
448**get** `/v1/organizations/analytics/usage_report`
443## Analytics › Usage
444 
445### Get Token Usage Over Time
446 
447**GET** `/v1/organizations/analytics/usage_report`
449448 
450449Get token usage over time across a date range.
451450 
from line 453
454453Available to organizations on a Claude Enterprise plan. Requires an API
455454key with the `read:analytics` scope.
456455 
457### Query Parameters
456#### Query parameters
458457 
459458- `starting_at: string`
460459 
461460 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
462461 
462 format: date-time
463 
463464- `bucket_width: optional "1d" or "1h" or "1m"`
464465 
465466 Time bucket granularity.
466467 
468 default: 1d
469 
467470 - `"1d"`
468471 
469472 - `"1h"`
from line 477
474477 
475478 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
476479 
480 maxItems: 100
481 
477482 - `"0-200k"`
478483 
479484 - `"200k-1M"`
from line 487
482487 
483488 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
484489 
490 format: date-time
491 
485492- `group_by: optional array of "context_window" or "inference_geo" or "model" or 4 more`
486493 
487494 Dimensions to break each time bucket out by. Defaults to no grouping (one total per bucket). Each bucket reports at most its top 100 groups; a group beyond that cap has no row in that bucket (there is no remainder row), so grouped buckets are not exhaustive when a dimension has more than 100 distinct values.
488495 
496 maxItems: 100
497 
489498 - `"context_window"`
490499 
491500 - `"inference_geo"`
from line 513
504513 
505514 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
506515 
516 maxItems: 100
517 
507518 - `"global"`
508519 
509520 - `"not_available"`
from line 525
514525 
515526 Maximum number of time buckets per page. Defaults and caps vary by bucket_width (1d: default 7, max 31; 1h: default 24, max 168; 1m: default 60, max 256).
516527 
528 minimum: 1
529 
517530- `models: optional array of string`
518531 
519532 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
520533 
534 maxItems: 100
535 
521536- `page: optional string`
522537 
523538 Opaque cursor from a previous response's `next_page` field.
from line 541
526541 
527542 Product surfaces to include. Defaults to all products. Use `group_by[]=product` to break out per-product values. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
528543 
544 maxItems: 100
545 
529546- `rbac_group_ids: optional array of string`
530547 
531548 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
532549 
550 maxItems: 100
551 
533552- `slack_channel_ids: optional array of string`
534553 
535554 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
536555 
556 maxItems: 100
557 
537558- `speeds: optional array of "fast" or "standard"`
538559 
539560 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
540561 
562 maxItems: 100
563 
541564 - `"fast"`
542565 
543566 - `"standard"`
from line 569
546569 
547570 Filter to specific users by tagged user ID.
548571 
549### Returns
550 
551- `UsageBucket object { data, data_refreshed_at, has_more, 2 more }`
552 
553 - `data: array of object { ending_at, results, starting_at }`
572 maxItems: 100
573 
574#### Returns
575 
576- `UsageBucket object`
577 
578 - `data: array of object`
554579 
555580 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
556581 
from line 583
558583 
559584 End of the time bucket (exclusive) in RFC 3339 format.
560585 
561 - `results: array of object { cache_creation, cache_read_input_tokens, context_window, 10 more }`
586 format: date-time
587 
588 - `results: array of object`
562589 
563590 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
564591 
565 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
592 - `cache_creation: object`
566593 
567594 The number of input tokens for cache creation.
568595 
from line 641
614641 
615642 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
616643 
617 - `server_tool_use: object { web_search_requests }`
644 - `server_tool_use: object`
618645 
619646 Server-side tool usage metrics.
620647 
from line 669
642669 
643670 Start of the time bucket (inclusive) in RFC 3339 format.
644671 
672 format: date-time
673 
645674 - `data_refreshed_at: string or null`
646675 
647676 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
648677 
678 format: date-time
679 
649680 - `has_more: boolean`
650681 
651682 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 689
658689 
659690 ID of the Organization.
660691 
661### Example
662 
663```http
692#### Example
693 
694```bash
664695curl https://api.anthropic.com/v1/organizations/analytics/usage_report \
665696 -H 'anthropic-version: 2023-06-01' \
666697 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
667698```
668699 
669#### Response
700##### Response (200)
670701 
671702```json
672703{
from line 736
705736}
706737```
707738 
708## Get Per-User Token Usage
709 
710**get** `/v1/organizations/analytics/user_usage_report`
739### Get Per-User Token Usage
740 
741**GET** `/v1/organizations/analytics/user_usage_report`
711742 
712743Get per-user token usage across a date range.
713744 
from line 750
719750organizations on a Claude Enterprise plan. Requires an API key with the
720751`read:analytics` scope.
721752 
722### Query Parameters
753#### Query parameters
723754 
724755- `starting_at: string`
725756 
726757 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
727758 
759 format: date-time
760 
728761- `bucket_width: optional "1d" or "1h" or "1m"`
729762 
730763 Time-bucket granularity. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.
from line 772
739772 
740773 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
741774 
775 maxItems: 100
776 
742777 - `"0-200k"`
743778 
744779 - `"200k-1M"`
from line 782
747782 
748783 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
749784 
785 format: date-time
786 
750787- `exclude_deleted_users: optional boolean`
751788 
752789 If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.
753790 
791 default: false
792 
754793- `group_by: optional array of "context_window" or "inference_geo" or "model" or 4 more`
755794 
756795 Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/usage_report` endpoint. `limit` bounds (actor × time bucket × dimension) rows — with dimensions or `bucket_width` present, one actor may span several rows.
757796 
797 maxItems: 100
798 
758799 - `"context_window"`
759800 
760801 - `"inference_geo"`
from line 814
773814 
774815 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
775816 
817 maxItems: 100
818 
776819 - `"global"`
777820 
778821 - `"not_available"`
from line 826
783826 
784827 Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.
785828 
829 default: 20, maximum: 1000, minimum: 1
830 
786831- `models: optional array of string`
787832 
788833 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
789834 
835 maxItems: 100
836 
790837- `order: optional "asc" or "desc"`
791838 
792839 Sort direction. Defaults to `desc`.
793840 
841 default: desc
842 
794843 - `"asc"`
795844 
796845 - `"desc"`
from line 848
799848 
800849 Metric to rank actors by. Defaults to `total_tokens`.
801850 
851 default: total_tokens
852 
802853 - `"output_tokens"`
803854 
804855 - `"requests"`
from line 866
815866 
816867 Product surfaces to include. Defaults to all products. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
817868 
869 maxItems: 100
870 
818871- `rbac_group_ids: optional array of string`
819872 
820873 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
821874 
875 maxItems: 100
876 
822877- `slack_channel_ids: optional array of string`
823878 
824879 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
825880 
881 maxItems: 100
882 
826883- `speeds: optional array of "fast" or "standard"`
827884 
828885 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
829886 
887 maxItems: 100
888 
830889 - `"fast"`
831890 
832891 - `"standard"`
from line 894
835894 
836895 Filter to specific users by tagged user ID.
837896 
838### Returns
839 
840- `UserUsage object { data, data_refreshed_at, has_more, 2 more }`
841 
842 - `data: array of object { actor, cache_creation, cache_read_input_tokens, 14 more }`
897 maxItems: 100
898 
899#### Returns
900 
901- `UserUsage object`
902 
903 - `data: array of object`
843904 
844905 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
845906 
from line 924
863924 
864925 Actor type. Always `"user_actor"`.
865926 
866 - `"user_actor"`
867 
868927 - `user_id: string`
869928 
870929 Tagged user ID.
871930 
872 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
931 - `cache_creation: object`
873932 
874933 The number of input tokens for cache creation.
875934 
from line 956
897956 
898957 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
899958 
959 format: date-time
960 
900961 - `inference_geo: "global" or "us" or null`
901962 
902963 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
from line 986
925986 
926987 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
927988 
928 - `server_tool_use: object { web_search_requests }`
989 - `server_tool_use: object`
929990 
930991 Server-side tool usage metrics.
931992 
from line 1010
9491010 
9501011 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
9511012 
1013 format: date-time
1014 
9521015 - `total_tokens: number`
9531016 
9541017 Total token count across all token types. This is the value the default order_by='total_tokens' sorts on.
from line 1024
9611024 
9621025 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
9631026 
1027 format: date-time
1028 
9641029 - `has_more: boolean`
9651030 
9661031 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 1038
9731038 
9741039 ID of the Organization.
9751040 
976### Example
977 
978```http
1041#### Example
1042 
1043```bash
9791044curl https://api.anthropic.com/v1/organizations/analytics/user_usage_report \
9801045 -H 'anthropic-version: 2023-06-01' \
9811046 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
9821047```
9831048 
984#### Response
1049##### Response (200)
9851050 
9861051```json
9871052{
from line 1089
10241089}
10251090```
10261091 
1027## Domain Types
1028 
1029### Usage Bucket
1030 
1031- `UsageBucket object { data, data_refreshed_at, has_more, 2 more }`
1032 
1033 - `data: array of object { ending_at, results, starting_at }`
1034 
1035 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
1036 
1037 - `ending_at: string`
1038 
1039 End of the time bucket (exclusive) in RFC 3339 format.
1040 
1041 - `results: array of object { cache_creation, cache_read_input_tokens, context_window, 10 more }`
1042 
1043 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
1044 
1045 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
1046 
1047 The number of input tokens for cache creation.
1048 
1049 - `ephemeral_1h_input_tokens: number`
1050 
1051 The number of input tokens used to create the 1 hour cache entry.
1052 
1053 - `ephemeral_5m_input_tokens: number`
1054 
1055 The number of input tokens used to create the 5 minute cache entry.
1056 
1057 - `cache_read_input_tokens: number`
1058 
1059 The number of input tokens read from the cache.
1060 
1061 - `context_window: "0-200k" or "200k-1M" or null`
1062 
1063 Context-window pricing tier of the usage or cost. Null unless `context_window` is in `group_by[]`; it can also be null on grouped rows with no context-window tier, such as code execution.
1064 
1065 - `"0-200k"`
1066 
1067 - `"200k-1M"`
1068 
1069 - `inference_geo: "global" or "us" or null`
1070 
1071 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
1072 
1073 - `"global"`
1074 
1075 - `"us"`
1076 
1077 - `model: string or null`
1078 
1079 Model that produced the usage or cost, as a model name in the form the `models[]` filter accepts (for example, `claude-opus-4-6`). Null unless `model` is in `group_by[]`; it can also be null on grouped rows whose usage or cost is not attributed to a specific model, such as code execution.
1080 
1081 - `output_tokens: number`
1082 
1083 The number of output tokens generated.
1084 
1085 - `product: string or null`
1086 
1087 Product surface that produced the usage or cost. Null unless product is in `group_by[]`; it can also be null on grouped rows whose usage cannot be attributed to a known surface. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it. Some unattributed usage is reported as "other".
1088 
1089 - `rbac_group_id: string or null`
1090 
1091 RBAC group (team) the usage is attributed to, in the public tagged `rbac_group_...` spelling — the same spelling the activity resources use for this key, so the same team has ONE id across resources and it round-trips as an `rbac_group_ids[]` filter value. Populated only when `rbac_group_id` is in `group_by[]`. Any-membership semantics: a user in several groups contributes their full usage to each of those groups' rows, so the named-group rows overlap and their sum can exceed the org total. A null value is the single unassigned row: users in no group on that (UTC) day. For the true org total, run the same query with no group_by.
1092 
1093 - `requests: number or null`
1094 
1095 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
1096 
1097 - `server_tool_use: object { web_search_requests }`
1098 
1099 Server-side tool usage metrics.
1100 
1101 - `web_search_requests: number`
1102 
1103 The number of web search requests made.
1104 
1105 - `slack_channel_id: string or null`
1106 
1107 Slack channel the usage originated from. Populated only when `slack_channel_id` is in `group_by[]`; null for usage outside Slack (and for rows recorded before channel attribution was enabled).
1108 
1109 - `speed: "fast" or "standard" or null`
1110 
1111 Inference speed mode of the usage or cost: `fast` or `standard`. Null unless `speed` is in `group_by[]`.
1112 
1113 - `"fast"`
1114 
1115 - `"standard"`
1116 
1117 - `uncached_input_tokens: number`
1118 
1119 The number of uncached input tokens processed.
1120 
1121 - `starting_at: string`
1122 
1123 Start of the time bucket (inclusive) in RFC 3339 format.
1124 
1125 - `data_refreshed_at: string or null`
1126 
1127 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
1128 
1129 - `has_more: boolean`
1130 
1131 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
1132 
1133 - `next_page: string or null`
1134 
1135 Opaque cursor for the next page, or null when `has_more` is false. Pass it as the `page` parameter, keeping the other parameters unchanged. A cursor can expire after the underlying data refreshes; the request then returns HTTP 410 and pagination must restart from the first page.
1136 
1137 - `organization_id: string`
1138 
1139 ID of the Organization.
1140 
1141### User Usage
1142 
1143- `UserUsage object { data, data_refreshed_at, has_more, 2 more }`
1144 
1145 - `data: array of object { actor, cache_creation, cache_read_input_tokens, 14 more }`
1146 
1147 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
1148 
1149 - `actor: AnalyticsUserActor`
1150 
1151 The user this row's usage or cost is attributed to. Always a `user_actor`.
1152 
1153 - `deleted: boolean`
1154 
1155 True when the user is no longer a member of the organization or its associated organizations: either their membership was removed (for example, deprovisioned via your identity provider) or the account itself has been deleted. The flag reflects organization membership, not account status. `name` and `email` stay populated for removed members; `name` is `"Deleted User"` and `email` null when the account has been deleted. The `user_id` is still populated for reconciliation.
1156 
1157 - `email: string or null`
1158 
1159 The user's email address, including for users who are no longer members of the organization or its associated organizations. Null when the account has been deleted (check `deleted`) and for system-minted service accounts, which have no person's mailbox behind them (check `name`).
1160 
1161 - `name: string or null`
1162 
1163 The user's current name, including for users who are no longer members of the organization or its associated organizations. Null when the user has not set a name. Returns `"Deleted User"` when the account itself has been deleted. Rows for system-minted service accounts render the service name (for example, `"Claude Security"` for usage by Anthropic's security-patching service) or null.
1164 
1165 - `type: "user_actor"`
1166 
1167 Actor type. Always `"user_actor"`.
1168 
1169 - `"user_actor"`
1170 
1171 - `user_id: string`
1172 
1173 Tagged user ID.
1174 
1175 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
1176 
1177 The number of input tokens for cache creation.
1178 
1179 - `ephemeral_1h_input_tokens: number`
1180 
1181 The number of input tokens used to create the 1 hour cache entry.
1182 
1183 - `ephemeral_5m_input_tokens: number`
1184 
1185 The number of input tokens used to create the 5 minute cache entry.
1186 
1187 - `cache_read_input_tokens: number`
1188 
1189 The number of input tokens read from the cache.
1190 
1191 - `context_window: "0-200k" or "200k-1M" or null`
1192 
1193 Context-window pricing tier of the usage or cost. Null unless `context_window` is in `group_by[]`; it can also be null on grouped rows with no context-window tier, such as code execution.
1194 
1195 - `"0-200k"`
1196 
1197 - `"200k-1M"`
1198 
1199 - `ending_at: string or null`
1200 
1201 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
1202 
1203 - `inference_geo: "global" or "us" or null`
1204 
1205 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
1206 
1207 - `"global"`
1208 
1209 - `"us"`
1210 
1211 - `model: string or null`
1212 
1213 Model that produced the usage or cost, as a model name in the form the `models[]` filter accepts (for example, `claude-opus-4-6`). Null unless `model` is in `group_by[]`; it can also be null on grouped rows whose usage or cost is not attributed to a specific model, such as code execution.
1214 
1215 - `output_tokens: number`
1216 
1217 The number of output tokens generated.
1218 
1219 - `product: string or null`
1220 
1221 Product surface that produced the usage or cost. Null unless product is in `group_by[]`; it can also be null on grouped rows whose usage cannot be attributed to a known surface. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it. Some unattributed usage is reported as "other".
1222 
1223 - `rbac_group_id: string or null`
1224 
1225 RBAC group (team) the usage is attributed to, in the public tagged `rbac_group_...` spelling — the same spelling the activity resources use for this key, so the same team has ONE id across resources and it round-trips as an `rbac_group_ids[]` filter value. Populated only when `rbac_group_id` is in `group_by[]`. Any-membership semantics: a user in several groups contributes their full usage to each of those groups' rows, so the named-group rows overlap and their sum can exceed the org total. A null value is the single unassigned row: users in no group on that (UTC) day. For the true org total, run the same query with no group_by.
1226 
1227 - `requests: number or null`
1228 
1229 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
1230 
1231 - `server_tool_use: object { web_search_requests }`
1232 
1233 Server-side tool usage metrics.
1234 
1235 - `web_search_requests: number`
1236 
1237 The number of web search requests made.
1238 
1239 - `slack_channel_id: string or null`
1240 
1241 Slack channel the usage originated from. Populated only when `slack_channel_id` is in `group_by[]`; null for usage outside Slack (and for rows recorded before channel attribution was enabled).
1242 
1243 - `speed: "fast" or "standard" or null`
1244 
1245 Inference speed mode of the usage or cost: `fast` or `standard`. Null unless `speed` is in `group_by[]`.
1246 
1247 - `"fast"`
1248 
1249 - `"standard"`
1250 
1251 - `starting_at: string or null`
1252 
1253 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
1254 
1255 - `total_tokens: number`
1256 
1257 Total token count across all token types. This is the value the default order_by='total_tokens' sorts on.
1258 
1259 - `uncached_input_tokens: number`
1260 
1261 The number of uncached input tokens processed.
1262 
1263 - `data_refreshed_at: string or null`
1264 
1265 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
1266 
1267 - `has_more: boolean`
1268 
1269 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
1270 
1271 - `next_page: string or null`
1272 
1273 Opaque cursor for the next page, or null when `has_more` is false. Pass it as the `page` parameter, keeping the other parameters unchanged. A cursor can expire after the underlying data refreshes; the request then returns HTTP 410 and pagination must restart from the first page.
1274 
1275 - `organization_id: string`
1276 
1277 ID of the Organization.
1278 
1279# Cost
1280 
1281## Get Cost Over Time
1282 
1283**get** `/v1/organizations/analytics/cost_report`
1092## Analytics › Cost
1093 
1094### Get Cost Over Time
1095 
1096**GET** `/v1/organizations/analytics/cost_report`
12841097 
12851098Get cost in USD over time across a date range.
12861099 
from line 1102
12891102token type. Available to organizations on a Claude Enterprise plan.
12901103Requires an API key with the `read:analytics` scope.
12911104 
1292### Query Parameters
1105#### Query parameters
12931106 
12941107- `starting_at: string`
12951108 
12961109 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
12971110 
1111 format: date-time
1112 
12981113- `bucket_width: optional "1d" or "1h" or "1m"`
12991114 
13001115 Time bucket granularity.
13011116 
1117 default: 1d
1118 
13021119 - `"1d"`
13031120 
13041121 - `"1h"`
from line 1126
13091126 
13101127 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
13111128 
1129 maxItems: 100
1130 
13121131 - `"0-200k"`
13131132 
13141133 - `"200k-1M"`
from line 1136
13171136 
13181137 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
13191138 
1139 format: date-time
1140 
13201141- `group_by: optional array of "context_window" or "cost_type" or "inference_geo" or 6 more`
13211142 
13221143 Dimensions to break each time bucket out by. Defaults to no grouping (one total per bucket). Each bucket reports at most its top 100 groups; a group beyond that cap has no row in that bucket (there is no remainder row), so grouped buckets are not exhaustive when a dimension has more than 100 distinct values.
13231144 
1145 maxItems: 100
1146 
13241147 - `"context_window"`
13251148 
13261149 - `"cost_type"`
from line 1166
13431166 
13441167 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
13451168 
1169 maxItems: 100
1170 
13461171 - `"global"`
13471172 
13481173 - `"not_available"`
from line 1178
13531178 
13541179 Maximum number of time buckets per page. Defaults and caps vary by bucket_width (1d: default 7, max 31; 1h: default 24, max 168; 1m: default 60, max 256).
13551180 
1181 minimum: 1
1182 
13561183- `models: optional array of string`
13571184 
13581185 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
13591186 
1187 maxItems: 100
1188 
13601189- `page: optional string`
13611190 
13621191 Opaque cursor from a previous response's `next_page` field.
from line 1194
13651194 
13661195 Product surfaces to include. Defaults to all products. Use `group_by[]=product` to break out per-product values. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
13671196 
1197 maxItems: 100
1198 
13681199- `rbac_group_ids: optional array of string`
13691200 
13701201 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
13711202 
1203 maxItems: 100
1204 
13721205- `slack_channel_ids: optional array of string`
13731206 
13741207 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
13751208 
1209 maxItems: 100
1210 
13761211- `speeds: optional array of "fast" or "standard"`
13771212 
13781213 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
13791214 
1215 maxItems: 100
1216 
13801217 - `"fast"`
13811218 
13821219 - `"standard"`
from line 1222
13851222 
13861223 Filter to specific users by tagged user ID.
13871224 
1388### Returns
1389 
1390- `CostBucket object { data, data_refreshed_at, has_more, 2 more }`
1391 
1392 - `data: array of object { ending_at, results, starting_at }`
1225 maxItems: 100
1226 
1227#### Returns
1228 
1229- `CostBucket object`
1230 
1231 - `data: array of object`
13931232 
13941233 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
13951234 
from line 1236
13971236 
13981237 End of the time bucket (exclusive) in RFC 3339 format.
13991238 
1400 - `results: array of object { amount, context_window, cost_type, 10 more }`
1239 format: date-time
1240 
1241 - `results: array of object`
14011242 
14021243 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
14031244 
from line 1268
14271268 
14281269 Currency code for the cost amount. Currently always `"USD"`.
14291270 
1430 - `"USD"`
1271 default: USD
14311272 
14321273 - `inference_geo: "global" or "us" or null`
14331274 
from line 1328
14871328 
14881329 Start of the time bucket (inclusive) in RFC 3339 format.
14891330 
1331 format: date-time
1332 
14901333 - `data_refreshed_at: string or null`
14911334 
14921335 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
14931336 
1337 format: date-time
1338 
14941339 - `has_more: boolean`
14951340 
14961341 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 1348
15031348 
15041349 ID of the Organization.
15051350 
1506### Example
1507 
1508```http
1351#### Example
1352 
1353```bash
15091354curl https://api.anthropic.com/v1/organizations/analytics/cost_report \
15101355 -H 'anthropic-version: 2023-06-01' \
15111356 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
15121357```
15131358 
1514#### Response
1359##### Response (200)
15151360 
15161361```json
15171362{
from line 1390
15451390}
15461391```
15471392 
1548## Get Per-User Cost
1549 
1550**get** `/v1/organizations/analytics/user_cost_report`
1393### Get Per-User Cost
1394 
1395**GET** `/v1/organizations/analytics/user_cost_report`
15511396 
15521397Get per-user cost in USD across a date range.
15531398 
from line 1404
15591404organizations on a Claude Enterprise plan. Requires an API key with the
15601405`read:analytics` scope.
15611406 
1562### Query Parameters
1407#### Query parameters
15631408 
15641409- `starting_at: string`
15651410 
15661411 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
15671412 
1413 format: date-time
1414 
15681415- `bucket_width: optional "1d" or "1h" or "1m"`
15691416 
15701417 Time-bucket granularity. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.
from line 1426
15791426 
15801427 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
15811428 
1429 maxItems: 100
1430 
15821431 - `"0-200k"`
15831432 
15841433 - `"200k-1M"`
from line 1436
15871436 
15881437 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
15891438 
1439 format: date-time
1440 
15901441- `exclude_deleted_users: optional boolean`
15911442 
15921443 If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.
15931444 
1445 default: false
1446 
15941447- `group_by: optional array of "context_window" or "cost_type" or "inference_geo" or 6 more`
15951448 
15961449 Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/cost_report` endpoint. The `product`, `model`, `context_window`, `inference_geo`, and `speed` dimensions — and the time bucket, when `bucket_width` is set — count toward `limit`. `cost_type` and `token_type` do not: `cost_type` returns one row per cost component (tokens, web search, code execution); `token_type` returns one row per token type, each with `cost_type: "tokens"`; combining both returns the per-token-type rows plus the web-search and code-execution rows. A page can therefore contain more rows than `limit` when `cost_type` or `token_type` is requested.
15971450 
1451 maxItems: 100
1452 
15981453 - `"context_window"`
15991454 
16001455 - `"cost_type"`
from line 1472
16171472 
16181473 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
16191474 
1475 maxItems: 100
1476 
16201477 - `"global"`
16211478 
16221479 - `"not_available"`
from line 1484
16271484 
16281485 Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.
16291486 
1487 default: 20, maximum: 1000, minimum: 1
1488 
16301489- `models: optional array of string`
16311490 
16321491 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
16331492 
1493 maxItems: 100
1494 
16341495- `order: optional "asc" or "desc"`
16351496 
16361497 Sort direction. Defaults to `desc`.
16371498 
1499 default: desc
1500 
16381501 - `"asc"`
16391502 
16401503 - `"desc"`
from line 1506
16431506 
16441507 Metric to rank actors by. Defaults to `amount`.
16451508 
1509 default: amount
1510 
16461511 - `"amount"`
16471512 
16481513 - `"list_amount"`
from line 1520
16551520 
16561521 Product surfaces to include. Defaults to all products. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
16571522 
1523 maxItems: 100
1524 
16581525- `rbac_group_ids: optional array of string`
16591526 
16601527 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
16611528 
1529 maxItems: 100
1530 
16621531- `slack_channel_ids: optional array of string`
16631532 
16641533 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
16651534 
1535 maxItems: 100
1536 
16661537- `speeds: optional array of "fast" or "standard"`
16671538 
16681539 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
16691540 
1541 maxItems: 100
1542 
16701543 - `"fast"`
16711544 
16721545 - `"standard"`
from line 1548
16751548 
16761549 Filter to specific users by tagged user ID.
16771550 
1678### Returns
1679 
1680- `UserCost object { data, data_refreshed_at, has_more, 2 more }`
1681 
1682 - `data: array of object { actor, amount, context_window, 13 more }`
1551 maxItems: 100
1552 
1553#### Returns
1554 
1555- `UserCost object`
1556 
1557 - `data: array of object`
16831558 
16841559 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
16851560 
from line 1578
17031578 
17041579 Actor type. Always `"user_actor"`.
17051580 
1706 - `"user_actor"`
1707 
17081581 - `user_id: string`
17091582 
17101583 Tagged user ID.
from line 1608
17351608 
17361609 Currency code for the cost amount. Currently always `"USD"`.
17371610 
1738 - `"USD"`
1611 default: USD
17391612 
17401613 - `ending_at: string or null`
17411614 
17421615 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
17431616 
1617 format: date-time
1618 
17441619 - `inference_geo: "global" or "us" or null`
17451620 
17461621 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
from line 1660
17851660 
17861661 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
17871662 
1663 format: date-time
1664 
17881665 - `token_type: "cache_creation.ephemeral_1h_input_tokens" or "cache_creation.ephemeral_5m_input_tokens" or "cache_read_input_tokens" or 2 more or null`
17891666 
17901667 Token type when cost_type=tokens; null otherwise.
from line 1680
18031680 
18041681 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
18051682 
1683 format: date-time
1684 
18061685 - `has_more: boolean`
18071686 
18081687 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 1694
18151694 
18161695 ID of the Organization.
18171696 
1818### Example
1819 
1820```http
1697#### Example
1698 
1699```bash
18211700curl https://api.anthropic.com/v1/organizations/analytics/user_cost_report \
18221701 -H 'anthropic-version: 2023-06-01' \
18231702 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
18241703```
18251704 
1826#### Response
1705##### Response (200)
18271706 
18281707```json
18291708{
from line 1739
18601739}
18611740```
18621741 
1863## Domain Types
1864 
1865### Cost Bucket
1866 
1867- `CostBucket object { data, data_refreshed_at, has_more, 2 more }`
1868 
1869 - `data: array of object { ending_at, results, starting_at }`
1870 
1871 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
1872 
1873 - `ending_at: string`
1874 
1875 End of the time bucket (exclusive) in RFC 3339 format.
1876 
1877 - `results: array of object { amount, context_window, cost_type, 10 more }`
1878 
1879 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
1880 
1881 - `amount: string`
1882 
1883 Amount (post-discount, pre-credit) in fractional cents.
1884 
1885 - `context_window: "0-200k" or "200k-1M" or null`
1886 
1887 Context-window pricing tier of the usage or cost. Null unless `context_window` is in `group_by[]`; it can also be null on grouped rows with no context-window tier, such as code execution.
1888 
1889 - `"0-200k"`
1890 
1891 - `"200k-1M"`
1892 
1893 - `cost_type: "code_execution" or "tokens" or "web_search" or null`
1894 
1895 Cost component when `group_by[]=cost_type`; null otherwise (amount is the combined total).
1896 
1897 - `"code_execution"`
1898 
1899 - `"tokens"`
1900 
1901 - `"web_search"`
1902 
1903 - `currency: "USD"`
1904 
1905 Currency code for the cost amount. Currently always `"USD"`.
1906 
1907 - `"USD"`
1908 
1909 - `inference_geo: "global" or "us" or null`
1910 
1911 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
1912 
1913 - `"global"`
1914 
1915 - `"us"`
1916 
1917 - `list_amount: string`
1918 
1919 List-price amount (pre-discount) in fractional cents.
1920 
1921 - `model: string or null`
1922 
1923 Model that produced the usage or cost, as a model name in the form the `models[]` filter accepts (for example, `claude-opus-4-6`). Null unless `model` is in `group_by[]`; it can also be null on grouped rows whose usage or cost is not attributed to a specific model, such as code execution.
1924 
1925 - `product: string or null`
1926 
1927 Product surface that produced the usage or cost. Null unless product is in `group_by[]`; it can also be null on grouped rows whose usage cannot be attributed to a known surface. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it. Some unattributed usage is reported as "other".
1928 
1929 - `rbac_group_id: string or null`
1930 
1931 RBAC group (team) the usage is attributed to, in the public tagged `rbac_group_...` spelling — the same spelling the activity resources use for this key, so the same team has ONE id across resources and it round-trips as an `rbac_group_ids[]` filter value. Populated only when `rbac_group_id` is in `group_by[]`. Any-membership semantics: a user in several groups contributes their full usage to each of those groups' rows, so the named-group rows overlap and their sum can exceed the org total. A null value is the single unassigned row: users in no group on that (UTC) day. For the true org total, run the same query with no group_by.
1932 
1933 - `requests: number or null`
1934 
1935 Number of API requests in this row's scope. Null when `group_by` includes `cost_type` or `token_type` (the count has no per-component attribution; read it from the ungrouped response). For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
1936 
1937 - `slack_channel_id: string or null`
1938 
1939 Slack channel the usage originated from. Populated only when `slack_channel_id` is in `group_by[]`; null for usage outside Slack (and for rows recorded before channel attribution was enabled).
1940 
1941 - `speed: "fast" or "standard" or null`
1942 
1943 Inference speed mode of the usage or cost: `fast` or `standard`. Null unless `speed` is in `group_by[]`.
1944 
1945 - `"fast"`
1946 
1947 - `"standard"`
1948 
1949 - `token_type: "cache_creation.ephemeral_1h_input_tokens" or "cache_creation.ephemeral_5m_input_tokens" or "cache_read_input_tokens" or 2 more or null`
1950 
1951 Token type when `group_by[]=token_type` and `cost_type=tokens`; null otherwise.
1952 
1953 - `"cache_creation.ephemeral_1h_input_tokens"`
1954 
1955 - `"cache_creation.ephemeral_5m_input_tokens"`
1956 
1957 - `"cache_read_input_tokens"`
1958 
1959 - `"output_tokens"`
1960 
1961 - `"uncached_input_tokens"`
1962 
1963 - `starting_at: string`
1964 
1965 Start of the time bucket (inclusive) in RFC 3339 format.
1966 
1967 - `data_refreshed_at: string or null`
1968 
1969 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
1970 
1971 - `has_more: boolean`
1972 
1973 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
1974 
1975 - `next_page: string or null`
1976 
1977 Opaque cursor for the next page, or null when `has_more` is false. Pass it as the `page` parameter, keeping the other parameters unchanged. A cursor can expire after the underlying data refreshes; the request then returns HTTP 410 and pagination must restart from the first page.
1978 
1979 - `organization_id: string`
1980 
1981 ID of the Organization.
1982 
1983### User Cost
1984 
1985- `UserCost object { data, data_refreshed_at, has_more, 2 more }`
1986 
1987 - `data: array of object { actor, amount, context_window, 13 more }`
1988 
1989 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
1990 
1991 - `actor: AnalyticsUserActor`
1992 
1993 The user this row's usage or cost is attributed to. Always a `user_actor`.
1994 
1995 - `deleted: boolean`
1996 
1997 True when the user is no longer a member of the organization or its associated organizations: either their membership was removed (for example, deprovisioned via your identity provider) or the account itself has been deleted. The flag reflects organization membership, not account status. `name` and `email` stay populated for removed members; `name` is `"Deleted User"` and `email` null when the account has been deleted. The `user_id` is still populated for reconciliation.
1998 
1999 - `email: string or null`
2000 
2001 The user's email address, including for users who are no longer members of the organization or its associated organizations. Null when the account has been deleted (check `deleted`) and for system-minted service accounts, which have no person's mailbox behind them (check `name`).
2002 
2003 - `name: string or null`
2004 
2005 The user's current name, including for users who are no longer members of the organization or its associated organizations. Null when the user has not set a name. Returns `"Deleted User"` when the account itself has been deleted. Rows for system-minted service accounts render the service name (for example, `"Claude Security"` for usage by Anthropic's security-patching service) or null.
2006 
2007 - `type: "user_actor"`
2008 
2009 Actor type. Always `"user_actor"`.
2010 
2011 - `"user_actor"`
2012 
2013 - `user_id: string`
2014 
2015 Tagged user ID.
2016 
2017 - `amount: string`
2018 
2019 Amount (post-discount, pre-credit) in fractional cents (minor units).
2020 
2021 - `context_window: "0-200k" or "200k-1M" or null`
2022 
2023 Context-window pricing tier of the usage or cost. Null unless `context_window` is in `group_by[]`; it can also be null on grouped rows with no context-window tier, such as code execution.
2024 
2025 - `"0-200k"`
2026 
2027 - `"200k-1M"`
2028 
2029 - `cost_type: "code_execution" or "tokens" or "web_search" or null`
2030 
2031 Cost component breakdown; null when returning the combined total.
2032 
2033 - `"code_execution"`
2034 
2035 - `"tokens"`
2036 
2037 - `"web_search"`
2038 
2039 - `currency: "USD"`
2040 
2041 Currency code for the cost amount. Currently always `"USD"`.
2042 
2043 - `"USD"`
2044 
2045 - `ending_at: string or null`
2046 
2047 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
2048 
2049 - `inference_geo: "global" or "us" or null`
2050 
2051 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
2052 
2053 - `"global"`
2054 
2055 - `"us"`
2056 
2057 - `list_amount: string`
2058 
2059 List-price amount (pre-discount) in fractional cents.
2060 
2061 - `model: string or null`
2062 
2063 Model that produced the usage or cost, as a model name in the form the `models[]` filter accepts (for example, `claude-opus-4-6`). Null unless `model` is in `group_by[]`; it can also be null on grouped rows whose usage or cost is not attributed to a specific model, such as code execution.
2064 
2065 - `product: string or null`
2066 
2067 Product surface that produced the usage or cost. Null unless product is in `group_by[]`; it can also be null on grouped rows whose usage cannot be attributed to a known surface. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it. Some unattributed usage is reported as "other".
2068 
2069 - `rbac_group_id: string or null`
2070 
2071 RBAC group (team) the usage is attributed to, in the public tagged `rbac_group_...` spelling — the same spelling the activity resources use for this key, so the same team has ONE id across resources and it round-trips as an `rbac_group_ids[]` filter value. Populated only when `rbac_group_id` is in `group_by[]`. Any-membership semantics: a user in several groups contributes their full usage to each of those groups' rows, so the named-group rows overlap and their sum can exceed the org total. A null value is the single unassigned row: users in no group on that (UTC) day. For the true org total, run the same query with no group_by.
2072 
2073 - `requests: number or null`
2074 
2075 Number of API requests in this row's scope. Null when `group_by` includes `cost_type` or `token_type` (the count has no per-component attribution; read it from the ungrouped response). For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
2076 
2077 - `slack_channel_id: string or null`
2078 
2079 Slack channel the usage originated from. Populated only when `slack_channel_id` is in `group_by[]`; null for usage outside Slack (and for rows recorded before channel attribution was enabled).
2080 
2081 - `speed: "fast" or "standard" or null`
2082 
2083 Inference speed mode of the usage or cost: `fast` or `standard`. Null unless `speed` is in `group_by[]`.
2084 
2085 - `"fast"`
2086 
2087 - `"standard"`
2088 
2089 - `starting_at: string or null`
2090 
2091 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
2092 
2093 - `token_type: "cache_creation.ephemeral_1h_input_tokens" or "cache_creation.ephemeral_5m_input_tokens" or "cache_read_input_tokens" or 2 more or null`
2094 
2095 Token type when cost_type=tokens; null otherwise.
2096 
2097 - `"cache_creation.ephemeral_1h_input_tokens"`
2098 
2099 - `"cache_creation.ephemeral_5m_input_tokens"`
2100 
2101 - `"cache_read_input_tokens"`
2102 
2103 - `"output_tokens"`
2104 
2105 - `"uncached_input_tokens"`
2106 
2107 - `data_refreshed_at: string or null`
2108 
2109 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
2110 
2111 - `has_more: boolean`
2112 
2113 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
2114 
2115 - `next_page: string or null`
2116 
2117 Opaque cursor for the next page, or null when `has_more` is false. Pass it as the `page` parameter, keeping the other parameters unchanged. A cursor can expire after the underlying data refreshes; the request then returns HTTP 410 and pagination must restart from the first page.
2118 
2119 - `organization_id: string`
2120 
2121 ID of the Organization.
2122 
2123# Users
2124 
2125## List User Activity
2126 
2127**get** `/v1/organizations/analytics/users`
1742## Analytics › Users
1743 
1744### List User Activity
1745 
1746**GET** `/v1/organizations/analytics/users`
21281747 
21291748Get per-user activity for a given day, with cursor-based pagination.
21301749 
from line 1753
21341753to organizations on a Claude Enterprise plan. Requires an API key with
21351754the `read:analytics` scope.
21361755 
2137### Query Parameters
1756#### Query parameters
21381757 
21391758- `date: optional string`
21401759 
21411760 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.
21421761 
1762 format: date
1763 
21431764- `ending_date: optional string`
21441765 
21451766 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.
21461767 
1768 format: date
1769 
21471770- `filter: optional array of string`
21481771 
21491772 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_...) and scopes each member's row to their claude.ai chat activity within that project (it cannot be combined with group_by[] or an rbac_group_id filter); 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.
21501773 
1774 maxItems: 100
1775 
21511776- `group_by: optional array of "rbac_group_id"`
21521777 
21531778 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.
21541779 
2155 - `"rbac_group_id"`
1780 maxItems: 100
21561781 
21571782- `limit: optional number`
21581783 
21591784 Number of results per page (1-1000, default 100).
21601785 
1786 minimum: 1, maximum: 1000
1787 
21611788- `order: optional "asc" or "desc"`
21621789 
21631790 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.
from line 1805
21781805 
21791806 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.
21801807 
2181### Returns
2182 
2183- `UserActivity object { data, next_page }`
1808 format: date
1809 
1810#### Returns
1811 
1812- `UserActivity object`
21841813 
21851814 Response for GET /v1/organizations/analytics/users.
21861815 
2187 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 9 more }`
2188 
2189 - `chat_metrics: object { connectors_used_count, distinct_artifacts_created_count, distinct_connectors_used_count, 9 more }`
1816 - `data: array of object`
1817 
1818 - `chat_metrics: object`
21901819 
21911820 Claude.ai activity metrics for a single user on a given day.
21921821 
from line 1867
22381867 
22391868 Number of messages that used extended thinking
22401869 
2241 - `claude_code_metrics: object { core_metrics, tool_actions }`
1870 - `claude_code_metrics: object`
22421871 
22431872 Claude Code activity metrics for a single user on a given day.
22441873 
2245 - `core_metrics: object { commit_count, distinct_session_count, lines_of_code, pull_request_count }`
1874 - `core_metrics: object`
22461875 
22471876 Core Claude Code activity metrics for a single user on a given day.
22481877 
from line 1883
22541883 
22551884 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
22561885 
2257 - `lines_of_code: object { added_count, removed_count }`
1886 - `lines_of_code: object`
22581887 
22591888 Lines of code added and removed via Claude Code.
22601889 
from line 1899
22701899 
22711900 Number of pull requests created via Claude Code
22721901 
2273 - `tool_actions: object { edit_tool, multi_edit_tool, notebook_edit_tool, write_tool }`
1902 - `tool_actions: object`
22741903 
22751904 Per-tool accepted/rejected counts for Claude Code file modification tools.
22761905 
from line 1927
22981927 
22991928 Accepted/rejected counts for a single Claude Code tool type.
23001929 
2301 - `cowork_metrics: object { action_count, connectors_used_count, dispatch_turn_count, 13 more }`
1930 - `cowork_metrics: object`
23021931 
23031932 Cowork activity metrics for a single user on a given day.
23041933 
from line 1995
23661995 
23671996 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
23681997 
2369 - `design_metrics: object { distinct_projects_created_count, distinct_projects_used_count, distinct_session_count, message_count }`
1998 - `design_metrics: object`
23701999 
23712000 Claude Design activity metrics for a single user on a given day.
23722001 
from line 2015
23862015 
23872016 Number of messages sent in Claude Design sessions
23882017 
2389 - `office_metrics: object { excel, outlook, powerpoint, word }`
2018 - `office_metrics: object`
23902019 
23912020 Office Agent activity metrics for a single user on a given day, broken out by Office product.
23922021 
from line 2059
24302059 
24312060 Office Agent activity metrics for a single user on a given day within one Office product.
24322061 
2433 - `science_metrics: object { delegation_count, distinct_session_count, message_count, 2 more }`
2062 - `science_metrics: object`
24342063 
24352064 Claude Science activity metrics for a single user on a given day.
24362065 
from line 2119
24902119 
24912120 Object type. Always `user`.
24922121 
2493 - `"user"`
2122 default: user
24942123 
24952124 - `next_page: string or null`
24962125 
24972126 Opaque cursor for the next page, or null if no more results
24982127 
2499### Example
2500 
2501```http
2128#### Example
2129 
2130```bash
25022131curl https://api.anthropic.com/v1/organizations/analytics/users \
25032132 -H 'anthropic-version: 2023-06-01' \
25042133 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
25052134```
25062135 
2507#### Response
2136##### Response (200)
25082137 
25092138```json
25102139{
from line 2263
26342263}
26352264```
26362265 
2637## Domain Types
2638 
2639### User Activity
2640 
2641- `UserActivity object { data, next_page }`
2642 
2643 Response for GET /v1/organizations/analytics/users.
2644 
2645 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 9 more }`
2646 
2647 - `chat_metrics: object { connectors_used_count, distinct_artifacts_created_count, distinct_connectors_used_count, 9 more }`
2648 
2649 Claude.ai activity metrics for a single user on a given day.
2650 
2651 - `connectors_used_count: number`
2652 
2653 Number of MCP connector invocations.
2654 
2655 - `distinct_artifacts_created_count: number`
2656 
2657 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.
2658 
2659 - `distinct_connectors_used_count: number or null`
2660 
2661 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.
2662 
2663 - `distinct_conversation_count: number or null`
2664 
2665 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.
2666 
2667 - `distinct_files_uploaded_count: number or null`
2668 
2669 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.
2670 
2671 - `distinct_projects_created_count: number`
2672 
2673 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.
2674 
2675 - `distinct_projects_used_count: number or null`
2676 
2677 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.
2678 
2679 - `distinct_shared_artifacts_viewed_count: number or null`
2680 
2681 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.
2682 
2683 - `distinct_skills_used_count: number or null`
2684 
2685 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.
2686 
2687 - `message_count: number`
2688 
2689 Number of messages sent
2690 
2691 - `shared_conversations_viewed_count: number`
2692 
2693 Number of times the user opened a shared conversation in a project
2694 
2695 - `thinking_message_count: number`
2696 
2697 Number of messages that used extended thinking
2698 
2699 - `claude_code_metrics: object { core_metrics, tool_actions }`
2700 
2701 Claude Code activity metrics for a single user on a given day.
2702 
2703 - `core_metrics: object { commit_count, distinct_session_count, lines_of_code, pull_request_count }`
2704 
2705 Core Claude Code activity metrics for a single user on a given day.
2706 
2707 - `commit_count: number`
2708 
2709 Number of commits made via Claude Code
2710 
2711 - `distinct_session_count: number or null`
2712 
2713 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
2714 
2715 - `lines_of_code: object { added_count, removed_count }`
2716 
2717 Lines of code added and removed via Claude Code.
2718 
2719 - `added_count: number`
2720 
2721 Lines of code added
2722 
2723 - `removed_count: number`
2724 
2725 Lines of code removed
2726 
2727 - `pull_request_count: number`
2728 
2729 Number of pull requests created via Claude Code
2730 
2731 - `tool_actions: object { edit_tool, multi_edit_tool, notebook_edit_tool, write_tool }`
2732 
2733 Per-tool accepted/rejected counts for Claude Code file modification tools.
2734 
2735 - `edit_tool: ToolActionCounts`
2736 
2737 Accepted/rejected counts for a single Claude Code tool type.
2738 
2739 - `accepted_count: number`
2740 
2741 Number of tool proposals accepted
2742 
2743 - `rejected_count: number`
2744 
2745 Number of tool proposals rejected
2746 
2747 - `multi_edit_tool: ToolActionCounts`
2748 
2749 Accepted/rejected counts for a single Claude Code tool type.
2750 
2751 - `notebook_edit_tool: ToolActionCounts`
2752 
2753 Accepted/rejected counts for a single Claude Code tool type.
2754 
2755 - `write_tool: ToolActionCounts`
2756 
2757 Accepted/rejected counts for a single Claude Code tool type.
2758 
2759 - `cowork_metrics: object { action_count, connectors_used_count, dispatch_turn_count, 13 more }`
2760 
2761 Cowork activity metrics for a single user on a given day.
2762 
2763 - `action_count: number`
2764 
2765 Number of tool actions completed in Cowork sessions
2766 
2767 - `connectors_used_count: number`
2768 
2769 Total number of connector invocations in Cowork sessions
2770 
2771 - `dispatch_turn_count: number`
2772 
2773 Number of Dispatch (background agent) turns completed
2774 
2775 - `distinct_connectors_used_count: number or null`
2776 
2777 Number of distinct connectors used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2778 
2779 - `distinct_session_count: number or null`
2780 
2781 Number of distinct Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2782 
2783 - `distinct_skills_used_count: number or null`
2784 
2785 Number of distinct skills used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2786 
2787 - `message_count: number`
2788 
2789 Number of messages sent in Cowork sessions
2790 
2791 - `skills_used_count: number`
2792 
2793 Total number of skill invocations in Cowork sessions
2794 
2795 - `distinct_plugins_used_count: optional number or null`
2796 
2797 Number of distinct plugins used in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2798 
2799 - `edit_tool_count: optional number or null`
2800 
2801 Number of successful Edit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
2802 
2803 - `file_edit_count: optional number or null`
2804 
2805 Number of successful file-edit tool calls (Edit, MultiEdit, Write, NotebookEdit) in Cowork sessions. Null, never 0, while the file-edit metrics are not enabled for this organization.
2806 
2807 - `multi_edit_tool_count: optional number or null`
2808 
2809 Number of successful MultiEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
2810 
2811 - `notebook_edit_tool_count: optional number or null`
2812 
2813 Number of successful NotebookEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
2814 
2815 - `plugins_used_count: optional number or null`
2816 
2817 Total number of plugin invocations in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization.
2818 
2819 - `sessions_with_file_edits_count: optional number or null`
2820 
2821 Number of distinct Cowork sessions with at least one successful file-edit tool call. Null while the file-edit metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2822 
2823 - `write_tool_count: optional number or null`
2824 
2825 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
2826 
2827 - `design_metrics: object { distinct_projects_created_count, distinct_projects_used_count, distinct_session_count, message_count }`
2828 
2829 Claude Design activity metrics for a single user on a given day.
2830 
2831 - `distinct_projects_created_count: number`
2832 
2833 Number of distinct Claude Design 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.
2834 
2835 - `distinct_projects_used_count: number or null`
2836 
2837 Number of distinct Claude Design projects the user worked in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2838 
2839 - `distinct_session_count: number or null`
2840 
2841 Number of distinct Claude Design sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2842 
2843 - `message_count: number`
2844 
2845 Number of messages sent in Claude Design sessions
2846 
2847 - `office_metrics: object { excel, outlook, powerpoint, word }`
2848 
2849 Office Agent activity metrics for a single user on a given day, broken out by Office product.
2850 
2851 - `excel: OfficeProductMetrics`
2852 
2853 Office Agent activity metrics for a single user on a given day within one Office product.
2854 
2855 - `connectors_used_count: number`
2856 
2857 Number of MCP connector invocations
2858 
2859 - `distinct_connectors_used_count: number or null`
2860 
2861 Number of distinct MCP connectors used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2862 
2863 - `distinct_session_count: number or null`
2864 
2865 Number of distinct Office Agent sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2866 
2867 - `distinct_skills_used_count: number or null`
2868 
2869 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.
2870 
2871 - `message_count: number`
2872 
2873 Number of messages sent
2874 
2875 - `skills_used_count: number`
2876 
2877 Number of skill invocations
2878 
2879 - `outlook: OfficeProductMetrics`
2880 
2881 Office Agent activity metrics for a single user on a given day within one Office product.
2882 
2883 - `powerpoint: OfficeProductMetrics`
2884 
2885 Office Agent activity metrics for a single user on a given day within one Office product.
2886 
2887 - `word: OfficeProductMetrics`
2888 
2889 Office Agent activity metrics for a single user on a given day within one Office product.
2890 
2891 - `science_metrics: object { delegation_count, distinct_session_count, message_count, 2 more }`
2892 
2893 Claude Science activity metrics for a single user on a given day.
2894 
2895 - `delegation_count: number`
2896 
2897 Number of delegations (handoffs to a specialized agent) in Claude Science sessions
2898 
2899 - `distinct_session_count: number or null`
2900 
2901 Number of distinct Claude Science sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
2902 
2903 - `message_count: number`
2904 
2905 Number of messages sent in Claude Science sessions
2906 
2907 - `remote_compute_job_count: number`
2908 
2909 Number of remote compute jobs launched from Claude Science sessions
2910 
2911 - `skills_used_count: number`
2912 
2913 Total number of skill invocations in Claude Science sessions
2914 
2915 - `web_search_count: number`
2916 
2917 Number of web searches performed
2918 
2919 - `distinct_user_count: optional number or null`
2920 
2921 Number of distinct active users represented by this row. Only set for grouped rollups (`group_by[]`); null for per-user rows. In date-range mode, recomputed as an exact distinct count of the group's active members over the requested window, never a sum of per-day values.
2922 
2923 - `last_activity_date: optional string or null`
2924 
2925 Most recent UTC day (YYYY-MM-DD) on which the user had any counted activity, within the requested window: equal to the requested date in single-day mode, and to the latest active day in [starting_date, ending_date) in date-range rollup mode — never a day earlier than the window start. On filtered requests (`filter[]`) only days matching the filter count: with `filter[]=rbac_group_id` it is the last day the user was active while a member of that group, consistent with the row's other metrics. Null on grouped (`group_by[]`) rows. Omitted from the response while last-activity reporting is not enabled for this organization.
2926 
2927 - `rbac_group_id: optional string or null`
2928 
2929 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
2930 
2931 - `rbac_group_name: optional string or null`
2932 
2933 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.
2934 
2935 - `user: optional AnalyticsUser or null`
2936 
2937 User identifier.
2938 
2939 - `id: string`
2940 
2941 Tagged user identifier (e.g. `user_...`)
2942 
2943 - `email_address: string`
2944 
2945 Email address of the user
2946 
2947 - `type: optional "user"`
2948 
2949 Object type. Always `user`.
2950 
2951 - `"user"`
2952 
2953 - `next_page: string or null`
2954 
2955 Opaque cursor for the next page, or null if no more results
2956 
2957# Skills
2958 
2959## Get Skill Usage
2960 
2961**get** `/v1/organizations/analytics/skills`
2266## Analytics › Skills
2267 
2268### Get Skill Usage
2269 
2270**GET** `/v1/organizations/analytics/skills`
29622271 
29632272Get per-skill usage for a given day, with cursor-based pagination.
29642273 
from line 2278
29692278on a Claude Enterprise plan. Requires an API key with the
29702279`read:analytics` scope.
29712280 
2972### Query Parameters
2281#### Query parameters
29732282 
29742283- `date: optional string`
29752284 
29762285 UTC date in YYYY-MM-DD format. The day to get skill 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.
29772286 
2287 format: date
2288 
29782289- `ending_date: optional string`
29792290 
29802291 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.
29812292 
2293 format: date
2294 
29822295- `filter: optional array of string`
29832296 
29842297 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: product, rbac_group_id, share_status, skill_name, user_id. Value forms: product is one of 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); share_status is one of organization, private, or public; skill_name matches case-insensitively; user_id takes a tagged user id (user_...), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.
29852298 
2299 maxItems: 100
2300 
29862301- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`
29872302 
29882303 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.
29892304 
2305 maxItems: 100
2306 
29902307 - `"product"`
29912308 
29922309 - `"rbac_group_id"`
from line 2314
29972314 
29982315 Number of results per page (1-1000, default 100).
29992316 
2317 minimum: 1, maximum: 1000
2318 
30002319- `order: optional "asc" or "desc"`
30012320 
30022321 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.
from line 2336
30172336 
30182337 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.
30192338 
3020### Returns
3021 
3022- `SkillUsage object { data, next_page }`
2339 format: date
2340 
2341#### Returns
2342 
2343- `SkillUsage object`
30232344 
30242345 Response for GET /v1/organizations/analytics/skills.
30252346 
3026 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 14 more }`
3027 
3028 - `chat_metrics: object { distinct_conversation_skill_used_count }`
2347 - `data: array of object`
2348 
2349 - `chat_metrics: object`
30292350 
30302351 Claude.ai activity metrics for a single skill on a given day.
30312352 
from line 2354
30332354 
30342355 Number of distinct conversations in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
30352356 
3036 - `claude_code_metrics: object { distinct_session_skill_used_count }`
2357 - `claude_code_metrics: object`
30372358 
30382359 Claude Code activity metrics for a single skill on a given day.
30392360 
from line 2362
30412362 
30422363 Number of distinct Claude Code sessions in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
30432364 
3044 - `cowork_metrics: object { distinct_session_skill_used_count }`
2365 - `cowork_metrics: object`
30452366 
30462367 Cowork activity metrics for a single skill on a given day.
30472368 
from line 2374
30532374 
30542375 Number of distinct users who used the skill 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. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted.
30552376 
3056 - `office_metrics: object { excel, outlook, powerpoint, word }`
2377 - `office_metrics: object`
30572378 
30582379 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
30592380 
from line 2410
30892410 
30902411 Currency for this row's monetary fields (estimated_overage_spend and attributed_list_price), as an uppercase ISO-4217 code. Always "USD" when either amount is populated; null whenever both amounts are null.
30912412 
3092 - `"USD"`
3093 
30942413 - `enable_count: optional number or null`
30952414 
30962415 Distinct accounts that enabled this skill on the requested day (claude.ai only — the skill analog of plugin install_count). The count is org-wide: null when enable reporting is not enabled for this organization, or when the request scopes to `user_id` / `rbac_group_id` / `product` via `group_by[]` or `filter[]` (an org-wide count would be misleading on per-cut rows). A distinct count, not an event count: summing across days double-counts members who enable the skill on more than one day, so it is also null in date-range rollup mode (starting_date/ending_date).
from line 2450
31312450 
31322451 Opaque cursor for the next page, or null if no more results
31332452 
3134### Example
3135 
3136```http
2453#### Example
2454 
2455```bash
31372456curl https://api.anthropic.com/v1/organizations/analytics/skills \
31382457 -H 'anthropic-version: 2023-06-01' \
31392458 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
31402459```
31412460 
3142#### Response
2461##### Response (200)
31432462 
31442463```json
31452464{
from line 2506
31872506}
31882507```
31892508 
3190## Domain Types
3191 
3192### Skill Usage
3193 
3194- `SkillUsage object { data, next_page }`
3195 
3196 Response for GET /v1/organizations/analytics/skills.
3197 
3198 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 14 more }`
3199 
3200 - `chat_metrics: object { distinct_conversation_skill_used_count }`
3201 
3202 Claude.ai activity metrics for a single skill on a given day.
3203 
3204 - `distinct_conversation_skill_used_count: number or null`
3205 
3206 Number of distinct conversations in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
3207 
3208 - `claude_code_metrics: object { distinct_session_skill_used_count }`
3209 
3210 Claude Code activity metrics for a single skill on a given day.
3211 
3212 - `distinct_session_skill_used_count: number or null`
3213 
3214 Number of distinct Claude Code sessions in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
3215 
3216 - `cowork_metrics: object { distinct_session_skill_used_count }`
3217 
3218 Cowork activity metrics for a single skill on a given day.
3219 
3220 - `distinct_session_skill_used_count: number or null`
3221 
3222 Number of distinct Cowork sessions in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
3223 
3224 - `distinct_user_count: number`
3225 
3226 Number of distinct users who used the skill 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. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted.
3227 
3228 - `office_metrics: object { excel, outlook, powerpoint, word }`
3229 
3230 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
3231 
3232 - `excel: SkillOfficeProductMetrics`
3233 
3234 Office Agent activity metrics for a single skill on a given day within one Office product.
3235 
3236 - `distinct_session_skill_used_count: number or null`
3237 
3238 Number of distinct Office Agent sessions in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
3239 
3240 - `outlook: SkillOfficeProductMetrics`
3241 
3242 Office Agent activity metrics for a single skill on a given day within one Office product.
3243 
3244 - `powerpoint: SkillOfficeProductMetrics`
3245 
3246 Office Agent activity metrics for a single skill on a given day within one Office product.
3247 
3248 - `word: SkillOfficeProductMetrics`
3249 
3250 Office Agent activity metrics for a single skill on a given day within one Office product.
3251 
3252 - `skill_name: string`
3253 
3254 Name of the skill
3255 
3256 - `attributed_list_price: optional string or null`
3257 
3258 List-price (rate-card) value of the member requests attributed to this skill, as a decimal string in the minor unit of `currency` (cents for USD), from Claude Code, Cowork, and Office Agent request-level attribution — the value of requests that INVOLVED the skill, not the skill's incremental cost. Unlike estimated_overage_spend this reflects usage value regardless of how it was funded — seat-covered usage counts — but it is undiscounted and does NOT tie to billed spend or the organization's spend reporting. claude.ai chat usage carries no request-level attribution and contributes nothing: the field is null on chat product rows and on office_agent product cuts dated before 2026-06-18 (the Office Agent attribution data-start), and on ungrouped rows it covers the Claude Code + Cowork + Office Agent share only (null when no attributable usage exists). Also null under the same conditions as estimated_overage_spend (spend reporting not enabled for this organization, office_agent product cuts before the 2026-06-18 data-start). "0" means attributable usage existed but none was attributed to this skill. Addable across days: date-range rollup mode returns the window's sum. On `group_by[]` and `filter[]` shapes both amounts can total below the ungrouped value for the same skill over the same date or range: spend attributed to a member–skill pair with no counted usage on that day is excluded from those cuts.
3259 
3260 - `currency: optional "USD" or null`
3261 
3262 Currency for this row's monetary fields (estimated_overage_spend and attributed_list_price), as an uppercase ISO-4217 code. Always "USD" when either amount is populated; null whenever both amounts are null.
3263 
3264 - `"USD"`
3265 
3266 - `enable_count: optional number or null`
3267 
3268 Distinct accounts that enabled this skill on the requested day (claude.ai only — the skill analog of plugin install_count). The count is org-wide: null when enable reporting is not enabled for this organization, or when the request scopes to `user_id` / `rbac_group_id` / `product` via `group_by[]` or `filter[]` (an org-wide count would be misleading on per-cut rows). A distinct count, not an event count: summing across days double-counts members who enable the skill on more than one day, so it is also null in date-range rollup mode (starting_date/ending_date).
3269 
3270 - `estimated_overage_spend: optional string or null`
3271 
3272 Estimated OVERAGE spend attributed to this skill, as a decimal string in the minor unit of `currency` (cents for USD; "1250" is $12.50, fractional cents possible) — an allocation of each member's daily post-discount, pre-credit metered overage spend (the same cost basis as the organization's spend reporting and the Cost & Usage API, so per-skill figures are directly comparable; spend with no skill attribution — including any member-day without skill invocations — is not represented, so skill rows sum to at most those totals) across the skills the member used. Overage only: usage covered by included seat allowances bills nothing and allocates $0 here — see attributed_list_price for the funding-independent usage-value companion. Claude Code, Cowork, and Office Agent spend use request-level skill attribution; claude.ai chat spend is approximated proportionally to skill-invoking messages. An estimate, not a billing number — and the cost of the requests/messages that INVOLVED the skill, not the skill's incremental cost (the same request would still have cost something without the skill active). "0" means no overage spend was attributed; null when spend reporting is not enabled for this organization, on office_agent product cuts dated before 2026-06-18 (the Office Agent attribution data-start). Addable across days: date-range rollup mode (starting_date/ending_date) returns the window's sum. With `group_by[]=user_id` each row carries the user's own attributed spend. On `group_by[]` and `filter[]` shapes both amounts can total below the ungrouped value for the same skill over the same date or range: spend attributed to a member–skill pair with no counted usage on that day is excluded from those cuts.
3273 
3274 - `invocation_count: optional number or null`
3275 
3276 Total number of times this skill was invoked on the requested day (the skill analog of plugin invocation_count). Unlike distinct_user_count — which answers '\# of users' — this is the true '# of uses'. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Null when invocation reporting is not enabled for this organization. Sum across a date range for total uses in the window — date-range rollup mode (starting_date/ending_date) returns this sum directly.
3277 
3278 - `product: optional string or null`
3279 
3280 Product that produced this row's activity: one of chat, claude_code, cowork, or office_agent (the canonical Cost & Usage product naming; an office_agent row's per-surface breakdown is in its office_metrics). On /plugins only cowork and claude_code occur (the only surfaces with plugin attribution); /artifacts and /apps/chat/projects do not support the product dimension (a product `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by product.
3281 
3282 - `rbac_group_id: optional string or null`
3283 
3284 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
3285 
3286 - `rbac_group_name: optional string or null`
3287 
3288 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.
3289 
3290 - `share_status: optional string or null`
3291 
3292 Skill share status (claude.ai only): one of 'private', 'organization', or 'public'. Null for skills used only in Claude Code or Office (no per-skill share-status concept) and when share-status reporting is not yet available for the organization. Filterable via `filter[]=share_status:<value>`.
3293 
3294 - `skill_display_name: optional string or null`
3295 
3296 Human-readable display name for rows whose skill_name is an opaque skill id (user/organization skill types — user-defined names are withheld from the analytics pipeline). Only organization-shared skills resolve; the literal 'unknown' bucket row also gets a fixed 'Unknown skill' label. Null for private (user-defined) skills — their names are not disclosed to analytics-key holders — and null when skill_name is already a display name, when the skill was deleted, or when display-name resolution is not enabled for this organization.
3297 
3298 - `user_id: optional string or null`
3299 
3300 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
3301 
3302 - `next_page: string or null`
3303 
3304 Opaque cursor for the next page, or null if no more results
3305 
3306# Connectors
3307 
3308## Get Connector Usage
3309 
3310**get** `/v1/organizations/analytics/connectors`
2509## Analytics › Connectors
2510 
2511### Get Connector Usage
2512 
2513**GET** `/v1/organizations/analytics/connectors`
33112514 
33122515Get per-connector usage for a given day, with cursor-based pagination.
33132516 
from line 2523
33202523organizations on a Claude Enterprise plan. Requires an API key with the
33212524`read:analytics` scope.
33222525 
3323### Query Parameters
2526#### Query parameters
33242527 
33252528- `date: optional string`
33262529 
33272530 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.
33282531 
2532 format: date
2533 
33292534- `ending_date: optional string`
33302535 
33312536 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.
33322537 
2538 format: date
2539 
33332540- `filter: optional array of string`
33342541 
33352542 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, 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.
33362543 
2544 maxItems: 100
2545 
33372546- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`
33382547 
33392548 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.
33402549 
2550 maxItems: 100
2551 
33412552 - `"product"`
33422553 
33432554 - `"rbac_group_id"`
from line 2559
33482559 
33492560 Number of results per page (1-1000, default 100).
33502561 
2562 minimum: 1, maximum: 1000
2563 
33512564- `order: optional "asc" or "desc"`
33522565 
33532566 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.
from line 2581
33682581 
33692582 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.
33702583 
3371### Returns
3372 
3373- `ConnectorUsage object { data, next_page }`
2584 format: date
2585 
2586#### Returns
2587 
2588- `ConnectorUsage object`
33742589 
33752590 Response for GET /v1/organizations/analytics/connectors.
33762591 
3377 - `data: array of object { chat_metrics, claude_code_metrics, connector_name, 13 more }`
3378 
3379 - `chat_metrics: object { distinct_conversation_connector_used_count }`
2592 - `data: array of object`
2593 
2594 - `chat_metrics: object`
33802595 
33812596 Claude.ai activity metrics for a single connector on a given day.
33822597 
from line 2599
33842599 
33852600 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.
33862601 
3387 - `claude_code_metrics: object { distinct_session_connector_used_count }`
2602 - `claude_code_metrics: object`
33882603 
33892604 Claude Code activity metrics for a single connector on a given day.
33902605 
from line 2611
33962611 
33972612 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.
33982613 
3399 - `cowork_metrics: object { distinct_session_connector_used_count }`
2614 - `cowork_metrics: object`
34002615 
34012616 Cowork activity metrics for a single connector on a given day.
34022617 
from line 2623
34082623 
34092624 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.
34102625 
3411 - `office_metrics: object { excel, outlook, powerpoint, word }`
2626 - `office_metrics: object`
34122627 
34132628 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
34142629 
from line 2691
34762691 
34772692 Opaque cursor for the next page, or null if no more results
34782693 
3479### Example
3480 
3481```http
2694#### Example
2695 
2696```bash
34822697curl https://api.anthropic.com/v1/organizations/analytics/connectors \
34832698 -H 'anthropic-version: 2023-06-01' \
34842699 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
34852700```
34862701 
3487#### Response
2702##### Response (200)
34882703 
34892704```json
34902705{
from line 2746
35312746}
35322747```
35332748 
3534## Domain Types
3535 
3536### Connector Usage
3537 
3538- `ConnectorUsage object { data, next_page }`
3539 
3540 Response for GET /v1/organizations/analytics/connectors.
3541 
3542 - `data: array of object { chat_metrics, claude_code_metrics, connector_name, 13 more }`
3543 
3544 - `chat_metrics: object { distinct_conversation_connector_used_count }`
3545 
3546 Claude.ai activity metrics for a single connector on a given day.
3547 
3548 - `distinct_conversation_connector_used_count: number or null`
3549 
3550 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.
3551 
3552 - `claude_code_metrics: object { distinct_session_connector_used_count }`
3553 
3554 Claude Code activity metrics for a single connector on a given day.
3555 
3556 - `distinct_session_connector_used_count: number or null`
3557 
3558 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.
3559 
3560 - `connector_name: string`
3561 
3562 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.
3563 
3564 - `cowork_metrics: object { distinct_session_connector_used_count }`
3565 
3566 Cowork activity metrics for a single connector on a given day.
3567 
3568 - `distinct_session_connector_used_count: number or null`
3569 
3570 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.
3571 
3572 - `distinct_user_count: number`
3573 
3574 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.
3575 
3576 - `office_metrics: object { excel, outlook, powerpoint, word }`
3577 
3578 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
3579 
3580 - `excel: ConnectorOfficeProductMetrics`
3581 
3582 Office Agent activity metrics for a single connector on a given day within one Office product.
3583 
3584 - `distinct_session_connector_used_count: number or null`
3585 
3586 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.
3587 
3588 - `outlook: ConnectorOfficeProductMetrics`
3589 
3590 Office Agent activity metrics for a single connector on a given day within one Office product.
3591 
3592 - `powerpoint: ConnectorOfficeProductMetrics`
3593 
3594 Office Agent activity metrics for a single connector on a given day within one Office product.
3595 
3596 - `word: ConnectorOfficeProductMetrics`
3597 
3598 Office Agent activity metrics for a single connector on a given day within one Office product.
3599 
3600 - `connector_display_name: optional string or null`
3601 
3602 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.
3603 
3604 - `individual_auth_distinct_user_count: optional number or null`
3605 
3606 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.
3607 
3608 - `managed_auth_distinct_user_count: optional number or null`
3609 
3610 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.
3611 
3612 - `product: optional string or null`
3613 
3614 Product that produced this row's activity: one of chat, claude_code, cowork, or office_agent (the canonical Cost & Usage product naming; an office_agent row's per-surface breakdown is in its office_metrics). On /plugins only cowork and claude_code occur (the only surfaces with plugin attribution); /artifacts and /apps/chat/projects do not support the product dimension (a product `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by product.
3615 
3616 - `rbac_group_id: optional string or null`
3617 
3618 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
3619 
3620 - `rbac_group_name: optional string or null`
3621 
3622 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.
3623 
3624 - `read_call_count: optional number or null`
3625 
3626 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.
3627 
3628 - `unclassified_call_count: optional number or null`
3629 
3630 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.
3631 
3632 - `user_id: optional string or null`
3633 
3634 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
3635 
3636 - `write_call_count: optional number or null`
3637 
3638 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.
3639 
3640 - `next_page: string or null`
3641 
3642 Opaque cursor for the next page, or null if no more results
3643 
3644# Chat Projects
3645 
3646## Get Chat Project Usage
3647 
3648**get** `/v1/organizations/analytics/apps/chat/projects`
2749## Analytics › Chat Projects
2750 
2751### Get Chat Project Usage
2752 
2753**GET** `/v1/organizations/analytics/apps/chat/projects`
36492754 
36502755Get per-project activity for a given day, with cursor-based pagination.
36512756 
from line 2760
36552760supported dimensions. Available to organizations on a Claude Enterprise
36562761plan. Requires an API key with the `read:analytics` scope.
36572762 
3658### Query Parameters
2763#### Query parameters
36592764 
36602765- `date: optional string`
36612766 
36622767 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.
36632768 
2769 format: date
2770 
36642771- `ending_date: optional string`
36652772 
36662773 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.
36672774 
2775 format: date
2776 
36682777- `filter: optional array of string`
36692778 
36702779 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.
36712780 
2781 maxItems: 100
2782 
36722783- `group_by: optional array of "rbac_group_id" or "user_id"`
36732784 
36742785 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.
36752786 
2787 maxItems: 100
2788 
36762789 - `"rbac_group_id"`
36772790 
36782791 - `"user_id"`
from line 2794
36812794 
36822795 Number of results per page (1-1000, default 100).
36832796 
2797 minimum: 1, maximum: 1000
2798 
36842799- `order: optional "asc" or "desc"`
36852800 
36862801 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.
from line 2816
37012816 
37022817 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.
37032818 
3704### Returns
3705 
3706- `ChatProjectUsage object { data, next_page }`
2819 format: date
2820 
2821#### Returns
2822 
2823- `ChatProjectUsage object`
37072824 
37082825 Response for GET /v1/organizations/analytics/apps/chat/projects.
37092826 
3710 - `data: array of object { distinct_user_count, message_count, project_id, 8 more }`
2827 - `data: array of object`
37112828 
37122829 - `distinct_user_count: number`
37132830 
from line 2862
37452862 
37462863 Object type. Always `user`.
37472864 
3748 - `"user"`
2865 default: user
37492866 
37502867 - `distinct_conversation_count: optional number or null`
37512868 
from line 2888
37712888 
37722889 Opaque cursor for the next page, or null if no more results
37732890 
3774### Example
3775 
3776```http
2891#### Example
2892 
2893```bash
37772894curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
37782895 -H 'anthropic-version: 2023-06-01' \
37792896 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
37802897```
37812898 
3782#### Response
2899##### Response (200)
37832900 
37842901```json
37852902{
from line 2923
38062923}
38072924```
38082925 
3809## Domain Types
3810 
3811### Chat Project Usage
3812 
3813- `ChatProjectUsage object { data, next_page }`
3814 
3815 Response for GET /v1/organizations/analytics/apps/chat/projects.
3816 
3817 - `data: array of object { distinct_user_count, message_count, project_id, 8 more }`
3818 
3819 - `distinct_user_count: number`
3820 
3821 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.
3822 
3823 - `message_count: number`
3824 
3825 Number of messages sent in the project on the requested day
3826 
3827 - `project_id: string`
3828 
3829 Tagged project identifier (e.g. claude_proj_...)
3830 
3831 - `project_name: string`
3832 
3833 Name of the project
3834 
3835 - `created_at: optional string or null`
3836 
3837 Project creation timestamp, RFC 3339. Null if the project was deleted before attribution was recorded.
3838 
3839 - `created_by: optional AnalyticsUser or null`
3840 
3841 User identifier.
3842 
3843 - `id: string`
3844 
3845 Tagged user identifier (e.g. `user_...`)
3846 
3847 - `email_address: string`
3848 
3849 Email address of the user
3850 
3851 - `type: optional "user"`
3852 
3853 Object type. Always `user`.
3854 
3855 - `"user"`
3856 
3857 - `distinct_conversation_count: optional number or null`
3858 
3859 Number of distinct conversations in the project. Null on aggregated rows where a distinct count cannot be computed.
3860 
3861 - `product: optional string or null`
3862 
3863 Product that produced this row's activity: one of chat, claude_code, cowork, or office_agent (the canonical Cost & Usage product naming; an office_agent row's per-surface breakdown is in its office_metrics). On /plugins only cowork and claude_code occur (the only surfaces with plugin attribution); /artifacts and /apps/chat/projects do not support the product dimension (a product `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by product.
3864 
3865 - `rbac_group_id: optional string or null`
3866 
3867 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
3868 
3869 - `rbac_group_name: optional string or null`
3870 
3871 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.
3872 
3873 - `user_id: optional string or null`
3874 
3875 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
3876 
3877 - `next_page: string or null`
3878 
3879 Opaque cursor for the next page, or null if no more results
3880 
3881# Plugins
3882 
3883## Get Plugin Usage
3884 
3885**get** `/v1/organizations/analytics/plugins`
2926## Analytics › Plugins
2927 
2928### Get Plugin Usage
2929 
2930**GET** `/v1/organizations/analytics/plugins`
38862931 
38872932Get per-plugin install + invocation usage for a given day, with pagination.
38882933 
from line 2943
38982943`read:analytics` scope. `starting_date` / `ending_date` select
38992944range-rollup mode like /skills.
39002945 
3901### Query Parameters
2946#### Query parameters
39022947 
39032948- `date: optional string`
39042949 
39052950 UTC date in YYYY-MM-DD format. The day to get plugin 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.
39062951 
2952 format: date
2953 
39072954- `ending_date: optional string`
39082955 
39092956 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.
39102957 
2958 format: date
2959 
39112960- `filter: optional array of string`
39122961 
39132962 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: plugin_name, product, rbac_group_id, user_id. Value forms: plugin_name matches case-insensitively; product is claude_code or cowork (the only surfaces with plugin attribution); 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.
39142963 
2964 maxItems: 100
2965 
39152966- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`
39162967 
39172968 Dimensions to break results out by (e.g. group_by[]=user_id). Supported on this endpoint: product, rbac_group_id, user_id. On this endpoint product takes the values claude_code or cowork only (the surfaces with plugin attribution). 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.
39182969 
2970 maxItems: 100
2971 
39192972 - `"product"`
39202973 
39212974 - `"rbac_group_id"`
from line 2979
39262979 
39272980 Number of results per page (1-1000, default 100).
39282981 
2982 minimum: 1, maximum: 1000
2983 
39292984- `order: optional "asc" or "desc"`
39302985 
39312986 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.
from line 3001
39463001 
39473002 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.
39483003 
3949### Returns
3950 
3951- `PluginUsage object { data, next_page }`
3004 format: date
3005 
3006#### Returns
3007 
3008- `PluginUsage object`
39523009 
39533010 Response for GET /v1/organizations/analytics/plugins.
39543011 
3955 - `data: array of object { claude_code_metrics, cowork_metrics, distinct_user_count, 8 more }`
3956 
3957 - `claude_code_metrics: object { distinct_session_plugin_used_count }`
3012 - `data: array of object`
3013 
3014 - `claude_code_metrics: object`
39583015 
39593016 Claude Code activity metrics for a single plugin on a given day.
39603017 
from line 3019
39623019 
39633020 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
39643021 
3965 - `cowork_metrics: object { distinct_session_plugin_used_count }`
3022 - `cowork_metrics: object`
39663023 
39673024 Cowork activity metrics for a single plugin on a given day.
39683025 
from line 3067
40103067 
40113068 Opaque cursor for the next page, or null if no more results
40123069 
4013### Example
4014 
4015```http
3070#### Example
3071 
3072```bash
40163073curl https://api.anthropic.com/v1/organizations/analytics/plugins \
40173074 -H 'anthropic-version: 2023-06-01' \
40183075 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
40193076```
40203077 
4021#### Response
3078##### Response (200)
40223079 
40233080```json
40243081{
from line 3102
40453102}
40463103```
40473104 
4048## Domain Types
4049 
4050### Plugin Usage
4051 
4052- `PluginUsage object { data, next_page }`
4053 
4054 Response for GET /v1/organizations/analytics/plugins.
4055 
4056 - `data: array of object { claude_code_metrics, cowork_metrics, distinct_user_count, 8 more }`
4057 
4058 - `claude_code_metrics: object { distinct_session_plugin_used_count }`
4059 
4060 Claude Code activity metrics for a single plugin on a given day.
4061 
4062 - `distinct_session_plugin_used_count: number or null`
4063 
4064 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
4065 
4066 - `cowork_metrics: object { distinct_session_plugin_used_count }`
4067 
4068 Cowork activity metrics for a single plugin on a given day.
4069 
4070 - `distinct_session_plugin_used_count: number or null`
4071 
4072 Number of distinct Cowork sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
4073 
4074 - `distinct_user_count: number`
4075 
4076 Number of distinct users with recorded install or invocation activity for the plugin on the requested day (install-only users count), 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.
4077 
4078 - `install_count: number or null`
4079 
4080 Number of distinct users who installed the plugin 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.
4081 
4082 - `invocation_count: number`
4083 
4084 Number of plugin invocations on the requested day
4085 
4086 - `plugin_name: string`
4087 
4088 Name of the plugin
4089 
4090 - `plugin_id: optional string or null`
4091 
4092 Stable plugin identifier when available (e.g. serena@claude-plugins-official). Null for third-party Claude Code plugins (redacted at the source) and Cowork slash commands that carry only a hashed id.
4093 
4094 - `product: optional string or null`
4095 
4096 Product that produced this row's activity: one of chat, claude_code, cowork, or office_agent (the canonical Cost & Usage product naming; an office_agent row's per-surface breakdown is in its office_metrics). On /plugins only cowork and claude_code occur (the only surfaces with plugin attribution); /artifacts and /apps/chat/projects do not support the product dimension (a product `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by product.
4097 
4098 - `rbac_group_id: optional string or null`
4099 
4100 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
4101 
4102 - `rbac_group_name: optional string or null`
4103 
4104 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.
4105 
4106 - `user_id: optional string or null`
4107 
4108 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
4109 
4110 - `next_page: string or null`
4111 
4112 Opaque cursor for the next page, or null if no more results
4113 
4114# Artifacts
4115 
4116## Get Artifact Activity
4117 
4118**get** `/v1/organizations/analytics/artifacts`
3105## Analytics › Artifacts
3106 
3107### Get Artifact Activity
3108 
3109**GET** `/v1/organizations/analytics/artifacts`
41193110 
41203111Get artifact-creation activity for a given day, broken out by MIME type.
41213112 
from line 3115
41243115can be broken out per member or per RBAC group via group_by[], and scoped
41253116via filter[]. Requires an API key with the `read:analytics` scope.
41263117 
4127### Query Parameters
3118#### Query parameters
41283119 
41293120- `date: string`
41303121 
41313122 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.
41323123 
3124 format: date
3125 
41333126- `filter: optional array of string`
41343127 
41353128 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, 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'; 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.
41363129 
3130 maxItems: 100
3131 
41373132- `group_by: optional array of "rbac_group_id" or "user_id"`
41383133 
41393134 Dimensions to break results out by: 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. 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.
41403135 
3136 maxItems: 100
3137 
41413138 - `"rbac_group_id"`
41423139 
41433140 - `"user_id"`
from line 3143
41463143 
41473144 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.
41483145 
3146 minimum: 1, maximum: 1000
3147 
41493148- `page: optional string`
41503149 
41513150 Opaque cursor from a previous response's next_page field. Only valid with group_by[] — the ungrouped cube is never paginated.
41523151 
4153### Returns
4154 
4155- `ArtifactUsage object { data, next_page }`
3152#### Returns
3153 
3154- `ArtifactUsage object`
41563155 
41573156 Response for GET /v1/organizations/analytics/artifacts.
41583157 
from line 3160
41613160 `rbac_group_id`) multiply the cube and paginate like the other analytics
41623161 list endpoints.
41633162 
4164 - `data: array of object { artifact_type, artifacts_created_count, distinct_user_count, 6 more }`
3163 - `data: array of object`
41653164 
41663165 - `artifact_type: string`
41673166 
from line 3202
42033202 
42043203 Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.
42053204 
4206### Example
4207 
4208```http
3205#### Example
3206 
3207```bash
42093208curl https://api.anthropic.com/v1/organizations/analytics/artifacts \
42103209 -H 'anthropic-version: 2023-06-01' \
42113210 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
42123211```
42133212 
4214#### Response
3213##### Response (200)
42153214 
42163215```json
42173216{
from line 3230
42313230 "next_page": "next_page"
42323231}
42333232```
4234 
4235## Domain Types
4236 
4237### Artifact Usage
4238 
4239- `ArtifactUsage object { data, next_page }`
4240 
4241 Response for GET /v1/organizations/analytics/artifacts.
4242 
4243 `next_page` is null on ungrouped queries — the artifact-type cube is
4244 finite and returned in full. Grouped queries (`group_by[]` on `user_id` /
4245 `rbac_group_id`) multiply the cube and paginate like the other analytics
4246 list endpoints.
4247 
4248 - `data: array of object { artifact_type, artifacts_created_count, distinct_user_count, 6 more }`
4249 
4250 - `artifact_type: string`
4251 
4252 Canonical artifact MIME type (e.g. text/markdown, application/vnd.ant.react, image/svg+xml), or 'other'.
4253 
4254 - `artifacts_created_count: number`
4255 
4256 Number of artifacts created in this bucket on the requested day
4257 
4258 - `distinct_user_count: number`
4259 
4260 Number of distinct users who created artifacts in this bucket on the requested day
4261 
4262 - `is_shared: boolean`
4263 
4264 Whether the artifacts in this bucket have ever been shared.
4265 
4266 - `published_artifacts_created_count: number`
4267 
4268 Number of those artifacts that have been published
4269 
4270 - `product: optional string or null`
4271 
4272 Product that produced this row's activity: one of chat, claude_code, cowork, or office_agent (the canonical Cost & Usage product naming; an office_agent row's per-surface breakdown is in its office_metrics). On /plugins only cowork and claude_code occur (the only surfaces with plugin attribution); /artifacts and /apps/chat/projects do not support the product dimension (a product `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by product.
4273 
4274 - `rbac_group_id: optional string or null`
4275 
4276 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
4277 
4278 - `rbac_group_name: optional string or null`
4279 
4280 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.
4281 
4282 - `user_id: optional string or null`
4283 
4284 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
4285 
4286 - `next_page: optional string or null`
4287 
4288 Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.
42893233 

api/admin/analytics/artifacts Changed · +17 / -14 lines

### Query parameters #### Response (200) ## Domain types ### Query Parameters #### Response ## Domain Types

from line 1
1---
2title: Artifacts
3url: https://platform.claude.com/docs/en/api/admin/analytics/artifacts
4---
5 
61# Artifacts
72 
83## Get Artifact Activity
94 
10**get** `/v1/organizations/analytics/artifacts`
5**GET** `/v1/organizations/analytics/artifacts`
116 
127Get artifact-creation activity for a given day, broken out by MIME type.
138 
from line 11
1611can be broken out per member or per RBAC group via group_by[], and scoped
1712via filter[]. Requires an API key with the `read:analytics` scope.
1813 
19### Query Parameters
14### Query parameters
2015 
2116- `date: string`
2217 
2318 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.
2419 
20 format: date
21 
2522- `filter: optional array of string`
2623 
2724 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, 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'; 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.
2825 
26 maxItems: 100
27 
2928- `group_by: optional array of "rbac_group_id" or "user_id"`
3029 
3130 Dimensions to break results out by: 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. 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.
3231 
32 maxItems: 100
33 
3334 - `"rbac_group_id"`
3435 
3536 - `"user_id"`
from line 39
3839 
3940 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.
4041 
42 minimum: 1, maximum: 1000
43 
4144- `page: optional string`
4245 
4346 Opaque cursor from a previous response's next_page field. Only valid with group_by[] — the ungrouped cube is never paginated.
from line 47
4447 
4548### Returns
4649 
47- `ArtifactUsage object { data, next_page }`
50- `ArtifactUsage object`
4851 
4952 Response for GET /v1/organizations/analytics/artifacts.
5053 
from line 56
5356 `rbac_group_id`) multiply the cube and paginate like the other analytics
5457 list endpoints.
5558 
56 - `data: array of object { artifact_type, artifacts_created_count, distinct_user_count, 6 more }`
59 - `data: array of object`
5760 
5861 - `artifact_type: string`
5962 
from line 100
97100 
98101### Example
99102 
100```http
103```bash
101104curl https://api.anthropic.com/v1/organizations/analytics/artifacts \
102105 -H 'anthropic-version: 2023-06-01' \
103106 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
104107```
105108 
106#### Response
109#### Response (200)
107110 
108111```json
109112{
from line 127
124127}
125128```
126129 
127## Domain Types
130## Domain types
128131 
129132### Artifact Usage
130133 
131- `ArtifactUsage object { data, next_page }`
134- `ArtifactUsage object`
132135 
133136 Response for GET /v1/organizations/analytics/artifacts.
134137 
from line 140
137140 `rbac_group_id`) multiply the cube and paginate like the other analytics
138141 list endpoints.
139142 
140 - `data: array of object { artifact_type, artifacts_created_count, distinct_user_count, 6 more }`
143 - `data: array of object`
141144 
142145 - `artifact_type: string`
143146 

api/admin/analytics/artifacts/list Changed · +17 / -14 lines

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

from line 1
1---
2title: Get Artifact Activity
3url: https://platform.claude.com/docs/en/api/admin/analytics/artifacts/list
4---
1# Get Artifact Activity
52 
6## Get Artifact Activity
3**GET** `/v1/organizations/analytics/artifacts`
74 
8**get** `/v1/organizations/analytics/artifacts`
9 
105Get artifact-creation activity for a given day, broken out by MIME type.
116 
127Returns the full (artifact_type, is_shared) cube for the organization;
from line 9
149can be broken out per member or per RBAC group via group_by[], and scoped
1510via filter[]. Requires an API key with the `read:analytics` scope.
1611 
17### Query Parameters
12## Query parameters
1813 
1914- `date: string`
2015 
2116 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.
2217 
18 format: date
19 
2320- `filter: optional array of string`
2421 
2522 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, 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'; 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.
2623 
24 maxItems: 100
25 
2726- `group_by: optional array of "rbac_group_id" or "user_id"`
2827 
2928 Dimensions to break results out by: 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. 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.
3029 
30 maxItems: 100
31 
3132 - `"rbac_group_id"`
3233 
3334 - `"user_id"`
from line 37
3637 
3738 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.
3839 
40 minimum: 1, maximum: 1000
41 
3942- `page: optional string`
4043 
4144 Opaque cursor from a previous response's next_page field. Only valid with group_by[] — the ungrouped cube is never paginated.
4245 
43### Returns
46## Returns
4447 
45- `ArtifactUsage object { data, next_page }`
48- `ArtifactUsage object`
4649 
4750 Response for GET /v1/organizations/analytics/artifacts.
4851 
from line 54
5154 `rbac_group_id`) multiply the cube and paginate like the other analytics
5255 list endpoints.
5356 
54 - `data: array of object { artifact_type, artifacts_created_count, distinct_user_count, 6 more }`
57 - `data: array of object`
5558 
5659 - `artifact_type: string`
5760 
from line 96
9396 
9497 Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.
9598 
96### Example
99## Example
97100 
98```http
101```bash
99102curl https://api.anthropic.com/v1/organizations/analytics/artifacts \
100103 -H 'anthropic-version: 2023-06-01' \
101104 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
102105```
103106 
104#### Response
107### Response (200)
105108 
106109```json
107110{

api/admin/analytics/chat_projects Changed · +23 / -16 lines

### Query parameters #### Response (200) ## Domain types ### Query Parameters #### Response ## Domain Types

from line 1
1---
2title: Chat Projects
3url: https://platform.claude.com/docs/en/api/admin/analytics/chat_projects
4---
5 
61# Chat Projects
72 
83## Get Chat Project Usage
94 
10**get** `/v1/organizations/analytics/apps/chat/projects`
5**GET** `/v1/organizations/analytics/apps/chat/projects`
116 
127Get per-project activity for a given day, with cursor-based pagination.
138 
from line 12
1712supported dimensions. Available to organizations on a Claude Enterprise
1813plan. Requires an API key with the `read:analytics` scope.
1914 
20### Query Parameters
15### Query parameters
2116 
2217- `date: optional string`
2318 
2419 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.
2520 
21 format: date
22 
2623- `ending_date: optional string`
2724 
2825 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.
2926 
27 format: date
28 
3029- `filter: optional array of string`
3130 
3231 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.
3332 
33 maxItems: 100
34 
3435- `group_by: optional array of "rbac_group_id" or "user_id"`
3536 
3637 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.
3738 
39 maxItems: 100
40 
3841 - `"rbac_group_id"`
3942 
4043 - `"user_id"`
from line 46
4346 
4447 Number of results per page (1-1000, default 100).
4548 
49 minimum: 1, maximum: 1000
50 
4651- `order: optional "asc" or "desc"`
4752 
4853 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.
from line 68
6368 
6469 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.
6570 
71 format: date
72 
6673### Returns
6774 
68- `ChatProjectUsage object { data, next_page }`
75- `ChatProjectUsage object`
6976 
7077 Response for GET /v1/organizations/analytics/apps/chat/projects.
7178 
72 - `data: array of object { distinct_user_count, message_count, project_id, 8 more }`
79 - `data: array of object`
7380 
7481 - `distinct_user_count: number`
7582 
from line 114
107114 
108115 Object type. Always `user`.
109116 
110 - `"user"`
117 default: user
111118 
112119 - `distinct_conversation_count: optional number or null`
113120 
from line 142
135142 
136143### Example
137144 
138```http
145```bash
139146curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
140147 -H 'anthropic-version: 2023-06-01' \
141148 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
142149```
143150 
144#### Response
151#### Response (200)
145152 
146153```json
147154{
from line 175
168175}
169176```
170177 
171## Domain Types
178## Domain types
172179 
173180### Chat Project Usage
174181 
175- `ChatProjectUsage object { data, next_page }`
182- `ChatProjectUsage object`
176183 
177184 Response for GET /v1/organizations/analytics/apps/chat/projects.
178185 
179 - `data: array of object { distinct_user_count, message_count, project_id, 8 more }`
186 - `data: array of object`
180187 
181188 - `distinct_user_count: number`
182189 
from line 221
214221 
215222 Object type. Always `user`.
216223 
217 - `"user"`
224 default: user
218225 
219226 - `distinct_conversation_count: optional number or null`
220227 

api/admin/analytics/chat_projects/list Changed · +22 / -15 lines

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

from line 1
1---
2title: Get Chat Project Usage
3url: https://platform.claude.com/docs/en/api/admin/analytics/chat_projects/list
4---
1# Get Chat Project Usage
52 
6## Get Chat Project Usage
3**GET** `/v1/organizations/analytics/apps/chat/projects`
74 
8**get** `/v1/organizations/analytics/apps/chat/projects`
9 
105Get per-project activity for a given day, with cursor-based pagination.
116 
127Returns activity metrics for each project in the organization, sorted by
from line 10
1510supported dimensions. Available to organizations on a Claude Enterprise
1611plan. Requires an API key with the `read:analytics` scope.
1712 
18### Query Parameters
13## Query parameters
1914 
2015- `date: optional string`
2116 
2217 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.
2318 
19 format: date
20 
2421- `ending_date: optional string`
2522 
2623 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.
2724 
25 format: date
26 
2827- `filter: optional array of string`
2928 
3029 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.
3130 
31 maxItems: 100
32 
3233- `group_by: optional array of "rbac_group_id" or "user_id"`
3334 
3435 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.
3536 
37 maxItems: 100
38 
3639 - `"rbac_group_id"`
3740 
3841 - `"user_id"`
from line 44
4144 
4245 Number of results per page (1-1000, default 100).
4346 
47 minimum: 1, maximum: 1000
48 
4449- `order: optional "asc" or "desc"`
4550 
4651 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.
from line 66
6166 
6267 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.
6368 
64### Returns
69 format: date
6570 
66- `ChatProjectUsage object { data, next_page }`
71## Returns
6772 
73- `ChatProjectUsage object`
74 
6875 Response for GET /v1/organizations/analytics/apps/chat/projects.
6976 
70 - `data: array of object { distinct_user_count, message_count, project_id, 8 more }`
77 - `data: array of object`
7178 
7279 - `distinct_user_count: number`
7380 
from line 112
105112 
106113 Object type. Always `user`.
107114 
108 - `"user"`
115 default: user
109116 
110117 - `distinct_conversation_count: optional number or null`
111118 
from line 138
131138 
132139 Opaque cursor for the next page, or null if no more results
133140 
134### Example
141## Example
135142 
136```http
143```bash
137144curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
138145 -H 'anthropic-version: 2023-06-01' \
139146 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
140147```
141148 
142#### Response
149### Response (200)
143150 
144151```json
145152{

api/admin/analytics/connectors Changed · +31 / -24 lines

### Query parameters #### Response (200) ## Domain types ### Query Parameters #### Response ## Domain Types

from line 1
1---
2title: Connectors
3url: https://platform.claude.com/docs/en/api/admin/analytics/connectors
4---
5 
61# Connectors
72 
83## Get Connector Usage
94 
10**get** `/v1/organizations/analytics/connectors`
5**GET** `/v1/organizations/analytics/connectors`
116 
127Get per-connector usage for a given day, with cursor-based pagination.
138 
from line 15
2015organizations on a Claude Enterprise plan. Requires an API key with the
2116`read:analytics` scope.
2217 
23### Query Parameters
18### Query parameters
2419 
2520- `date: optional string`
2621 
2722 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.
2823 
24 format: date
25 
2926- `ending_date: optional string`
3027 
3128 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.
3229 
30 format: date
31 
3332- `filter: optional array of string`
3433 
3534 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, 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.
3635 
36 maxItems: 100
37 
3738- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`
3839 
3940 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.
4041 
42 maxItems: 100
43 
4144 - `"product"`
4245 
4346 - `"rbac_group_id"`
from line 51
4851 
4952 Number of results per page (1-1000, default 100).
5053 
54 minimum: 1, maximum: 1000
55 
5156- `order: optional "asc" or "desc"`
5257 
5358 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.
from line 73
6873 
6974 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.
7075 
76 format: date
77 
7178### Returns
7279 
73- `ConnectorUsage object { data, next_page }`
80- `ConnectorUsage object`
7481 
7582 Response for GET /v1/organizations/analytics/connectors.
7683 
77 - `data: array of object { chat_metrics, claude_code_metrics, connector_name, 13 more }`
84 - `data: array of object`
7885 
79 - `chat_metrics: object { distinct_conversation_connector_used_count }`
86 - `chat_metrics: object`
8087 
8188 Claude.ai activity metrics for a single connector on a given day.
8289 
from line 91
8491 
8592 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.
8693 
87 - `claude_code_metrics: object { distinct_session_connector_used_count }`
94 - `claude_code_metrics: object`
8895 
8996 Claude Code activity metrics for a single connector on a given day.
9097 
from line 103
96103 
97104 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.
98105 
99 - `cowork_metrics: object { distinct_session_connector_used_count }`
106 - `cowork_metrics: object`
100107 
101108 Cowork activity metrics for a single connector on a given day.
102109 
from line 115
108115 
109116 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.
110117 
111 - `office_metrics: object { excel, outlook, powerpoint, word }`
118 - `office_metrics: object`
112119 
113120 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
114121 
from line 185
178185 
179186### Example
180187 
181```http
188```bash
182189curl https://api.anthropic.com/v1/organizations/analytics/connectors \
183190 -H 'anthropic-version: 2023-06-01' \
184191 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
185192```
186193 
187#### Response
194#### Response (200)
188195 
189196```json
190197{
from line 238
231238}
232239```
233240 
234## Domain Types
241## Domain types
235242 
236243### Connector Usage
237244 
238- `ConnectorUsage object { data, next_page }`
245- `ConnectorUsage object`
239246 
240247 Response for GET /v1/organizations/analytics/connectors.
241248 
242 - `data: array of object { chat_metrics, claude_code_metrics, connector_name, 13 more }`
249 - `data: array of object`
243250 
244 - `chat_metrics: object { distinct_conversation_connector_used_count }`
251 - `chat_metrics: object`
245252 
246253 Claude.ai activity metrics for a single connector on a given day.
247254 
from line 256
249256 
250257 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.
251258 
252 - `claude_code_metrics: object { distinct_session_connector_used_count }`
259 - `claude_code_metrics: object`
253260 
254261 Claude Code activity metrics for a single connector on a given day.
255262 
from line 268
261268 
262269 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.
263270 
264 - `cowork_metrics: object { distinct_session_connector_used_count }`
271 - `cowork_metrics: object`
265272 
266273 Cowork activity metrics for a single connector on a given day.
267274 
from line 280
273280 
274281 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.
275282 
276 - `office_metrics: object { excel, outlook, powerpoint, word }`
283 - `office_metrics: object`
277284 
278285 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
279286 

api/admin/analytics/connectors/list Changed · +29 / -22 lines

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

from line 1
1---
2title: Get Connector Usage
3url: https://platform.claude.com/docs/en/api/admin/analytics/connectors/list
4---
1# Get Connector Usage
52 
6## Get Connector Usage
3**GET** `/v1/organizations/analytics/connectors`
74 
8**get** `/v1/organizations/analytics/connectors`
9 
105Get per-connector usage for a given day, with cursor-based pagination.
116 
127Returns connector usage metrics for the organization, sorted by connector
from line 13
1813organizations on a Claude Enterprise plan. Requires an API key with the
1914`read:analytics` scope.
2015 
21### Query Parameters
16## Query parameters
2217 
2318- `date: optional string`
2419 
2520 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.
2621 
22 format: date
23 
2724- `ending_date: optional string`
2825 
2926 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.
3027 
28 format: date
29 
3130- `filter: optional array of string`
3231 
3332 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, 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.
3433 
34 maxItems: 100
35 
3536- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`
3637 
3738 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.
3839 
40 maxItems: 100
41 
3942 - `"product"`
4043 
4144 - `"rbac_group_id"`
from line 49
4649 
4750 Number of results per page (1-1000, default 100).
4851 
52 minimum: 1, maximum: 1000
53 
4954- `order: optional "asc" or "desc"`
5055 
5156 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.
from line 71
6671 
6772 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.
6873 
69### Returns
74 format: date
7075 
71- `ConnectorUsage object { data, next_page }`
76## Returns
7277 
78- `ConnectorUsage object`
79 
7380 Response for GET /v1/organizations/analytics/connectors.
7481 
75 - `data: array of object { chat_metrics, claude_code_metrics, connector_name, 13 more }`
82 - `data: array of object`
7683 
77 - `chat_metrics: object { distinct_conversation_connector_used_count }`
84 - `chat_metrics: object`
7885 
7986 Claude.ai activity metrics for a single connector on a given day.
8087 
from line 89
8289 
8390 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.
8491 
85 - `claude_code_metrics: object { distinct_session_connector_used_count }`
92 - `claude_code_metrics: object`
8693 
8794 Claude Code activity metrics for a single connector on a given day.
8895 
from line 101
94101 
95102 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.
96103 
97 - `cowork_metrics: object { distinct_session_connector_used_count }`
104 - `cowork_metrics: object`
98105 
99106 Cowork activity metrics for a single connector on a given day.
100107 
from line 113
106113 
107114 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.
108115 
109 - `office_metrics: object { excel, outlook, powerpoint, word }`
116 - `office_metrics: object`
110117 
111118 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
112119 
from line 181
174181 
175182 Opaque cursor for the next page, or null if no more results
176183 
177### Example
184## Example
178185 
179```http
186```bash
180187curl https://api.anthropic.com/v1/organizations/analytics/connectors \
181188 -H 'anthropic-version: 2023-06-01' \
182189 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
183190```
184191 
185#### Response
192### Response (200)
186193 
187194```json
188195{

api/admin/analytics/cost Changed · +107 / -36 lines

### Query parameters #### Response (200) ### Query parameters #### Response (200) ## Domain types ### Query Parameters #### Response ### Query Parameters #### Response ## Domain Types

from line 1
1---
2title: Cost
3url: https://platform.claude.com/docs/en/api/admin/analytics/cost
4---
5 
61# Cost
72 
83## Get Cost Over Time
94 
10**get** `/v1/organizations/analytics/cost_report`
5**GET** `/v1/organizations/analytics/cost_report`
116 
127Get cost in USD over time across a date range.
138 
from line 11
1611token type. Available to organizations on a Claude Enterprise plan.
1712Requires an API key with the `read:analytics` scope.
1813 
19### Query Parameters
14### Query parameters
2015 
2116- `starting_at: string`
2217 
2318 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
2419 
20 format: date-time
21 
2522- `bucket_width: optional "1d" or "1h" or "1m"`
2623 
2724 Time bucket granularity.
2825 
26 default: 1d
27 
2928 - `"1d"`
3029 
3130 - `"1h"`
from line 35
3635 
3736 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
3837 
38 maxItems: 100
39 
3940 - `"0-200k"`
4041 
4142 - `"200k-1M"`
from line 45
4445 
4546 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
4647 
48 format: date-time
49 
4750- `group_by: optional array of "context_window" or "cost_type" or "inference_geo" or 6 more`
4851 
4952 Dimensions to break each time bucket out by. Defaults to no grouping (one total per bucket). Each bucket reports at most its top 100 groups; a group beyond that cap has no row in that bucket (there is no remainder row), so grouped buckets are not exhaustive when a dimension has more than 100 distinct values.
5053 
54 maxItems: 100
55 
5156 - `"context_window"`
5257 
5358 - `"cost_type"`
from line 75
7075 
7176 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
7277 
78 maxItems: 100
79 
7380 - `"global"`
7481 
7582 - `"not_available"`
from line 87
8087 
8188 Maximum number of time buckets per page. Defaults and caps vary by bucket_width (1d: default 7, max 31; 1h: default 24, max 168; 1m: default 60, max 256).
8289 
90 minimum: 1
91 
8392- `models: optional array of string`
8493 
8594 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
8695 
96 maxItems: 100
97 
8798- `page: optional string`
8899 
89100 Opaque cursor from a previous response's `next_page` field.
from line 103
92103 
93104 Product surfaces to include. Defaults to all products. Use `group_by[]=product` to break out per-product values. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
94105 
106 maxItems: 100
107 
95108- `rbac_group_ids: optional array of string`
96109 
97110 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
98111 
112 maxItems: 100
113 
99114- `slack_channel_ids: optional array of string`
100115 
101116 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
102117 
118 maxItems: 100
119 
103120- `speeds: optional array of "fast" or "standard"`
104121 
105122 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
106123 
124 maxItems: 100
125 
107126 - `"fast"`
108127 
109128 - `"standard"`
from line 131
112131 
113132 Filter to specific users by tagged user ID.
114133 
134 maxItems: 100
135 
115136### Returns
116137 
117- `CostBucket object { data, data_refreshed_at, has_more, 2 more }`
138- `CostBucket object`
118139 
119 - `data: array of object { ending_at, results, starting_at }`
140 - `data: array of object`
120141 
121142 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
122143 
from line 145
124145 
125146 End of the time bucket (exclusive) in RFC 3339 format.
126147 
127 - `results: array of object { amount, context_window, cost_type, 10 more }`
148 format: date-time
128149 
150 - `results: array of object`
151 
129152 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
130153 
131154 - `amount: string`
from line 177
154177 
155178 Currency code for the cost amount. Currently always `"USD"`.
156179 
157 - `"USD"`
180 default: USD
158181 
159182 - `inference_geo: "global" or "us" or null`
160183 
from line 237
214237 
215238 Start of the time bucket (inclusive) in RFC 3339 format.
216239 
240 format: date-time
241 
217242 - `data_refreshed_at: string or null`
218243 
219244 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
220245 
246 format: date-time
247 
221248 - `has_more: boolean`
222249 
223250 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 259
232259 
233260### Example
234261 
235```http
262```bash
236263curl https://api.anthropic.com/v1/organizations/analytics/cost_report \
237264 -H 'anthropic-version: 2023-06-01' \
238265 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
239266```
240267 
241#### Response
268#### Response (200)
242269 
243270```json
244271{
from line 301
274301 
275302## Get Per-User Cost
276303 
277**get** `/v1/organizations/analytics/user_cost_report`
304**GET** `/v1/organizations/analytics/user_cost_report`
278305 
279306Get per-user cost in USD across a date range.
280307 
from line 313
286313organizations on a Claude Enterprise plan. Requires an API key with the
287314`read:analytics` scope.
288315 
289### Query Parameters
316### Query parameters
290317 
291318- `starting_at: string`
292319 
293320 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
294321 
322 format: date-time
323 
295324- `bucket_width: optional "1d" or "1h" or "1m"`
296325 
297326 Time-bucket granularity. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.
from line 335
306335 
307336 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
308337 
338 maxItems: 100
339 
309340 - `"0-200k"`
310341 
311342 - `"200k-1M"`
from line 345
314345 
315346 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
316347 
348 format: date-time
349 
317350- `exclude_deleted_users: optional boolean`
318351 
319352 If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.
320353 
354 default: false
355 
321356- `group_by: optional array of "context_window" or "cost_type" or "inference_geo" or 6 more`
322357 
323358 Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/cost_report` endpoint. The `product`, `model`, `context_window`, `inference_geo`, and `speed` dimensions — and the time bucket, when `bucket_width` is set — count toward `limit`. `cost_type` and `token_type` do not: `cost_type` returns one row per cost component (tokens, web search, code execution); `token_type` returns one row per token type, each with `cost_type: "tokens"`; combining both returns the per-token-type rows plus the web-search and code-execution rows. A page can therefore contain more rows than `limit` when `cost_type` or `token_type` is requested.
324359 
360 maxItems: 100
361 
325362 - `"context_window"`
326363 
327364 - `"cost_type"`
from line 381
344381 
345382 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
346383 
384 maxItems: 100
385 
347386 - `"global"`
348387 
349388 - `"not_available"`
from line 393
354393 
355394 Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.
356395 
396 default: 20, maximum: 1000, minimum: 1
397 
357398- `models: optional array of string`
358399 
359400 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
360401 
402 maxItems: 100
403 
361404- `order: optional "asc" or "desc"`
362405 
363406 Sort direction. Defaults to `desc`.
364407 
408 default: desc
409 
365410 - `"asc"`
366411 
367412 - `"desc"`
from line 415
370415 
371416 Metric to rank actors by. Defaults to `amount`.
372417 
418 default: amount
419 
373420 - `"amount"`
374421 
375422 - `"list_amount"`
from line 429
382429 
383430 Product surfaces to include. Defaults to all products. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
384431 
432 maxItems: 100
433 
385434- `rbac_group_ids: optional array of string`
386435 
387436 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
388437 
438 maxItems: 100
439 
389440- `slack_channel_ids: optional array of string`
390441 
391442 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
392443 
444 maxItems: 100
445 
393446- `speeds: optional array of "fast" or "standard"`
394447 
395448 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
396449 
450 maxItems: 100
451 
397452 - `"fast"`
398453 
399454 - `"standard"`
from line 457
402457 
403458 Filter to specific users by tagged user ID.
404459 
460 maxItems: 100
461 
405462### Returns
406463 
407- `UserCost object { data, data_refreshed_at, has_more, 2 more }`
464- `UserCost object`
408465 
409 - `data: array of object { actor, amount, context_window, 13 more }`
466 - `data: array of object`
410467 
411468 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
412469 
from line 487
430487 
431488 Actor type. Always `"user_actor"`.
432489 
433 - `"user_actor"`
434 
435490 - `user_id: string`
436491 
437492 Tagged user ID.
from line 517
462517 
463518 Currency code for the cost amount. Currently always `"USD"`.
464519 
465 - `"USD"`
520 default: USD
466521 
467522 - `ending_at: string or null`
468523 
469524 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
470525 
526 format: date-time
527 
471528 - `inference_geo: "global" or "us" or null`
472529 
473530 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
from line 569
512569 
513570 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
514571 
572 format: date-time
573 
515574 - `token_type: "cache_creation.ephemeral_1h_input_tokens" or "cache_creation.ephemeral_5m_input_tokens" or "cache_read_input_tokens" or 2 more or null`
516575 
517576 Token type when cost_type=tokens; null otherwise.
from line 589
530589 
531590 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
532591 
592 format: date-time
593 
533594 - `has_more: boolean`
534595 
535596 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 605
544605 
545606### Example
546607 
547```http
608```bash
548609curl https://api.anthropic.com/v1/organizations/analytics/user_cost_report \
549610 -H 'anthropic-version: 2023-06-01' \
550611 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
551612```
552613 
553#### Response
614#### Response (200)
554615 
555616```json
556617{
from line 648
587648}
588649```
589650 
590## Domain Types
651## Domain types
591652 
592653### Cost Bucket
593654 
594- `CostBucket object { data, data_refreshed_at, has_more, 2 more }`
655- `CostBucket object`
595656 
596 - `data: array of object { ending_at, results, starting_at }`
657 - `data: array of object`
597658 
598659 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
599660 
from line 662
601662 
602663 End of the time bucket (exclusive) in RFC 3339 format.
603664 
604 - `results: array of object { amount, context_window, cost_type, 10 more }`
665 format: date-time
605666 
667 - `results: array of object`
668 
606669 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
607670 
608671 - `amount: string`
from line 694
631694 
632695 Currency code for the cost amount. Currently always `"USD"`.
633696 
634 - `"USD"`
697 default: USD
635698 
636699 - `inference_geo: "global" or "us" or null`
637700 
from line 754
691754 
692755 Start of the time bucket (inclusive) in RFC 3339 format.
693756 
757 format: date-time
758 
694759 - `data_refreshed_at: string or null`
695760 
696761 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
697762 
763 format: date-time
764 
698765 - `has_more: boolean`
699766 
700767 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 776
709776 
710777### User Cost
711778 
712- `UserCost object { data, data_refreshed_at, has_more, 2 more }`
779- `UserCost object`
713780 
714 - `data: array of object { actor, amount, context_window, 13 more }`
781 - `data: array of object`
715782 
716783 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
717784 
from line 802
735802 
736803 Actor type. Always `"user_actor"`.
737804 
738 - `"user_actor"`
739 
740805 - `user_id: string`
741806 
742807 Tagged user ID.
from line 832
767832 
768833 Currency code for the cost amount. Currently always `"USD"`.
769834 
770 - `"USD"`
835 default: USD
771836 
772837 - `ending_at: string or null`
773838 
774839 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
775840 
841 format: date-time
842 
776843 - `inference_geo: "global" or "us" or null`
777844 
778845 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
from line 884
817884 
818885 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
819886 
887 format: date-time
888 
820889 - `token_type: "cache_creation.ephemeral_1h_input_tokens" or "cache_creation.ephemeral_5m_input_tokens" or "cache_read_input_tokens" or 2 more or null`
821890 
822891 Token type when cost_type=tokens; null otherwise.
from line 903
834903 - `data_refreshed_at: string or null`
835904 
836905 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
906 
907 format: date-time
837908 
838909 - `has_more: boolean`
839910 

api/admin/analytics/cost/list Changed · +47 / -20 lines

# Get Cost Over Time ## Query parameters ## Returns ## Example ### Response (200) ## Get Cost Over Time ### Query Parameters ### Returns ### Example #### Response

from line 1
1---
2title: Get Cost Over Time
3url: https://platform.claude.com/docs/en/api/admin/analytics/cost/list
4---
1# Get Cost Over Time
52 
6## Get Cost Over Time
3**GET** `/v1/organizations/analytics/cost_report`
74 
8**get** `/v1/organizations/analytics/cost_report`
9 
105Get cost in USD over time across a date range.
116 
127Returns cost bucketed by minute, hour, or day, optionally broken down by
from line 9
149token type. Available to organizations on a Claude Enterprise plan.
1510Requires an API key with the `read:analytics` scope.
1611 
17### Query Parameters
12## Query parameters
1813 
1914- `starting_at: string`
2015 
2116 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
2217 
18 format: date-time
19 
2320- `bucket_width: optional "1d" or "1h" or "1m"`
2421 
2522 Time bucket granularity.
2623 
24 default: 1d
25 
2726 - `"1d"`
2827 
2928 - `"1h"`
from line 33
3433 
3534 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
3635 
36 maxItems: 100
37 
3738 - `"0-200k"`
3839 
3940 - `"200k-1M"`
from line 43
4243 
4344 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
4445 
46 format: date-time
47 
4548- `group_by: optional array of "context_window" or "cost_type" or "inference_geo" or 6 more`
4649 
4750 Dimensions to break each time bucket out by. Defaults to no grouping (one total per bucket). Each bucket reports at most its top 100 groups; a group beyond that cap has no row in that bucket (there is no remainder row), so grouped buckets are not exhaustive when a dimension has more than 100 distinct values.
4851 
52 maxItems: 100
53 
4954 - `"context_window"`
5055 
5156 - `"cost_type"`
from line 73
6873 
6974 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
7075 
76 maxItems: 100
77 
7178 - `"global"`
7279 
7380 - `"not_available"`
from line 85
7885 
7986 Maximum number of time buckets per page. Defaults and caps vary by bucket_width (1d: default 7, max 31; 1h: default 24, max 168; 1m: default 60, max 256).
8087 
88 minimum: 1
89 
8190- `models: optional array of string`
8291 
8392 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
8493 
94 maxItems: 100
95 
8596- `page: optional string`
8697 
8798 Opaque cursor from a previous response's `next_page` field.
from line 101
90101 
91102 Product surfaces to include. Defaults to all products. Use `group_by[]=product` to break out per-product values. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
92103 
104 maxItems: 100
105 
93106- `rbac_group_ids: optional array of string`
94107 
95108 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
96109 
110 maxItems: 100
111 
97112- `slack_channel_ids: optional array of string`
98113 
99114 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
100115 
116 maxItems: 100
117 
101118- `speeds: optional array of "fast" or "standard"`
102119 
103120 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
104121 
122 maxItems: 100
123 
105124 - `"fast"`
106125 
107126 - `"standard"`
from line 129
110129 
111130 Filter to specific users by tagged user ID.
112131 
113### Returns
132 maxItems: 100
114133 
115- `CostBucket object { data, data_refreshed_at, has_more, 2 more }`
134## Returns
116135 
117 - `data: array of object { ending_at, results, starting_at }`
136- `CostBucket object`
118137 
138 - `data: array of object`
139 
119140 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
120141 
121142 - `ending_at: string`
from line 143
122143 
123144 End of the time bucket (exclusive) in RFC 3339 format.
124145 
125 - `results: array of object { amount, context_window, cost_type, 10 more }`
146 format: date-time
126147 
148 - `results: array of object`
149 
127150 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
128151 
129152 - `amount: string`
from line 175
152175 
153176 Currency code for the cost amount. Currently always `"USD"`.
154177 
155 - `"USD"`
178 default: USD
156179 
157180 - `inference_geo: "global" or "us" or null`
158181 
from line 235
212235 
213236 Start of the time bucket (inclusive) in RFC 3339 format.
214237 
238 format: date-time
239 
215240 - `data_refreshed_at: string or null`
216241 
217242 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
218243 
244 format: date-time
245 
219246 - `has_more: boolean`
220247 
221248 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 255
228255 
229256 ID of the Organization.
230257 
231### Example
258## Example
232259 
233```http
260```bash
234261curl https://api.anthropic.com/v1/organizations/analytics/cost_report \
235262 -H 'anthropic-version: 2023-06-01' \
236263 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
237264```
238265 
239#### Response
266### Response (200)
240267 
241268```json
242269{

api/admin/analytics/cost/list_by_user Changed · +50 / -21 lines

# Get Per-User Cost ## Query parameters ## Returns ## Example ### Response (200) ## Get Per-User Cost ### Query Parameters ### Returns ### Example #### Response

from line 1
1---
2title: Get Per-User Cost
3url: https://platform.claude.com/docs/en/api/admin/analytics/cost/list_by_user
4---
1# Get Per-User Cost
52 
6## Get Per-User Cost
3**GET** `/v1/organizations/analytics/user_cost_report`
74 
8**get** `/v1/organizations/analytics/user_cost_report`
9 
105Get per-user cost in USD across a date range.
116 
127Returns one row per user, ranked by spend. Use this to see which users
from line 12
1712organizations on a Claude Enterprise plan. Requires an API key with the
1813`read:analytics` scope.
1914 
20### Query Parameters
15## Query parameters
2116 
2217- `starting_at: string`
2318 
2419 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
2520 
21 format: date-time
22 
2623- `bucket_width: optional "1d" or "1h" or "1m"`
2724 
2825 Time-bucket granularity. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.
from line 34
3734 
3835 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
3936 
37 maxItems: 100
38 
4039 - `"0-200k"`
4140 
4241 - `"200k-1M"`
from line 44
4544 
4645 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
4746 
47 format: date-time
48 
4849- `exclude_deleted_users: optional boolean`
4950 
5051 If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.
5152 
53 default: false
54 
5255- `group_by: optional array of "context_window" or "cost_type" or "inference_geo" or 6 more`
5356 
5457 Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/cost_report` endpoint. The `product`, `model`, `context_window`, `inference_geo`, and `speed` dimensions — and the time bucket, when `bucket_width` is set — count toward `limit`. `cost_type` and `token_type` do not: `cost_type` returns one row per cost component (tokens, web search, code execution); `token_type` returns one row per token type, each with `cost_type: "tokens"`; combining both returns the per-token-type rows plus the web-search and code-execution rows. A page can therefore contain more rows than `limit` when `cost_type` or `token_type` is requested.
5558 
59 maxItems: 100
60 
5661 - `"context_window"`
5762 
5863 - `"cost_type"`
from line 80
7580 
7681 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
7782 
83 maxItems: 100
84 
7885 - `"global"`
7986 
8087 - `"not_available"`
from line 92
8592 
8693 Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.
8794 
95 default: 20, maximum: 1000, minimum: 1
96 
8897- `models: optional array of string`
8998 
9099 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
91100 
101 maxItems: 100
102 
92103- `order: optional "asc" or "desc"`
93104 
94105 Sort direction. Defaults to `desc`.
95106 
107 default: desc
108 
96109 - `"asc"`
97110 
98111 - `"desc"`
from line 114
101114 
102115 Metric to rank actors by. Defaults to `amount`.
103116 
117 default: amount
118 
104119 - `"amount"`
105120 
106121 - `"list_amount"`
from line 128
113128 
114129 Product surfaces to include. Defaults to all products. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
115130 
131 maxItems: 100
132 
116133- `rbac_group_ids: optional array of string`
117134 
118135 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
119136 
137 maxItems: 100
138 
120139- `slack_channel_ids: optional array of string`
121140 
122141 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
123142 
143 maxItems: 100
144 
124145- `speeds: optional array of "fast" or "standard"`
125146 
126147 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
127148 
149 maxItems: 100
150 
128151 - `"fast"`
129152 
130153 - `"standard"`
from line 156
133156 
134157 Filter to specific users by tagged user ID.
135158 
136### Returns
159 maxItems: 100
137160 
138- `UserCost object { data, data_refreshed_at, has_more, 2 more }`
161## Returns
139162 
140 - `data: array of object { actor, amount, context_window, 13 more }`
163- `UserCost object`
141164 
165 - `data: array of object`
166 
142167 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
143168 
144169 - `actor: AnalyticsUserActor`
from line 186
161186 
162187 Actor type. Always `"user_actor"`.
163188 
164 - `"user_actor"`
165 
166189 - `user_id: string`
167190 
168191 Tagged user ID.
from line 216
193216 
194217 Currency code for the cost amount. Currently always `"USD"`.
195218 
196 - `"USD"`
219 default: USD
197220 
198221 - `ending_at: string or null`
199222 
200223 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
201224 
225 format: date-time
226 
202227 - `inference_geo: "global" or "us" or null`
203228 
204229 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
from line 268
243268 
244269 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
245270 
271 format: date-time
272 
246273 - `token_type: "cache_creation.ephemeral_1h_input_tokens" or "cache_creation.ephemeral_5m_input_tokens" or "cache_read_input_tokens" or 2 more or null`
247274 
248275 Token type when cost_type=tokens; null otherwise.
from line 288
261288 
262289 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
263290 
291 format: date-time
292 
264293 - `has_more: boolean`
265294 
266295 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 302
273302 
274303 ID of the Organization.
275304 
276### Example
305## Example
277306 
278```http
307```bash
279308curl https://api.anthropic.com/v1/organizations/analytics/user_cost_report \
280309 -H 'anthropic-version: 2023-06-01' \
281310 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
282311```
283312 
284#### Response
313### Response (200)
285314 
286315```json
287316{

api/admin/analytics/plugins Changed · +27 / -20 lines

### Query parameters #### Response (200) ## Domain types ### Query Parameters #### Response ## Domain Types

from line 1
1---
2title: Plugins
3url: https://platform.claude.com/docs/en/api/admin/analytics/plugins
4---
5 
61# Plugins
72 
83## Get Plugin Usage
94 
10**get** `/v1/organizations/analytics/plugins`
5**GET** `/v1/organizations/analytics/plugins`
116 
127Get per-plugin install + invocation usage for a given day, with pagination.
138 
from line 18
2318`read:analytics` scope. `starting_date` / `ending_date` select
2419range-rollup mode like /skills.
2520 
26### Query Parameters
21### Query parameters
2722 
2823- `date: optional string`
2924 
3025 UTC date in YYYY-MM-DD format. The day to get plugin 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.
3126 
27 format: date
28 
3229- `ending_date: optional string`
3330 
3431 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.
3532 
33 format: date
34 
3635- `filter: optional array of string`
3736 
3837 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: plugin_name, product, rbac_group_id, user_id. Value forms: plugin_name matches case-insensitively; product is claude_code or cowork (the only surfaces with plugin attribution); 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.
3938 
39 maxItems: 100
40 
4041- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`
4142 
4243 Dimensions to break results out by (e.g. group_by[]=user_id). Supported on this endpoint: product, rbac_group_id, user_id. On this endpoint product takes the values claude_code or cowork only (the surfaces with plugin attribution). 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.
4344 
45 maxItems: 100
46 
4447 - `"product"`
4548 
4649 - `"rbac_group_id"`
from line 54
5154 
5255 Number of results per page (1-1000, default 100).
5356 
57 minimum: 1, maximum: 1000
58 
5459- `order: optional "asc" or "desc"`
5560 
5661 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.
from line 76
7176 
7277 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.
7378 
79 format: date
80 
7481### Returns
7582 
76- `PluginUsage object { data, next_page }`
83- `PluginUsage object`
7784 
7885 Response for GET /v1/organizations/analytics/plugins.
7986 
80 - `data: array of object { claude_code_metrics, cowork_metrics, distinct_user_count, 8 more }`
87 - `data: array of object`
8188 
82 - `claude_code_metrics: object { distinct_session_plugin_used_count }`
89 - `claude_code_metrics: object`
8390 
8491 Claude Code activity metrics for a single plugin on a given day.
8592 
from line 94
8794 
8895 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
8996 
90 - `cowork_metrics: object { distinct_session_plugin_used_count }`
97 - `cowork_metrics: object`
9198 
9299 Cowork activity metrics for a single plugin on a given day.
93100 
from line 144
137144 
138145### Example
139146 
140```http
147```bash
141148curl https://api.anthropic.com/v1/organizations/analytics/plugins \
142149 -H 'anthropic-version: 2023-06-01' \
143150 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
144151```
145152 
146#### Response
153#### Response (200)
147154 
148155```json
149156{
from line 177
170177}
171178```
172179 
173## Domain Types
180## Domain types
174181 
175182### Plugin Usage
176183 
177- `PluginUsage object { data, next_page }`
184- `PluginUsage object`
178185 
179186 Response for GET /v1/organizations/analytics/plugins.
180187 
181 - `data: array of object { claude_code_metrics, cowork_metrics, distinct_user_count, 8 more }`
188 - `data: array of object`
182189 
183 - `claude_code_metrics: object { distinct_session_plugin_used_count }`
190 - `claude_code_metrics: object`
184191 
185192 Claude Code activity metrics for a single plugin on a given day.
186193 
from line 195
188195 
189196 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
190197 
191 - `cowork_metrics: object { distinct_session_plugin_used_count }`
198 - `cowork_metrics: object`
192199 
193200 Cowork activity metrics for a single plugin on a given day.
194201 

api/admin/analytics/plugins/list Changed · +23 / -16 lines

# Get Plugin Usage ## Query parameters ## Returns ## Example ### Response (200) ## Get Plugin Usage ### Query Parameters ### Returns ### Example #### Response

from line 1
1---
2title: Get Plugin Usage
3url: https://platform.claude.com/docs/en/api/admin/analytics/plugins/list
4---
1# Get Plugin Usage
52 
6## Get Plugin Usage
3**GET** `/v1/organizations/analytics/plugins`
74 
8**get** `/v1/organizations/analytics/plugins`
9 
105Get per-plugin install + invocation usage for a given day, with pagination.
116 
127Returns plugin usage metrics for the organization across Cowork and Claude
from line 16
2116`read:analytics` scope. `starting_date` / `ending_date` select
2217range-rollup mode like /skills.
2318 
24### Query Parameters
19## Query parameters
2520 
2621- `date: optional string`
2722 
2823 UTC date in YYYY-MM-DD format. The day to get plugin 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.
2924 
25 format: date
26 
3027- `ending_date: optional string`
3128 
3229 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.
3330 
31 format: date
32 
3433- `filter: optional array of string`
3534 
3635 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: plugin_name, product, rbac_group_id, user_id. Value forms: plugin_name matches case-insensitively; product is claude_code or cowork (the only surfaces with plugin attribution); 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.
3736 
37 maxItems: 100
38 
3839- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`
3940 
4041 Dimensions to break results out by (e.g. group_by[]=user_id). Supported on this endpoint: product, rbac_group_id, user_id. On this endpoint product takes the values claude_code or cowork only (the surfaces with plugin attribution). 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.
4142 
43 maxItems: 100
44 
4245 - `"product"`
4346 
4447 - `"rbac_group_id"`
from line 52
4952 
5053 Number of results per page (1-1000, default 100).
5154 
55 minimum: 1, maximum: 1000
56 
5257- `order: optional "asc" or "desc"`
5358 
5459 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.
from line 74
6974 
7075 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.
7176 
72### Returns
77 format: date
7378 
74- `PluginUsage object { data, next_page }`
79## Returns
7580 
81- `PluginUsage object`
82 
7683 Response for GET /v1/organizations/analytics/plugins.
7784 
78 - `data: array of object { claude_code_metrics, cowork_metrics, distinct_user_count, 8 more }`
85 - `data: array of object`
7986 
80 - `claude_code_metrics: object { distinct_session_plugin_used_count }`
87 - `claude_code_metrics: object`
8188 
8289 Claude Code activity metrics for a single plugin on a given day.
8390 
from line 92
8592 
8693 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
8794 
88 - `cowork_metrics: object { distinct_session_plugin_used_count }`
95 - `cowork_metrics: object`
8996 
9097 Cowork activity metrics for a single plugin on a given day.
9198 
from line 140
133140 
134141 Opaque cursor for the next page, or null if no more results
135142 
136### Example
143## Example
137144 
138```http
145```bash
139146curl https://api.anthropic.com/v1/organizations/analytics/plugins \
140147 -H 'anthropic-version: 2023-06-01' \
141148 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
142149```
143150 
144#### Response
151### Response (200)
145152 
146153```json
147154{

api/admin/analytics/retrieve_summaries Changed · +18 / -17 lines

# Get Activity Summaries ## Query parameters ## Returns ## Example ### Response (200) ## Get Activity Summaries ### Query Parameters ### Returns ### Example #### Response

from line 1
1---
2title: Get Activity Summaries
3url: https://platform.claude.com/docs/en/api/admin/analytics/retrieve_summaries
4---
1# Get Activity Summaries
52 
6## Get Activity Summaries
3**GET** `/v1/organizations/analytics/summaries`
74 
8**get** `/v1/organizations/analytics/summaries`
9 
105Get organization-wide activity summaries for a date range.
116 
127Returns one entry per day in [starting_date, ending_date). Data is
from line 12
1712filter[]=rbac_group_id:<id>. Available to organizations on a Claude
1813Enterprise plan. Requires an API key with the `read:analytics` scope.
1914 
20### Query Parameters
15## Query parameters
2116 
2217- `starting_date: string`
2318 
2419 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.
2520 
21 format: date
22 
2623- `ending_date: optional string`
2724 
2825 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.
2926 
27 format: date
28 
3029- `filter: optional array of string`
3130 
3231 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.
3332 
34### Returns
33 maxItems: 100
3534 
36- `ActivitySummary object { summaries }`
35## Returns
3736 
37- `ActivitySummary object`
38 
3839 Response for GET /v1/organizations/analytics/summaries.
3940 
40 - `summaries: array of object { assigned_seat_count, cowork_daily_active_user_count, cowork_monthly_active_user_count, 26 more }`
41 - `summaries: array of object`
4142 
4243 - `assigned_seat_count: number or null`
4344 
from line 156
155156 
156157 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.
157158 
158### Example
159## Example
159160 
160```http
161```bash
161162curl https://api.anthropic.com/v1/organizations/analytics/summaries \
162163 -H 'anthropic-version: 2023-06-01' \
163164 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
164165```
165166 
166#### Response
167### Response (200)
167168 
168169```json
169170{

api/admin/analytics/skills Changed · +31 / -28 lines

### Query parameters #### Response (200) ## Domain types ### Query Parameters #### Response ## Domain Types

from line 1
1---
2title: Skills
3url: https://platform.claude.com/docs/en/api/admin/analytics/skills
4---
5 
61# Skills
72 
83## Get Skill Usage
94 
10**get** `/v1/organizations/analytics/skills`
5**GET** `/v1/organizations/analytics/skills`
116 
127Get per-skill usage for a given day, with cursor-based pagination.
138 
from line 13
1813on a Claude Enterprise plan. Requires an API key with the
1914`read:analytics` scope.
2015 
21### Query Parameters
16### Query parameters
2217 
2318- `date: optional string`
2419 
2520 UTC date in YYYY-MM-DD format. The day to get skill 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.
2621 
22 format: date
23 
2724- `ending_date: optional string`
2825 
2926 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.
3027 
28 format: date
29 
3130- `filter: optional array of string`
3231 
3332 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: product, rbac_group_id, share_status, skill_name, user_id. Value forms: product is one of 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); share_status is one of organization, private, or public; skill_name matches case-insensitively; user_id takes a tagged user id (user_...), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.
3433 
34 maxItems: 100
35 
3536- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`
3637 
3738 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.
3839 
40 maxItems: 100
41 
3942 - `"product"`
4043 
4144 - `"rbac_group_id"`
from line 49
4649 
4750 Number of results per page (1-1000, default 100).
4851 
52 minimum: 1, maximum: 1000
53 
4954- `order: optional "asc" or "desc"`
5055 
5156 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.
from line 71
6671 
6772 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.
6873 
74 format: date
75 
6976### Returns
7077 
71- `SkillUsage object { data, next_page }`
78- `SkillUsage object`
7279 
7380 Response for GET /v1/organizations/analytics/skills.
7481 
75 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 14 more }`
82 - `data: array of object`
7683 
77 - `chat_metrics: object { distinct_conversation_skill_used_count }`
84 - `chat_metrics: object`
7885 
7986 Claude.ai activity metrics for a single skill on a given day.
8087 
from line 89
8289 
8390 Number of distinct conversations in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
8491 
85 - `claude_code_metrics: object { distinct_session_skill_used_count }`
92 - `claude_code_metrics: object`
8693 
8794 Claude Code activity metrics for a single skill on a given day.
8895 
from line 97
9097 
9198 Number of distinct Claude Code sessions in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9299 
93 - `cowork_metrics: object { distinct_session_skill_used_count }`
100 - `cowork_metrics: object`
94101 
95102 Cowork activity metrics for a single skill on a given day.
96103 
from line 109
102109 
103110 Number of distinct users who used the skill 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. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted.
104111 
105 - `office_metrics: object { excel, outlook, powerpoint, word }`
112 - `office_metrics: object`
106113 
107114 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
108115 
from line 145
138145 
139146 Currency for this row's monetary fields (estimated_overage_spend and attributed_list_price), as an uppercase ISO-4217 code. Always "USD" when either amount is populated; null whenever both amounts are null.
140147 
141 - `"USD"`
142 
143148 - `enable_count: optional number or null`
144149 
145150 Distinct accounts that enabled this skill on the requested day (claude.ai only — the skill analog of plugin install_count). The count is org-wide: null when enable reporting is not enabled for this organization, or when the request scopes to `user_id` / `rbac_group_id` / `product` via `group_by[]` or `filter[]` (an org-wide count would be misleading on per-cut rows). A distinct count, not an event count: summing across days double-counts members who enable the skill on more than one day, so it is also null in date-range rollup mode (starting_date/ending_date).
from line 187
182187 
183188### Example
184189 
185```http
190```bash
186191curl https://api.anthropic.com/v1/organizations/analytics/skills \
187192 -H 'anthropic-version: 2023-06-01' \
188193 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
189194```
190195 
191#### Response
196#### Response (200)
192197 
193198```json
194199{
from line 241
236241}
237242```
238243 
239## Domain Types
244## Domain types
240245 
241246### Skill Usage
242247 
243- `SkillUsage object { data, next_page }`
248- `SkillUsage object`
244249 
245250 Response for GET /v1/organizations/analytics/skills.
246251 
247 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 14 more }`
252 - `data: array of object`
248253 
249 - `chat_metrics: object { distinct_conversation_skill_used_count }`
254 - `chat_metrics: object`
250255 
251256 Claude.ai activity metrics for a single skill on a given day.
252257 
from line 259
254259 
255260 Number of distinct conversations in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
256261 
257 - `claude_code_metrics: object { distinct_session_skill_used_count }`
262 - `claude_code_metrics: object`
258263 
259264 Claude Code activity metrics for a single skill on a given day.
260265 
from line 267
262267 
263268 Number of distinct Claude Code sessions in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
264269 
265 - `cowork_metrics: object { distinct_session_skill_used_count }`
270 - `cowork_metrics: object`
266271 
267272 Cowork activity metrics for a single skill on a given day.
268273 
from line 279
274279 
275280 Number of distinct users who used the skill 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. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted.
276281 
277 - `office_metrics: object { excel, outlook, powerpoint, word }`
282 - `office_metrics: object`
278283 
279284 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
280285 
from line 314
309314 - `currency: optional "USD" or null`
310315 
311316 Currency for this row's monetary fields (estimated_overage_spend and attributed_list_price), as an uppercase ISO-4217 code. Always "USD" when either amount is populated; null whenever both amounts are null.
312 
313 - `"USD"`
314317 
315318 - `enable_count: optional number or null`
316319 

api/admin/analytics/skills/list Changed · +29 / -24 lines

# Get Skill Usage ## Query parameters ## Returns ## Example ### Response (200) ## Get Skill Usage ### Query Parameters ### Returns ### Example #### Response

from line 1
1---
2title: Get Skill Usage
3url: https://platform.claude.com/docs/en/api/admin/analytics/skills/list
4---
1# Get Skill Usage
52 
6## Get Skill Usage
3**GET** `/v1/organizations/analytics/skills`
74 
8**get** `/v1/organizations/analytics/skills`
9 
105Get per-skill usage for a given day, with cursor-based pagination.
116 
127Returns skill usage metrics for the organization, sorted by skill name.
from line 11
1611on a Claude Enterprise plan. Requires an API key with the
1712`read:analytics` scope.
1813 
19### Query Parameters
14## Query parameters
2015 
2116- `date: optional string`
2217 
2318 UTC date in YYYY-MM-DD format. The day to get skill 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.
2419 
20 format: date
21 
2522- `ending_date: optional string`
2623 
2724 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.
2825 
26 format: date
27 
2928- `filter: optional array of string`
3029 
3130 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: product, rbac_group_id, share_status, skill_name, user_id. Value forms: product is one of 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); share_status is one of organization, private, or public; skill_name matches case-insensitively; user_id takes a tagged user id (user_...), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.
3231 
32 maxItems: 100
33 
3334- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`
3435 
3536 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.
3637 
38 maxItems: 100
39 
3740 - `"product"`
3841 
3942 - `"rbac_group_id"`
from line 47
4447 
4548 Number of results per page (1-1000, default 100).
4649 
50 minimum: 1, maximum: 1000
51 
4752- `order: optional "asc" or "desc"`
4853 
4954 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.
from line 69
6469 
6570 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.
6671 
67### Returns
72 format: date
6873 
69- `SkillUsage object { data, next_page }`
74## Returns
7075 
76- `SkillUsage object`
77 
7178 Response for GET /v1/organizations/analytics/skills.
7279 
73 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 14 more }`
80 - `data: array of object`
7481 
75 - `chat_metrics: object { distinct_conversation_skill_used_count }`
82 - `chat_metrics: object`
7683 
7784 Claude.ai activity metrics for a single skill on a given day.
7885 
from line 87
8087 
8188 Number of distinct conversations in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
8289 
83 - `claude_code_metrics: object { distinct_session_skill_used_count }`
90 - `claude_code_metrics: object`
8491 
8592 Claude Code activity metrics for a single skill on a given day.
8693 
from line 95
8895 
8996 Number of distinct Claude Code sessions in which the skill was used. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9097 
91 - `cowork_metrics: object { distinct_session_skill_used_count }`
98 - `cowork_metrics: object`
9299 
93100 Cowork activity metrics for a single skill on a given day.
94101 
from line 107
100107 
101108 Number of distinct users who used the skill 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. A skill counts as used only when it is explicitly activated — the model (or the user, via the skill's slash command) invokes it, reading its instructions into context as part of that activation. Skills that are merely installed or listed as available, or whose content reaches the context without an activation (preloaded, hook-injected, or read as a plain file), are not counted.
102109 
103 - `office_metrics: object { excel, outlook, powerpoint, word }`
110 - `office_metrics: object`
104111 
105112 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
106113 
from line 143
136143 
137144 Currency for this row's monetary fields (estimated_overage_spend and attributed_list_price), as an uppercase ISO-4217 code. Always "USD" when either amount is populated; null whenever both amounts are null.
138145 
139 - `"USD"`
140 
141146 - `enable_count: optional number or null`
142147 
143148 Distinct accounts that enabled this skill on the requested day (claude.ai only — the skill analog of plugin install_count). The count is org-wide: null when enable reporting is not enabled for this organization, or when the request scopes to `user_id` / `rbac_group_id` / `product` via `group_by[]` or `filter[]` (an org-wide count would be misleading on per-cut rows). A distinct count, not an event count: summing across days double-counts members who enable the skill on more than one day, so it is also null in date-range rollup mode (starting_date/ending_date).
from line 183
178183 
179184 Opaque cursor for the next page, or null if no more results
180185 
181### Example
186## Example
182187 
183```http
188```bash
184189curl https://api.anthropic.com/v1/organizations/analytics/skills \
185190 -H 'anthropic-version: 2023-06-01' \
186191 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
187192```
188193 
189#### Response
194### Response (200)
190195 
191196```json
192197{

api/admin/analytics/usage Changed · +111 / -40 lines

### Query parameters #### Response (200) ### Query parameters #### Response (200) ## Domain types ### Query Parameters #### Response ### Query Parameters #### Response ## Domain Types

from line 1
1---
2title: Usage
3url: https://platform.claude.com/docs/en/api/admin/analytics/usage
4---
5 
61# Usage
72 
83## Get Token Usage Over Time
94 
10**get** `/v1/organizations/analytics/usage_report`
5**GET** `/v1/organizations/analytics/usage_report`
116 
127Get token usage over time across a date range.
138 
from line 11
1611Available to organizations on a Claude Enterprise plan. Requires an API
1712key with the `read:analytics` scope.
1813 
19### Query Parameters
14### Query parameters
2015 
2116- `starting_at: string`
2217 
2318 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
2419 
20 format: date-time
21 
2522- `bucket_width: optional "1d" or "1h" or "1m"`
2623 
2724 Time bucket granularity.
2825 
26 default: 1d
27 
2928 - `"1d"`
3029 
3130 - `"1h"`
from line 35
3635 
3736 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
3837 
38 maxItems: 100
39 
3940 - `"0-200k"`
4041 
4142 - `"200k-1M"`
from line 45
4445 
4546 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
4647 
48 format: date-time
49 
4750- `group_by: optional array of "context_window" or "inference_geo" or "model" or 4 more`
4851 
4952 Dimensions to break each time bucket out by. Defaults to no grouping (one total per bucket). Each bucket reports at most its top 100 groups; a group beyond that cap has no row in that bucket (there is no remainder row), so grouped buckets are not exhaustive when a dimension has more than 100 distinct values.
5053 
54 maxItems: 100
55 
5156 - `"context_window"`
5257 
5358 - `"inference_geo"`
from line 71
6671 
6772 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
6873 
74 maxItems: 100
75 
6976 - `"global"`
7077 
7178 - `"not_available"`
from line 83
7683 
7784 Maximum number of time buckets per page. Defaults and caps vary by bucket_width (1d: default 7, max 31; 1h: default 24, max 168; 1m: default 60, max 256).
7885 
86 minimum: 1
87 
7988- `models: optional array of string`
8089 
8190 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
8291 
92 maxItems: 100
93 
8394- `page: optional string`
8495 
8596 Opaque cursor from a previous response's `next_page` field.
from line 99
8899 
89100 Product surfaces to include. Defaults to all products. Use `group_by[]=product` to break out per-product values. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
90101 
102 maxItems: 100
103 
91104- `rbac_group_ids: optional array of string`
92105 
93106 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
94107 
108 maxItems: 100
109 
95110- `slack_channel_ids: optional array of string`
96111 
97112 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
98113 
114 maxItems: 100
115 
99116- `speeds: optional array of "fast" or "standard"`
100117 
101118 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
102119 
120 maxItems: 100
121 
103122 - `"fast"`
104123 
105124 - `"standard"`
from line 127
108127 
109128 Filter to specific users by tagged user ID.
110129 
130 maxItems: 100
131 
111132### Returns
112133 
113- `UsageBucket object { data, data_refreshed_at, has_more, 2 more }`
134- `UsageBucket object`
114135 
115 - `data: array of object { ending_at, results, starting_at }`
136 - `data: array of object`
116137 
117138 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
118139 
from line 141
120141 
121142 End of the time bucket (exclusive) in RFC 3339 format.
122143 
123 - `results: array of object { cache_creation, cache_read_input_tokens, context_window, 10 more }`
144 format: date-time
124145 
146 - `results: array of object`
147 
125148 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
126149 
127 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
150 - `cache_creation: object`
128151 
129152 The number of input tokens for cache creation.
130153 
from line 199
176199 
177200 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
178201 
179 - `server_tool_use: object { web_search_requests }`
202 - `server_tool_use: object`
180203 
181204 Server-side tool usage metrics.
182205 
from line 227
204227 
205228 Start of the time bucket (inclusive) in RFC 3339 format.
206229 
230 format: date-time
231 
207232 - `data_refreshed_at: string or null`
208233 
209234 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
210235 
236 format: date-time
237 
211238 - `has_more: boolean`
212239 
213240 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 249
222249 
223250### Example
224251 
225```http
252```bash
226253curl https://api.anthropic.com/v1/organizations/analytics/usage_report \
227254 -H 'anthropic-version: 2023-06-01' \
228255 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
229256```
230257 
231#### Response
258#### Response (200)
232259 
233260```json
234261{
from line 296
269296 
270297## Get Per-User Token Usage
271298 
272**get** `/v1/organizations/analytics/user_usage_report`
299**GET** `/v1/organizations/analytics/user_usage_report`
273300 
274301Get per-user token usage across a date range.
275302 
from line 308
281308organizations on a Claude Enterprise plan. Requires an API key with the
282309`read:analytics` scope.
283310 
284### Query Parameters
311### Query parameters
285312 
286313- `starting_at: string`
287314 
288315 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
289316 
317 format: date-time
318 
290319- `bucket_width: optional "1d" or "1h" or "1m"`
291320 
292321 Time-bucket granularity. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.
from line 330
301330 
302331 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
303332 
333 maxItems: 100
334 
304335 - `"0-200k"`
305336 
306337 - `"200k-1M"`
from line 340
309340 
310341 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
311342 
343 format: date-time
344 
312345- `exclude_deleted_users: optional boolean`
313346 
314347 If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.
315348 
349 default: false
350 
316351- `group_by: optional array of "context_window" or "inference_geo" or "model" or 4 more`
317352 
318353 Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/usage_report` endpoint. `limit` bounds (actor × time bucket × dimension) rows — with dimensions or `bucket_width` present, one actor may span several rows.
319354 
355 maxItems: 100
356 
320357 - `"context_window"`
321358 
322359 - `"inference_geo"`
from line 372
335372 
336373 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
337374 
375 maxItems: 100
376 
338377 - `"global"`
339378 
340379 - `"not_available"`
from line 384
345384 
346385 Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.
347386 
387 default: 20, maximum: 1000, minimum: 1
388 
348389- `models: optional array of string`
349390 
350391 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
351392 
393 maxItems: 100
394 
352395- `order: optional "asc" or "desc"`
353396 
354397 Sort direction. Defaults to `desc`.
355398 
399 default: desc
400 
356401 - `"asc"`
357402 
358403 - `"desc"`
from line 406
361406 
362407 Metric to rank actors by. Defaults to `total_tokens`.
363408 
409 default: total_tokens
410 
364411 - `"output_tokens"`
365412 
366413 - `"requests"`
from line 424
377424 
378425 Product surfaces to include. Defaults to all products. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
379426 
427 maxItems: 100
428 
380429- `rbac_group_ids: optional array of string`
381430 
382431 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
383432 
433 maxItems: 100
434 
384435- `slack_channel_ids: optional array of string`
385436 
386437 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
387438 
439 maxItems: 100
440 
388441- `speeds: optional array of "fast" or "standard"`
389442 
390443 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
391444 
445 maxItems: 100
446 
392447 - `"fast"`
393448 
394449 - `"standard"`
from line 452
397452 
398453 Filter to specific users by tagged user ID.
399454 
455 maxItems: 100
456 
400457### Returns
401458 
402- `UserUsage object { data, data_refreshed_at, has_more, 2 more }`
459- `UserUsage object`
403460 
404 - `data: array of object { actor, cache_creation, cache_read_input_tokens, 14 more }`
461 - `data: array of object`
405462 
406463 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
407464 
from line 482
425482 
426483 Actor type. Always `"user_actor"`.
427484 
428 - `"user_actor"`
429 
430485 - `user_id: string`
431486 
432487 Tagged user ID.
433488 
434 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
489 - `cache_creation: object`
435490 
436491 The number of input tokens for cache creation.
437492 
from line 514
459514 
460515 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
461516 
517 format: date-time
518 
462519 - `inference_geo: "global" or "us" or null`
463520 
464521 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
from line 544
487544 
488545 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
489546 
490 - `server_tool_use: object { web_search_requests }`
547 - `server_tool_use: object`
491548 
492549 Server-side tool usage metrics.
493550 
from line 568
511568 
512569 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
513570 
571 format: date-time
572 
514573 - `total_tokens: number`
515574 
516575 Total token count across all token types. This is the value the default order_by='total_tokens' sorts on.
from line 582
523582 
524583 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
525584 
585 format: date-time
586 
526587 - `has_more: boolean`
527588 
528589 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 598
537598 
538599### Example
539600 
540```http
601```bash
541602curl https://api.anthropic.com/v1/organizations/analytics/user_usage_report \
542603 -H 'anthropic-version: 2023-06-01' \
543604 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
544605```
545606 
546#### Response
607#### Response (200)
547608 
548609```json
549610{
from line 647
586647}
587648```
588649 
589## Domain Types
650## Domain types
590651 
591652### Usage Bucket
592653 
593- `UsageBucket object { data, data_refreshed_at, has_more, 2 more }`
654- `UsageBucket object`
594655 
595 - `data: array of object { ending_at, results, starting_at }`
656 - `data: array of object`
596657 
597658 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
598659 
from line 661
600661 
601662 End of the time bucket (exclusive) in RFC 3339 format.
602663 
603 - `results: array of object { cache_creation, cache_read_input_tokens, context_window, 10 more }`
664 format: date-time
604665 
666 - `results: array of object`
667 
605668 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
606669 
607 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
670 - `cache_creation: object`
608671 
609672 The number of input tokens for cache creation.
610673 
from line 719
656719 
657720 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
658721 
659 - `server_tool_use: object { web_search_requests }`
722 - `server_tool_use: object`
660723 
661724 Server-side tool usage metrics.
662725 
from line 747
684747 
685748 Start of the time bucket (inclusive) in RFC 3339 format.
686749 
750 format: date-time
751 
687752 - `data_refreshed_at: string or null`
688753 
689754 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
690755 
756 format: date-time
757 
691758 - `has_more: boolean`
692759 
693760 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 769
702769 
703770### User Usage
704771 
705- `UserUsage object { data, data_refreshed_at, has_more, 2 more }`
772- `UserUsage object`
706773 
707 - `data: array of object { actor, cache_creation, cache_read_input_tokens, 14 more }`
774 - `data: array of object`
708775 
709776 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
710777 
from line 795
728795 
729796 Actor type. Always `"user_actor"`.
730797 
731 - `"user_actor"`
732 
733798 - `user_id: string`
734799 
735800 Tagged user ID.
736801 
737 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
802 - `cache_creation: object`
738803 
739804 The number of input tokens for cache creation.
740805 
from line 827
762827 
763828 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
764829 
830 format: date-time
831 
765832 - `inference_geo: "global" or "us" or null`
766833 
767834 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
from line 857
790857 
791858 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
792859 
793 - `server_tool_use: object { web_search_requests }`
860 - `server_tool_use: object`
794861 
795862 Server-side tool usage metrics.
796863 
from line 881
814881 
815882 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
816883 
884 format: date-time
885 
817886 - `total_tokens: number`
818887 
819888 Total token count across all token types. This is the value the default order_by='total_tokens' sorts on.
from line 894
825894 - `data_refreshed_at: string or null`
826895 
827896 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
897 
898 format: date-time
828899 
829900 - `has_more: boolean`
830901 

api/admin/analytics/usage/list Changed · +48 / -21 lines

# Get Token Usage Over Time ## Query parameters ## Returns ## Example ### Response (200) ## Get Token Usage Over Time ### Query Parameters ### Returns ### Example #### Response

from line 1
1---
2title: Get Token Usage Over Time
3url: https://platform.claude.com/docs/en/api/admin/analytics/usage/list
4---
1# Get Token Usage Over Time
52 
6## Get Token Usage Over Time
3**GET** `/v1/organizations/analytics/usage_report`
74 
8**get** `/v1/organizations/analytics/usage_report`
9 
105Get token usage over time across a date range.
116 
127Returns token usage bucketed by minute, hour, or day, optionally broken
from line 9
149Available to organizations on a Claude Enterprise plan. Requires an API
1510key with the `read:analytics` scope.
1611 
17### Query Parameters
12## Query parameters
1813 
1914- `starting_at: string`
2015 
2116 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
2217 
18 format: date-time
19 
2320- `bucket_width: optional "1d" or "1h" or "1m"`
2421 
2522 Time bucket granularity.
2623 
24 default: 1d
25 
2726 - `"1d"`
2827 
2928 - `"1h"`
from line 33
3433 
3534 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
3635 
36 maxItems: 100
37 
3738 - `"0-200k"`
3839 
3940 - `"200k-1M"`
from line 43
4243 
4344 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
4445 
46 format: date-time
47 
4548- `group_by: optional array of "context_window" or "inference_geo" or "model" or 4 more`
4649 
4750 Dimensions to break each time bucket out by. Defaults to no grouping (one total per bucket). Each bucket reports at most its top 100 groups; a group beyond that cap has no row in that bucket (there is no remainder row), so grouped buckets are not exhaustive when a dimension has more than 100 distinct values.
4851 
52 maxItems: 100
53 
4954 - `"context_window"`
5055 
5156 - `"inference_geo"`
from line 69
6469 
6570 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
6671 
72 maxItems: 100
73 
6774 - `"global"`
6875 
6976 - `"not_available"`
from line 81
7481 
7582 Maximum number of time buckets per page. Defaults and caps vary by bucket_width (1d: default 7, max 31; 1h: default 24, max 168; 1m: default 60, max 256).
7683 
84 minimum: 1
85 
7786- `models: optional array of string`
7887 
7988 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
8089 
90 maxItems: 100
91 
8192- `page: optional string`
8293 
8394 Opaque cursor from a previous response's `next_page` field.
from line 97
8697 
8798 Product surfaces to include. Defaults to all products. Use `group_by[]=product` to break out per-product values. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
8899 
100 maxItems: 100
101 
89102- `rbac_group_ids: optional array of string`
90103 
91104 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
92105 
106 maxItems: 100
107 
93108- `slack_channel_ids: optional array of string`
94109 
95110 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
96111 
112 maxItems: 100
113 
97114- `speeds: optional array of "fast" or "standard"`
98115 
99116 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
100117 
118 maxItems: 100
119 
101120 - `"fast"`
102121 
103122 - `"standard"`
from line 125
106125 
107126 Filter to specific users by tagged user ID.
108127 
109### Returns
128 maxItems: 100
110129 
111- `UsageBucket object { data, data_refreshed_at, has_more, 2 more }`
130## Returns
112131 
113 - `data: array of object { ending_at, results, starting_at }`
132- `UsageBucket object`
114133 
134 - `data: array of object`
135 
115136 Time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no data (their `results` list is empty). A page holds at most `limit` buckets.
116137 
117138 - `ending_at: string`
from line 139
118139 
119140 End of the time bucket (exclusive) in RFC 3339 format.
120141 
121 - `results: array of object { cache_creation, cache_read_input_tokens, context_window, 10 more }`
142 format: date-time
122143 
144 - `results: array of object`
145 
123146 Rows for this time bucket. Empty when the bucket has no data; otherwise a single combined row when `group_by[]` is omitted, or one row per group (subject to the per-bucket group cap described on the `group_by[]` parameter).
124147 
125 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
148 - `cache_creation: object`
126149 
127150 The number of input tokens for cache creation.
128151 
from line 197
174197 
175198 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
176199 
177 - `server_tool_use: object { web_search_requests }`
200 - `server_tool_use: object`
178201 
179202 Server-side tool usage metrics.
180203 
from line 225
202225 
203226 Start of the time bucket (inclusive) in RFC 3339 format.
204227 
228 format: date-time
229 
205230 - `data_refreshed_at: string or null`
206231 
207232 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
208233 
234 format: date-time
235 
209236 - `has_more: boolean`
210237 
211238 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 245
218245 
219246 ID of the Organization.
220247 
221### Example
248## Example
222249 
223```http
250```bash
224251curl https://api.anthropic.com/v1/organizations/analytics/usage_report \
225252 -H 'anthropic-version: 2023-06-01' \
226253 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
227254```
228255 
229#### Response
256### Response (200)
230257 
231258```json
232259{

api/admin/analytics/usage/list_by_user Changed · +51 / -22 lines

# Get Per-User Token Usage ## Query parameters ## Returns ## Example ### Response (200) ## Get Per-User Token Usage ### Query Parameters ### Returns ### Example #### Response

from line 1
1---
2title: Get Per-User Token Usage
3url: https://platform.claude.com/docs/en/api/admin/analytics/usage/list_by_user
4---
1# Get Per-User Token Usage
52 
6## Get Per-User Token Usage
3**GET** `/v1/organizations/analytics/user_usage_report`
74 
8**get** `/v1/organizations/analytics/user_usage_report`
9 
105Get per-user token usage across a date range.
116 
127Returns one row per user, ranked by the chosen token metric. Use this to
from line 12
1712organizations on a Claude Enterprise plan. Requires an API key with the
1813`read:analytics` scope.
1914 
20### Query Parameters
15## Query parameters
2116 
2217- `starting_at: string`
2318 
2419 Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.
2520 
21 format: date-time
22 
2623- `bucket_width: optional "1d" or "1h" or "1m"`
2724 
2825 Time-bucket granularity. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.
from line 34
3734 
3835 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
3936 
37 maxItems: 100
38 
4039 - `"0-200k"`
4140 
4241 - `"200k-1M"`
from line 44
4544 
4645 End of range, exclusive. When omitted, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.
4746 
47 format: date-time
48 
4849- `exclude_deleted_users: optional boolean`
4950 
5051 If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.
5152 
53 default: false
54 
5255- `group_by: optional array of "context_window" or "inference_geo" or "model" or 4 more`
5356 
5457 Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/usage_report` endpoint. `limit` bounds (actor × time bucket × dimension) rows — with dimensions or `bucket_width` present, one actor may span several rows.
5558 
59 maxItems: 100
60 
5661 - `"context_window"`
5762 
5863 - `"inference_geo"`
from line 76
7176 
7277 Filter to specific inference regions. `not_available` matches rows where the region is unset. Use `group_by[]=inference_geo` to break out per-region values.
7378 
79 maxItems: 100
80 
7481 - `"global"`
7582 
7683 - `"not_available"`
from line 88
8188 
8289 Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.
8390 
91 default: 20, maximum: 1000, minimum: 1
92 
8493- `models: optional array of string`
8594 
8695 Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.
8796 
97 maxItems: 100
98 
8899- `order: optional "asc" or "desc"`
89100 
90101 Sort direction. Defaults to `desc`.
91102 
103 default: desc
104 
92105 - `"asc"`
93106 
94107 - `"desc"`
from line 110
97110 
98111 Metric to rank actors by. Defaults to `total_tokens`.
99112 
113 default: total_tokens
114 
100115 - `"output_tokens"`
101116 
102117 - `"requests"`
from line 128
113128 
114129 Product surfaces to include. Defaults to all products. Values include "chat", "claude_code", "cowork", "office_agent", "claude_in_chrome", "claude_design", and "claude-in-slack". "claude-in-slack" (with hyphens) is Claude Tag, the Claude product in Slack. A similarly spelled legacy value (underscores instead of hyphens) identifies the retiring v1 Slack chat bot and appears only for organizations that used it.
115130 
131 maxItems: 100
132 
116133- `rbac_group_ids: optional array of string`
117134 
118135 Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged to any of the listed groups on the (UTC) day the usage occurred; usage with no group attribution never matches.
119136 
137 maxItems: 100
138 
120139- `slack_channel_ids: optional array of string`
121140 
122141 Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.
123142 
143 maxItems: 100
144 
124145- `speeds: optional array of "fast" or "standard"`
125146 
126147 Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.
127148 
149 maxItems: 100
150 
128151 - `"fast"`
129152 
130153 - `"standard"`
from line 156
133156 
134157 Filter to specific users by tagged user ID.
135158 
136### Returns
159 maxItems: 100
137160 
138- `UserUsage object { data, data_refreshed_at, has_more, 2 more }`
161## Returns
139162 
140 - `data: array of object { actor, cache_creation, cache_read_input_tokens, 14 more }`
163- `UserUsage object`
141164 
165 - `data: array of object`
166 
142167 Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.
143168 
144169 - `actor: AnalyticsUserActor`
from line 186
161186 
162187 Actor type. Always `"user_actor"`.
163188 
164 - `"user_actor"`
165 
166189 - `user_id: string`
167190 
168191 Tagged user ID.
169192 
170 - `cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }`
193 - `cache_creation: object`
171194 
172195 The number of input tokens for cache creation.
173196 
from line 218
195218 
196219 End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.
197220 
221 format: date-time
222 
198223 - `inference_geo: "global" or "us" or null`
199224 
200225 Inference region of the usage or cost. Null unless `inference_geo` is in `group_by[]`; it can also be null on grouped rows where the region is not set (the rows that `inference_geos[]=not_available` matches).
from line 248
223248 
224249 Number of API requests in this row's scope. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).
225250 
226 - `server_tool_use: object { web_search_requests }`
251 - `server_tool_use: object`
227252 
228253 Server-side tool usage metrics.
229254 
from line 272
247272 
248273 Start of the row's UTC time bucket (inclusive), as an RFC 3339 timestamp. Null unless `bucket_width` is set; without `bucket_width`, each row aggregates the full requested range.
249274 
275 format: date-time
276 
250277 - `total_tokens: number`
251278 
252279 Total token count across all token types. This is the value the default order_by='total_tokens' sorts on.
from line 286
259286 
260287 RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case `data` is empty. Data beyond this watermark is incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).
261288 
289 format: date-time
290 
262291 - `has_more: boolean`
263292 
264293 Whether another page is available. When true, pass `next_page` as the `page` parameter to fetch it.
from line 300
271300 
272301 ID of the Organization.
273302 
274### Example
303## Example
275304 
276```http
305```bash
277306curl https://api.anthropic.com/v1/organizations/analytics/user_usage_report \
278307 -H 'anthropic-version: 2023-06-01' \
279308 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
280309```
281310 
282#### Response
311### Response (200)
283312 
284313```json
285314{

api/admin/analytics/users Changed · +42 / -37 lines

### Query parameters #### Response (200) ## Domain types ### Query Parameters #### Response ## Domain Types

from line 1
1---
2title: Users
3url: https://platform.claude.com/docs/en/api/admin/analytics/users
4---
5 
61# Users
72 
83## List User Activity
94 
10**get** `/v1/organizations/analytics/users`
5**GET** `/v1/organizations/analytics/users`
116 
127Get per-user activity for a given day, with cursor-based pagination.
138 
from line 12
1712to organizations on a Claude Enterprise plan. Requires an API key with
1813the `read:analytics` scope.
1914 
20### Query Parameters
15### Query parameters
2116 
2217- `date: optional string`
2318 
2419 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.
2520 
21 format: date
22 
2623- `ending_date: optional string`
2724 
2825 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.
2926 
27 format: date
28 
3029- `filter: optional array of string`
3130 
3231 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_...) and scopes each member's row to their claude.ai chat activity within that project (it cannot be combined with group_by[] or an rbac_group_id filter); 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.
3332 
33 maxItems: 100
34 
3435- `group_by: optional array of "rbac_group_id"`
3536 
3637 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.
3738 
38 - `"rbac_group_id"`
39 maxItems: 100
3940 
4041- `limit: optional number`
4142 
4243 Number of results per page (1-1000, default 100).
4344 
45 minimum: 1, maximum: 1000
46 
4447- `order: optional "asc" or "desc"`
4548 
4649 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.
from line 64
6164 
6265 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.
6366 
67 format: date
68 
6469### Returns
6570 
66- `UserActivity object { data, next_page }`
71- `UserActivity object`
6772 
6873 Response for GET /v1/organizations/analytics/users.
6974 
70 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 9 more }`
75 - `data: array of object`
7176 
72 - `chat_metrics: object { connectors_used_count, distinct_artifacts_created_count, distinct_connectors_used_count, 9 more }`
77 - `chat_metrics: object`
7378 
7479 Claude.ai activity metrics for a single user on a given day.
7580 
from line 126
121126 
122127 Number of messages that used extended thinking
123128 
124 - `claude_code_metrics: object { core_metrics, tool_actions }`
129 - `claude_code_metrics: object`
125130 
126131 Claude Code activity metrics for a single user on a given day.
127132 
128 - `core_metrics: object { commit_count, distinct_session_count, lines_of_code, pull_request_count }`
133 - `core_metrics: object`
129134 
130135 Core Claude Code activity metrics for a single user on a given day.
131136 
from line 142
137142 
138143 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
139144 
140 - `lines_of_code: object { added_count, removed_count }`
145 - `lines_of_code: object`
141146 
142147 Lines of code added and removed via Claude Code.
143148 
from line 158
153158 
154159 Number of pull requests created via Claude Code
155160 
156 - `tool_actions: object { edit_tool, multi_edit_tool, notebook_edit_tool, write_tool }`
161 - `tool_actions: object`
157162 
158163 Per-tool accepted/rejected counts for Claude Code file modification tools.
159164 
from line 186
181186 
182187 Accepted/rejected counts for a single Claude Code tool type.
183188 
184 - `cowork_metrics: object { action_count, connectors_used_count, dispatch_turn_count, 13 more }`
189 - `cowork_metrics: object`
185190 
186191 Cowork activity metrics for a single user on a given day.
187192 
from line 254
249254 
250255 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
251256 
252 - `design_metrics: object { distinct_projects_created_count, distinct_projects_used_count, distinct_session_count, message_count }`
257 - `design_metrics: object`
253258 
254259 Claude Design activity metrics for a single user on a given day.
255260 
from line 274
269274 
270275 Number of messages sent in Claude Design sessions
271276 
272 - `office_metrics: object { excel, outlook, powerpoint, word }`
277 - `office_metrics: object`
273278 
274279 Office Agent activity metrics for a single user on a given day, broken out by Office product.
275280 
from line 318
313318 
314319 Office Agent activity metrics for a single user on a given day within one Office product.
315320 
316 - `science_metrics: object { delegation_count, distinct_session_count, message_count, 2 more }`
321 - `science_metrics: object`
317322 
318323 Claude Science activity metrics for a single user on a given day.
319324 
from line 378
373378 
374379 Object type. Always `user`.
375380 
376 - `"user"`
381 default: user
377382 
378383 - `next_page: string or null`
379384 
from line 386
381386 
382387### Example
383388 
384```http
389```bash
385390curl https://api.anthropic.com/v1/organizations/analytics/users \
386391 -H 'anthropic-version: 2023-06-01' \
387392 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
388393```
389394 
390#### Response
395#### Response (200)
391396 
392397```json
393398{
from line 522
517522}
518523```
519524 
520## Domain Types
525## Domain types
521526 
522527### User Activity
523528 
524- `UserActivity object { data, next_page }`
529- `UserActivity object`
525530 
526531 Response for GET /v1/organizations/analytics/users.
527532 
528 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 9 more }`
533 - `data: array of object`
529534 
530 - `chat_metrics: object { connectors_used_count, distinct_artifacts_created_count, distinct_connectors_used_count, 9 more }`
535 - `chat_metrics: object`
531536 
532537 Claude.ai activity metrics for a single user on a given day.
533538 
from line 584
579584 
580585 Number of messages that used extended thinking
581586 
582 - `claude_code_metrics: object { core_metrics, tool_actions }`
587 - `claude_code_metrics: object`
583588 
584589 Claude Code activity metrics for a single user on a given day.
585590 
586 - `core_metrics: object { commit_count, distinct_session_count, lines_of_code, pull_request_count }`
591 - `core_metrics: object`
587592 
588593 Core Claude Code activity metrics for a single user on a given day.
589594 
from line 600
595600 
596601 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
597602 
598 - `lines_of_code: object { added_count, removed_count }`
603 - `lines_of_code: object`
599604 
600605 Lines of code added and removed via Claude Code.
601606 
from line 616
611616 
612617 Number of pull requests created via Claude Code
613618 
614 - `tool_actions: object { edit_tool, multi_edit_tool, notebook_edit_tool, write_tool }`
619 - `tool_actions: object`
615620 
616621 Per-tool accepted/rejected counts for Claude Code file modification tools.
617622 
from line 644
639644 
640645 Accepted/rejected counts for a single Claude Code tool type.
641646 
642 - `cowork_metrics: object { action_count, connectors_used_count, dispatch_turn_count, 13 more }`
647 - `cowork_metrics: object`
643648 
644649 Cowork activity metrics for a single user on a given day.
645650 
from line 712
707712 
708713 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
709714 
710 - `design_metrics: object { distinct_projects_created_count, distinct_projects_used_count, distinct_session_count, message_count }`
715 - `design_metrics: object`
711716 
712717 Claude Design activity metrics for a single user on a given day.
713718 
from line 732
727732 
728733 Number of messages sent in Claude Design sessions
729734 
730 - `office_metrics: object { excel, outlook, powerpoint, word }`
735 - `office_metrics: object`
731736 
732737 Office Agent activity metrics for a single user on a given day, broken out by Office product.
733738 
from line 776
771776 
772777 Office Agent activity metrics for a single user on a given day within one Office product.
773778 
774 - `science_metrics: object { delegation_count, distinct_session_count, message_count, 2 more }`
779 - `science_metrics: object`
775780 
776781 Claude Science activity metrics for a single user on a given day.
777782 
from line 836
831836 
832837 Object type. Always `user`.
833838 
834 - `"user"`
839 default: user
835840 
836841 - `next_page: string or null`
837842 

api/admin/analytics/users/list Changed · +34 / -29 lines

# List User Activity ## Query parameters ## Returns ## Example ### Response (200) ## List User Activity ### Query Parameters ### Returns ### Example #### Response

from line 1
1---
2title: List User Activity
3url: https://platform.claude.com/docs/en/api/admin/analytics/users/list
4---
1# List User Activity
52 
6## List User Activity
3**GET** `/v1/organizations/analytics/users`
74 
8**get** `/v1/organizations/analytics/users`
9 
105Get per-user activity for a given day, with cursor-based pagination.
116 
127Returns activity metrics for each user in the organization, sorted by email
from line 10
1510to organizations on a Claude Enterprise plan. Requires an API key with
1611the `read:analytics` scope.
1712 
18### Query Parameters
13## Query parameters
1914 
2015- `date: optional string`
2116 
2217 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.
2318 
19 format: date
20 
2421- `ending_date: optional string`
2522 
2623 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.
2724 
25 format: date
26 
2827- `filter: optional array of string`
2928 
3029 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_...) and scopes each member's row to their claude.ai chat activity within that project (it cannot be combined with group_by[] or an rbac_group_id filter); 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.
3130 
31 maxItems: 100
32 
3233- `group_by: optional array of "rbac_group_id"`
3334 
3435 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.
3536 
36 - `"rbac_group_id"`
37 maxItems: 100
3738 
3839- `limit: optional number`
3940 
4041 Number of results per page (1-1000, default 100).
4142 
43 minimum: 1, maximum: 1000
44 
4245- `order: optional "asc" or "desc"`
4346 
4447 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.
from line 62
5962 
6063 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.
6164 
62### Returns
65 format: date
6366 
64- `UserActivity object { data, next_page }`
67## Returns
6568 
69- `UserActivity object`
70 
6671 Response for GET /v1/organizations/analytics/users.
6772 
68 - `data: array of object { chat_metrics, claude_code_metrics, cowork_metrics, 9 more }`
73 - `data: array of object`
6974 
70 - `chat_metrics: object { connectors_used_count, distinct_artifacts_created_count, distinct_connectors_used_count, 9 more }`
75 - `chat_metrics: object`
7176 
7277 Claude.ai activity metrics for a single user on a given day.
7378 
from line 124
119124 
120125 Number of messages that used extended thinking
121126 
122 - `claude_code_metrics: object { core_metrics, tool_actions }`
127 - `claude_code_metrics: object`
123128 
124129 Claude Code activity metrics for a single user on a given day.
125130 
126 - `core_metrics: object { commit_count, distinct_session_count, lines_of_code, pull_request_count }`
131 - `core_metrics: object`
127132 
128133 Core Claude Code activity metrics for a single user on a given day.
129134 
from line 140
135140 
136141 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
137142 
138 - `lines_of_code: object { added_count, removed_count }`
143 - `lines_of_code: object`
139144 
140145 Lines of code added and removed via Claude Code.
141146 
from line 156
151156 
152157 Number of pull requests created via Claude Code
153158 
154 - `tool_actions: object { edit_tool, multi_edit_tool, notebook_edit_tool, write_tool }`
159 - `tool_actions: object`
155160 
156161 Per-tool accepted/rejected counts for Claude Code file modification tools.
157162 
from line 184
179184 
180185 Accepted/rejected counts for a single Claude Code tool type.
181186 
182 - `cowork_metrics: object { action_count, connectors_used_count, dispatch_turn_count, 13 more }`
187 - `cowork_metrics: object`
183188 
184189 Cowork activity metrics for a single user on a given day.
185190 
from line 252
247252 
248253 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
249254 
250 - `design_metrics: object { distinct_projects_created_count, distinct_projects_used_count, distinct_session_count, message_count }`
255 - `design_metrics: object`
251256 
252257 Claude Design activity metrics for a single user on a given day.
253258 
from line 272
267272 
268273 Number of messages sent in Claude Design sessions
269274 
270 - `office_metrics: object { excel, outlook, powerpoint, word }`
275 - `office_metrics: object`
271276 
272277 Office Agent activity metrics for a single user on a given day, broken out by Office product.
273278 
from line 316
311316 
312317 Office Agent activity metrics for a single user on a given day within one Office product.
313318 
314 - `science_metrics: object { delegation_count, distinct_session_count, message_count, 2 more }`
319 - `science_metrics: object`
315320 
316321 Claude Science activity metrics for a single user on a given day.
317322 
from line 376
371376 
372377 Object type. Always `user`.
373378 
374 - `"user"`
379 default: user
375380 
376381 - `next_page: string or null`
377382 
378383 Opaque cursor for the next page, or null if no more results
379384 
380### Example
385## Example
381386 
382```http
387```bash
383388curl https://api.anthropic.com/v1/organizations/analytics/users \
384389 -H 'anthropic-version: 2023-06-01' \
385390 -H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
386391```
387392 
388#### Response
393### Response (200)
389394 
390395```json
391396{

api/admin/api_keys Changed · +40 / -29 lines

### Path parameters #### Response (200) ### Query parameters #### Response (200) ### Path parameters ### Body parameters #### Response (200) ### Path Parameters #### Response ### Query Parameters #### Response ### Path Parameters ### Body Parameters #### Response

from line 1
1---
2title: API Keys
3url: https://platform.claude.com/docs/en/api/admin/api_keys
4---
5 
61# API Keys
72 
83## Retrieve API Key (Admin API)
94 
10**get** `/v1/organizations/api_keys/{api_key_id}`
5**GET** `/v1/organizations/api_keys/{api_key_id}`
116 
127Retrieve information about a single API key in your organization, looked up by its ID. This Admin API endpoint requires an Admin API key, is intended for programmatic key management, and never returns the key's secret value. To view or create your own API keys, go to [API keys](https://platform.claude.com/settings/keys) in the Claude Console.
138 
14### Path Parameters
9### Path parameters
1510 
1611- `api_key_id: string`
1712 
from line 14
1914 
2015### Returns
2116 
22- `APIKey object { id, created_at, created_by, 7 more }`
17- `APIKey object`
2318 
2419 - `id: string`
2520 
from line 24
2924 
3025 RFC 3339 datetime string indicating when the API Key was created.
3126 
32 - `created_by: object { id, type } or null`
27 format: date-time
3328 
29 - `created_by: object or null`
30 
3431 The ID and type of the actor that created the API key, or `null` when the
3532 creator is not recorded (legacy, workload-identity-federated, or
3633 system-created keys).
from line 44
4744 
4845 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
4946 
47 format: date-time
48 
5049 - `name: string`
5150 
5251 Name of the API key.
from line 54
5554 
5655 Partially redacted hint for the API key.
5756 
58 - `principal: object { id, type } or null`
57 - `principal: object or null`
5958 
6059 The ID and type of the principal the API key acts as, or `null` if the key is not bound to a principal.
6160 
from line 88
8988 
9089 For API Keys, this is always `"api_key"`.
9190 
92 - `"api_key"`
91 default: api_key
9392 
9493 - `workspace_id: string or null`
9594 
from line 96
9796 
9897### Example
9998 
100```http
99```bash
101100curl https://api.anthropic.com/v1/organizations/api_keys/$API_KEY_ID \
102101 -H 'anthropic-version: 2023-06-01' \
103102 -H "Authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"
104103```
105104 
106#### Response
105#### Response (200)
107106 
108107```json
109108{
from line 127
128127 
129128## List API Keys
130129 
131**get** `/v1/organizations/api_keys`
130**GET** `/v1/organizations/api_keys`
132131 
133132List API Keys
134133 
135### Query Parameters
134### Query parameters
136135 
137136- `after_id: optional string`
138137 
from line 151
152151 
153152 Defaults to `20`. Ranges from `1` to `1000`.
154153 
154 default: 20, maximum: 1000, minimum: 1
155 
155156- `status: optional "active" or "archived" or "expired" or "inactive"`
156157 
157158 Filter by API key status.
from line 181
180181 
181182 RFC 3339 datetime string indicating when the API Key was created.
182183 
183 - `created_by: object { id, type } or null`
184 format: date-time
184185 
186 - `created_by: object or null`
187 
185188 The ID and type of the actor that created the API key, or `null` when the
186189 creator is not recorded (legacy, workload-identity-federated, or
187190 system-created keys).
from line 201
198201 
199202 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
200203 
204 format: date-time
205 
201206 - `name: string`
202207 
203208 Name of the API key.
from line 211
206211 
207212 Partially redacted hint for the API key.
208213 
209 - `principal: object { id, type } or null`
214 - `principal: object or null`
210215 
211216 The ID and type of the principal the API key acts as, or `null` if the key is not bound to a principal.
212217 
from line 245
240245 
241246 For API Keys, this is always `"api_key"`.
242247 
243 - `"api_key"`
248 default: api_key
244249 
245250 - `workspace_id: string or null`
246251 
from line 265
260265 
261266### Example
262267 
263```http
268```bash
264269curl https://api.anthropic.com/v1/organizations/api_keys \
265270 -H 'anthropic-version: 2023-06-01' \
266271 -H "Authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"
267272```
268273 
269#### Response
274#### Response (200)
270275 
271276```json
272277{
from line 303
298303 
299304## Update API Key
300305 
301**post** `/v1/organizations/api_keys/{api_key_id}`
306**POST** `/v1/organizations/api_keys/{api_key_id}`
302307 
303308Update API Key
304309 
305### Path Parameters
310### Path parameters
306311 
307312- `api_key_id: string`
308313 
309314 ID of the API key.
310315 
311### Body Parameters
316### Body parameters
312317 
313318- `name: optional string or null`
314319 
315320 Name of the API key.
316321 
322 maxLength: 500, minLength: 1
323 
317324- `status: optional "active" or "archived" or "inactive" or null`
318325 
319326 Status of the API key.
from line 333
326333 
327334### Returns
328335 
329- `APIKey object { id, created_at, created_by, 7 more }`
336- `APIKey object`
330337 
331338 - `id: string`
332339 
from line 343
336343 
337344 RFC 3339 datetime string indicating when the API Key was created.
338345 
339 - `created_by: object { id, type } or null`
346 format: date-time
340347 
348 - `created_by: object or null`
349 
341350 The ID and type of the actor that created the API key, or `null` when the
342351 creator is not recorded (legacy, workload-identity-federated, or
343352 system-created keys).
from line 363
354363 
355364 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
356365 
366 format: date-time
367 
357368 - `name: string`
358369 
359370 Name of the API key.
from line 373
362373 
363374 Partially redacted hint for the API key.
364375 
365 - `principal: object { id, type } or null`
376 - `principal: object or null`
366377 
367378 The ID and type of the principal the API key acts as, or `null` if the key is not bound to a principal.
368379 
from line 407
396407 
397408 For API Keys, this is always `"api_key"`.
398409 
399 - `"api_key"`
410 default: api_key
400411 
401412 - `workspace_id: string or null`
402413 
from line 415
404415 
405416### Example
406417 
407```http
418```bash
408419curl https://api.anthropic.com/v1/organizations/api_keys/$API_KEY_ID \
409420 -H 'Content-Type: application/json' \
410421 -H 'anthropic-version: 2023-06-01' \
from line 423
412423 -d '{}'
413424```
414425 
415#### Response
426#### Response (200)
416427 
417428```json
418429{

api/admin/api_keys/list Changed · +16 / -15 lines

# List API Keys ## Query parameters ## Returns ## Example ### Response (200) ## List API Keys ### Query Parameters ### Returns ### Example #### Response

from line 1
1---
2title: List API Keys
3url: https://platform.claude.com/docs/en/api/admin/api_keys/list
4---
1# List API Keys
52 
6## List API Keys
3**GET** `/v1/organizations/api_keys`
74 
8**get** `/v1/organizations/api_keys`
9 
105List API Keys
116 
12### Query Parameters
7## Query parameters
138 
149- `after_id: optional string`
1510 
from line 24
2924 
3025 Defaults to `20`. Ranges from `1` to `1000`.
3126 
27 default: 20, maximum: 1000, minimum: 1
28 
3229- `status: optional "active" or "archived" or "expired" or "inactive"`
3330 
3431 Filter by API key status.
from line 42
4542 
4643 Filter by Workspace ID.
4744 
48### Returns
45## Returns
4946 
5047- `data: array of APIKey`
5148 
from line 54
5754 
5855 RFC 3339 datetime string indicating when the API Key was created.
5956 
60 - `created_by: object { id, type } or null`
57 format: date-time
6158 
59 - `created_by: object or null`
60 
6261 The ID and type of the actor that created the API key, or `null` when the
6362 creator is not recorded (legacy, workload-identity-federated, or
6463 system-created keys).
from line 74
7574 
7675 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
7776 
77 format: date-time
78 
7879 - `name: string`
7980 
8081 Name of the API key.
from line 84
8384 
8485 Partially redacted hint for the API key.
8586 
86 - `principal: object { id, type } or null`
87 - `principal: object or null`
8788 
8889 The ID and type of the principal the API key acts as, or `null` if the key is not bound to a principal.
8990 
from line 118
117118 
118119 For API Keys, this is always `"api_key"`.
119120 
120 - `"api_key"`
121 default: api_key
121122 
122123 - `workspace_id: string or null`
123124 
from line 136
135136 
136137 Last ID in the `data` list. Can be used as the `after_id` for the next page.
137138 
138### Example
139## Example
139140 
140```http
141```bash
141142curl https://api.anthropic.com/v1/organizations/api_keys \
142143 -H 'anthropic-version: 2023-06-01' \
143144 -H "Authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"
144145```
145146 
146#### Response
147### Response (200)
147148 
148149```json
149150{

api/admin/api_keys/retrieve Changed · +15 / -16 lines

# Retrieve API Key (Admin API) ## Path parameters ## Returns ## Example ### Response (200) ## Retrieve API Key (Admin API) ### Path Parameters ### Returns ### Example #### Response

from line 1
1---
2title: Retrieve API Key (Admin API)
3url: https://platform.claude.com/docs/en/api/admin/api_keys/retrieve
4---
1# Retrieve API Key (Admin API)
52 
6## Retrieve API Key (Admin API)
3**GET** `/v1/organizations/api_keys/{api_key_id}`
74 
8**get** `/v1/organizations/api_keys/{api_key_id}`
9 
105Retrieve information about a single API key in your organization, looked up by its ID. This Admin API endpoint requires an Admin API key, is intended for programmatic key management, and never returns the key's secret value. To view or create your own API keys, go to [API keys](https://platform.claude.com/settings/keys) in the Claude Console.
116 
12### Path Parameters
7## Path parameters
138 
149- `api_key_id: string`
1510 
1611 ID of the API key.
1712 
18### Returns
13## Returns
1914 
20- `APIKey object { id, created_at, created_by, 7 more }`
15- `APIKey object`
2116 
2217 - `id: string`
2318 
from line 22
2722 
2823 RFC 3339 datetime string indicating when the API Key was created.
2924 
30 - `created_by: object { id, type } or null`
25 format: date-time
3126 
27 - `created_by: object or null`
28 
3229 The ID and type of the actor that created the API key, or `null` when the
3330 creator is not recorded (legacy, workload-identity-federated, or
3431 system-created keys).
from line 42
4542 
4643 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
4744 
45 format: date-time
46 
4847 - `name: string`
4948 
5049 Name of the API key.
from line 52
5352 
5453 Partially redacted hint for the API key.
5554 
56 - `principal: object { id, type } or null`
55 - `principal: object or null`
5756 
5857 The ID and type of the principal the API key acts as, or `null` if the key is not bound to a principal.
5958 
from line 86
8786 
8887 For API Keys, this is always `"api_key"`.
8988 
90 - `"api_key"`
89 default: api_key
9190 
9291 - `workspace_id: string or null`
9392 
9493 ID of the Workspace associated with the API key, or `null` if the API key belongs to the default Workspace.
9594 
96### Example
95## Example
9796 
98```http
97```bash
9998curl https://api.anthropic.com/v1/organizations/api_keys/$API_KEY_ID \
10099 -H 'anthropic-version: 2023-06-01' \
101100 -H "Authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"
102101```
103102 
104#### Response
103### Response (200)
105104 
106105```json
107106{

api/admin/api_keys/update Changed · +18 / -17 lines

# Update API Key ## Path parameters ## Body parameters ## Returns ## Example ### Response (200) ## Update API Key ### Path Parameters ### Body Parameters ### Returns ### Example #### Response

from line 1
1---
2title: Update API Key
3url: https://platform.claude.com/docs/en/api/admin/api_keys/update
4---
1# Update API Key
52 
6## Update API Key
3**POST** `/v1/organizations/api_keys/{api_key_id}`
74 
8**post** `/v1/organizations/api_keys/{api_key_id}`
9 
105Update API Key
116 
12### Path Parameters
7## Path parameters
138 
149- `api_key_id: string`
1510 
1611 ID of the API key.
1712 
18### Body Parameters
13## Body parameters
1914 
2015- `name: optional string or null`
2116 
2217 Name of the API key.
2318 
19 maxLength: 500, minLength: 1
20 
2421- `status: optional "active" or "archived" or "inactive" or null`
2522 
2623 Status of the API key.
from line 28
3128 
3229 - `"inactive"`
3330 
34### Returns
31## Returns
3532 
36- `APIKey object { id, created_at, created_by, 7 more }`
33- `APIKey object`
3734 
3835 - `id: string`
3936 
from line 40
4340 
4441 RFC 3339 datetime string indicating when the API Key was created.
4542 
46 - `created_by: object { id, type } or null`
43 format: date-time
4744 
45 - `created_by: object or null`
46 
4847 The ID and type of the actor that created the API key, or `null` when the
4948 creator is not recorded (legacy, workload-identity-federated, or
5049 system-created keys).
from line 60
6160 
6261 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
6362 
63 format: date-time
64 
6465 - `name: string`
6566 
6667 Name of the API key.
from line 70
6970 
7071 Partially redacted hint for the API key.
7172 
72 - `principal: object { id, type } or null`
73 - `principal: object or null`
7374 
7475 The ID and type of the principal the API key acts as, or `null` if the key is not bound to a principal.
7576 
from line 104
103104 
104105 For API Keys, this is always `"api_key"`.
105106 
106 - `"api_key"`
107 default: api_key
107108 
108109 - `workspace_id: string or null`
109110 
110111 ID of the Workspace associated with the API key, or `null` if the API key belongs to the default Workspace.
111112 
112### Example
113## Example
113114 
114```http
115```bash
115116curl https://api.anthropic.com/v1/organizations/api_keys/$API_KEY_ID \
116117 -H 'Content-Type: application/json' \
117118 -H 'anthropic-version: 2023-06-01' \
from line 120
119120 -d '{}'
120121```
121122 
122#### Response
123### Response (200)
123124 
124125```json
125126{
Feedback