Follow Discord
Sweep 02 Oct 2026 · 18:55Z Build v2.1.288 509 read Stable v2.1.285 Latest v2.1.288 Next v2.1.288 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One capture · api

One read of Claude Developer Platformapi-20261001T213726Z

336 pages moved out of 748 read.

Pages moved 336 significant first
Pages read 748 in this capture
Captured 21:37 UTC
Corpus hash 6a28c636443e index-hash

What this read moved

26-50 of 336, page 2 of 14

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

api/beta/messages/batches/create Changed · +12 / -6 lines

from line 119
119119 
120120 - `"ce-plugins-2026-09-01"`
121121 
122 - `"spend-limit-reads-2026-09-26"`
123 
122124- `"anthropic-user-profile-id": optional string`
123125 
124126 The user profile ID to attribute the requests in this batch to. Use when acting on behalf of a party other than your organization. Requires the `user-profiles` beta header. Applies to every request in the batch; an individual request whose `user_profile_id` body field conflicts with this header is errored.
from line 3188
31863188 
31873189 Powerful intelligence for long-running agents and coding
31883190 
3191 - `"claude-mythos-preview"`
3192 
3193 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3194 
3195 New class of intelligence, strongest in coding and cybersecurity
3196 
31893197 - `"claude-sonnet-4-5"`
31903198 
3199 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3200 
31913201 High-performance model for agents and coding
31923202 
31933203 - `"claude-sonnet-4-5-20250929"`
31943204 
3195 High-performance model for agents and coding
3205 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
31963206 
3197 - `"claude-mythos-preview"`
3198 
3199 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3200 
3201 New class of intelligence, strongest in coding and cybersecurity
3207 High-performance model for agents and coding
32023208 
32033209 - `string`
32043210 

api/beta/messages/batches/results Changed · +12 / -6 lines

from line 125
125125 
126126 - `"ce-plugins-2026-09-01"`
127127 
128 - `"spend-limit-reads-2026-09-26"`
129 
128130- `"anthropic-workspace-id": optional string`
129131 
130132 Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).
from line 2952
29502952 
29512953 Powerful intelligence for long-running agents and coding
29522954 
2955 - `"claude-mythos-preview"`
2956 
2957 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
2958 
2959 New class of intelligence, strongest in coding and cybersecurity
2960 
29532961 - `"claude-sonnet-4-5"`
29542962 
2963 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
2964 
29552965 High-performance model for agents and coding
29562966 
29572967 - `"claude-sonnet-4-5-20250929"`
29582968 
2959 High-performance model for agents and coding
2969 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
29602970 
2961 - `"claude-mythos-preview"`
2962 
2963 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
2964 
2965 New class of intelligence, strongest in coding and cybersecurity
2971 High-performance model for agents and coding
29662972 
29672973 - `string`
29682974 

api/beta/messages/count_tokens Changed · +12 / -6 lines

from line 119
119119 
120120 - `"ce-plugins-2026-09-01"`
121121 
122 - `"spend-limit-reads-2026-09-26"`
123 
122124- `"anthropic-user-profile-id": optional string`
123125 
124126 The user profile ID to attribute this request to. Use when acting on behalf of a party other than your organization. Requires the `user-profiles` beta header.
from line 3156
31543156 
31553157 Powerful intelligence for long-running agents and coding
31563158 
3159 - `"claude-mythos-preview"`
3160 
3161 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3162 
3163 New class of intelligence, strongest in coding and cybersecurity
3164 
31573165 - `"claude-sonnet-4-5"`
31583166 
3167 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3168 
31593169 High-performance model for agents and coding
31603170 
31613171 - `"claude-sonnet-4-5-20250929"`
31623172 
3163 High-performance model for agents and coding
3173 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
31643174 
3165 - `"claude-mythos-preview"`
3166 
3167 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3168 
3169 New class of intelligence, strongest in coding and cybersecurity
3175 High-performance model for agents and coding
31703176 
31713177 - `string`
31723178 

api/beta/messages/create Changed · +22 / -12 lines

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

from line 119
119119 
120120 - `"ce-plugins-2026-09-01"`
121121 
122 - `"spend-limit-reads-2026-09-26"`
123 
122124- `"anthropic-user-profile-id": optional string`
123125 
124126 The user profile ID to attribute this request to. Use when acting on behalf of a party other than your organization. Requires the `user-profiles` beta header.
from line 3168
31663168 
31673169 Powerful intelligence for long-running agents and coding
31683170 
3171 - `"claude-mythos-preview"`
3172 
3173 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3174 
3175 New class of intelligence, strongest in coding and cybersecurity
3176 
31693177 - `"claude-sonnet-4-5"`
31703178 
3179 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3180 
31713181 High-performance model for agents and coding
31723182 
31733183 - `"claude-sonnet-4-5-20250929"`
31743184 
3185 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3186 
31753187 High-performance model for agents and coding
31763188 
3177 - `"claude-mythos-preview"`
3178 
3179 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
3180 
3181 New class of intelligence, strongest in coding and cybersecurity
3182 
31833189 - `string`
31843190 
31853191 - `name: "advisor"`
from line 7034
70287034 
70297035 Powerful intelligence for long-running agents and coding
70307036 
7037 - `"claude-mythos-preview"`
7038 
7039 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
7040 
7041 New class of intelligence, strongest in coding and cybersecurity
7042 
70317043 - `"claude-sonnet-4-5"`
70327044 
7045 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
7046 
70337047 High-performance model for agents and coding
70347048 
70357049 - `"claude-sonnet-4-5-20250929"`
70367050 
7051 **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
7052 
70377053 High-performance model for agents and coding
70387054 
7039 - `"claude-mythos-preview"`
7040 
7041 **Deprecated**: Will reach end-of-life on June 30, 2026. Please migrate to claude-mythos-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.
7042 
7043 New class of intelligence, strongest in coding and cybersecurity
7044 
70457055 - `string`
70467056 
70477057 - `name: "advisor"`
from line 7201
71917201 
71927202 Default configuration applied to all tools from this server
71937203 
7194 - `defer_loading: optional boolean`
7195 
7196 - `enabled: optional boolean`
7197 
7198 - `tools: optional array of BetaMCPToolParam or null`
7199 
7200 The server's tool listing, pinned: when present, the server is not asked for its tools before sampling and exactly these entries, with `default_config` and `configs` applied, are the toolset's tools. Copy it from the `mcp_tool_listing` block of an earlier response.
7201 
7202 - `input_schema: map[unknown]`
7203 
7204 The tool's input schema as the MCP server lists it, verbatim.
7205 
7206 - `name: string`
7207 
7208 The tool's name as the MCP server lists it (not prefixed with the server name).
7209 
7210 minLength: 1
7211 
7212 - `description: optional string or null`
7213 
7214 The tool's description as the MCP server lists it.
7215 
7204 - `

api/beta/organization Changed · +3819 / -3928 lines

## Organization › Analytics › Summaries ## Organization › Analytics › Apps › Chat › Projects ## Organization › Analytics › Usage Report ## Organization › Analytics › User Usage Report ## Organization › Analytics › Cost Report ## Organization › Analytics › User Cost Report ### List Spend Limits ## Organization › Spend Limits › Effective ## Organization › Analytics ## Organization › Analytics › Usage ## Organization › Analytics › Cost ## Organization › Analytics › Chat Projects

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

from line 1642
16421642 
16431643 - `"ce-plugins-2026-09-01"`
16441644 
1645 - `"spend-limit-reads-2026-09-26"`
1646 
16451647#### Body parameters
16461648 
16471649- `issuer_url: string`
from line 2034
20322034 
20332035 - `"ce-plugins-2026-09-01"`
20342036 
2037 - `"spend-limit-reads-2026-09-26"`
2038 
20352039#### Returns
20362040 
20372041- `data: array of BetaFederationIssuer`
from line 2337
23332337 
23342338 - `"ce-plugins-2026-09-01"`
23352339 
2340 - `"spend-limit-reads-2026-09-26"`
2341 
23362342#### Returns
23372343 
23382344- `BetaFederationIssuer object`
from line 2643
26372643 
26382644 - `"ce-plugins-2026-09-01"`
26392645 
2646 - `"spend-limit-reads-2026-09-26"`
2647 
26402648#### Body parameters
26412649 
26422650- `check_jti: optional boolean or null`
from line 3027
30193027 
30203028 - `"ce-plugins-2026-09-01"`
30213029 
3030 - `"spend-limit-reads-2026-09-26"`
3031 
30223032#### Returns
30233033 
30243034- `BetaFederationIssuer object`
from line 3337
33273337 
33283338 - `"ce-plugins-2026-09-01"`
33293339 
3340 - `"spend-limit-reads-2026-09-26"`
3341 
33303342#### Body parameters
33313343 
33323344- `issuer_id: string`
from line 3754
37423754 
37433755 - `"ce-plugins-2026-09-01"`
37443756 
3757 - `"spend-limit-reads-2026-09-26"`
3758 
37453759#### Returns
37463760 
37473761- `data: array of BetaFederationRule`
from line 4057
40434057 
40444058 - `"ce-plugins-2026-09-01"`
40454059 
4060 - `"spend-limit-reads-2026-09-26"`
4061 
40464062#### Returns
40474063 
40484064- `BetaFederationRule object`
from line 4378
43624378 
43634379 - `"ce-plugins-2026-09-01"`
43644380 
4381 - `"spend-limit-reads-2026-09-26"`
4382 
43654383#### Body parameters
43664384 
43674385- `applies_to_all_workspaces: optional boolean or null`
from line 4771
47534771 
47544772 - `"ce-plugins-2026-09-01"`
47554773 
4774 - `"spend-limit-reads-2026-09-26"`
4775 
47564776#### Returns
47574777 
47584778- `BetaFederationRule object`
from line 5088
50685088 
50695089 - `"ce-plugins-2026-09-01"`
50705090 
5091 - `"spend-limit-reads-2026-09-26"`
5092 
50715093#### Body parameters
50725094 
50735095- `workspace_id: string`
from line 5289
52675289 
52685290 - `"ce-plugins-2026-09-01"`
52695291 
5292 - `"spend-limit-reads-2026-09-26"`
5293 
52705294#### Returns
52715295 
52725296- `data: array of BetaFederationRuleWorkspace`
from line 5480
54565480 
54575481 - `"ce-plugins-2026-09-01"`
54585482 
5483 - `"spend-limit-reads-2026-09-26"`
5484 
54595485#### Returns
54605486 
54615487- `type: "federation_rule_workspace_deleted"`
from line 6111
60856111 
60866112 - `"ce-plugins-2026-09-01"`
60876113 
6114 - `"spend-limit-reads-2026-09-26"`
6115 
60886116#### Body parameters
60896117 
60906118- `name: string`
from line 6364
63366364 
63376365 - `"ce-plugins-2026-09-01"`
63386366 
6367 - `"spend-limit-reads-2026-09-26"`
6368 
63396369#### Returns
63406370 
63416371- `data: array of BetaServiceAccount`
from line 6579
65496579 
65506580 - `"ce-plugins-2026-09-01"`
65516581 
6582 - `"spend-limit-reads-2026-09-26"`
6583 
65526584#### Returns
65536585 
65546586- `BetaServiceAccount object`
from line 6795
67636795 
67646796 - `"ce-plugins-2026-09-01"`
67656797 
6798 - `"spend-limit-reads-2026-09-26"`
6799 
67666800#### Body parameters
67676801 
67686802- `description: optional string or null`
from line 7029
69957029 
69967030 - `"ce-plugins-2026-09-01"`
69977031 
7032 - `"spend-limit-reads-2026-09-26"`
7033 
69987034#### Returns
69997035 
70007036- `BetaServiceAccount object`
from line 7250
72147250 
72157251 - `"ce-plugins-2026-09-01"`
72167252 
7253 - `"spend-limit-reads-2026-09-26"`
7254 
72177255#### Body parameters
72187256 
72197257- `workspace_id: string`
from line 7480
74427480 
74437481 - `"ce-plugins-2026-09-01"`
74447482 
7483 - `"spend-limit-reads-2026-09-26"`
7484 
74457485#### Returns
74467486 
74477487- `data: array of BetaServiceAccountWorkspaceMember`
from line 7682
76427682 
76437683 - `"ce-plugins-2026-09-01"`
76447684 
7685 - `"spend-limit-reads-2026-09-26"`
7686 
76457687#### Returns
76467688 
76477689- `type: "service_account_workspace_member_deleted"`
from line 8374
83328374 
83338375 - `"ce-plugins-2026-09-01"`
83348376 
8377 - `"spend-limit-reads-2026-09-26"`
8378 
83358379#### Body parameters
83368380 
83378381- `name: string`
from line 9864
98209864 
98219865 - `"ce-plugins-2026-09-01"`
98229866 
9867 - `"spend-limit-reads-2026-09-26"`
9868 
98239869#### Returns
98249870 
98259871- `data: array of BetaServiceAccountWorkspaceMember`
from line 10063
1001710063 
1001810064 - `"ce-plugins-2026-09-01"`
1001910065 
10066 - `"spend-limit-reads-2026-09-26"`
10067 
1002010068#### Body parameters
1002110069 
1002210070- `service_account_id: string`
from line 10278
1023010278 
1023110279 - `"ce-plugins-2026-09-01"`
1023210280 
10281 - `"spend-limit-reads-2026-09-26"`
10282 
1023310283#### Returns
1023410284 
1023510285- `BetaServiceAccountWorkspaceMember object`
from line 10470
1042010470 
1042110471 - `"ce-plugins-2026-09-01"`
1042210472 
10473 - `"spend-limit-reads-2026-09-26"`
10474 
1042310475#### Body parameters
1042410476 
1042510477- `workspace_role: BetaNoBillingWorkspaceRole`
from line 10679
1062710679 
1062810680 - `"ce-plugins-2026-09-01"`
1062910681 
10682 - `"spend-limit-reads-2026-09-26"`
10683 
1063010684#### Returns
1063110685 
1063210686- `type: "service_account_workspace_member_deleted"`
from line 10723
1066910723List Messages API rate limits for your organization.
1067010724 
1067110725Each entry corresponds to one rate-limit group (either a model family
10672or an API-surface category such as the Files API or Message Batches)
10673and contains the set of limiter values that apply to it.
10726or an API-surface category such as the Message Batches API or the web
10727search tool) and contains the set of limiter values that apply to it.
1067410728 
1067510729When `limit` is omitted, every matching entry is returned in a single
10676page; when `limit` truncates the result, follow `next_page` to fetch
10677the remaining entries.
10678 
10679#### Query parameters
10680 
10681- `group_type: optional "batch" or "files" or "model_group" or 3 more`
10682 
10683 Filter by group type.
10684 
10685 - `"batch"`
10686 
10687 - `"files"`
10688 
10689 - `"model_group"`
10690 
10691 - `"skills"`
10692 
10693 - `"token_count"`
10694 
10695 - `"web_search"`
10696 
10697- `limit: optional number`
10698 
10699 Maximum number of items to return per page. Ranges from `1` to `1000`.
10700 
10701 When omitted, every remaining entry is returned in a single page and `next_page` is `null`.
10702 
10703 minimum: 1, maximum: 1000
10704 
10705- `model: optional string`
10706 
10707 Filter to the single entry containing this model. Accepts full model names and aliases. Returns 404 if the model is not found or has no rate limits for this organization.
10708 
10709- `page: optional string`
10710 
10711 Opaque cursor from a previous response's `next_page`.
10712 
10713#### Returns
10714 
10715- `data: array of BetaOrganizationRateLimit`
10716 
10717 Rate-limit entries for the organization, one per group.
10718 
10719 - `type: "rate_limit"`
10720 
10721 Object type. Always `rate_limit` for organization rate-limit entries.
10722 
10723 default: rate_
10730page; when `limit` truncates th

api/beta/organization/analytics Changed · +5137 / -3269 lines

### Beta Analytics Artifact Activity ### Beta Analytics Chat Metrics ### Beta Analytics Claude Code Metrics ### Beta Analytics Claude Tag Category ### Beta Analytics Connector Activity ### Beta Analytics Connector Chat Metrics ### Beta Analytics Connector Claude Code Metrics ### Beta Analytics Connector Cowork Metrics ### Beta Analytics Connector Office Metrics ### Beta Analytics Connector Office Product Metrics ### Beta Analytics Context Window ### Beta Analytics Core Code Metrics ### Beta Analytics Cost Bucketed Result ### Beta Analytics Cost Report Time Bucket ### Beta Analytics Cost Type ### Beta Analytics Cost Users Item ### Beta Analytics Cowork Metrics ### Beta Analytics Design Metrics ### Beta Analytics Inference Geo Filter ### Beta Analytics Lines Of Code ### Beta Analytics Office Metrics ### Beta Analytics Office Product Metrics ### Beta Analytics Plugin Activity ### Beta Analytics Plugin Claude Code Metrics ### Beta Analytics Plugin Cowork Metrics ### Beta Analytics Product Filter ### Beta Analytics Project Activity ### Beta Analytics Science Metrics ### Beta Analytics Server Tool Use ### Beta Analytics Single Day Activity Summary ### Beta Analytics Skill Activity ### Beta Analytics Skill Chat Metrics ### Beta Analytics Skill Claude Code Metrics ### Beta Analytics Skill Cowork Metrics ### Beta Analytics Skill Office Metrics ### Beta Analytics Skill Office Product Metrics ### Beta Analytics Token Type ### Beta Analytics Tool Action Counts ### Beta Analytics Tool Actions ### Beta Analytics Usage Bucketed Result ### Beta Analytics Usage Report Time Bucket ### Beta Analytics Usage Users Item ### Beta Analytics User Activity ## Analytics › Summaries ### Get Activity Summaries ## Analytics › Apps › Chat › Projects ## Analytics › Usage Report ## Analytics › User Usage Report ## Analytics › Cost Report ## Analytics › User Cost Report ## Get Activity Summaries ### Query parameters ### Returns ### Example #### Response (200) ### Beta Activity Summary ### Beta Connector Office Product Metrics ### Beta Office Product Metrics ### Beta Skill Office Product Metrics ### Beta Tool Action Counts ## Analytics › Usage ## Analytics › Cost ## Analytics › Chat Projects

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/beta/organization/analytics/apps New page · 181 lines, new page

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

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

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

# Apps

## Apps › Chat › Projects

### Get Chat Project Usage

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

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

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

#### Query parameters

- `date: optional string`

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

  format: date

- `ending_date: optional string`

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

  format: date

- `filter: optional array of string`

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

  maxItems: 100

- `group_by: optional array of "rbac_group_id" or "user_id"`

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

  maxItems: 100

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

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

  minimum: 1, maximum: 1000

- `order: optional "asc" or "desc"`

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

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

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

- `page: optional string`

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

- `starting_date: optional string`

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

  format: date

#### Returns

- `data: array of BetaAnalyticsProjectActivity`

  - `distinct_user_count: number`

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

  - `message_count: number`

    Number of messages sent in the project on the requested day

  - `project_id: string`

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

  - `project_name: string`

    Name of the project

  - `created_at: optional string or null`

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

    format: date-time

  - `created_by: optional BetaAnalyticsUser or null`

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

    - `type: "user"`

      Object type. Always `user`.

      default: user

    - `id: string`

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

    - `email_address: string`

      Email address of the user

  - `distinct_conversation_count: optional number or null`

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

  - `product: optional string or null`

    Product that produced this row's activity: one of `chat`, `claude_code`, `cowork`, 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.

  - `rbac_group_id: optional string or null`

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

  - `rbac_group_name: optional string or null`

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

  - `user_id: optional string or null`

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

- `next_page: string or null`

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

#### Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

##### Response (200)

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

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

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

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

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

# Chat

## Chat › Projects

### Get Chat Project Usage

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

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

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

#### Query parameters

- `date: optional string`

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

  format: date

- `ending_date: optional string`

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

  format: date

- `filter: optional array of string`

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

  maxItems: 100

- `group_by: optional array of "rbac_group_id" or "user_id"`

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

  maxItems: 100

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

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

  minimum: 1, maximum: 1000

- `order: optional "asc" or "desc"`

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

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

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

- `page: optional string`

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

- `starting_date: optional string`

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

  format: date

#### Returns

- `data: array of BetaAnalyticsProjectActivity`

  - `distinct_user_count: number`

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

  - `message_count: number`

    Number of messages sent in the project on the requested day

  - `project_id: string`

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

  - `project_name: string`

    Name of the project

  - `created_at: optional string or null`

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

    format: date-time

  - `created_by: optional BetaAnalyticsUser or null`

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

    - `type: "user"`

      Object type. Always `user`.

      default: user

    - `id: string`

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

    - `email_address: string`

      Email address of the user

  - `distinct_conversation_count: optional number or null`

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

  - `product: optional string or null`

    Product that produced this row's activity: one of `chat`, `claude_code`, `cowork`, 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.

  - `rbac_group_id: optional string or null`

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

  - `rbac_group_name: optional string or null`

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

  - `user_id: optional string or null`

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

- `next_page: string or null`

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

#### Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

##### Response (200)

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

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

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

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

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

# Projects

## Get Chat Project Usage

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

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

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

### Query parameters

- `date: optional string`

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

  format: date

- `ending_date: optional string`

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

  format: date

- `filter: optional array of string`

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

  maxItems: 100

- `group_by: optional array of "rbac_group_id" or "user_id"`

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

  maxItems: 100

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

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

  minimum: 1, maximum: 1000

- `order: optional "asc" or "desc"`

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

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

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

- `page: optional string`

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

- `starting_date: optional string`

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

  format: date

### Returns

- `data: array of BetaAnalyticsProjectActivity`

  - `distinct_user_count: number`

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

  - `message_count: number`

    Number of messages sent in the project on the requested day

  - `project_id: string`

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

  - `project_name: string`

    Name of the project

  - `created_at: optional string or null`

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

    format: date-time

  - `created_by: optional BetaAnalyticsUser or null`

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

    - `type: "user"`

      Object type. Always `user`.

      default: user

    - `id: string`

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

    - `email_address: string`

      Email address of the user

  - `distinct_conversation_count: optional number or null`

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

  - `product: optional string or null`

    Product that produced this row's activity: one of `chat`, `claude_code`, `cowork`, 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.

  - `rbac_group_id: optional string or null`

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

  - `rbac_group_name: optional string or null`

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

  - `user_id: optional string or null`

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

- `next_page: string or null`

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

### Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

#### Response (200)

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

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

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

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

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

# Get Chat Project Usage

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

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

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

## Query parameters

- `date: optional string`

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

  format: date

- `ending_date: optional string`

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

  format: date

- `filter: optional array of string`

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

  maxItems: 100

- `group_by: optional array of "rbac_group_id" or "user_id"`

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

  maxItems: 100

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

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

  minimum: 1, maximum: 1000

- `order: optional "asc" or "desc"`

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

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

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

- `page: optional string`

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

- `starting_date: optional string`

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

  format: date

## Returns

- `data: array of BetaAnalyticsProjectActivity`

  - `distinct_user_count: number`

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

  - `message_count: number`

    Number of messages sent in the project on the requested day

  - `project_id: string`

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

  - `project_name: string`

    Name of the project

  - `created_at: optional string or null`

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

    format: date-time

  - `created_by: optional BetaAnalyticsUser or null`

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

    - `type: "user"`

      Object type. Always `user`.

      default: user

    - `id: string`

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

    - `email_address: string`

      Email address of the user

  - `distinct_conversation_count: optional number or null`

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

  - `product: optional string or null`

    Product that produced this row's activity: one of `chat`, `claude_code`, `cowork`, 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.

  - `rbac_group_id: optional string or null`

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

  - `rbac_group_name: optional string or null`

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

  - `user_id: optional string or null`

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

- `next_page: string or null`

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

## Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/apps/chat/projects \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

### Response (200)

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

api/beta/organization/analytics/artifacts Changed · +21 / -85 lines

## Domain types ### Beta Artifact Usage

from line 55
5555 
5656### Returns
5757 
58- `BetaArtifactUsage object`
58- `data: array of BetaAnalyticsArtifactActivity`
5959 
60 Response for GET /v1/organizations/analytics/artifacts.
60 - `artifact_type: string`
6161 
62 `next_page` is null on ungrouped queries — the artifact-type cube is
63 finite and returned in full. Grouped queries (`group_by[]` on `product` /
64 `user_id` / `rbac_group_id`) multiply the cube and paginate like the other
65 analytics list endpoints.
62 Canonical artifact MIME type (e.g. `text/markdown`, `application/vnd.ant.react`, `image/svg+xml`), or `other`. Claude Code and Cowork artifacts report as `text/html`.
6663 
67 - `data: array of object`
64 - `artifacts_created_count: number`
6865 
69 - `artifact_type: string`
66 Number of artifacts created in this bucket on the requested day
7067 
71 Canonical artifact MIME type (e.g. `text/markdown`, `application/vnd.ant.react`, `image/svg+xml`), or `other`. Claude Code and Cowork artifacts report as `text/html`.
68 - `distinct_user_count: number`
7269 
73 - `artifacts_created_count: number`
70 Number of distinct users who created artifacts in this bucket on the requested day
7471 
75 Number of artifacts created in this bucket on the requested day
72 - `is_shared: boolean`
7673 
77 - `distinct_user_count: number`
74 Whether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).
7875 
79 Number of distinct users who created artifacts in this bucket on the requested day
76 - `published_artifacts_created_count: number`
8077 
81 - `is_shared: boolean`
78 Number of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds `artifacts_created_count`
8279 
83 Whether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).
80 - `product: optional string or null`
8481 
85 - `published_artifacts_created_count: number`
82 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
8683 
87 Number of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds `artifacts_created_count`
84 - `rbac_group_id: optional string or null`
8885 
89 - `product: optional string or null`
86 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
9087 
91 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
88 - `rbac_group_name: optional string or null`
9289 
93 - `rbac_group_id: optional string or null`
90 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.
9491 
95 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
92 - `user_id: optional string or null`
9693 
97 - `rbac_group_name: optional string or null`
94 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
9895 
99 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.
96- `next_page: string or null`
10097 
101 - `user_id: optional string or null`
98 Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.
10299 
103 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
104 
105 - `next_page: string or null`
106 
107 Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.
108 
109100### Example
110101 
111102```bash
from line 125
134125 "next_page": "next_page"
135126}
136127```
137 
138## Domain types
139 
140### Beta Artifact Usage
141 
142- `BetaArtifactUsage object`
143 
144 Response for GET /v1/organizations/analytics/artifacts.
145 
146 `next_page` is null on ungrouped queries — the artifact-type cube is
147 finite and returned in full. Grouped queries (`group_by[]` on `product` /
148 `user_id` / `rbac_group_id`) multiply the cube and paginate like the other
149 analytics list endpoints.
150 
151 - `data: array of object`
152 
153 - `artifact_type: string`
154 
155 Canonical artifact MIME type (e.g. `text/markdown`, `application/vnd.ant.react`, `image/svg+xml`), or `other`. Claude Code and Cowork artifacts report as `text/html`.
156 
157 - `artifacts_created_count: number`
158 
159 Number of artifacts created in this bucket on the requested day
160 
161 - `distinct_user_count: number`
162 
163 Number of distinct users who created artifacts in this bucket on the requested day
164 
165 - `is_shared: boolean`
166 
167 Whether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).
168 
169 - `published_artifacts_created_count: number`
170 
171 Number of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds `artifacts_created_count`
172 
173 - `product: optional string or null`
174 
175 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
176 
177 - `rbac_group_id: optional string or null`
178 
179 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
180 
181 - `rbac_group_name: optional string or null`
182 
183 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.
184 
185 - `user_id: optional string or null`
186 
187 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
188 
189 - `next_page: string or null`
190 
191 Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.
192128 

api/beta/organization/analytics/artifacts/list Changed · +21 / -30 lines

from line 53
5353 
5454## Returns
5555 
56- `BetaArtifactUsage object`
56- `data: array of BetaAnalyticsArtifactActivity`
5757 
58 Response for GET /v1/organizations/analytics/artifacts.
58 - `artifact_type: string`
5959 
60 `next_page` is null on ungrouped queries — the artifact-type cube is
61 finite and returned in full. Grouped queries (`group_by[]` on `product` /
62 `user_id` / `rbac_group_id`) multiply the cube and paginate like the other
63 analytics list endpoints.
60 Canonical artifact MIME type (e.g. `text/markdown`, `application/vnd.ant.react`, `image/svg+xml`), or `other`. Claude Code and Cowork artifacts report as `text/html`.
6461 
65 - `data: array of object`
62 - `artifacts_created_count: number`
6663 
67 - `artifact_type: string`
64 Number of artifacts created in this bucket on the requested day
6865 
69 Canonical artifact MIME type (e.g. `text/markdown`, `application/vnd.ant.react`, `image/svg+xml`), or `other`. Claude Code and Cowork artifacts report as `text/html`.
66 - `distinct_user_count: number`
7067 
71 - `artifacts_created_count: number`
68 Number of distinct users who created artifacts in this bucket on the requested day
7269 
73 Number of artifacts created in this bucket on the requested day
70 - `is_shared: boolean`
7471 
75 - `distinct_user_count: number`
72 Whether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).
7673 
77 Number of distinct users who created artifacts in this bucket on the requested day
74 - `published_artifacts_created_count: number`
7875 
79 - `is_shared: boolean`
76 Number of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds `artifacts_created_count`
8077 
81 Whether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).
78 - `product: optional string or null`
8279 
83 - `published_artifacts_created_count: number`
80 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
8481 
85 Number of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds `artifacts_created_count`
82 - `rbac_group_id: optional string or null`
8683 
87 - `product: optional string or null`
84 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
8885 
89 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
86 - `rbac_group_name: optional string or null`
9087 
91 - `rbac_group_id: optional string or null`
88 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.
9289 
93 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
90 - `user_id: optional string or null`
9491 
95 - `rbac_group_name: optional string or null`
92 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
9693 
97 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.
94- `next_page: string or null`
9895 
99 - `user_id: optional string or null`
100 
101 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
102 
103 - `next_page: string or null`
104 
105 Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.
96 Cursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.
10697 
10798## Example
10899 

api/beta/organization/analytics/chat_projects Page removed · 257 lines, page removed

# Chat Projects ## Get Chat Project Usage ### Query parameters ### Returns ### Example #### Response (200) ## Domain types ### Beta Chat Project Usage

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

api/beta/organization/analytics/chat_projects/list Page removed · 181 lines, page removed

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

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

api/beta/organization/analytics/connectors Changed · +98 / -212 lines

## Domain types ### Beta Connector Usage

from line 82
8282 
8383### Returns
8484 
85- `BetaConnectorUsage object`
85- `data: array of BetaAnalyticsConnectorActivity`
8686 
87 Response for GET /v1/organizations/analytics/connectors.
87 - `chat_metrics: BetaAnalyticsConnectorChatMetrics`
8888 
89 - `data: array of object`
89 Claude.ai activity metrics for a single connector on a given day.
9090 
91 - `chat_metrics: object`
91 - `distinct_conversation_connector_used_count: number or null`
9292 
93 Claude.ai activity metrics for a single connector on a given day.
93 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.
9494 
95 - `distinct_conversation_connector_used_count: number or null`
95 - `claude_code_metrics: BetaAnalyticsConnectorClaudeCodeMetrics`
9696 
97 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.
97 Claude Code activity metrics for a single connector on a given day.
9898 
99 - `claude_code_metrics: object`
99 - `distinct_session_connector_used_count: number or null`
100100 
101 Claude Code activity metrics for a single connector on a given day.
101 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.
102102 
103 - `distinct_session_connector_used_count: number or null`
103 - `connector_name: string`
104104 
105 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.
105 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.
106106 
107 - `connector_name: string`
107 - `cowork_metrics: BetaAnalyticsConnectorCoworkMetrics`
108108 
109 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.
109 Cowork activity metrics for a single connector on a given day.
110110 
111 - `cowork_metrics: object`
111 - `distinct_session_connector_used_count: number or null`
112112 
113 Cowork activity metrics for a single connector on a given day.
113 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.
114114 
115 - `distinct_session_connector_used_count: number or null`
115 - `distinct_user_count: number`
116116 
117 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.
117 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.
118118 
119 - `distinct_user_count: number`
119 - `office_metrics: BetaAnalyticsConnectorOfficeMetrics`
120120 
121 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.
121 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
122122 
123 - `office_metrics: object`
123 - `excel: BetaAnalyticsConnectorOfficeProductMetrics`
124124 
125 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
125 Office Agent activity metrics for a single connector on a given day within one Office product.
126126 
127 - `excel: BetaConnectorOfficeProductMetrics`
127 - `distinct_session_connector_used_count: number or null`
128128 
129 Office Agent activity metrics for a single connector on a given day within one Office product.
129 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.
130130 
131 - `distinct_session_connector_used_count: number or null`
131 - `outlook: BetaAnalyticsConnectorOfficeProductMetrics`
132132 
133 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.
133 Office Agent activity metrics for a single connector on a given day within one Office product.
134134 
135 - `outlook: BetaConnectorOfficeProductMetrics`
135 - `powerpoint: BetaAnalyticsConnectorOfficeProductMetrics`
136136 
137 Office Agent activity metrics for a single connector on a given day within one Office product.
137 Office Agent activity metrics for a single connector on a given day within one Office product.
138138 
139 - `powerpoint: BetaConnectorOfficeProductMetrics`
139 - `word: BetaAnalyticsConnectorOfficeProductMetrics`
140140 
141 Office Agent activity metrics for a single connector on a given day within one Office product.
141 Office Agent activity metrics for a single connector on a given day within one Office product.
142142 
143 - `word: BetaConnectorOfficeProductMetrics`
143 - `connector_display_name: optional string or null`
144144 
145 Office Agent activity metrics for a single connector on a given day within one Office product.
145 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.
146146 
147 - `connector_display_name: optional string or null`
147 - `individual_auth_distinct_user_count: optional number or null`
148148 
149 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.
149 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.
150150 
151 - `individual_auth_distinct_user_count: optional number or null`
151 - `managed_auth_distinct_user_count: optional number or null`
152152 
153 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.
153 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.
154154 
155 - `managed_auth_distinct_user_count: optional number or null`
155 - `product: optional string or null`
156156 
157 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.
157 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
158158 
159 - `product: optional string or null`
159 - `rbac_group_id: optional string or null`
160160 
161 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
161 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
162162 
163 - `rbac_group_id: optional string or null`
163 - `rbac_group_name: optional string or null`
164164 
165 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
165 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.
166166 
167 - `rbac_group_name: optional string or null`
167 - `read_call_count: optional number or null`
168168 
169 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.
169 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.
170170 
171 - `read_call_count: optional number or null`
171 - `unclassified_call_count: optional number or null`
172172 
173 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.
173 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.
174174 
175 - `unclassified_call_count: optional number or null`
175 - `user_id: optional string or null`
176176 
177 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.
177 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
178178 
179 - `user_id: optional string or null`
179 - `write_call_count: optional number or null`
180180 
181 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
181 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.
182182 
183 - `write_call_count: optional number or null`
183- `next_page: string or null`
184184 
185 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.
185 Opaque cursor for the next page, or null if no more results
186186 
187 - `next_page: string or null`
188 
189 Opaque cursor for the next page, or null if no more results
190 
191187### Example
192188 
193189```bash
from line 238
242238 "next_page": "next_page"
243239}
244240```
245 
246## Domain types
247 
248### Beta Connector Usage
249 
250- `BetaConnectorUsage object`
251 
252 Response for GET /v1/organizations/analytics/connectors.
253 
254 - `data: array of object`
255 
256 - `chat_metrics: object`
257 
258 Claude.ai activity metrics for a single connector on a given day.
259 
260 - `distinct_conversation_connector_used_count: number or null`
261 
262 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.
263 
264 - `claude_code_metrics: object`
265 
266 Claude Code activity metrics for a single connector on a given day.
267 
268 - `distinct_session_connector_used_count: number or null`
269 
270 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.
271 
272 - `connector_name: string`
273 
274 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.
275 
276 - `cowork_metrics: object`
277 
278 Cowork activity metrics for a single connector on a given day.
279 
280 - `distinct_session_connector_used_count: number or null`
281 
282 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.
283 
284 - `distinct_user_count: number`
285 
286 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.
287 
288 - `office_metrics: object`
289 
290 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
291 
292 - `excel: BetaConnectorOfficeProductMetrics`
293 
294 Office Agent activity metrics for a single connector on a given day within one Office product.
295 
296 - `distinct_session_connector_used_count: number or null`
297 
298 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.
299 
300 - `outlook: BetaConnectorOfficeProductMetrics`
301 
302 Office Agent activity metrics for a single connector on a given day within one Office product.
303 
304 - `powerpoint: BetaConnectorOfficeProductMetrics`
305 
306 Office Agent activity metrics for a single connector on a given day within one Office product.
307 
308 - `word: BetaConnectorOfficeProductMetrics`
309 
310 Office Agent activity metrics for a single connector on a given day within one Office product.
311 
312 - `connector_display_name: optional string or null`
313 
314 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.
315 
316 - `individual_auth_distinct_user_count: optional number or null`
317 
318 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.
319 
320 - `managed_auth_distinct_user_count: optional number or null`
321 
322 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.
323 
324 - `product: optional string or null`
325 
326 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
327 
328 - `rbac_group_id: optional string or null`
329 
330 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
331 
332 - `rbac_group_name: optional string or null`
333 
334 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.
335 
336 - `read_call_count: optional number or null`
337 
338 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.
339 
340 - `unclassified_call_count: optional number or null`
341 
342 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.
343 
344 - `user_id: optional string or null`
345 
346 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
347 
348 - `write_call_count: optional number or null`
349 
350 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.
351 
352 - `next_page: string or null`
353 
354 Opaque cursor for the next page, or null if no more results
355241 

api/beta/organization/analytics/connectors/list Changed · +98 / -102 lines

from line 80
8080 
8181## Returns
8282 
83- `BetaConnectorUsage object`
83- `data: array of BetaAnalyticsConnectorActivity`
8484 
85 Response for GET /v1/organizations/analytics/connectors.
85 - `chat_metrics: BetaAnalyticsConnectorChatMetrics`
8686 
87 - `data: array of object`
87 Claude.ai activity metrics for a single connector on a given day.
8888 
89 - `chat_metrics: object`
89 - `distinct_conversation_connector_used_count: number or null`
9090 
91 Claude.ai activity metrics for a single connector on a given day.
91 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.
9292 
93 - `distinct_conversation_connector_used_count: number or null`
93 - `claude_code_metrics: BetaAnalyticsConnectorClaudeCodeMetrics`
9494 
95 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.
95 Claude Code activity metrics for a single connector on a given day.
9696 
97 - `claude_code_metrics: object`
97 - `distinct_session_connector_used_count: number or null`
9898 
99 Claude Code activity metrics for a single connector on a given day.
99 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.
100100 
101 - `distinct_session_connector_used_count: number or null`
101 - `connector_name: string`
102102 
103 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.
103 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.
104104 
105 - `connector_name: string`
105 - `cowork_metrics: BetaAnalyticsConnectorCoworkMetrics`
106106 
107 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.
107 Cowork activity metrics for a single connector on a given day.
108108 
109 - `cowork_metrics: object`
109 - `distinct_session_connector_used_count: number or null`
110110 
111 Cowork activity metrics for a single connector on a given day.
111 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.
112112 
113 - `distinct_session_connector_used_count: number or null`
113 - `distinct_user_count: number`
114114 
115 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.
115 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.
116116 
117 - `distinct_user_count: number`
117 - `office_metrics: BetaAnalyticsConnectorOfficeMetrics`
118118 
119 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.
119 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
120120 
121 - `office_metrics: object`
121 - `excel: BetaAnalyticsConnectorOfficeProductMetrics`
122122 
123 Office Agent activity metrics for a single connector on a given day, broken out by Office product.
123 Office Agent activity metrics for a single connector on a given day within one Office product.
124124 
125 - `excel: BetaConnectorOfficeProductMetrics`
125 - `distinct_session_connector_used_count: number or null`
126126 
127 Office Agent activity metrics for a single connector on a given day within one Office product.
127 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.
128128 
129 - `distinct_session_connector_used_count: number or null`
129 - `outlook: BetaAnalyticsConnectorOfficeProductMetrics`
130130 
131 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.
131 Office Agent activity metrics for a single connector on a given day within one Office product.
132132 
133 - `outlook: BetaConnectorOfficeProductMetrics`
133 - `powerpoint: BetaAnalyticsConnectorOfficeProductMetrics`
134134 
135 Office Agent activity metrics for a single connector on a given day within one Office product.
135 Office Agent activity metrics for a single connector on a given day within one Office product.
136136 
137 - `powerpoint: BetaConnectorOfficeProductMetrics`
137 - `word: BetaAnalyticsConnectorOfficeProductMetrics`
138138 
139 Office Agent activity metrics for a single connector on a given day within one Office product.
139 Office Agent activity metrics for a single connector on a given day within one Office product.
140140 
141 - `word: BetaConnectorOfficeProductMetrics`
141 - `connector_display_name: optional string or null`
142142 
143 Office Agent activity metrics for a single connector on a given day within one Office product.
143 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.
144144 
145 - `connector_display_name: optional string or null`
145 - `individual_auth_distinct_user_count: optional number or null`
146146 
147 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.
147 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.
148148 
149 - `individual_auth_distinct_user_count: optional number or null`
149 - `managed_auth_distinct_user_count: optional number or null`
150150 
151 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.
151 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.
152152 
153 - `managed_auth_distinct_user_count: optional number or null`
153 - `product: optional string or null`
154154 
155 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.
155 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
156156 
157 - `product: optional string or null`
157 - `rbac_group_id: optional string or null`
158158 
159 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
159 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
160160 
161 - `rbac_group_id: optional string or null`
161 - `rbac_group_name: optional string or null`
162162 
163 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
163 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.
164164 
165 - `rbac_group_name: optional string or null`
165 - `read_call_count: optional number or null`
166166 
167 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.
167 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.
168168 
169 - `read_call_count: optional number or null`
169 - `unclassified_call_count: optional number or null`
170170 
171 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.
171 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.
172172 
173 - `unclassified_call_count: optional number or null`
173 - `user_id: optional string or null`
174174 
175 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.
175 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
176176 
177 - `user_id: optional string or null`
177 - `write_call_count: optional number or null`
178178 
179 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
179 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.
180180 
181 - `write_call_count: optional number or null`
181- `next_page: string or null`
182182 
183 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.
184 
185 - `next_page: string or null`
186 
187 Opaque cursor for the next page, or null if no more results
183 Opaque cursor for the next page, or null if no more results
188184 
189185## Example
190186 

api/beta/organization/analytics/cost Page removed · 1093 lines, page removed

# Cost ## Get Cost Over Time ### Query parameters ### Returns ### Example #### Response (200) ## Get Per-User Cost ### Query parameters ### Returns ### Example #### Response (200) ## Domain types ### Beta Cost Bucket ### Beta User Cost

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

api/beta/organization/analytics/cost/list Page removed · 363 lines, page removed

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

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

api/beta/organization/analytics/cost/list_by_user Page removed · 420 lines, page removed

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

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

api/beta/organization/analytics/cost_report New page · 363 lines, new page

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

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

---
title: Cost Report
url: https://platform.claude.com/docs/en/api/beta/organization/analytics/cost_report
---

# Cost Report

## Get Cost Over Time

**GET** `/v1/organizations/analytics/cost_report`

Get cost in USD over time across a date range.

Returns cost bucketed by minute, hour, or day, optionally broken down by
product, model, context window, inference region, speed, cost type, or
token type. Available to organizations on a Claude Enterprise plan.
Requires an API key with the `read:analytics` scope.

### Query parameters

- `starting_at: string`

  Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.

  format: date-time

- `bucket_width: optional "1d" or "1h" or "1m"`

  Time bucket granularity.

  default: 1d

  - `"1d"`

  - `"1h"`

  - `"1m"`

- `claude_tag_categories: optional array of BetaAnalyticsClaudeTagCategory`

  Filter to Claude Tag (Claude in Slack) usage in specific spend categories. Usage with no category never matches. `dm` usage is reported under the user's product rather than `claude-tag`, so combining this filter with `products[]=claude-tag` excludes it. Use `group_by[]=claude_tag_category` to break out per-category values.

  maxItems: 100

  - `"dm"`

  - `"engaged"`

  - `"monitoring"`

  - `"proactive"`

  - `"scheduled"`

- `claude_tag_user_ids: optional array of string`

  Filter to Claude Tag (Claude in Slack) usage attributed to specific Slack users, by Slack user ID (for example `U0123ABCDEF`), not claude.ai user ID. Usage that is not Claude Tag, and Claude Tag usage not attributed to a single user, never matches. Use `group_by[]=claude_tag_user_id` to break out per-user values.

  maxItems: 100

- `context_windows: optional array of BetaAnalyticsContextWindow`

  Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.

  maxItems: 100

  - `"0-200k"`

  - `"200k-1M"`

- `ending_at: optional string`

  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.

  format: date-time

- `group_by: optional array of "claude_tag_category" or "claude_tag_user_id" or "context_window" or 8 more`

  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.

  maxItems: 100

  - `"claude_tag_category"`

  - `"claude_tag_user_id"`

  - `"context_window"`

  - `"cost_type"`

  - `"inference_geo"`

  - `"model"`

  - `"product"`

  - `"rbac_group_id"`

  - `"slack_channel_id"`

  - `"speed"`

  - `"token_type"`

- `inference_geos: optional array of BetaAnalyticsInferenceGeoFilter`

  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.

  maxItems: 100

  - `"global"`

  - `"not_available"`

  - `"us"`

- `limit: optional number`

  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).

  minimum: 1

- `models: optional array of string`

  Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.

  maxItems: 100

- `page: optional string`

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

- `products: optional array of BetaAnalyticsProductFilter`

  Product surfaces to include. Defaults to all products. Use `group_by[]=product` to break out per-product values.

  maxItems: 100

  - `"chat"`

  - `"claude-tag"`

  - `"claude_code"`

  - `"claude_design"`

  - `"claude_in_chrome"`

  - `"cowork"`

  - `"office_agent"`

- `rbac_group_ids: optional array of string`

  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.

  maxItems: 100

- `slack_channel_ids: optional array of string`

  Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.

  maxItems: 100

- `speeds: optional array of "fast" or "standard"`

  Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.

  maxItems: 100

  - `"fast"`

  - `"standard"`

- `user_ids: optional array of string`

  Filter to specific users by tagged user ID.

  maxItems: 100

### Returns

- `data: array of BetaAnalyticsCostReportTimeBucket`

  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.

  - `ending_at: string`

    End of the time bucket (exclusive) in RFC 3339 format.

    format: date-time

  - `results: array of BetaAnalyticsCostBucketedResult`

    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).

    - `amount: string`

      Amount (post-discount, pre-credit) in fractional cents.

    - `claude_tag_category: BetaAnalyticsClaudeTagCategory or null`

      Claude Tag (Claude in Slack) spend category: `engaged` (a person addressed Claude in a channel or thread), `proactive` (Claude responded without being addressed), `scheduled` (a scheduled routine ran), `monitoring` (Claude watching a channel it was asked to monitor), or `dm` (direct messages with Claude). Populated only when `claude_tag_category` is in `group_by[]`; null for usage that is not Claude Tag. Direct-message usage is billed to the individual user and is reported under that user's product, not under `claude-tag`. New categories may be added over time.

      - `"dm"`

      - `"engaged"`

      - `"monitoring"`

      - `"proactive"`

      - `"scheduled"`

    - `claude_tag_user_id: string or null`

      Slack user ID (for example `U0123ABCDEF`) of the member the Claude Tag (Claude in Slack) usage is attributed to, not a claude.ai user ID. Populated only when `claude_tag_user_id` is in `group_by[]`; null for usage that is not Claude Tag and for Claude Tag usage that is not attributed to a single user (for example `monitoring`, and `proactive` usage Claude initiated), so per-user rows can sum to less than the Claude Tag total. Cannot be combined with `group_by[]=rbac_group_id` or the `rbac_group_ids[]` filter.

    - `context_window: BetaAnalyticsContextWindow or null`

      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.

      - `"0-200k"`

      - `"200k-1M"`

    - `cost_type: BetaAnalyticsCostType or null`

      Cost component when `group_by[]=cost_type`; null otherwise (amount is the combined total).

      - `"code_execution"`

      - `"tokens"`

      - `"web_search"`

    - `currency: string`

      Currency code for the cost amount. Currently always `"USD"`.

      default: USD

    - `inference_geo: "global" or "us" or null`

      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).

      - `"global"`

      - `"us"`

    - `list_amount: string`

      List-price amount (pre-discount) in fractional cents.

    - `model: string or null`

      Model that produced the usage or cost, as a model name in the form the `models[]` filter accepts (for example, `claude-opus-5`). 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.

    - `product: string or null`

      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-tag`. `claude-tag` is Claude Tag, the Claude product in Slack. Some unattributed usage is reported as "other".

    - `rbac_group_id: string or null`

      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 without `group_by[]`.

    - `requests: number or null`

      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`).

    - `slack_channel_id: string or null`

      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).

    - `speed: "fast" or "standard" or null`

      Inference speed mode of the usage or cost: `fast` or `standard`. Null unless `speed` is in `group_by[]`.

      - `"fast"`

      - `"standard"`

    - `token_type: BetaAnalyticsTokenType or null`

      Token type when `group_by[]=token_type` and `cost_type=tokens`; null otherwise.

      - `"cache_creation.ephemeral_1h_input_tokens"`

      - `"cache_creation.ephemeral_5m_input_tokens"`

      - `"cache_read_input_tokens"`

      - `"output_tokens"`

      - `"uncached_input_tokens"`

  - `starting_at: string`

    Start of the time bucket (inclusive) in RFC 3339 format.

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/cost_report/list New page · 361 lines, new page

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

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

---
title: Get Cost Over Time
url: https://platform.claude.com/docs/en/api/beta/organization/analytics/cost_report/list
---

# Get Cost Over Time

**GET** `/v1/organizations/analytics/cost_report`

Get cost in USD over time across a date range.

Returns cost bucketed by minute, hour, or day, optionally broken down by
product, model, context window, inference region, speed, cost type, or
token type. Available to organizations on a Claude Enterprise plan.
Requires an API key with the `read:analytics` scope.

## Query parameters

- `starting_at: string`

  Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days and no earlier than 2026-01-01T00:00:00Z.

  format: date-time

- `bucket_width: optional "1d" or "1h" or "1m"`

  Time bucket granularity.

  default: 1d

  - `"1d"`

  - `"1h"`

  - `"1m"`

- `claude_tag_categories: optional array of BetaAnalyticsClaudeTagCategory`

  Filter to Claude Tag (Claude in Slack) usage in specific spend categories. Usage with no category never matches. `dm` usage is reported under the user's product rather than `claude-tag`, so combining this filter with `products[]=claude-tag` excludes it. Use `group_by[]=claude_tag_category` to break out per-category values.

  maxItems: 100

  - `"dm"`

  - `"engaged"`

  - `"monitoring"`

  - `"proactive"`

  - `"scheduled"`

- `claude_tag_user_ids: optional array of string`

  Filter to Claude Tag (Claude in Slack) usage attributed to specific Slack users, by Slack user ID (for example `U0123ABCDEF`), not claude.ai user ID. Usage that is not Claude Tag, and Claude Tag usage not attributed to a single user, never matches. Use `group_by[]=claude_tag_user_id` to break out per-user values.

  maxItems: 100

- `context_windows: optional array of BetaAnalyticsContextWindow`

  Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.

  maxItems: 100

  - `"0-200k"`

  - `"200k-1M"`

- `ending_at: optional string`

  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.

  format: date-time

- `group_by: optional array of "claude_tag_category" or "claude_tag_user_id" or "context_window" or 8 more`

  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.

  maxItems: 100

  - `"claude_tag_category"`

  - `"claude_tag_user_id"`

  - `"context_window"`

  - `"cost_type"`

  - `"inference_geo"`

  - `"model"`

  - `"product"`

  - `"rbac_group_id"`

  - `"slack_channel_id"`

  - `"speed"`

  - `"token_type"`

- `inference_geos: optional array of BetaAnalyticsInferenceGeoFilter`

  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.

  maxItems: 100

  - `"global"`

  - `"not_available"`

  - `"us"`

- `limit: optional number`

  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).

  minimum: 1

- `models: optional array of string`

  Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.

  maxItems: 100

- `page: optional string`

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

- `products: optional array of BetaAnalyticsProductFilter`

  Product surfaces to include. Defaults to all products. Use `group_by[]=product` to break out per-product values.

  maxItems: 100

  - `"chat"`

  - `"claude-tag"`

  - `"claude_code"`

  - `"claude_design"`

  - `"claude_in_chrome"`

  - `"cowork"`

  - `"office_agent"`

- `rbac_group_ids: optional array of string`

  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.

  maxItems: 100

- `slack_channel_ids: optional array of string`

  Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.

  maxItems: 100

- `speeds: optional array of "fast" or "standard"`

  Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.

  maxItems: 100

  - `"fast"`

  - `"standard"`

- `user_ids: optional array of string`

  Filter to specific users by tagged user ID.

  maxItems: 100

## Returns

- `data: array of BetaAnalyticsCostReportTimeBucket`

  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.

  - `ending_at: string`

    End of the time bucket (exclusive) in RFC 3339 format.

    format: date-time

  - `results: array of BetaAnalyticsCostBucketedResult`

    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).

    - `amount: string`

      Amount (post-discount, pre-credit) in fractional cents.

    - `claude_tag_category: BetaAnalyticsClaudeTagCategory or null`

      Claude Tag (Claude in Slack) spend category: `engaged` (a person addressed Claude in a channel or thread), `proactive` (Claude responded without being addressed), `scheduled` (a scheduled routine ran), `monitoring` (Claude watching a channel it was asked to monitor), or `dm` (direct messages with Claude). Populated only when `claude_tag_category` is in `group_by[]`; null for usage that is not Claude Tag. Direct-message usage is billed to the individual user and is reported under that user's product, not under `claude-tag`. New categories may be added over time.

      - `"dm"`

      - `"engaged"`

      - `"monitoring"`

      - `"proactive"`

      - `"scheduled"`

    - `claude_tag_user_id: string or null`

      Slack user ID (for example `U0123ABCDEF`) of the member the Claude Tag (Claude in Slack) usage is attributed to, not a claude.ai user ID. Populated only when `claude_tag_user_id` is in `group_by[]`; null for usage that is not Claude Tag and for Claude Tag usage that is not attributed to a single user (for example `monitoring`, and `proactive` usage Claude initiated), so per-user rows can sum to less than the Claude Tag total. Cannot be combined with `group_by[]=rbac_group_id` or the `rbac_group_ids[]` filter.

    - `context_window: BetaAnalyticsContextWindow or null`

      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.

      - `"0-200k"`

      - `"200k-1M"`

    - `cost_type: BetaAnalyticsCostType or null`

      Cost component when `group_by[]=cost_type`; null otherwise (amount is the combined total).

      - `"code_execution"`

      - `"tokens"`

      - `"web_search"`

    - `currency: string`

      Currency code for the cost amount. Currently always `"USD"`.

      default: USD

    - `inference_geo: "global" or "us" or null`

      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).

      - `"global"`

      - `"us"`

    - `list_amount: string`

      List-price amount (pre-discount) in fractional cents.

    - `model: string or null`

      Model that produced the usage or cost, as a model name in the form the `models[]` filter accepts (for example, `claude-opus-5`). 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.

    - `product: string or null`

      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-tag`. `claude-tag` is Claude Tag, the Claude product in Slack. Some unattributed usage is reported as "other".

    - `rbac_group_id: string or null`

      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 without `group_by[]`.

    - `requests: number or null`

      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`).

    - `slack_channel_id: string or null`

      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).

    - `speed: "fast" or "standard" or null`

      Inference speed mode of the usage or cost: `fast` or `standard`. Null unless `speed` is in `group_by[]`.

      - `"fast"`

      - `"standard"`

    - `token_type: BetaAnalyticsTokenType or null`

      Token type when `group_by[]=token_type` and `cost_type=tokens`; null otherwise.

      - `"cache_creation.ephemeral_1h_input_tokens"`

      - `"cache_creation.ephemeral_5m_input_tokens"`

      - `"cache_read_input_tokens"`

      - `"output_tokens"`

      - `"uncached_input_tokens"`

  - `starting_at: string`

    Start of the time bucket (inclusive) in RFC 3339 format.

    format: date-time

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/plugins Changed · +29 / -99 lines

## Domain types ### Beta Plugin Usage

from line 85
8585 
8686### Returns
8787 
88- `BetaPluginUsage object`
88- `data: array of BetaAnalyticsPluginActivity`
8989 
90 Response for GET /v1/organizations/analytics/plugins.
90 - `claude_code_metrics: BetaAnalyticsPluginClaudeCodeMetrics`
9191 
92 - `data: array of object`
92 Claude Code activity metrics for a single plugin on a given day.
9393 
94 - `claude_code_metrics: object`
94 - `distinct_session_plugin_used_count: number or null`
9595 
96 Claude Code activity metrics for a single plugin on a given day.
96 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
9797 
98 - `distinct_session_plugin_used_count: number or null`
98 - `cowork_metrics: BetaAnalyticsPluginCoworkMetrics`
9999 
100 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
100 Cowork activity metrics for a single plugin on a given day.
101101 
102 - `cowork_metrics: object`
102 - `distinct_session_plugin_used_count: number or null`
103103 
104 Cowork activity metrics for a single plugin on a given day.
104 Number of distinct Cowork sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
105105 
106 - `distinct_session_plugin_used_count: number or null`
106 - `distinct_user_count: number`
107107 
108 Number of distinct Cowork sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
108 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.
109109 
110 - `distinct_user_count: number`
110 - `install_count: number or null`
111111 
112 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.
112 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.
113113 
114 - `install_count: number or null`
114 - `invocation_count: number`
115115 
116 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.
116 Number of plugin invocations on the requested day
117117 
118 - `invocation_count: number`
118 - `plugin_name: string`
119119 
120 Number of plugin invocations on the requested day
120 Name of the plugin
121121 
122 - `plugin_name: string`
122 - `plugin_id: optional string or null`
123123 
124 Name of the plugin
124 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.
125125 
126 - `plugin_id: optional string or null`
126 - `product: optional string or null`
127127 
128 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.
128 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
129129 
130 - `product: optional string or null`
130 - `rbac_group_id: optional string or null`
131131 
132 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
132 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
133133 
134 - `rbac_group_id: optional string or null`
134 - `rbac_group_name: optional string or null`
135135 
136 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
136 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.
137137 
138 - `rbac_group_name: optional string or null`
138 - `user_id: optional string or null`
139139 
140 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.
140 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
141141 
142 - `user_id: optional string or null`
142- `next_page: string or null`
143143 
144 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
144 Opaque cursor for the next page, or null if no more results
145145 
146 - `next_page: string or null`
147 
148 Opaque cursor for the next page, or null if no more results
149 
150146### Example
151147 
152148```bash
from line 177
181177 "next_page": "next_page"
182178}
183179```
184 
185## Domain types
186 
187### Beta Plugin Usage
188 
189- `BetaPluginUsage object`
190 
191 Response for GET /v1/organizations/analytics/plugins.
192 
193 - `data: array of object`
194 
195 - `claude_code_metrics: object`
196 
197 Claude Code activity metrics for a single plugin on a given day.
198 
199 - `distinct_session_plugin_used_count: number or null`
200 
201 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
202 
203 - `cowork_metrics: object`
204 
205 Cowork activity metrics for a single plugin on a given day.
206 
207 - `distinct_session_plugin_used_count: number or null`
208 
209 Number of distinct Cowork sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
210 
211 - `distinct_user_count: number`
212 
213 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.
214 
215 - `install_count: number or null`
216 
217 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.
218 
219 - `invocation_count: number`
220 
221 Number of plugin invocations on the requested day
222 
223 - `plugin_name: string`
224 
225 Name of the plugin
226 
227 - `plugin_id: optional string or null`
228 
229 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.
230 
231 - `product: optional string or null`
232 
233 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
234 
235 - `rbac_group_id: optional string or null`
236 
237 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
238 
239 - `rbac_group_name: optional string or null`
240 
241 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.
242 
243 - `user_id: optional string or null`
244 
245 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
246 
247 - `next_page: string or null`
248 
249 Opaque cursor for the next page, or null if no more results
250180 

api/beta/organization/analytics/plugins/list Changed · +29 / -33 lines

from line 83
8383 
8484## Returns
8585 
86- `BetaPluginUsage object`
86- `data: array of BetaAnalyticsPluginActivity`
8787 
88 Response for GET /v1/organizations/analytics/plugins.
88 - `claude_code_metrics: BetaAnalyticsPluginClaudeCodeMetrics`
8989 
90 - `data: array of object`
90 Claude Code activity metrics for a single plugin on a given day.
9191 
92 - `claude_code_metrics: object`
92 - `distinct_session_plugin_used_count: number or null`
9393 
94 Claude Code activity metrics for a single plugin on a given day.
94 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
9595 
96 - `distinct_session_plugin_used_count: number or null`
96 - `cowork_metrics: BetaAnalyticsPluginCoworkMetrics`
9797 
98 Number of distinct Claude Code sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
98 Cowork activity metrics for a single plugin on a given day.
9999 
100 - `cowork_metrics: object`
100 - `distinct_session_plugin_used_count: number or null`
101101 
102 Cowork activity metrics for a single plugin on a given day.
102 Number of distinct Cowork sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
103103 
104 - `distinct_session_plugin_used_count: number or null`
104 - `distinct_user_count: number`
105105 
106 Number of distinct Cowork sessions in which the plugin was invoked. Null on aggregated rows where a distinct count cannot be computed.
106 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.
107107 
108 - `distinct_user_count: number`
108 - `install_count: number or null`
109109 
110 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.
110 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.
111111 
112 - `install_count: number or null`
112 - `invocation_count: number`
113113 
114 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.
114 Number of plugin invocations on the requested day
115115 
116 - `invocation_count: number`
116 - `plugin_name: string`
117117 
118 Number of plugin invocations on the requested day
118 Name of the plugin
119119 
120 - `plugin_name: string`
120 - `plugin_id: optional string or null`
121121 
122 Name of the plugin
122 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.
123123 
124 - `plugin_id: optional string or null`
124 - `product: optional string or null`
125125 
126 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.
126 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
127127 
128 - `product: optional string or null`
128 - `rbac_group_id: optional string or null`
129129 
130 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
130 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
131131 
132 - `rbac_group_id: optional string or null`
132 - `rbac_group_name: optional string or null`
133133 
134 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
134 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.
135135 
136 - `rbac_group_name: optional string or null`
136 - `user_id: optional string or null`
137137 
138 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.
138 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
139139 
140 - `user_id: optional string or null`
140- `next_page: string or null`
141141 
142 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
143 
144 - `next_page: string or null`
145 
146 Opaque cursor for the next page, or null if no more results
142 Opaque cursor for the next page, or null if no more results
147143 
148144## Example
149145 

api/beta/organization/analytics/retrieve_summaries Page removed · 393 lines, page removed

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

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

api/beta/organization/analytics/skills Changed · +108 / -232 lines

## Domain types ### Beta Skill Usage

from line 80
8080 
8181### Returns
8282 
83- `BetaSkillUsage object`
83- `data: array of BetaAnalyticsSkillActivity`
8484 
85 Response for GET /v1/organizations/analytics/skills.
85 - `chat_metrics: BetaAnalyticsSkillChatMetrics`
8686 
87 - `data: array of object`
87 Claude.ai activity metrics for a single skill on a given day.
8888 
89 - `chat_metrics: object`
89 - `distinct_conversation_skill_used_count: number or null`
9090 
91 Claude.ai activity metrics for a single skill on a given day.
91 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.
9292 
93 - `distinct_conversation_skill_used_count: number or null`
93 - `claude_code_metrics: BetaAnalyticsSkillClaudeCodeMetrics`
9494 
95 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.
95 Claude Code activity metrics for a single skill on a given day.
9696 
97 - `claude_code_metrics: object`
97 - `distinct_session_skill_used_count: number or null`
9898 
99 Claude Code activity metrics for a single skill on a given day.
99 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.
100100 
101 - `distinct_session_skill_used_count: number or null`
101 - `cowork_metrics: BetaAnalyticsSkillCoworkMetrics`
102102 
103 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.
103 Cowork activity metrics for a single skill on a given day.
104104 
105 - `cowork_metrics: object`
105 - `distinct_session_skill_used_count: number or null`
106106 
107 Cowork activity metrics for a single skill on a given day.
107 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.
108108 
109 - `distinct_session_skill_used_count: number or null`
109 - `distinct_user_count: number`
110110 
111 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.
111 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.
112112 
113 - `distinct_user_count: number`
113 - `office_metrics: BetaAnalyticsSkillOfficeMetrics`
114114 
115 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.
115 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
116116 
117 - `office_metrics: object`
117 - `excel: BetaAnalyticsSkillOfficeProductMetrics`
118118 
119 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
119 Office Agent activity metrics for a single skill on a given day within one Office product.
120120 
121 - `excel: BetaSkillOfficeProductMetrics`
121 - `distinct_session_skill_used_count: number or null`
122122 
123 Office Agent activity metrics for a single skill on a given day within one Office product.
123 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.
124124 
125 - `distinct_session_skill_used_count: number or null`
125 - `outlook: BetaAnalyticsSkillOfficeProductMetrics`
126126 
127 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.
127 Office Agent activity metrics for a single skill on a given day within one Office product.
128128 
129 - `outlook: BetaSkillOfficeProductMetrics`
129 - `powerpoint: BetaAnalyticsSkillOfficeProductMetrics`
130130 
131 Office Agent activity metrics for a single skill on a given day within one Office product.
131 Office Agent activity metrics for a single skill on a given day within one Office product.
132132 
133 - `powerpoint: BetaSkillOfficeProductMetrics`
133 - `word: BetaAnalyticsSkillOfficeProductMetrics`
134134 
135 Office Agent activity metrics for a single skill on a given day within one Office product.
135 Office Agent activity metrics for a single skill on a given day within one Office product.
136136 
137 - `word: BetaSkillOfficeProductMetrics`
137 - `skill_name: string`
138138 
139 Office Agent activity metrics for a single skill on a given day within one Office product.
139 Name of the skill
140140 
141 - `skill_name: string`
141 - `attributed_list_price: optional string or null`
142142 
143 Name of the skill
143 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.
144144 
145 - `attributed_list_price: optional string or null`
145 - `currency: optional string or null`
146146 
147 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.
147 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.
148148 
149 - `currency: optional string or null`
149 - `enable_count: optional number or null`
150150 
151 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.
151 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`).
152152 
153 - `enable_count: optional number or null`
153 - `estimated_overage_spend: optional string or null`
154154 
155 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`).
155 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.
156156 
157 - `estimated_overage_spend: optional string or null`
157 - `invocation_count: optional number or null`
158158 
159 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.
159 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.
160160 
161 - `invocation_count: optional number or null`
161 - `product: optional string or null`
162162 
163 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.
163 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
164164 
165 - `product: optional string or null`
165 - `rbac_group_id: optional string or null`
166166 
167 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
167 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
168168 
169 - `rbac_group_id: optional string or null`
169 - `rbac_group_name: optional string or null`
170170 
171 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
171 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.
172172 
173 - `rbac_group_name: optional string or null`
173 - `share_status: optional "organization" or "private" or "public" or null`
174174 
175 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.
175 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}`.
176176 
177 - `share_status: optional "organization" or "private" or "public" or null`
177 - `"organization"`
178178 
179 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}`.
179 - `"private"`
180180 
181 - `"organization"`
181 - `"public"`
182182 
183 - `"private"`
183 - `skill_display_name: optional string or null`
184184 
185 - `"public"`
185 Human-readable display name for rows whose `skill_name` is an opaque skill id (user/organization skill types and plugin-delivered skills, whose user-defined names usage reports generally withhold). Organization-shared skills and skills delivered by the organization's own plugins (its plugin marketplaces and its library) resolve; plugin skill names are shown without their 'plugin:' prefix. The literal 'unknown' bucket row gets a fixed 'Unknown skill' label. For a member's own skill (private or personal-plugin) it is null, except when the skill's owner used it from Claude Code or Cowork in the requested period: then it shows the name that client reported at the time. Apart from that, the names of members' own skills are not disclosed to analytics-key holders. Also null for Anthropic-provided plugin skills (not resolved), for an organization skill or plugin whose name can no longer be found (for example, one since deleted), when `skill_name` is already a display name, or when display-name resolution is not enabled for this organization.
186186 
187 - `skill_display_name: optional string or null`
187 - `user_id: optional string or null`
188188 
189 Human-readable display name for rows whose `skill_name` is an opaque skill id (user/organization skill types and plugin-delivered skills, whose user-defined names usage reports generally withhold). Organization-shared skills and skills delivered by the organization's own plugins (its plugin marketplaces and its library) resolve; plugin skill names are shown without their 'plugin:' prefix. The literal 'unknown' bucket row gets a fixed 'Unknown skill' label. For a member's own skill (private or personal-plugin) it is null, except when the skill's owner used it from Claude Code or Cowork in the requested period: then it shows the name that client reported at the time. Apart from that, the names of members' own skills are not disclosed to analytics-key holders. Also null for Anthropic-provided plugin skills (not resolved), for an organization skill or plugin whose name can no longer be found (for example, one since deleted), when `skill_name` is already a display name, or when display-name resolution is not enabled for this organization.
189 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
190190 
191 - `user_id: optional string or null`
191- `next_page: string or null`
192192 
193 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
193 Opaque cursor for the next page, or null if no more results
194194 
195 - `next_page: string or null`
196 
197 Opaque cursor for the next page, or null if no more results
198 
199195### Example
200196 
201197```bash
from line 247
251247 "next_page": "next_page"
252248}
253249```
254 
255## Domain types
256 
257### Beta Skill Usage
258 
259- `BetaSkillUsage object`
260 
261 Response for GET /v1/organizations/analytics/skills.
262 
263 - `data: array of object`
264 
265 - `chat_metrics: object`
266 
267 Claude.ai activity metrics for a single skill on a given day.
268 
269 - `distinct_conversation_skill_used_count: number or null`
270 
271 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.
272 
273 - `claude_code_metrics: object`
274 
275 Claude Code activity metrics for a single skill on a given day.
276 
277 - `distinct_session_skill_used_count: number or null`
278 
279 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.
280 
281 - `cowork_metrics: object`
282 
283 Cowork activity metrics for a single skill on a given day.
284 
285 - `distinct_session_skill_used_count: number or null`
286 
287 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.
288 
289 - `distinct_user_count: number`
290 
291 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.
292 
293 - `office_metrics: object`
294 
295 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
296 
297 - `excel: BetaSkillOfficeProductMetrics`
298 
299 Office Agent activity metrics for a single skill on a given day within one Office product.
300 
301 - `distinct_session_skill_used_count: number or null`
302 
303 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.
304 
305 - `outlook: BetaSkillOfficeProductMetrics`
306 
307 Office Agent activity metrics for a single skill on a given day within one Office product.
308 
309 - `powerpoint: BetaSkillOfficeProductMetrics`
310 
311 Office Agent activity metrics for a single skill on a given day within one Office product.
312 
313 - `word: BetaSkillOfficeProductMetrics`
314 
315 Office Agent activity metrics for a single skill on a given day within one Office product.
316 
317 - `skill_name: string`
318 
319 Name of the skill
320 
321 - `attributed_list_price: optional string or null`
322 
323 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.
324 
325 - `currency: optional string or null`
326 
327 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.
328 
329 - `enable_count: optional number or null`
330 
331 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`).
332 
333 - `estimated_overage_spend: optional string or null`
334 
335 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.
336 
337 - `invocation_count: optional number or null`
338 
339 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.
340 
341 - `product: optional string or null`
342 
343 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); on `/artifacts` only `chat`, `claude_code`, and `cowork` occur (the surfaces that create artifacts); `/apps/chat/projects` does not support the product dimension (a `product` entry in `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by `product`.
344 
345 - `rbac_group_id: optional string or null`
346 
347 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
348 
349 - `rbac_group_name: optional string or null`
350 
351 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.
352 
353 - `share_status: optional "organization" or "private" or "public" or null`
354 
355 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}`.
356 
357 - `"organization"`
358 
359 - `"private"`
360 
361 - `"public"`
362 
363 - `skill_display_name: optional string or null`
364 
365 Human-readable display name for rows whose `skill_name` is an opaque skill id (user/organization skill types and plugin-delivered skills, whose user-defined names usage reports generally withhold). Organization-shared skills and skills delivered by the organization's own plugins (its plugin marketplaces and its library) resolve; plugin skill names are shown without their 'plugin:' prefix. The literal 'unknown' bucket row gets a fixed 'Unknown skill' label. For a member's own skill (private or personal-plugin) it is null, except when the skill's owner used it from Claude Code or Cowork in the requested period: then it shows the name that client reported at the time. Apart from that, the names of members' own skills are not disclosed to analytics-key holders. Also null for Anthropic-provided plugin skills (not resolved), for an organization skill or plugin whose name can no longer be found (for example, one since deleted), when `skill_name` is already a display name, or when display-name resolution is not enabled for this organization.
366 
367 - `user_id: optional string or null`
368 
369 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
370 
371 - `next_page: string or null`
372 
373 Opaque cursor for the next page, or null if no more results
374250 
Feedback