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

51-75 of 336, page 3 of 14

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

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

from line 78
7878 
7979## Returns
8080 
81- `BetaSkillUsage object`
81- `data: array of BetaAnalyticsSkillActivity`
8282 
83 Response for GET /v1/organizations/analytics/skills.
83 - `chat_metrics: BetaAnalyticsSkillChatMetrics`
8484 
85 - `data: array of object`
85 Claude.ai activity metrics for a single skill on a given day.
8686 
87 - `chat_metrics: object`
87 - `distinct_conversation_skill_used_count: number or null`
8888 
89 Claude.ai activity metrics for a single skill on a given day.
89 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.
9090 
91 - `distinct_conversation_skill_used_count: number or null`
91 - `claude_code_metrics: BetaAnalyticsSkillClaudeCodeMetrics`
9292 
93 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.
93 Claude Code activity metrics for a single skill on a given day.
9494 
95 - `claude_code_metrics: object`
95 - `distinct_session_skill_used_count: number or null`
9696 
97 Claude Code activity metrics for a single skill on a given day.
97 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.
9898 
99 - `distinct_session_skill_used_count: number or null`
99 - `cowork_metrics: BetaAnalyticsSkillCoworkMetrics`
100100 
101 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.
101 Cowork activity metrics for a single skill on a given day.
102102 
103 - `cowork_metrics: object`
103 - `distinct_session_skill_used_count: number or null`
104104 
105 Cowork activity metrics for a single skill on a given day.
105 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.
106106 
107 - `distinct_session_skill_used_count: number or null`
107 - `distinct_user_count: number`
108108 
109 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.
109 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.
110110 
111 - `distinct_user_count: number`
111 - `office_metrics: BetaAnalyticsSkillOfficeMetrics`
112112 
113 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.
113 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
114114 
115 - `office_metrics: object`
115 - `excel: BetaAnalyticsSkillOfficeProductMetrics`
116116 
117 Office Agent activity metrics for a single skill on a given day, broken out by Office product.
117 Office Agent activity metrics for a single skill on a given day within one Office product.
118118 
119 - `excel: BetaSkillOfficeProductMetrics`
119 - `distinct_session_skill_used_count: number or null`
120120 
121 Office Agent activity metrics for a single skill on a given day within one Office product.
121 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.
122122 
123 - `distinct_session_skill_used_count: number or null`
123 - `outlook: BetaAnalyticsSkillOfficeProductMetrics`
124124 
125 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.
125 Office Agent activity metrics for a single skill on a given day within one Office product.
126126 
127 - `outlook: BetaSkillOfficeProductMetrics`
127 - `powerpoint: BetaAnalyticsSkillOfficeProductMetrics`
128128 
129 Office Agent activity metrics for a single skill on a given day within one Office product.
129 Office Agent activity metrics for a single skill on a given day within one Office product.
130130 
131 - `powerpoint: BetaSkillOfficeProductMetrics`
131 - `word: BetaAnalyticsSkillOfficeProductMetrics`
132132 
133 Office Agent activity metrics for a single skill on a given day within one Office product.
133 Office Agent activity metrics for a single skill on a given day within one Office product.
134134 
135 - `word: BetaSkillOfficeProductMetrics`
135 - `skill_name: string`
136136 
137 Office Agent activity metrics for a single skill on a given day within one Office product.
137 Name of the skill
138138 
139 - `skill_name: string`
139 - `attributed_list_price: optional string or null`
140140 
141 Name of the skill
141 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.
142142 
143 - `attributed_list_price: optional string or null`
143 - `currency: optional string or null`
144144 
145 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.
145 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.
146146 
147 - `currency: optional string or null`
147 - `enable_count: optional number or null`
148148 
149 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.
149 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`).
150150 
151 - `enable_count: optional number or null`
151 - `estimated_overage_spend: optional string or null`
152152 
153 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`).
153 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.
154154 
155 - `estimated_overage_spend: optional string or null`
155 - `invocation_count: optional number or null`
156156 
157 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.
157 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.
158158 
159 - `invocation_count: optional number or null`
159 - `product: optional string or null`
160160 
161 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.
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`.
162162 
163 - `product: optional string or null`
163 - `rbac_group_id: optional string or null`
164164 
165 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`.
165 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
166166 
167 - `rbac_group_id: optional string or null`
167 - `rbac_group_name: optional string or null`
168168 
169 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
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.
170170 
171 - `rbac_group_name: optional string or null`
171 - `share_status: optional "organization" or "private" or "public" or null`
172172 
173 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.
173 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}`.
174174 
175 - `share_status: optional "organization" or "private" or "public" or null`
175 - `"organization"`
176176 
177 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}`.
177 - `"private"`
178178 
179 - `"organization"`
179 - `"public"`
180180 
181 - `"private"`
181 - `skill_display_name: optional string or null`
182182 
183 - `"public"`
183 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.
184184 
185 - `skill_display_name: optional string or null`
185 - `user_id: optional string or null`
186186 
187 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.
187 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
188188 
189 - `user_id: optional string or null`
189- `next_page: string or null`
190190 
191 Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.
192 
193 - `next_page: string or null`
194 
195 Opaque cursor for the next page, or null if no more results
191 Opaque cursor for the next page, or null if no more results
196192 
197193## Example
198194 

api/beta/organization/analytics/summaries New page · 391 lines, new page

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

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

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

# Summaries

## Get Activity Summaries

**GET** `/v1/organizations/analytics/summaries`

Get organization-wide activity summaries for a date range.

Returns one entry per day from `starting_date` (inclusive) to `ending_date`
(exclusive) in `data`, the same `data` / `next_page` envelope as the other
analytics list endpoints; the series is currently returned in full, so
`next_page` is always null (`summaries` is a deprecated alias of `data`).
Data is typically available with a 1-day lag and may be revised by a few
percent over the following days: when `ending_date` is omitted it
defaults to the most recent available day + 1, so the last entry covers
the most recent available day. The series can be scoped to an RBAC group
via `filter[]=rbac_group_id:{id}`. Available to organizations on a Claude
Enterprise plan. Requires an API key with the `read:analytics` scope.

### Query parameters

- `starting_date: string`

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

  format: date

- `ending_date: optional string`

  UTC date in YYYY-MM-DD format. End of the date range (exclusive). Data is typically available with a 1-day lag, so this can be at most today — which is also the default when omitted, making the last entry cover the most recent available day. Data may be revised by a few percent over the following days. The range may span at most 366 days.

  format: date

- `filter: optional array of string`

  Filters as `dimension:value`. Only `rbac_group_id` is supported (e.g. `filter[]=rbac_group_id:{id}`); repeat the param to OR across groups. Scopes the whole day series to members of the matching group(s), re-aggregated from member-level activity — org-wide seat/invite fields and the adoption rates derived from them are null on scoped rows. `rbac_group_id` accepts the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each UTC day (time-of-usage attribution). At most 100 entries.

  maxItems: 100

- `limit: optional number`

  Number of results per page (1-1000, default 100). The day series (at most 366 entries) is currently returned in full in a single page, so `limit` does not yet shorten it.

  minimum: 1, maximum: 1000

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field. `next_page` is currently always null, so there is never a cursor to send.

### Returns

- `data: array of BetaAnalyticsSingleDayActivitySummary`

  One entry per day in the requested range, ascending by date.

  - `assigned_seat_count: number or null`

    Number of seats currently assigned to members. Null when the response is scoped to an RBAC group — seat assignment is org-wide and has no per-group analogue.

  - `cowork_daily_active_user_count: number`

    Number of users with Cowork activity on the requested day

  - `cowork_monthly_active_user_count: number`

    Number of users with Cowork activity in the 30-day rolling window

  - `cowork_weekly_active_user_count: number`

    Number of users with Cowork activity in the 7-day rolling window

  - `daily_active_user_count: number`

    Number of users with token consumption on the requested day

  - `daily_adoption_rate: number or null`

    Percentage of assigned seats with activity on the requested day (`DAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `ending_at: string`

    End of the aggregation period (exclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-16T00:00:00Z`).

    format: date-time

  - `monthly_active_user_count: number`

    Number of users with token consumption in the 30-day rolling window

  - `monthly_adoption_rate: number or null`

    Percentage of assigned seats with activity in the 30-day rolling window (`MAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `pending_invite_count: number or null`

    Number of pending invitations to join the organization. Null when the response is scoped to an RBAC group.

  - `starting_at: string`

    Start of the aggregation period (inclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-15T00:00:00Z`).

    format: date-time

  - `weekly_active_user_count: number`

    Number of users with token consumption in the 7-day rolling window

  - `weekly_adoption_rate: number or null`

    Percentage of assigned seats with activity in the 7-day rolling window (`WAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `chat_daily_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `chat_monthly_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `chat_weekly_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_daily_active_user_count: optional number or null`

    Number of users with Claude Code activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_monthly_active_user_count: optional number or null`

    Number of users with Claude Code activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_weekly_active_user_count: optional number or null`

    Number of users with Claude Code activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_daily_active_user_count: optional number or null`

    Number of users with Claude Design activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_monthly_active_user_count: optional number or null`

    Number of users with Claude Design activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_weekly_active_user_count: optional number or null`

    Number of users with Claude Design activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_daily_active_user_count: optional number or null`

    Number of users with Claude in Office activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_monthly_active_user_count: optional number or null`

    Number of users with Claude in Office activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_weekly_active_user_count: optional number or null`

    Number of users with Claude in Office activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_daily_active_user_count: optional number or null`

    Number of users with Claude Science activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_entitled_user_count: optional number or null`

    Number of users with a Claude Science seat entitlement (per-seat RBAC) at the time of the daily snapshot. The funnel top; independent of the org-level Claude Science toggle. Null when the response is scoped to an RBAC group — entitlement is org-wide and has no per-group analogue. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_monthly_active_user_count: optional number or null`

    Number of users with Claude Science activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_weekly_active_user_count: optional number or null`

    Number of users with Claude Science activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

- `next_page: string or null`

  Opaque cursor for the next page, or null if no more results. Currently always null: the day series is returned in full.

- `summaries: array of BetaAnalyticsSingleDayActivitySummary`

  **Deprecated**

  Deprecated: use `data`, which carries the same entries.

  - `assigned_seat_count: number or null`

    Number of seats currently assigned to members. Null when the response is scoped to an RBAC group — seat assignment is org-wide and has no per-group analogue.

  - `cowork_daily_active_user_count: number`

    Number of users with Cowork activity on the requested day

  - `cowork_monthly_active_user_count: number`

    Number of users with Cowork activity in the 30-day rolling window

  - `cowork_weekly_active_user_count: number`

    Number of users with Cowork activity in the 7-day rolling window

  - `daily_active_user_count: number`

    Number of users with token consumption on the requested day

  - `daily_adoption_rate: number or null`

    Percentage of assigned seats with activity on the requested day (`DAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `ending_at: string`

    End of the aggregation period (exclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-16T00:00:00Z`).

    format: date-time

  - `monthly_active_user_count: number`

    Number of users with token consumption in the 30-day rolling window

  - `monthly_adoption_rate: number or null`

    Percentage of assigned seats with activity in the 30-day rolling window (`MAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `pending_invite_count: number or null`

    Number of pending invitations to join the organization. Null when the response is scoped to an RBAC group.

  - `starting_at: string`

    Start of the aggregation period (inclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-15T00:00:00Z`).

    format: date-time

  - `weekly_active_user_count: number`

    Number of users with token consumption in the 7-day rolling window

  - `weekly_adoption_rate: number or null`

    Percentage of assigned seats with activity in the 7-day rolling window (`WAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `chat_daily_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `chat_monthly_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `chat_weekly_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_daily_active_user_count: optional number or null`

    Number of users with Claude Code activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_monthly_active_user_count: optional number or null`

    Number of users with Claude Code activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_weekly_active_user_count: optional number or null`

    Number of users with Claude Code activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_daily_active_user_count: optional number or null`

    Number of users with Claude Design activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_monthly_active_user_count: optional number or null`

    Number of users with Claude Design activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_weekly_active_user_count: optional number or null`

    Number of users with Claude Design activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_daily_active_user_count: optional number or null`

    Number of users with Claude in Office activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_monthly_active_user_count: optional number or null`

    Number of users with Claude in Office activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_weekly_active_user_count: optional number or null`

    Number of users with Claude in Office activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_daily_active_user_count: optional number or null`

    Number of users with Claude Science activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_entitled_user_count: optional number or null`

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/summaries/list New page · 389 lines, new page

# Get Activity Summaries ## 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 Activity Summaries
url: https://platform.claude.com/docs/en/api/beta/organization/analytics/summaries/list
---

# Get Activity Summaries

**GET** `/v1/organizations/analytics/summaries`

Get organization-wide activity summaries for a date range.

Returns one entry per day from `starting_date` (inclusive) to `ending_date`
(exclusive) in `data`, the same `data` / `next_page` envelope as the other
analytics list endpoints; the series is currently returned in full, so
`next_page` is always null (`summaries` is a deprecated alias of `data`).
Data is typically available with a 1-day lag and may be revised by a few
percent over the following days: when `ending_date` is omitted it
defaults to the most recent available day + 1, so the last entry covers
the most recent available day. The series can be scoped to an RBAC group
via `filter[]=rbac_group_id:{id}`. Available to organizations on a Claude
Enterprise plan. Requires an API key with the `read:analytics` scope.

## Query parameters

- `starting_date: string`

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

  format: date

- `ending_date: optional string`

  UTC date in YYYY-MM-DD format. End of the date range (exclusive). Data is typically available with a 1-day lag, so this can be at most today — which is also the default when omitted, making the last entry cover the most recent available day. Data may be revised by a few percent over the following days. The range may span at most 366 days.

  format: date

- `filter: optional array of string`

  Filters as `dimension:value`. Only `rbac_group_id` is supported (e.g. `filter[]=rbac_group_id:{id}`); repeat the param to OR across groups. Scopes the whole day series to members of the matching group(s), re-aggregated from member-level activity — org-wide seat/invite fields and the adoption rates derived from them are null on scoped rows. `rbac_group_id` accepts the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each UTC day (time-of-usage attribution). At most 100 entries.

  maxItems: 100

- `limit: optional number`

  Number of results per page (1-1000, default 100). The day series (at most 366 entries) is currently returned in full in a single page, so `limit` does not yet shorten it.

  minimum: 1, maximum: 1000

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field. `next_page` is currently always null, so there is never a cursor to send.

## Returns

- `data: array of BetaAnalyticsSingleDayActivitySummary`

  One entry per day in the requested range, ascending by date.

  - `assigned_seat_count: number or null`

    Number of seats currently assigned to members. Null when the response is scoped to an RBAC group — seat assignment is org-wide and has no per-group analogue.

  - `cowork_daily_active_user_count: number`

    Number of users with Cowork activity on the requested day

  - `cowork_monthly_active_user_count: number`

    Number of users with Cowork activity in the 30-day rolling window

  - `cowork_weekly_active_user_count: number`

    Number of users with Cowork activity in the 7-day rolling window

  - `daily_active_user_count: number`

    Number of users with token consumption on the requested day

  - `daily_adoption_rate: number or null`

    Percentage of assigned seats with activity on the requested day (`DAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `ending_at: string`

    End of the aggregation period (exclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-16T00:00:00Z`).

    format: date-time

  - `monthly_active_user_count: number`

    Number of users with token consumption in the 30-day rolling window

  - `monthly_adoption_rate: number or null`

    Percentage of assigned seats with activity in the 30-day rolling window (`MAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `pending_invite_count: number or null`

    Number of pending invitations to join the organization. Null when the response is scoped to an RBAC group.

  - `starting_at: string`

    Start of the aggregation period (inclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-15T00:00:00Z`).

    format: date-time

  - `weekly_active_user_count: number`

    Number of users with token consumption in the 7-day rolling window

  - `weekly_adoption_rate: number or null`

    Percentage of assigned seats with activity in the 7-day rolling window (`WAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `chat_daily_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `chat_monthly_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `chat_weekly_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_daily_active_user_count: optional number or null`

    Number of users with Claude Code activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_monthly_active_user_count: optional number or null`

    Number of users with Claude Code activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_weekly_active_user_count: optional number or null`

    Number of users with Claude Code activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_daily_active_user_count: optional number or null`

    Number of users with Claude Design activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_monthly_active_user_count: optional number or null`

    Number of users with Claude Design activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_weekly_active_user_count: optional number or null`

    Number of users with Claude Design activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_daily_active_user_count: optional number or null`

    Number of users with Claude in Office activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_monthly_active_user_count: optional number or null`

    Number of users with Claude in Office activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_weekly_active_user_count: optional number or null`

    Number of users with Claude in Office activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_daily_active_user_count: optional number or null`

    Number of users with Claude Science activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_entitled_user_count: optional number or null`

    Number of users with a Claude Science seat entitlement (per-seat RBAC) at the time of the daily snapshot. The funnel top; independent of the org-level Claude Science toggle. Null when the response is scoped to an RBAC group — entitlement is org-wide and has no per-group analogue. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_monthly_active_user_count: optional number or null`

    Number of users with Claude Science activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_weekly_active_user_count: optional number or null`

    Number of users with Claude Science activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

- `next_page: string or null`

  Opaque cursor for the next page, or null if no more results. Currently always null: the day series is returned in full.

- `summaries: array of BetaAnalyticsSingleDayActivitySummary`

  **Deprecated**

  Deprecated: use `data`, which carries the same entries.

  - `assigned_seat_count: number or null`

    Number of seats currently assigned to members. Null when the response is scoped to an RBAC group — seat assignment is org-wide and has no per-group analogue.

  - `cowork_daily_active_user_count: number`

    Number of users with Cowork activity on the requested day

  - `cowork_monthly_active_user_count: number`

    Number of users with Cowork activity in the 30-day rolling window

  - `cowork_weekly_active_user_count: number`

    Number of users with Cowork activity in the 7-day rolling window

  - `daily_active_user_count: number`

    Number of users with token consumption on the requested day

  - `daily_adoption_rate: number or null`

    Percentage of assigned seats with activity on the requested day (`DAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `ending_at: string`

    End of the aggregation period (exclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-16T00:00:00Z`).

    format: date-time

  - `monthly_active_user_count: number`

    Number of users with token consumption in the 30-day rolling window

  - `monthly_adoption_rate: number or null`

    Percentage of assigned seats with activity in the 30-day rolling window (`MAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `pending_invite_count: number or null`

    Number of pending invitations to join the organization. Null when the response is scoped to an RBAC group.

  - `starting_at: string`

    Start of the aggregation period (inclusive), UTC midnight in RFC 3339 format (e.g. `2026-01-15T00:00:00Z`).

    format: date-time

  - `weekly_active_user_count: number`

    Number of users with token consumption in the 7-day rolling window

  - `weekly_adoption_rate: number or null`

    Percentage of assigned seats with activity in the 7-day rolling window (`WAU / assigned_seat_count * 100`). Null when the response is scoped to an RBAC group.

  - `chat_daily_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `chat_monthly_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `chat_weekly_active_user_count: optional number or null`

    Number of users with claude.ai (chat) activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_daily_active_user_count: optional number or null`

    Number of users with Claude Code activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_monthly_active_user_count: optional number or null`

    Number of users with Claude Code activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_code_weekly_active_user_count: optional number or null`

    Number of users with Claude Code activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_daily_active_user_count: optional number or null`

    Number of users with Claude Design activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_monthly_active_user_count: optional number or null`

    Number of users with Claude Design activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `claude_design_weekly_active_user_count: optional number or null`

    Number of users with Claude Design activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_daily_active_user_count: optional number or null`

    Number of users with Claude in Office activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_monthly_active_user_count: optional number or null`

    Number of users with Claude in Office activity in the 30-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `office_agent_weekly_active_user_count: optional number or null`

    Number of users with Claude in Office activity in the 7-day rolling window. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_daily_active_user_count: optional number or null`

    Number of users with Claude Science activity on the requested day. Omitted from the response while the per-product breakdown is not enabled for this organization.

  - `science_entitled_user_count: optional number or null`

    Number of users with a Claude Science seat entitlement (per-seat RBAC) at the time of the daily snapshot. The funnel top; independent of the org-level Claude Science toggle. Null when the response is scoped to an RBAC group — entitlement is org-wide and has no per-group analogue. Omitted from the response while the per-product breakdown is not enabled for this organization.

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/usage Page removed · 1100 lines, page removed

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

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

api/beta/organization/analytics/usage/list Page removed · 362 lines, page removed

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

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

api/beta/organization/analytics/usage/list_by_user Page removed · 428 lines, page removed

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

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

api/beta/organization/analytics/usage_report New page · 362 lines, new page

# Usage Report ## Get Token Usage 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: Usage Report
url: https://platform.claude.com/docs/en/api/beta/organization/analytics/usage_report
---

# Usage Report

## Get Token Usage Over Time

**GET** `/v1/organizations/analytics/usage_report`

Get token usage over time across a date range.

Returns token usage bucketed by minute, hour, or day, optionally broken
down by product, model, context window, inference region, or speed.
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 6 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"`

  - `"inference_geo"`

  - `"model"`

  - `"product"`

  - `"rbac_group_id"`

  - `"slack_channel_id"`

  - `"speed"`

- `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 BetaAnalyticsUsageReportTimeBucket`

  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 BetaAnalyticsUsageBucketedResult`

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

    - `cache_creation: BetaCacheCreation`

      The number of input tokens for cache creation.

      - `ephemeral_1h_input_tokens: number`

        The number of input tokens used to create the 1 hour cache entry.

        default: 0, minimum: 0

      - `ephemeral_5m_input_tokens: number`

        The number of input tokens used to create the 5 minute cache entry.

        default: 0, minimum: 0

    - `cache_read_input_tokens: number`

      The number of input tokens read from the cache.

    - `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"`

    - `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"`

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

    - `output_tokens: number`

      The number of output tokens generated.

    - `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. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).

    - `server_tool_use: BetaAnalyticsServerToolUse`

      Server-side tool usage metrics.

      - `web_search_requests: number`

        The number of web search requests made.

    - `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"`

    - `uncached_input_tokens: number`

      The number of uncached input tokens processed.

  - `starting_at: string`

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

    format: date-time

- `data_refreshed_at: string or null`

  RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/usage_report/list New page · 360 lines, new page

# Get Token Usage 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 Token Usage Over Time
url: https://platform.claude.com/docs/en/api/beta/organization/analytics/usage_report/list
---

# Get Token Usage Over Time

**GET** `/v1/organizations/analytics/usage_report`

Get token usage over time across a date range.

Returns token usage bucketed by minute, hour, or day, optionally broken
down by product, model, context window, inference region, or speed.
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 6 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"`

  - `"inference_geo"`

  - `"model"`

  - `"product"`

  - `"rbac_group_id"`

  - `"slack_channel_id"`

  - `"speed"`

- `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 BetaAnalyticsUsageReportTimeBucket`

  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 BetaAnalyticsUsageBucketedResult`

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

    - `cache_creation: BetaCacheCreation`

      The number of input tokens for cache creation.

      - `ephemeral_1h_input_tokens: number`

        The number of input tokens used to create the 1 hour cache entry.

        default: 0, minimum: 0

      - `ephemeral_5m_input_tokens: number`

        The number of input tokens used to create the 5 minute cache entry.

        default: 0, minimum: 0

    - `cache_read_input_tokens: number`

      The number of input tokens read from the cache.

    - `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"`

    - `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"`

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

    - `output_tokens: number`

      The number of output tokens generated.

    - `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. For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).

    - `server_tool_use: BetaAnalyticsServerToolUse`

      Server-side tool usage metrics.

      - `web_search_requests: number`

        The number of web search requests made.

    - `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"`

    - `uncached_input_tokens: number`

      The number of uncached input tokens processed.

  - `starting_at: string`

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

    format: date-time

- `data_refreshed_at: string or null`

  RFC 3339 timestamp of the export this response was served from. Null when no export yet covers any part of the requested range, in which case every bucket's `results` list is empty. Buckets beyond this watermark are incomplete; for stable results, set `ending_at` to this value or earlier. Data is typically refreshed every 4 hours but not final until about 30 days after the usage date (late-arriving events, reconciliation adjustments).

  format: date-time

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/user_cost_report New page · 420 lines, new page

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

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

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

# User Cost Report

## Get Per-User Cost

**GET** `/v1/organizations/analytics/user_cost_report`

Get per-user cost in USD across a date range.

Returns one row per user, ranked by spend. Use this to see which users
account for the most cost. Only cost attributable to a seat user is
included; for organization-wide totals including direct API-key and
automation traffic, use the bucketed
`/v1/organizations/analytics/cost_report` endpoint. 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. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.

  - `"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

- `exclude_deleted_users: optional boolean`

  If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.

  default: false

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

  Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/cost_report` endpoint. The `product`, `model`, `context_window`, `inference_geo`, and `speed` dimensions — and the time bucket, when `bucket_width` is set — count toward `limit`. `cost_type` and `token_type` do not: `cost_type` returns one row per cost component (tokens, web search, code execution); `token_type` returns one row per token type, each with `cost_type: "tokens"`; combining both returns the per-token-type rows plus the web-search and code-execution rows. A page can therefore contain more rows than `limit` when `cost_type` or `token_type` is requested.

  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`

  Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.

  default: 20, minimum: 1, maximum: 1000

- `models: optional array of string`

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

  maxItems: 100

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

  Sort direction. Defaults to `desc`.

  default: desc

  - `"asc"`

  - `"desc"`

- `order_by: optional "amount" or "list_amount"`

  Metric to rank actors by. Defaults to `amount`.

  default: amount

  - `"amount"`

  - `"list_amount"`

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

  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 BetaAnalyticsCostUsersItem`

  Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.

  - `actor: BetaAnalyticsUserActor`

    The user this row's usage or cost is attributed to. Always a `user_actor`.

    - `type: "user_actor"`

      Actor type. Always `"user_actor"`.

    - `deleted: boolean`

      True when the account has been deleted, or when the user is no longer a member of the organization or its associated organizations (for example, their membership was removed or they were deprovisioned via your identity provider). `email_address` stays populated for removed users and is null when the account has been deleted. `name` follows the rules described on that field. The `user_id` is still populated for reconciliation.

    - `email_address: string or null`

      The user's email address, including for users who are no longer members of the organization or its associated organizations. Null when the account has been deleted (check `deleted`) and for system-minted service accounts, which have no person's mailbox behind them (check `name`).

    - `name: string or null`

      The user's full name. Null when the user has not set a name. Returns `"Deleted User"` when the account itself has been deleted, or when the user is no longer a member of the organization or its associated organizations and the organization has chosen to hide the names of removed users. Otherwise, the name stays populated for removed users. Rows for system-minted service accounts render the service name (for example, `"Claude Security"` for usage by Anthropic's security-patching service) or null.

    - `user_id: string`

      Tagged user ID.

    - `email: string or null`

      **Deprecated**

      Deprecated: use `email_address`, which carries the same value.

  - `amount: string`

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

  - `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 breakdown; null when returning the combined total.

    - `"code_execution"`

    - `"tokens"`

    - `"web_search"`

  - `currency: string`

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

    default: USD

  - `ending_at: string or null`

    End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.

    format: date-time

  - `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"`

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/user_cost_report/list New page · 418 lines, new page

# Get Per-User Cost ## 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 Per-User Cost
url: https://platform.claude.com/docs/en/api/beta/organization/analytics/user_cost_report/list
---

# Get Per-User Cost

**GET** `/v1/organizations/analytics/user_cost_report`

Get per-user cost in USD across a date range.

Returns one row per user, ranked by spend. Use this to see which users
account for the most cost. Only cost attributable to a seat user is
included; for organization-wide totals including direct API-key and
automation traffic, use the bucketed
`/v1/organizations/analytics/cost_report` endpoint. 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. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.

  - `"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

- `exclude_deleted_users: optional boolean`

  If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.

  default: false

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

  Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/cost_report` endpoint. The `product`, `model`, `context_window`, `inference_geo`, and `speed` dimensions — and the time bucket, when `bucket_width` is set — count toward `limit`. `cost_type` and `token_type` do not: `cost_type` returns one row per cost component (tokens, web search, code execution); `token_type` returns one row per token type, each with `cost_type: "tokens"`; combining both returns the per-token-type rows plus the web-search and code-execution rows. A page can therefore contain more rows than `limit` when `cost_type` or `token_type` is requested.

  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`

  Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.

  default: 20, minimum: 1, maximum: 1000

- `models: optional array of string`

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

  maxItems: 100

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

  Sort direction. Defaults to `desc`.

  default: desc

  - `"asc"`

  - `"desc"`

- `order_by: optional "amount" or "list_amount"`

  Metric to rank actors by. Defaults to `amount`.

  default: amount

  - `"amount"`

  - `"list_amount"`

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

  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 BetaAnalyticsCostUsersItem`

  Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.

  - `actor: BetaAnalyticsUserActor`

    The user this row's usage or cost is attributed to. Always a `user_actor`.

    - `type: "user_actor"`

      Actor type. Always `"user_actor"`.

    - `deleted: boolean`

      True when the account has been deleted, or when the user is no longer a member of the organization or its associated organizations (for example, their membership was removed or they were deprovisioned via your identity provider). `email_address` stays populated for removed users and is null when the account has been deleted. `name` follows the rules described on that field. The `user_id` is still populated for reconciliation.

    - `email_address: string or null`

      The user's email address, including for users who are no longer members of the organization or its associated organizations. Null when the account has been deleted (check `deleted`) and for system-minted service accounts, which have no person's mailbox behind them (check `name`).

    - `name: string or null`

      The user's full name. Null when the user has not set a name. Returns `"Deleted User"` when the account itself has been deleted, or when the user is no longer a member of the organization or its associated organizations and the organization has chosen to hide the names of removed users. Otherwise, the name stays populated for removed users. Rows for system-minted service accounts render the service name (for example, `"Claude Security"` for usage by Anthropic's security-patching service) or null.

    - `user_id: string`

      Tagged user ID.

    - `email: string or null`

      **Deprecated**

      Deprecated: use `email_address`, which carries the same value.

  - `amount: string`

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

  - `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 breakdown; null when returning the combined total.

    - `"code_execution"`

    - `"tokens"`

    - `"web_search"`

  - `currency: string`

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

    default: USD

  - `ending_at: string or null`

    End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.

    format: date-time

  - `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"`

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/user_usage_report New page · 428 lines, new page

# User Usage Report ## Get Per-User Token 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: User Usage Report
url: https://platform.claude.com/docs/en/api/beta/organization/analytics/user_usage_report
---

# User Usage Report

## Get Per-User Token Usage

**GET** `/v1/organizations/analytics/user_usage_report`

Get per-user token usage across a date range.

Returns one row per user, ranked by the chosen token metric. Use this to
see which users consume the most tokens. Only usage attributable to a
seat user is included; for organization-wide totals including direct
API-key and automation traffic, use the bucketed
`/v1/organizations/analytics/usage_report` endpoint. 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. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.

  - `"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

- `exclude_deleted_users: optional boolean`

  If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.

  default: false

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

  Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/usage_report` endpoint. `limit` bounds (actor × time bucket × dimension) rows — with dimensions or `bucket_width` present, one actor may span several rows.

  maxItems: 100

  - `"claude_tag_category"`

  - `"claude_tag_user_id"`

  - `"context_window"`

  - `"inference_geo"`

  - `"model"`

  - `"product"`

  - `"rbac_group_id"`

  - `"slack_channel_id"`

  - `"speed"`

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

  Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.

  default: 20, minimum: 1, maximum: 1000

- `models: optional array of string`

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

  maxItems: 100

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

  Sort direction. Defaults to `desc`.

  default: desc

  - `"asc"`

  - `"desc"`

- `order_by: optional "output_tokens" or "requests" or "total_tokens" or "uncached_input_tokens"`

  Metric to rank actors by. Defaults to `total_tokens`.

  default: total_tokens

  - `"output_tokens"`

  - `"requests"`

  - `"total_tokens"`

  - `"uncached_input_tokens"`

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

  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 BetaAnalyticsUsageUsersItem`

  Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.

  - `actor: BetaAnalyticsUserActor`

    The user this row's usage or cost is attributed to. Always a `user_actor`.

    - `type: "user_actor"`

      Actor type. Always `"user_actor"`.

    - `deleted: boolean`

      True when the account has been deleted, or when the user is no longer a member of the organization or its associated organizations (for example, their membership was removed or they were deprovisioned via your identity provider). `email_address` stays populated for removed users and is null when the account has been deleted. `name` follows the rules described on that field. The `user_id` is still populated for reconciliation.

    - `email_address: string or null`

      The user's email address, including for users who are no longer members of the organization or its associated organizations. Null when the account has been deleted (check `deleted`) and for system-minted service accounts, which have no person's mailbox behind them (check `name`).

    - `name: string or null`

      The user's full name. Null when the user has not set a name. Returns `"Deleted User"` when the account itself has been deleted, or when the user is no longer a member of the organization or its associated organizations and the organization has chosen to hide the names of removed users. Otherwise, the name stays populated for removed users. Rows for system-minted service accounts render the service name (for example, `"Claude Security"` for usage by Anthropic's security-patching service) or null.

    - `user_id: string`

      Tagged user ID.

    - `email: string or null`

      **Deprecated**

      Deprecated: use `email_address`, which carries the same value.

  - `cache_creation: BetaCacheCreation`

    The number of input tokens for cache creation.

    - `ephemeral_1h_input_tokens: number`

      The number of input tokens used to create the 1 hour cache entry.

      default: 0, minimum: 0

    - `ephemeral_5m_input_tokens: number`

      The number of input tokens used to create the 5 minute cache entry.

      default: 0, minimum: 0

  - `cache_read_input_tokens: number`

    The number of input tokens read from the cache.

  - `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"`

  - `ending_at: string or null`

    End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.

    format: date-time

  - `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"`

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/user_usage_report/list New page · 426 lines, new page

# Get Per-User Token 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 Per-User Token Usage
url: https://platform.claude.com/docs/en/api/beta/organization/analytics/user_usage_report/list
---

# Get Per-User Token Usage

**GET** `/v1/organizations/analytics/user_usage_report`

Get per-user token usage across a date range.

Returns one row per user, ranked by the chosen token metric. Use this to
see which users consume the most tokens. Only usage attributable to a
seat user is included; for organization-wide totals including direct
API-key and automation traffic, use the bucketed
`/v1/organizations/analytics/usage_report` endpoint. 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. When set, each row's `starting_at` and `ending_at` are populated and one actor may span several rows (one per time bucket with usage). The time bucket counts toward `limit`, so one page can return multiple rows for the same actor. `ending_at` is required when `bucket_width` is set, and with `bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the full `[starting_at, ending_at)` range.

  - `"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

- `exclude_deleted_users: optional boolean`

  If true, omit rows for users who are deleted (`deleted: true`). A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.

  default: false

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

  Break each actor's row out by the given dimensions. Accepts the same values as the bucketed `/usage_report` endpoint. `limit` bounds (actor × time bucket × dimension) rows — with dimensions or `bucket_width` present, one actor may span several rows.

  maxItems: 100

  - `"claude_tag_category"`

  - `"claude_tag_user_id"`

  - `"context_window"`

  - `"inference_geo"`

  - `"model"`

  - `"product"`

  - `"rbac_group_id"`

  - `"slack_channel_id"`

  - `"speed"`

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

  Number of rows per page (1-1000, default 20). One row per actor unless `group_by[]` or `bucket_width` splits an actor across rows; `cost_type`/`token_type` fan-out rows (cost endpoint only) are the exception — they do not count toward this limit, so `data` can exceed it.

  default: 20, minimum: 1, maximum: 1000

- `models: optional array of string`

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

  maxItems: 100

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

  Sort direction. Defaults to `desc`.

  default: desc

  - `"asc"`

  - `"desc"`

- `order_by: optional "output_tokens" or "requests" or "total_tokens" or "uncached_input_tokens"`

  Metric to rank actors by. Defaults to `total_tokens`.

  default: total_tokens

  - `"output_tokens"`

  - `"requests"`

  - `"total_tokens"`

  - `"uncached_input_tokens"`

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

  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 BetaAnalyticsUsageUsersItem`

  Rows for this page, ranked by `order_by` in the `order` direction. One row per user, or several per user when `group_by[]` or `bucket_width` breaks that user's usage or cost out across rows. Rows split out by `cost_type` or `token_type` (cost endpoint only) stay adjacent and are ranked as one unit.

  - `actor: BetaAnalyticsUserActor`

    The user this row's usage or cost is attributed to. Always a `user_actor`.

    - `type: "user_actor"`

      Actor type. Always `"user_actor"`.

    - `deleted: boolean`

      True when the account has been deleted, or when the user is no longer a member of the organization or its associated organizations (for example, their membership was removed or they were deprovisioned via your identity provider). `email_address` stays populated for removed users and is null when the account has been deleted. `name` follows the rules described on that field. The `user_id` is still populated for reconciliation.

    - `email_address: string or null`

      The user's email address, including for users who are no longer members of the organization or its associated organizations. Null when the account has been deleted (check `deleted`) and for system-minted service accounts, which have no person's mailbox behind them (check `name`).

    - `name: string or null`

      The user's full name. Null when the user has not set a name. Returns `"Deleted User"` when the account itself has been deleted, or when the user is no longer a member of the organization or its associated organizations and the organization has chosen to hide the names of removed users. Otherwise, the name stays populated for removed users. Rows for system-minted service accounts render the service name (for example, `"Claude Security"` for usage by Anthropic's security-patching service) or null.

    - `user_id: string`

      Tagged user ID.

    - `email: string or null`

      **Deprecated**

      Deprecated: use `email_address`, which carries the same value.

  - `cache_creation: BetaCacheCreation`

    The number of input tokens for cache creation.

    - `ephemeral_1h_input_tokens: number`

      The number of input tokens used to create the 1 hour cache entry.

      default: 0, minimum: 0

    - `ephemeral_5m_input_tokens: number`

      The number of input tokens used to create the 5 minute cache entry.

      default: 0, minimum: 0

  - `cache_read_input_tokens: number`

    The number of input tokens read from the cache.

  - `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"`

  - `ending_at: string or null`

    End of the row's UTC time bucket (exclusive), as an RFC 3339 timestamp; equal to `starting_at` plus one `bucket_width`. Null unless `bucket_width` is set.

    format: date-time

  - `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"`

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/users Changed · +304 / -638 lines

## Domain types ### Beta User Activity

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

from line 73
7373 
7474### Returns
7575 
76- `BetaUserActivity object`
77 
78 Response for GET /v1/organizations/analytics/users.
79 
80 - `data: array of object`
81 
82 - `chat_metrics: object`
83 
84 Claude.ai activity metrics for a single user on a given day.
76- `data: array of BetaAnalyticsUserActivity`
77 
78 - `chat_metrics: BetaAnalyticsChatMetrics`
79 
80 Claude.ai activity metrics for a single user on a given day.
81 
82 - `connectors_used_count: number`
83 
84 Number of MCP connector invocations.
85 
86 - `distinct_artifacts_created_count: number`
87 
88 Number of distinct artifacts created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
89 
90 - `distinct_connectors_used_count: number or null`
91 
92 Distinct claude.ai connectors this user used. Excludes calls whose connector could not be identified and all calls from organizations with zero data retention. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
93 
94 - `distinct_conversation_count: number or null`
95 
96 Number of distinct conversations the user participated in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
97 
98 - `distinct_files_uploaded_count: number or null`
99 
100 Number of distinct files uploaded. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
101 
102 - `distinct_projects_created_count: number`
103 
104 Number of distinct projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
105 
106 - `distinct_projects_used_count: number or null`
107 
108 Number of distinct projects used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
109 
110 - `distinct_shared_artifacts_viewed_count: number or null`
111 
112 Number of distinct shared artifacts the user viewed. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
113 
114 - `distinct_skills_used_count: number or null`
115 
116 Number of distinct skills used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
117 
118 - `message_count: number`
119 
120 Number of messages sent
121 
122 - `shared_conversations_viewed_count: number`
123 
124 Number of times the user opened a shared conversation in a project
125 
126 - `thinking_message_count: number`
127 
128 Number of messages that used extended thinking
129 
130 - `claude_code_metrics: BetaAnalyticsClaudeCodeMetrics`
131 
132 Claude Code activity metrics for a single user on a given day.
133 
134 - `core_metrics: BetaAnalyticsCoreCodeMetrics`
135 
136 Core Claude Code activity metrics for a single user on a given day.
137 
138 - `artifacts_created_count: number`
139 
140 Number of artifacts created in Claude Code sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
141 
142 - `commit_count: number`
143 
144 Number of commits made via Claude Code
145 
146 - `distinct_session_count: number or null`
147 
148 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
149 
150 - `lines_of_code: BetaAnalyticsLinesOfCode`
151 
152 Lines of code added and removed via Claude Code.
153 
154 - `added_count: number`
155 
156 Lines of code added
157 
158 - `removed_count: number`
159 
160 Lines of code removed
161 
162 - `pull_request_count: number`
163 
164 Number of pull requests created via Claude Code
165 
166 - `tool_actions: BetaAnalyticsToolActions`
167 
168 Per-tool accepted/rejected counts for Claude Code file modification tools.
169 
170 - `edit_tool: BetaAnalyticsToolActionCounts`
171 
172 Accepted/rejected counts for a single Claude Code tool type.
173 
174 - `accepted_count: number`
175 
176 Number of tool proposals accepted
177 
178 - `rejected_count: number`
179 
180 Number of tool proposals rejected
181 
182 - `multi_edit_tool: BetaAnalyticsToolActionCounts`
183 
184 Accepted/rejected counts for a single Claude Code tool type.
185 
186 - `notebook_edit_tool: BetaAnalyticsToolActionCounts`
187 
188 Accepted/rejected counts for a single Claude Code tool type.
189 
190 - `write_tool: BetaAnalyticsToolActionCounts`
191 
192 Accepted/rejected counts for a single Claude Code tool type.
193 
194 - `cowork_metrics: BetaAnalyticsCoworkMetrics`
195 
196 Cowork activity metrics for a single user on a given day.
197 
198 - `action_count: number`
199 
200 Number of tool actions completed in Cowork sessions
201 
202 - `artifacts_created_count: number`
203 
204 Number of artifacts created in Cowork sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
205 
206 - `connectors_used_count: number`
207 
208 Total number of connector invocations in Cowork sessions
209 
210 - `dispatch_turn_count: number`
211 
212 Number of Dispatch (background agent) turns completed
213 
214 - `distinct_connectors_used_count: number or null`
215 
216 Number of distinct connectors used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
217 
218 - `distinct_session_count: number or null`
219 
220 Number of distinct Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
221 
222 - `distinct_skills_used_count: number or null`
223 
224 Number of distinct skills used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
225 
226 - `message_count: number`
227 
228 Number of messages sent in Cowork sessions
229 
230 - `skills_used_count: number`
231 
232 Total number of skill invocations in Cowork sessions
233 
234 - `distinct_plugins_used_count: optional number or null`
235 
236 Number of distinct plugins used in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
237 
238 - `edit_tool_count: optional number or null`
239 
240 Number of successful Edit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
241 
242 - `file_edit_count: optional number or null`
243 
244 Number of successful file-edit tool calls (Edit, MultiEdit, Write, NotebookEdit) in Cowork sessions. Null, never 0, while the file-edit metrics are not enabled for this organization.
245 
246 - `multi_edit_tool_count: optional number or null`
247 
248 Number of successful MultiEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
249 
250 - `notebook_edit_tool_count: optional number or null`
251 
252 Number of successful NotebookEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
253 
254 - `plugins_used_count: optional number or null`
255 
256 Total number of plugin invocations in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization.
257 
258 - `sessions_with_file_edits_count: optional number or null`
259 
260 Number of distinct Cowork sessions with at least one successful file-edit tool call. Null while the file-edit metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
261 
262 - `write_tool_count: optional number or null`
263 
264 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
265 
266 - `design_metrics: BetaAnalyticsDesignMetrics`
267 
268 Claude Design activity metrics for a single user on a given day.
269 
270 - `distinct_projects_created_count: number`
271 
272 Number of distinct Claude Design projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
273 
274 - `distinct_projects_used_count: number or null`
275 
276 Number of distinct Claude Design projects the user worked in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
277 
278 - `distinct_session_count: number or null`
279 
280 Number of distinct Claude Design sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
281 
282 - `message_count: number`
283 
284 Number of messages sent in Claude Design sessions
285 
286 - `office_metrics: BetaAnalyticsOfficeMetrics`
287 
288 Office Agent activity metrics for a single user on a given day, broken out by Office product.
289 
290 - `excel: BetaAnalyticsOfficeProductMetrics`
291 
292 Office Agent activity metrics for a single user on a given day within one Office product.
85293 
86294 - `connectors_used_count: number`
87295 
88 Number of MCP connector invocations.
89 
90 - `distinct_artifacts_created_count: number`
91 
92 Number of distinct artifacts created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
296 Number of MCP connector invocations
93297 
94298 - `distinct_connectors_used_count: number or null`
95299 
96 Distinct claude.ai connectors this user used. Excludes calls whose connector could not be identified and all calls from organizations with zero data retention. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
97 
98 - `distinct_conversation_count: number or null`
99 
100 Number of distinct conversations the user participated in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
101 
102 - `distinct_files_uploaded_count: number or null`
103 
104 Number of distinct files uploaded. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
105 
106 - `distinct_projects_created_count: number`
107 
108 Number of distinct projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
109 
110 - `distinct_projects_used_count: number or null`
111 
112 Number of distinct projects used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
113 
114 - `distinct_shared_artifacts_viewed_count: number or null`
115 
116 Number of distinct shared artifacts the user viewed. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
300 Number of distinct MCP connectors used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
301 
302 - `distinct_session_count: number or null`
303 
304 Number of distinct Office Agent sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
117305 
118306 - `distinct_skills_used_count: number or null`
119307 
from line 311
123311 
124312 Number of messages sent
125313 
126 - `shared_conversations_viewed_count: number`
127 
128 Number of times the user opened a shared conversation in a project
129 
130 - `thinking_message_count: number`
131 
132 Number of messages that used extended thinking
133 
134 - `claude_code_metrics: object`
135 
136 Claude Code activity metrics for a single user on a given day.
137 
138 - `core_metrics: object`
139 
140 Core Claude Code activity metrics for a single user on a given day.
141 
142 - `artifacts_created_count: number`
143 
144 Number of artifacts created in Claude Code sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
145 
146 - `commit_count: number`
147 
148 Number of commits made via Claude Code
149 
150 - `distinct_session_count: number or null`
151 
152 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
153 
154 - `lines_of_code: object`
155 
156 Lines of code added and removed via Claude Code.
157 
158 - `added_count: number`
159 
160 Lines of code added
161 
162 - `removed_count: number`
163 
164 Lines of code removed
165 
166 - `pull_request_count: number`
167 
168 Number of pull requests created via Claude Code
169 
170 - `tool_actions: object`
171 
172 Per-tool accepted/rejected counts for Claude Code file modification tools.
173 
174 - `edit_tool: BetaToolActionCounts`
175 
176 Accepted/rejected counts for a single Claude Code tool type.
177 
178 - `accepted_count: number`
179 
180 Number of tool proposals accepted
181 
182 - `rejected_count: number`
183 
184 Number of tool proposals rejected
185 
186 - `multi_edit_tool: BetaToolActionCounts`
187 
188 Accepted/rejected counts for a single Claude Code tool type.
189 
190 - `notebook_edit_tool: BetaToolActionCounts`
191 
192 Accepted/rejected counts for a single Claude Code tool type.
193 
194 - `write_tool: BetaToolActionCounts`
195 
196 Accepted/rejected counts for a single Claude Code tool type.
197 
198 - `cowork_metrics: object`
199 
200 Cowork activity metrics for a single user on a given day.
201 
202 - `action_count: number`
203 
204 Number of tool actions completed in Cowork sessions
205 
206 - `artifacts_created_count: number`
207 
208 Number of artifacts created in Cowork sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
209 
210 - `connectors_used_count: number`
211 
212 Total number of connector invocations in Cowork sessions
213 
214 - `dispatch_turn_count: number`
215 
216 Number of Dispatch (background agent) turns completed
217 
218 - `distinct_connectors_used_count: number or null`
219 
220 Number of distinct connectors used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
221 
222 - `distinct_session_count: number or null`
223 
224 Number of distinct Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
225 
226 - `distinct_skills_used_count: number or null`
227 
228 Number of distinct skills used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
229 
230 - `message_count: number`
231 
232 Number of messages sent in Cowork sessions
233 
234314 - `skills_used_count: number`
235315 
236 Total number of skill invocations in Cowork sessions
237 
238 - `distinct_plugins_used_count: optional number or null`
239 
240 Number of distinct plugins used in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
241 
242 - `edit_tool_count: optional number or null`
243 
244 Number of successful Edit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
245 
246 - `file_edit_count: optional number or null`
247 
248 Number of successful file-edit tool calls (Edit, MultiEdit, Write, NotebookEdit) in Cowork sessions. Null, never 0, while the file-edit metrics are not enabled for this organization.
249 
250 - `multi_edit_tool_count: optional number or null`
251 
252 Number of successful MultiEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
253 
254 - `notebook_edit_tool_count: optional number or null`
255 
256 Number of successful NotebookEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
257 
258 - `plugins_used_count: optional number or null`
259 
260 Total number of plugin invocations in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization.
261 
262 - `sessions_with_file_edits_count: optional number or null`
263 
264 Number of distinct Cowork sessions with at least one successful file-edit tool call. Null while the file-edit metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
265 
266 - `write_tool_count: optional number or null`
267 
268 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
269 
270 - `design_metrics: object`
271 
272 Claude Design activity metrics for a single user on a given day.
273 
274 - `distinct_projects_created_count: number`
275 
276 Number of distinct Claude Design projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
277 
278 - `distinct_projects_used_count: number or null`
279 
280 Number of distinct Claude Design projects the user worked in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
281 
282 - `distinct_session_count: number or null`
283 
284 Number of distinct Claude Design sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
285 
286 - `message_count: number`
287 
288 Number of messages sent in Claude Design sessions
289 
290 - `office_metrics: object`
291 
292 Office Agent activity metrics for a single user on a given day, broken out by Office product.
293 
294 - `excel: BetaOfficeProductMetrics`
295 
296 Office Agent activity metrics for a single user on a given day within one Office product.
297 
298 - `connectors_used_count: number`
299 
300 Number of MCP connector invocations
301 
302 - `distinct_connectors_used_count: number or null`
303 
304 Number of distinct MCP connectors used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
305 
306 - `distinct_session_count: number or null`
307 
308 Number of distinct Office Agent sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
309 
310 - `distinct_skills_used_count: number or null`
311 
312 Number of distinct skills used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
313 
314 - `message_count: number`
315 
316 Number of messages sent
317 
318 - `skills_used_count: number`
319 
320 Number of skill invocations
321 
322 - `outlook: BetaOfficeProductMetrics`
323 
324 Office Agent activity metrics for a single user on a given day within one Office product.
325 
326 - `powerpoint: BetaOfficeProductMetrics`
327 
328 Office Agent activity metrics for a single user on a given day within one Office product.
329 
330 - `word: BetaOfficeProductMetrics`
331 
332 Office Agent activity metrics for a single user on a given day within one Office product.
333 
334 - `science_metrics: object`
335 
336 Claude Science activity metrics for a single user on a given day.
337 
338 - `delegation_count: number`
339 
340 Number of delegations (handoffs to a specialized agent) in Claude Science sessions
341 
342 - `distinct_session_count: number or null`
343 
344 Number of distinct Claude Science sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
345 
346 - `message_count: number`
347 
348 Number of messages sent in Claude Science sessions
349 
350 - `remote_compute_job_count: number`
351 
352 Number of remote compute jobs launched from Claude Science sessions
353 
354 - `skills_used_count: number`
355 
356 Total number of skill invocations in Claude Science sessions
357 
358 - `web_search_count: number`
359 
360 Number of web searches performed
361 
362 - `distinct_user_count: optional number or null`
363 
364 Number of distinct active users represented by this row. Only set for grouped rollups (`group_by[]`); null for per-user rows. In date-range mode, recomputed as an exact distinct count of the group's active members over the requested window, never a sum of per-day values.
365 
366 - `last_activity_date: optional string or null`
367 
368 Most recent UTC day (YYYY-MM-DD) on which the user had any counted activity, within the requested window: equal to the requested `date` in single-day mode, and to the latest active day from `starting_date` (inclusive) to `ending_date` (exclusive) in date-range rollup mode — never a day earlier than the window start. On filtered requests (`filter[]`) only days matching the filter count: with `filter[]=rbac_group_id:{id}` it is the last day the user was active while a member of that group, consistent with the row's other metrics. On grouped (`group_by[]`) rows it is the latest day any member of the group was active (the requested `date` in single-day mode). Omitted from the response while last-activity reporting is not enabled for this organization.
369 
370 format: date
371 
372 - `rbac_group_id: optional string or null`
373 
374 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
375 
376 - `rbac_group_name: optional string or null`
377 
378 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.
379 
380 - `user: optional BetaAnalyticsUser or null`
381 
382 The user this row describes. Null on rows aggregated across users.
383 
384 - `type: "user"`
385 
386 Object type. Always `user`.
387 
388 default: user
389 
390 - `id: string`
391 
392 Tagged user identifier (e.g. `user_...`)
393 
394 - `email_address: string`
395 
396 Email address of the user
397 
398 - `next_page: string or null`
399 
400 Opaque cursor for the next page, or null if no more results
316 Number of skill invocations
317 
318 - `outlook: BetaAnalyticsOfficeProductMetrics`
319 
320 Office Agent activity metrics for a single user on a given day within one Office product.
321 
322 - `powerpoint: BetaAnalyticsOfficeProductMetrics`
323 
324 Office Agent activity metrics for a single user on a given day within one Office product.
325 
326 - `word: BetaAnalyticsOfficeProductMetrics`
327 
328 Office Agent activity metrics for a single user on a given day within one Office product.
329 
330 - `science_metrics: BetaAnalyticsScienceMetrics`
331 
332 Claude Science activity metrics for a single user on a given day.
333 
334 - `delegation_count: number`
335 
336 Number of delegations (handoffs to a specialized agent) in Claude Science sessions
337 
338 - `distinct_session_count: number or null`
339 
340 Number of distinct Claude Science sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
341 
342 - `message_count: number`
343 
344 Number of messages sent in Claude Science sessions
345 
346 - `remote_compute_job_count: number`
347 
348 Number of remote compute jobs launched from Claude Science sessions
349 
350 - `skills_used_count: number`
351 
352 Total number of skill invocations in Claude Science sessions
353 
354 - `web_search_count: number`
355 
356 Number of web searches performed
357 
358 - `distinct_user_count: optional number or null`
359 
360 Number of distinct active users represented by this row. Only set for grouped rollups (`group_by[]`); null for per-user rows. In date-range mode, recomputed as an exact distinct count of the group's active members over the requested window, never a sum of per-day values.
361 
362 - `last_activity_date: optional string or null`
363 
364 Most recent UTC day (YYYY-MM-DD) on which the user had any counted activity, within the requested window: equal to the requested `date` in single-day mode, and to the latest active day from `starting_date` (inclusive) to `ending_date` (exclusive) in date-range rollup mode — never a day earlier than the window start. On filtered requests (`filter[]`) only days matching the filter count: with `filter[]=rbac_group_id:{id}` it is the last day the user was active while a member of that group, consistent with the row's other metrics. On grouped (`group_by[]`) rows it is the latest day any member of the group was active (the requested `date` in single-day mode). Omitted from the response while last-activity reporting is not enabled for this organization.
365 
366 format: date
367 
368 - `rbac_group_id: optional string or null`
369 
370 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
371 
372 - `rbac_group_name: optional string or null`
373 
374 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.
375 
376 - `user: optional BetaAnalyticsUser or null`
377 
378 The user this row describes. Null on rows aggregated across users.
379 
380 - `type: "user"`
381 
382 Object type. Always `user`.
383 
384 default: user
385 
386 - `id: string`
387 
388 Tagged user identifier (e.g. `user_...`)
389 
390 - `email_address: string`
391 
392 Email address of the user
393 
394- `next_page: string or null`
395 
396 Opaque cursor for the next page, or null if no more results
401397 
402398### Example
403399 
from line 534
538534 "next_page": "next_page"
539535}
540536```
541 
542## Domain types
543 
544### Beta User Activity
545 
546- `BetaUserActivity object`
547 
548 Response for GET /v1/organizations/analytics/users.
549 
550 - `data: array of object`
551 
552 - `chat_metrics: object`
553 
554 Claude.ai activity metrics for a single user on a given day.
555 
556 - `connectors_used_count: number`
557 
558 Number of MCP connector invocations.
559 
560 - `distinct_artifacts_created_count: number`
561 
562 Number of distinct artifacts created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
563 
564 - `distinct_connectors_used_count: number or null`
565 
566 Distinct claude.ai connectors this user used. Excludes calls whose connector could not be identified and all calls from organizations with zero data retention. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
567 
568 - `distinct_conversation_count: number or null`
569 
570 Number of distinct conversations the user participated in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
571 
572 - `distinct_files_uploaded_count: number or null`
573 
574 Number of distinct files uploaded. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
575 
576 - `distinct_projects_created_count: number`
577 
578 Number of distinct projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
579 
580 - `distinct_projects_used_count: number or null`
581 
582 Number of distinct projects used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
583 
584 - `distinct_shared_artifacts_viewed_count: number or null`
585 
586 Number of distinct shared artifacts the user viewed. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
587 
588 - `distinct_skills_used_count: number or null`
589 
590 Number of distinct skills used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
591 
592 - `message_count: number`
593 
594 Number of messages sent
595 
596 - `shared_conversations_viewed_count: number`
597 
598 Number of times the user opened a shared conversation in a project
599 
600 - `thinking_message_count: number`
601 
602 Number of messages that used extended thinking
603 
604 - `claude_code_metrics: object`
605 
606 Claude Code activity metrics for a single user on a given day.
607 
608 - `core_metrics: object`
609 
610 Core Claude Code activity metrics for a single user on a given day.
611 
612 - `artifacts_created_count: number`
613 
614 Number of artifacts created in Claude Code sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
615 
616 - `commit_count: number`
617 
618 Number of commits made via Claude Code
619 
620 - `distinct_session_count: number or null`
621 
622 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
623 
624 - `lines_of_code: object`
625 
626 Lines of code added and removed via Claude Code.
627 
628 - `added_count: number`
629 
630 Lines of code added
631 
632 - `removed_count: number`
633 
634 Lines of code removed
635 
636 - `pull_request_count: number`
637 
638 Number of pull requests created via Claude Code
639 
640 - `tool_actions: object`
641 
642 Per-tool accepted/rejected counts for Claude Code file modification tools.
643 
644 - `edit_tool: BetaToolActionCounts`
645 
646 Accepted/rejected counts for a single Claude Code tool type.
647 
648 - `accepted_count: number`
649 
650 Number of tool proposals accepted
651 
652 - `rejected_count: number`
653 
654 Number of tool proposals rejected
655 
656 - `multi_edit_tool: BetaToolActionCounts`
657 
658 Accepted/rejected counts for a single Claude Code tool type.
659 
660 - `notebook_edit_tool: BetaToolActionCounts`
661 
662 Accepted/rejected counts for a single Claude Code tool type.
663 
664 - `write_tool: BetaToolActionCounts`
665 
666 Accepted/rejected counts for a single Claude Code tool type.
667 
668 - `cowork_metrics: object`
669 
670 Cowork activity metrics for a single user on a given day.
671 
672 - `action_count: number`
673 
674 Number of tool actions completed in Cowork sessions
675 
676 - `artifacts_created_count: number`
677 
678 Number of artifacts created in Cowork sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
679 
680 - `connectors_used_count: number`
681 
682 Total number of connector invocations in Cowork sessions
683 
684 - `dispatch_turn_count: number`
685 
686 Number of Dispatch (background agent) turns completed
687 
688 - `distinct_connectors_used_count: number or null`
689 
690 Number of distinct connectors used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
691 
692 - `distinct_session_count: number or null`
693 
694 Number of distinct Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
695 
696 - `distinct_skills_used_count: number or null`
697 
698 Number of distinct skills used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
699 
700 - `message_count: number`
701 
702 Number of messages sent in Cowork sessions
703 
704 - `skills_used_count: number`
705 
706 Total number of skill invocations in Cowork sessions
707 
708 - `distinct_plugins_used_count: optional number or null`
709 
710 Number of distinct plugins used in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
711 
712 - `edit_tool_count: optional number or null`
713 
714 Number of successful Edit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
715 
716 - `file_edit_count: optional number or null`
717 
718 Number of successful file-edit tool calls (Edit, MultiEdit, Write, NotebookEdit) in Cowork sessions. Null, never 0, while the file-edit metrics are not enabled for this organization.
719 
720 - `multi_edit_tool_count: optional number or null`
721 
722 Number of successful MultiEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
723 
724 - `notebook_edit_tool_count: optional number or null`
725 
726 Number of successful NotebookEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
727 
728 - `plugins_used_count: optional number or null`
729 
730 Total number of plugin invocations in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization.
731 
732 - `sessions_with_file_edits_count: optional number or null`
733 
734 Number of distinct Cowork sessions with at least one successful file-edit tool call. Null while the file-edit metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
735 
736 - `write_tool_count: optional number or null`
737 
738 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
739 
740 - `design_metrics: object`
741 
742 Claude Design activity metrics for a single user on a given day.
743 
744 - `distinct_projects_created_count: number`
745 
746 Number of distinct Claude Design projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
747 
748 - `distinct_projects_used_count: number or null`
749 
750 Number of distinct Claude Design projects the user worked in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
751 
752 - `distinct_session_count: number or null`
753 
754 Number of distinct Claude Design sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
755 
756 - `message_count: number`
757 
758 Number of messages sent in Claude Design sessions
759 
760 - `office_metrics: object`
761 
762 Office Agent activity metrics for a single user on a given day, broken out by Office product.
763 
764 - `excel: BetaOfficeProductMetrics`
765 
766 Office Agent activity metrics for a single user on a given day within one Office product.
767 
768 - `connectors_used_count: number`
769 
770 Number of MCP connector invocations
771 
772 - `distinct_connectors_used_count: number or null`
773 
774 Number of distinct MCP connectors used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
775 
776 - `distinct_session_count: number or null`
777 
778 Number of distinct Office Agent sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
779 
780 - `distinct_skills_used_count: number or null`
781 
782 Number of distinct skills used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
783 
784 - `message_count: number`
785 
786 Number of messages sent
787 
788 - `skills_used_count: number`
789 
790 Number of skill invocations
791 
792 - `outlook: BetaOfficeProductMetrics`
793 
794 Office Agent activity metrics for a single user on a given day within one Office product.
795 
796 - `powerpoint: BetaOfficeProductMetrics`
797 
798 Office Agent activity metrics for a single user on a given day within one Office product.
799 
800 - `word: BetaOfficeProductMetrics`
801 
802 Office Agent activity metrics for a single user on a given day within one Office product.
803 
804 - `science_metrics: object`
805 
806 Claude Science activity metrics for a single user on a given day.
807 
808 - `delegation_count: number`
809 
810 Number of delegations (handoffs to a specialized agent) in Claude Science sessions
811 
812 - `distinct_session_count: number or null`
813 
814 Number of distinct Claude Science sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
815 
816 - `message_count: number`
817 
818 Number of messages sent in Claude Science sessions
819 
820 - `remote_compute_job_count: number`
821 
822 Number of remote compute jobs launched from Claude Science sessions
823 
824 - `skills_used_count: number`
825 
826 Total number of skill invocations in Claude Science sessions
827 
828 - `web_search_count: number`
829 
830 Number of web searches performed
831 
832 - `distinct_user_count: optional number or null`
833 
834 Number of distinct active users represented by this row. Only set for grouped rollups (`group_by[]`); null for per-user rows. In date-range mode, recomputed as an exact distinct count of the group's active members over the requested window, never a sum of per-day values.
835 
836 - `last_activity_date: optional string or null`
837 
838 Most recent UTC day (YYYY-MM-DD) on which the user had any counted activity, within the requested window: equal to the requested `date` in single-day mode, and to the latest active day from `starting_date` (inclusive) to `ending_date` (exclusive) in date-range rollup mode — never a day earlier than the window start. On filtered requests (`filter[]`) only days matching the filter count: with `filter[]=rbac_group_id:{id}` it is the last day the user was active while a member of that group, consistent with the row's other metrics. On grouped (`group_by[]`) rows it is the latest day any member of the group was active (the requested `date` in single-day mode). Omitted from the response while last-activity reporting is not enabled for this organization.
839 
840 format: date
841 
842 - `rbac_group_id: optional string or null`
843 
844 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
845 
846 - `rbac_group_name: optional string or null`
847 
848 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.
849 
850 - `user: optional BetaAnalyticsUser or null`
851 
852 The user this row describes. Null on rows aggregated across users.
853 
854 - `type: "user"`
855 
856 Object type. Always `user`.
857 
858 default: user
859 
860 - `id: string`
861 
862 Tagged user identifier (e.g. `user_...`)
863 
864 - `email_address: string`
865 
866 Email address of the user
867 
868 - `next_page: string or null`
869 
870 Opaque cursor for the next page, or null if no more results
871537 

api/beta/organization/analytics/users/list Changed · +304 / -308 lines

from line 71
7171 
7272## Returns
7373 
74- `BetaUserActivity object`
74- `data: array of BetaAnalyticsUserActivity`
7575 
76 Response for GET /v1/organizations/analytics/users.
76 - `chat_metrics: BetaAnalyticsChatMetrics`
7777 
78 - `data: array of object`
78 Claude.ai activity metrics for a single user on a given day.
7979 
80 - `chat_metrics: object`
80 - `connectors_used_count: number`
8181 
82 Claude.ai activity metrics for a single user on a given day.
82 Number of MCP connector invocations.
8383 
84 - `connectors_used_count: number`
84 - `distinct_artifacts_created_count: number`
8585 
86 Number of MCP connector invocations.
86 Number of distinct artifacts created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
8787 
88 - `distinct_artifacts_created_count: number`
88 - `distinct_connectors_used_count: number or null`
8989 
90 Number of distinct artifacts created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
90 Distinct claude.ai connectors this user used. Excludes calls whose connector could not be identified and all calls from organizations with zero data retention. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9191 
92 - `distinct_connectors_used_count: number or null`
92 - `distinct_conversation_count: number or null`
9393 
94 Distinct claude.ai connectors this user used. Excludes calls whose connector could not be identified and all calls from organizations with zero data retention. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
94 Number of distinct conversations the user participated in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9595 
96 - `distinct_conversation_count: number or null`
96 - `distinct_files_uploaded_count: number or null`
9797 
98 Number of distinct conversations the user participated in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
98 Number of distinct files uploaded. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
9999 
100 - `distinct_files_uploaded_count: number or null`
100 - `distinct_projects_created_count: number`
101101 
102 Number of distinct files uploaded. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
102 Number of distinct projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
103103 
104 - `distinct_projects_created_count: number`
104 - `distinct_projects_used_count: number or null`
105105 
106 Number of distinct projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
106 Number of distinct projects used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
107107 
108 - `distinct_projects_used_count: number or null`
108 - `distinct_shared_artifacts_viewed_count: number or null`
109109 
110 Number of distinct projects used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
110 Number of distinct shared artifacts the user viewed. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
111111 
112 - `distinct_shared_artifacts_viewed_count: number or null`
112 - `distinct_skills_used_count: number or null`
113113 
114 Number of distinct shared artifacts the user viewed. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
114 Number of distinct skills used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
115115 
116 - `distinct_skills_used_count: number or null`
116 - `message_count: number`
117117 
118 Number of distinct skills used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
118 Number of messages sent
119119 
120 - `message_count: number`
120 - `shared_conversations_viewed_count: number`
121121 
122 Number of messages sent
122 Number of times the user opened a shared conversation in a project
123123 
124 - `shared_conversations_viewed_count: number`
124 - `thinking_message_count: number`
125125 
126 Number of times the user opened a shared conversation in a project
126 Number of messages that used extended thinking
127127 
128 - `thinking_message_count: number`
128 - `claude_code_metrics: BetaAnalyticsClaudeCodeMetrics`
129129 
130 Number of messages that used extended thinking
130 Claude Code activity metrics for a single user on a given day.
131131 
132 - `claude_code_metrics: object`
132 - `core_metrics: BetaAnalyticsCoreCodeMetrics`
133133 
134 Claude Code activity metrics for a single user on a given day.
134 Core Claude Code activity metrics for a single user on a given day.
135135 
136 - `core_metrics: object`
136 - `artifacts_created_count: number`
137137 
138 Core Claude Code activity metrics for a single user on a given day.
138 Number of artifacts created in Claude Code sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
139139 
140 - `artifacts_created_count: number`
140 - `commit_count: number`
141141 
142 Number of artifacts created in Claude Code sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
142 Number of commits made via Claude Code
143143 
144 - `commit_count: number`
144 - `distinct_session_count: number or null`
145145 
146 Number of commits made via Claude Code
146 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
147147 
148 - `distinct_session_count: number or null`
148 - `lines_of_code: BetaAnalyticsLinesOfCode`
149149 
150 Number of distinct Claude Code sessions. On aggregated rows and in date-range mode: summed per-day distinct counts. A session essentially never spans a UTC day, so the sum is in practice the true distinct count.
150 Lines of code added and removed via Claude Code.
151151 
152 - `lines_of_code: object`
152 - `added_count: number`
153153 
154 Lines of code added and removed via Claude Code.
154 Lines of code added
155155 
156 - `added_count: number`
156 - `removed_count: number`
157157 
158 Lines of code added
158 Lines of code removed
159159 
160 - `removed_count: number`
160 - `pull_request_count: number`
161161 
162 Lines of code removed
162 Number of pull requests created via Claude Code
163163 
164 - `pull_request_count: number`
164 - `tool_actions: BetaAnalyticsToolActions`
165165 
166 Number of pull requests created via Claude Code
166 Per-tool accepted/rejected counts for Claude Code file modification tools.
167167 
168 - `tool_actions: object`
168 - `edit_tool: BetaAnalyticsToolActionCounts`
169169 
170 Per-tool accepted/rejected counts for Claude Code file modification tools.
170 Accepted/rejected counts for a single Claude Code tool type.
171171 
172 - `edit_tool: BetaToolActionCounts`
172 - `accepted_count: number`
173173 
174 Accepted/rejected counts for a single Claude Code tool type.
174 Number of tool proposals accepted
175175 
176 - `accepted_count: number`
176 - `rejected_count: number`
177177 
178 Number of tool proposals accepted
178 Number of tool proposals rejected
179179 
180 - `rejected_count: number`
180 - `multi_edit_tool: BetaAnalyticsToolActionCounts`
181181 
182 Number of tool proposals rejected
182 Accepted/rejected counts for a single Claude Code tool type.
183183 
184 - `multi_edit_tool: BetaToolActionCounts`
184 - `notebook_edit_tool: BetaAnalyticsToolActionCounts`
185185 
186 Accepted/rejected counts for a single Claude Code tool type.
186 Accepted/rejected counts for a single Claude Code tool type.
187187 
188 - `notebook_edit_tool: BetaToolActionCounts`
188 - `write_tool: BetaAnalyticsToolActionCounts`
189189 
190 Accepted/rejected counts for a single Claude Code tool type.
190 Accepted/rejected counts for a single Claude Code tool type.
191191 
192 - `write_tool: BetaToolActionCounts`
192 - `cowork_metrics: BetaAnalyticsCoworkMetrics`
193193 
194 Accepted/rejected counts for a single Claude Code tool type.
194 Cowork activity metrics for a single user on a given day.
195195 
196 - `cowork_metrics: object`
196 - `action_count: number`
197197 
198 Cowork activity metrics for a single user on a given day.
198 Number of tool actions completed in Cowork sessions
199199 
200 - `action_count: number`
200 - `artifacts_created_count: number`
201201 
202 Number of tool actions completed in Cowork sessions
202 Number of artifacts created in Cowork sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
203203 
204 - `artifacts_created_count: number`
204 - `connectors_used_count: number`
205205 
206 Number of artifacts created in Cowork sessions: an artifact counts once, on the day a session first saves it. Counted from 2026-08-17; 0 on earlier days. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
206 Total number of connector invocations in Cowork sessions
207207 
208 - `connectors_used_count: number`
208 - `dispatch_turn_count: number`
209209 
210 Total number of connector invocations in Cowork sessions
210 Number of Dispatch (background agent) turns completed
211211 
212 - `dispatch_turn_count: number`
212 - `distinct_connectors_used_count: number or null`
213213 
214 Number of Dispatch (background agent) turns completed
214 Number of distinct connectors used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
215215 
216 - `distinct_connectors_used_count: number or null`
216 - `distinct_session_count: number or null`
217217 
218 Number of distinct connectors used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
218 Number of distinct Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
219219 
220 - `distinct_session_count: number or null`
220 - `distinct_skills_used_count: number or null`
221221 
222 Number of distinct Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
222 Number of distinct skills used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
223223 
224 - `distinct_skills_used_count: number or null`
224 - `message_count: number`
225225 
226 Number of distinct skills used in Cowork sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
226 Number of messages sent in Cowork sessions
227227 
228 - `message_count: number`
228 - `skills_used_count: number`
229229 
230 Number of messages sent in Cowork sessions
230 Total number of skill invocations in Cowork sessions
231231 
232 - `skills_used_count: number`
232 - `distinct_plugins_used_count: optional number or null`
233233 
234 Total number of skill invocations in Cowork sessions
234 Number of distinct plugins used in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
235235 
236 - `distinct_plugins_used_count: optional number or null`
236 - `edit_tool_count: optional number or null`
237237 
238 Number of distinct plugins used in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
238 Number of successful Edit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
239239 
240 - `edit_tool_count: optional number or null`
240 - `file_edit_count: optional number or null`
241241 
242 Number of successful Edit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
242 Number of successful file-edit tool calls (Edit, MultiEdit, Write, NotebookEdit) in Cowork sessions. Null, never 0, while the file-edit metrics are not enabled for this organization.
243243 
244 - `file_edit_count: optional number or null`
244 - `multi_edit_tool_count: optional number or null`
245245 
246 Number of successful file-edit tool calls (Edit, MultiEdit, Write, NotebookEdit) in Cowork sessions. Null, never 0, while the file-edit metrics are not enabled for this organization.
246 Number of successful MultiEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
247247 
248 - `multi_edit_tool_count: optional number or null`
248 - `notebook_edit_tool_count: optional number or null`
249249 
250 Number of successful MultiEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
250 Number of successful NotebookEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
251251 
252 - `notebook_edit_tool_count: optional number or null`
252 - `plugins_used_count: optional number or null`
253253 
254 Number of successful NotebookEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
254 Total number of plugin invocations in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization.
255255 
256 - `plugins_used_count: optional number or null`
256 - `sessions_with_file_edits_count: optional number or null`
257257 
258 Total number of plugin invocations in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization.
258 Number of distinct Cowork sessions with at least one successful file-edit tool call. Null while the file-edit metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
259259 
260 - `sessions_with_file_edits_count: optional number or null`
260 - `write_tool_count: optional number or null`
261261 
262 Number of distinct Cowork sessions with at least one successful file-edit tool call. Null while the file-edit metrics are not enabled for this organization. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
262 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
263263 
264 - `write_tool_count: optional number or null`
264 - `design_metrics: BetaAnalyticsDesignMetrics`
265265 
266 Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.
266 Claude Design activity metrics for a single user on a given day.
267267 
268 - `design_metrics: object`
268 - `distinct_projects_created_count: number`
269269 
270 Claude Design activity metrics for a single user on a given day.
270 Number of distinct Claude Design projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
271271 
272 - `distinct_projects_created_count: number`
272 - `distinct_projects_used_count: number or null`
273273 
274 Number of distinct Claude Design projects created. Exact in date-range mode: a creation belongs to exactly one day, so the per-day counts never overlap and their sum over the window is the exact count of distinct creations in it.
274 Number of distinct Claude Design projects the user worked in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
275275 
276 - `distinct_projects_used_count: number or null`
276 - `distinct_session_count: number or null`
277277 
278 Number of distinct Claude Design projects the user worked in. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
278 Number of distinct Claude Design sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
279279 
280 - `distinct_session_count: number or null`
280 - `message_count: number`
281281 
282 Number of distinct Claude Design sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
282 Number of messages sent in Claude Design sessions
283283 
284 - `message_count: number`
284 - `office_metrics: BetaAnalyticsOfficeMetrics`
285285 
286 Number of messages sent in Claude Design sessions
286 Office Agent activity metrics for a single user on a given day, broken out by Office product.
287287 
288 - `office_metrics: object`
288 - `excel: BetaAnalyticsOfficeProductMetrics`
289289 
290 Office Agent activity metrics for a single user on a given day, broken out by Office product.
290 Office Agent activity metrics for a single user on a given day within one Office product.
291291 
292 - `excel: BetaOfficeProductMetrics`
292 - `connectors_used_count: number`
293293 
294 Office Agent activity metrics for a single user on a given day within one Office product.
294 Number of MCP connector invocations
295295 
296 - `connectors_used_count: number`
296 - `distinct_connectors_used_count: number or null`
297297 
298 Number of MCP connector invocations
298 Number of distinct MCP connectors used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
299299 
300 - `distinct_connectors_used_count: number or null`
300 - `distinct_session_count: number or null`
301301 
302 Number of distinct MCP connectors used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
302 Number of distinct Office Agent sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
303303 
304 - `distinct_session_count: number or null`
304 - `distinct_skills_used_count: number or null`
305305 
306 Number of distinct Office Agent sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
306 Number of distinct skills used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
307307 
308 - `distinct_skills_used_count: number or null`
308 - `message_count: number`
309309 
310 Number of distinct skills used. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
310 Number of messages sent
311311 
312 - `message_count: number`
312 - `skills_used_count: number`
313313 
314 Number of messages sent
314 Number of skill invocations
315315 
316 - `skills_used_count: number`
316 - `outlook: BetaAnalyticsOfficeProductMetrics`
317317 
318 Number of skill invocations
318 Office Agent activity metrics for a single user on a given day within one Office product.
319319 
320 - `outlook: BetaOfficeProductMetrics`
320 - `powerpoint: BetaAnalyticsOfficeProductMetrics`
321321 
322 Office Agent activity metrics for a single user on a given day within one Office product.
322 Office Agent activity metrics for a single user on a given day within one Office product.
323323 
324 - `powerpoint: BetaOfficeProductMetrics`
324 - `word: BetaAnalyticsOfficeProductMetrics`
325325 
326 Office Agent activity metrics for a single user on a given day within one Office product.
326 Office Agent activity metrics for a single user on a given day within one Office product.
327327 
328 - `word: BetaOfficeProductMetrics`
328 - `science_metrics: BetaAnalyticsScienceMetrics`
329329 
330 Office Agent activity metrics for a single user on a given day within one Office product.
330 Claude Science activity metrics for a single user on a given day.
331331 
332 - `science_metrics: object`
332 - `delegation_count: number`
333333 
334 Claude Science activity metrics for a single user on a given day.
334 Number of delegations (handoffs to a specialized agent) in Claude Science sessions
335335 
336 - `delegation_count: number`
336 - `distinct_session_count: number or null`
337337 
338 Number of delegations (handoffs to a specialized agent) in Claude Science sessions
338 Number of distinct Claude Science sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
339339 
340 - `distinct_session_count: number or null`
340 - `message_count: number`
341341 
342 Number of distinct Claude Science sessions. Approximate (HLL, typical error <2%) in date-range mode. Null on aggregated rows where a distinct count cannot be computed.
342 Number of messages sent in Claude Science sessions
343343 
344 - `message_count: number`
344 - `remote_compute_job_count: number`
345345 
346 Number of messages sent in Claude Science sessions
346 Number of remote compute jobs launched from Claude Science sessions
347347 
348 - `remote_compute_job_count: number`
348 - `skills_used_count: number`
349349 
350 Number of remote compute jobs launched from Claude Science sessions
350 Total number of skill invocations in Claude Science sessions
351351 
352 - `skills_used_count: number`
352 - `web_search_count: number`
353353 
354 Total number of skill invocations in Claude Science sessions
354 Number of web searches performed
355355 
356 - `web_search_count: number`
356 - `distinct_user_count: optional number or null`
357357 
358 Number of web searches performed
358 Number of distinct active users represented by this row. Only set for grouped rollups (`group_by[]`); null for per-user rows. In date-range mode, recomputed as an exact distinct count of the group's active members over the requested window, never a sum of per-day values.
359359 
360 - `distinct_user_count: optional number or null`
360 - `last_activity_date: optional string or null`
361361 
362 Number of distinct active users represented by this row. Only set for grouped rollups (`group_by[]`); null for per-user rows. In date-range mode, recomputed as an exact distinct count of the group's active members over the requested window, never a sum of per-day values.
362 Most recent UTC day (YYYY-MM-DD) on which the user had any counted activity, within the requested window: equal to the requested `date` in single-day mode, and to the latest active day from `starting_date` (inclusive) to `ending_date` (exclusive) in date-range rollup mode — never a day earlier than the window start. On filtered requests (`filter[]`) only days matching the filter count: with `filter[]=rbac_group_id:{id}` it is the last day the user was active while a member of that group, consistent with the row's other metrics. On grouped (`group_by[]`) rows it is the latest day any member of the group was active (the requested `date` in single-day mode). Omitted from the response while last-activity reporting is not enabled for this organization.
363363 
364 - `last_activity_date: optional string or null`
364 format: date
365365 
366 Most recent UTC day (YYYY-MM-DD) on which the user had any counted activity, within the requested window: equal to the requested `date` in single-day mode, and to the latest active day from `starting_date` (inclusive) to `ending_date` (exclusive) in date-range rollup mode — never a day earlier than the window start. On filtered requests (`filter[]`) only days matching the filter count: with `filter[]=rbac_group_id:{id}` it is the last day the user was active while a member of that group, consistent with the row's other metrics. On grouped (`group_by[]`) rows it is the latest day any member of the group was active (the requested `date` in single-day mode). Omitted from the response while last-activity reporting is not enabled for this organization.
366 - `rbac_group_id: optional string or null`
367367 
368 format: date
368 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
369369 
370 - `rbac_group_id: optional string or null`
370 - `rbac_group_name: optional string or null`
371371 
372 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
372 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.
373373 
374 - `rbac_group_name: optional string or null`
374 - `user: optional BetaAnalyticsUser or null`
375375 
376 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.
376 The user this row describes. Null on rows aggregated across users.
377377 
378 - `user: optional BetaAnalyticsUser or null`
378 - `type: "user"`
379379 
380 The user this row describes. Null on rows aggregated across users.
380 Object type. Always `user`.
381381 
382 - `type: "user"`
382 default: user
383383 
384 Object type. Always `user`.
384 - `id: string`
385385 
386 default: user
386 Tagged user identifier (e.g. `user_...`)
387387 
388 - `id: string`
388 - `email_address: string`
389389 
390 Tagged user identifier (e.g. `user_...`)
390 Email address of the user
391391 
392 - `email_address: string`
392- `next_page: string or null`
393393 
394 Email address of the user
395 
396 - `next_page: string or null`
397 
398 Opaque cursor for the next page, or null if no more results
394 Opaque cursor for the next page, or null if no more results
399395 
400396## Example
401397 

api/beta/organization/cost_report Changed · +9 / -7 lines

from line 156
156156 
157157 - `"ce-plugins-2026-09-01"`
158158 
159 - `"spend-limit-reads-2026-09-26"`
160 
159161### Returns
160162 
161163- `BetaCostReport object`
from line 180
178180 
179181 Cost amount in lowest currency units (e.g. cents) as a decimal string. For example, `"123.45"` in `"USD"` represents `$1.23`.
180182 
181 - `context_window: "0-200k" or "200k-1M" or null`
183 - `context_window: BetaAnalyticsContextWindow or null`
182184 
183185 Input context window used. `null` if not grouping by description or for non-token costs.
184186 
from line 208
206208 
207209 Description of the cost item. `null` if not grouping by description.
208210 
209 - `inference_geo: "global" or "not_available" or "us" or null`
211 - `inference_geo: BetaAnalyticsInferenceGeoFilter or null`
210212 
211213 Inference geo used matching requests' `inference_geo` parameter if set, otherwise the workspace's `default_inference_geo`.
212214 For models that do not support specifying `inference_geo` the value is `"not_available"`. Always `null` if not grouping by inference geo.
from line 231
229231 
230232 - `"standard"`
231233 
232 - `token_type: "cache_creation.ephemeral_1h_input_tokens" or "cache_creation.ephemeral_5m_input_tokens" or "cache_read_input_tokens" or 2 more or null`
234 - `token_type: BetaAnalyticsTokenType or null`
233235 
234236 Type of token. `null` if not grouping by description or for non-token costs.
235237 
from line 288
286288 "inference_geo": "global",
287289 "model": "claude-opus-5",
288290 "service_tier": "standard",
289 "token_type": "uncached_input_tokens",
291 "token_type": "cache_creation.ephemeral_1h_input_tokens",
290292 "workspace_id": "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
291293 }
292294 ],
from line 324
322324 
323325 Cost amount in lowest currency units (e.g. cents) as a decimal string. For example, `"123.45"` in `"USD"` represents `$1.23`.
324326 
325 - `context_window: "0-200k" or "200k-1M" or null`
327 - `context_window: BetaAnalyticsContextWindow or null`
326328 
327329 Input context window used. `null` if not grouping by description or for non-token costs.
328330 
from line 352
350352 
351353 Description of the cost item. `null` if not grouping by description.
352354 
353 - `inference_geo: "global" or "not_available" or "us" or null`
355 - `inference_geo: BetaAnalyticsInferenceGeoFilter or null`
354356 
355357 Inference geo used matching requests' `inference_geo` parameter if set, otherwise the workspace's `default_inference_geo`.
356358 For models that do not support specifying `inference_geo` the value is `"not_available"`. Always `null` if not grouping by inference geo.
from line 375
373375 
374376 - `"standard"`
375377 
376 - `token_type: "cache_creation.ephemeral_1h_input_tokens" or "cache_creation.ephemeral_5m_input_tokens" or "cache_read_input_tokens" or 2 more or null`
378 - `token_type: BetaAnalyticsTokenType or null`
377379 
378380 Type of token. `null` if not grouping by description or for non-token costs.
379381 

api/beta/organization/cost_report/retrieve Changed · +6 / -4 lines

from line 154
154154 
155155 - `"ce-plugins-2026-09-01"`
156156 
157 - `"spend-limit-reads-2026-09-26"`
158 
157159## Returns
158160 
159161- `BetaCostReport object`
from line 178
176178 
177179 Cost amount in lowest currency units (e.g. cents) as a decimal string. For example, `"123.45"` in `"USD"` represents `$1.23`.
178180 
179 - `context_window: "0-200k" or "200k-1M" or null`
181 - `context_window: BetaAnalyticsContextWindow or null`
180182 
181183 Input context window used. `null` if not grouping by description or for non-token costs.
182184 
from line 206
204206 
205207 Description of the cost item. `null` if not grouping by description.
206208 
207 - `inference_geo: "global" or "not_available" or "us" or null`
209 - `inference_geo: BetaAnalyticsInferenceGeoFilter or null`
208210 
209211 Inference geo used matching requests' `inference_geo` parameter if set, otherwise the workspace's `default_inference_geo`.
210212 For models that do not support specifying `inference_geo` the value is `"not_available"`. Always `null` if not grouping by inference geo.
from line 229
227229 
228230 - `"standard"`
229231 
230 - `token_type: "cache_creation.ephemeral_1h_input_tokens" or "cache_creation.ephemeral_5m_input_tokens" or "cache_read_input_tokens" or 2 more or null`
232 - `token_type: BetaAnalyticsTokenType or null`
231233 
232234 Type of token. `null` if not grouping by description or for non-token costs.
233235 
from line 286
284286 "inference_geo": "global",
285287 "model": "claude-opus-5",
286288 "service_tier": "standard",
287 "token_type": "uncached_input_tokens",
289 "token_type": "cache_creation.ephemeral_1h_input_tokens",
288290 "workspace_id": "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
289291 }
290292 ],

api/beta/organization/federation Changed · +26 / -0 lines

from line 131
131131 
132132 - `"ce-plugins-2026-09-01"`
133133 
134 - `"spend-limit-reads-2026-09-26"`
135 
134136#### Body parameters
135137 
136138- `issuer_url: string`
from line 523
521523 
522524 - `"ce-plugins-2026-09-01"`
523525 
526 - `"spend-limit-reads-2026-09-26"`
527 
524528#### Returns
525529 
526530- `data: array of BetaFederationIssuer`
from line 826
822826 
823827 - `"ce-plugins-2026-09-01"`
824828 
829 - `"spend-limit-reads-2026-09-26"`
830 
825831#### Returns
826832 
827833- `BetaFederationIssuer object`
from line 1132
11261132 
11271133 - `"ce-plugins-2026-09-01"`
11281134 
1135 - `"spend-limit-reads-2026-09-26"`
1136 
11291137#### Body parameters
11301138 
11311139- `check_jti: optional boolean or null`
from line 1516
15081516 
15091517 - `"ce-plugins-2026-09-01"`
15101518 
1519 - `"spend-limit-reads-2026-09-26"`
1520 
15111521#### Returns
15121522 
15131523- `BetaFederationIssuer object`
from line 1826
18161826 
18171827 - `"ce-plugins-2026-09-01"`
18181828 
1829 - `"spend-limit-reads-2026-09-26"`
1830 
18191831#### Body parameters
18201832 
18211833- `issuer_id: string`
from line 2243
22312243 
22322244 - `"ce-plugins-2026-09-01"`
22332245 
2246 - `"spend-limit-reads-2026-09-26"`
2247 
22342248#### Returns
22352249 
22362250- `data: array of BetaFederationRule`
from line 2546
25322546 
25332547 - `"ce-plugins-2026-09-01"`
25342548 
2549 - `"spend-limit-reads-2026-09-26"`
2550 
25352551#### Returns
25362552 
25372553- `BetaFederationRule object`
from line 2867
28512867 
28522868 - `"ce-plugins-2026-09-01"`
28532869 
2870 - `"spend-limit-reads-2026-09-26"`
2871 
28542872#### Body parameters
28552873 
28562874- `applies_to_all_workspaces: optional boolean or null`
from line 3260
32423260 
32433261 - `"ce-plugins-2026-09-01"`
32443262 
3263 - `"spend-limit-reads-2026-09-26"`
3264 
32453265#### Returns
32463266 
32473267- `BetaFederationRule object`
from line 3577
35573577 
35583578 - `"ce-plugins-2026-09-01"`
35593579 
3580 - `"spend-limit-reads-2026-09-26"`
3581 
35603582#### Body parameters
35613583 
35623584- `workspace_id: string`
from line 3778
37563778 
37573779 - `"ce-plugins-2026-09-01"`
37583780 
3781 - `"spend-limit-reads-2026-09-26"`
3782 
37593783#### Returns
37603784 
37613785- `data: array of BetaFederationRuleWorkspace`
from line 3968
39443968 - `"mcp-client-2026-09-15"`
39453969 
39463970 - `"ce-plugins-2026-09-01"`
3971 
3972 - `"spend-limit-reads-2026-09-26"`
39473973 
39483974#### Returns
39493975 

api/beta/organization/federation/issuers Changed · +10 / -0 lines

from line 129
129129 
130130 - `"ce-plugins-2026-09-01"`
131131 
132 - `"spend-limit-reads-2026-09-26"`
133 
132134### Body parameters
133135 
134136- `issuer_url: string`
from line 521
519521 
520522 - `"ce-plugins-2026-09-01"`
521523 
524 - `"spend-limit-reads-2026-09-26"`
525 
522526### Returns
523527 
524528- `data: array of BetaFederationIssuer`
from line 824
820824 
821825 - `"ce-plugins-2026-09-01"`
822826 
827 - `"spend-limit-reads-2026-09-26"`
828 
823829### Returns
824830 
825831- `BetaFederationIssuer object`
from line 1130
11241130 
11251131 - `"ce-plugins-2026-09-01"`
11261132 
1133 - `"spend-limit-reads-2026-09-26"`
1134 
11271135### Body parameters
11281136 
11291137- `check_jti: optional boolean or null`
from line 1513
15051513 - `"mcp-client-2026-09-15"`
15061514 
15071515 - `"ce-plugins-2026-09-01"`
1516 
1517 - `"spend-limit-reads-2026-09-26"`
15081518 
15091519### Returns
15101520 

api/beta/organization/federation/rules Changed · +16 / -0 lines

from line 133
133133 
134134 - `"ce-plugins-2026-09-01"`
135135 
136 - `"spend-limit-reads-2026-09-26"`
137 
136138### Body parameters
137139 
138140- `issuer_id: string`
from line 550
548550 
549551 - `"ce-plugins-2026-09-01"`
550552 
553 - `"spend-limit-reads-2026-09-26"`
554 
551555### Returns
552556 
553557- `data: array of BetaFederationRule`
from line 853
849853 
850854 - `"ce-plugins-2026-09-01"`
851855 
856 - `"spend-limit-reads-2026-09-26"`
857 
852858### Returns
853859 
854860- `BetaFederationRule object`
from line 1174
11681174 
11691175 - `"ce-plugins-2026-09-01"`
11701176 
1177 - `"spend-limit-reads-2026-09-26"`
1178 
11711179### Body parameters
11721180 
11731181- `applies_to_all_workspaces: optional boolean or null`
from line 1567
15591567 
15601568 - `"ce-plugins-2026-09-01"`
15611569 
1570 - `"spend-limit-reads-2026-09-26"`
1571 
15621572### Returns
15631573 
15641574- `BetaFederationRule object`
from line 2097
20872097 
20882098 - `"ce-plugins-2026-09-01"`
20892099 
2100 - `"spend-limit-reads-2026-09-26"`
2101 
20902102#### Body parameters
20912103 
20922104- `workspace_id: string`
from line 2298
22862298 
22872299 - `"ce-plugins-2026-09-01"`
22882300 
2301 - `"spend-limit-reads-2026-09-26"`
2302 
22892303#### Returns
22902304 
22912305- `data: array of BetaFederationRuleWorkspace`
from line 2488
24742488 - `"mcp-client-2026-09-15"`
24752489 
24762490 - `"ce-plugins-2026-09-01"`
2491 
2492 - `"spend-limit-reads-2026-09-26"`
24772493 
24782494#### Returns
24792495 

api/beta/organization/federation/rules/workspaces Changed · +6 / -0 lines

from line 134
134134 
135135 - `"ce-plugins-2026-09-01"`
136136 
137 - `"spend-limit-reads-2026-09-26"`
138 
137139### Body parameters
138140 
139141- `workspace_id: string`
from line 335
333335 
334336 - `"ce-plugins-2026-09-01"`
335337 
338 - `"spend-limit-reads-2026-09-26"`
339 
336340### Returns
337341 
338342- `data: array of BetaFederationRuleWorkspace`
from line 525
521525 - `"mcp-client-2026-09-15"`
522526 
523527 - `"ce-plugins-2026-09-01"`
528 
529 - `"spend-limit-reads-2026-09-26"`
524530 
525531### Returns
526532 

api/beta/organization/mcp_tunnels Changed · +18 / -0 lines

from line 150
150150 
151151 - `"ce-plugins-2026-09-01"`
152152 
153 - `"spend-limit-reads-2026-09-26"`
154 
153155### Returns
154156 
155157- `data: array of BetaOrganizationTunnel`
from line 348
346348 
347349 - `"ce-plugins-2026-09-01"`
348350 
351 - `"spend-limit-reads-2026-09-26"`
352 
349353### Returns
350354 
351355- `BetaOrganizationTunnel object`
from line 542
538542 
539543 - `"ce-plugins-2026-09-01"`
540544 
545 - `"spend-limit-reads-2026-09-26"`
546 
541547### Returns
542548 
543549- `BetaOrganizationTunnel object`
from line 737
731737 
732738 - `"ce-plugins-2026-09-01"`
733739 
740 - `"spend-limit-reads-2026-09-26"`
741 
734742### Returns
735743 
736744- `BetaOrganizationTunnelToken object`
from line 904
896904 
897905 - `"ce-plugins-2026-09-01"`
898906 
907 - `"spend-limit-reads-2026-09-26"`
908 
899909### Body parameters
900910 
901911- `reason: optional string or null`
from line 1145
11351145 
11361146 - `"ce-plugins-2026-09-01"`
11371147 
1148 - `"spend-limit-reads-2026-09-26"`
1149 
11381150#### Body parameters
11391151 
11401152- `ca_certificate_pem: string`
from line 1369
13571369 
13581370 - `"ce-plugins-2026-09-01"`
13591371 
1372 - `"spend-limit-reads-2026-09-26"`
1373 
13601374#### Returns
13611375 
13621376- `data: array of BetaOrganizationTunnelCertificate`
from line 1571
15571571 
15581572 - `"ce-plugins-2026-09-01"`
15591573 
1574 - `"spend-limit-reads-2026-09-26"`
1575 
15601576#### Returns
15611577 
15621578- `BetaOrganizationTunnelCertificate object`
from line 1767
17511767 - `"mcp-client-2026-09-15"`
17521768 
17531769 - `"ce-plugins-2026-09-01"`
1770 
1771 - `"spend-limit-reads-2026-09-26"`
17541772 
17551773#### Returns
17561774 

api/beta/organization/mcp_tunnels/tunnel_certificates Changed · +8 / -0 lines

from line 132
132132 
133133 - `"ce-plugins-2026-09-01"`
134134 
135 - `"spend-limit-reads-2026-09-26"`
136 
135137### Body parameters
136138 
137139- `ca_certificate_pem: string`
from line 356
354356 
355357 - `"ce-plugins-2026-09-01"`
356358 
359 - `"spend-limit-reads-2026-09-26"`
360 
357361### Returns
358362 
359363- `data: array of BetaOrganizationTunnelCertificate`
from line 558
554558 
555559 - `"ce-plugins-2026-09-01"`
556560 
561 - `"spend-limit-reads-2026-09-26"`
562 
557563### Returns
558564 
559565- `BetaOrganizationTunnelCertificate object`
from line 754
748754 - `"mcp-client-2026-09-15"`
749755 
750756 - `"ce-plugins-2026-09-01"`
757 
758 - `"spend-limit-reads-2026-09-26"`
751759 
752760### Returns
753761 

api/beta/organization/plugin_marketplaces Changed · +10 / -0 lines

from line 169
169169 
170170 - `"ce-plugins-2026-09-01"`
171171 
172 - `"spend-limit-reads-2026-09-26"`
173 
172174### Returns
173175 
174176- `data: array of BetaPluginMarketplace`
from line 436
434436 
435437 - `"ce-plugins-2026-09-01"`
436438 
439 - `"spend-limit-reads-2026-09-26"`
440 
437441### Returns
438442 
439443- `BetaPluginMarketplace object`
from line 693
689693 
690694 - `"ce-plugins-2026-09-01"`
691695 
696 - `"spend-limit-reads-2026-09-26"`
697 
692698### Body parameters
693699 
694700- `default_installation_preference: "auto_install" or "available" or "not_available" or "required"`
from line 972
966972 
967973 - `"ce-plugins-2026-09-01"`
968974 
975 - `"spend-limit-reads-2026-09-26"`
976 
969977### Body parameters
970978 
971979- `repository_url: string`
from line 1237
12291237 - `"mcp-client-2026-09-15"`
12301238 
12311239 - `"ce-plugins-2026-09-01"`
1240 
1241 - `"spend-limit-reads-2026-09-26"`
12321242 
12331243### Body parameters (form-data)
12341244 

api/beta/organization/plugins Changed · +26 / -0 lines

from line 147
147147 
148148 - `"ce-plugins-2026-09-01"`
149149 
150 - `"spend-limit-reads-2026-09-26"`
151 
150152### Body parameters (form-data)
151153 
152154- `files: array of string`
from line 544
542544 
543545 - `"ce-plugins-2026-09-01"`
544546 
547 - `"spend-limit-reads-2026-09-26"`
548 
545549### Returns
546550 
547551- `BetaPlugin object`
from line 937
933937 
934938 - `"ce-plugins-2026-09-01"`
935939 
940 - `"spend-limit-reads-2026-09-26"`
941 
936942### Body parameters
937943 
938944- `served_version_id: string`
from line 1380
13741380 
13751381 - `"ce-plugins-2026-09-01"`
13761382 
1383 - `"spend-limit-reads-2026-09-26"`
1384 
13771385### Returns
13781386 
13791387- `data: array of BetaPlugin`
from line 1773
17651773 
17661774 - `"ce-plugins-2026-09-01"`
17671775 
1776 - `"spend-limit-reads-2026-09-26"`
1777 
17681778### Returns
17691779 
17701780- `BetaDeletedPlugin object`
from line 2317
23072317 
23082318 - `"ce-plugins-2026-09-01"`
23092319 
2320 - `"spend-limit-reads-2026-09-26"`
2321 
23102322#### Body parameters (form-data)
23112323 
23122324- `files: array of string`
from line 2660
26482660 
26492661 - `"ce-plugins-2026-09-01"`
26502662 
2663 - `"spend-limit-reads-2026-09-26"`
2664 
26512665#### Returns
26522666 
26532667- `data: array of BetaPluginVersion`
from line 2985
29712985 
29722986 - `"ce-plugins-2026-09-01"`
29732987 
2988 - `"spend-limit-reads-2026-09-26"`
2989 
29742990#### Returns
29752991 
29762992- `BetaPluginVersion object`
from line 3317
33013317 
33023318 - `"ce-plugins-2026-09-01"`
33033319 
3320 - `"spend-limit-reads-2026-09-26"`
3321 
33043322#### Example
33053323 
33063324```bash
from line 3485
34673485 
34683486 - `"ce-plugins-2026-09-01"`
34693487 
3488 - `"spend-limit-reads-2026-09-26"`
3489 
34703490#### Returns
34713491 
34723492- `data: array of BetaPluginInstallationSetting`
from line 3732
37123732 
37133733 - `"ce-plugins-2026-09-01"`
37143734 
3735 - `"spend-limit-reads-2026-09-26"`
3736 
37153737#### Body parameters
37163738 
37173739- `installation_preference: "auto_install" or "available" or "not_available" or "required"`
from line 3996
39743996 
39753997 - `"ce-plugins-2026-09-01"`
39763998 
3999 - `"spend-limit-reads-2026-09-26"`
4000 
39774001#### Returns
39784002 
39794003- `BetaDeletedPluginInstallationSetting object`
from line 4233
42094233 - `"mcp-client-2026-09-15"`
42104234 
42114235 - `"ce-plugins-2026-09-01"`
4236 
4237 - `"spend-limit-reads-2026-09-26"`
42124238 
42134239#### Returns
42144240 

api/beta/organization/plugins/installation_settings Changed · +6 / -0 lines

from line 160
160160 
161161 - `"ce-plugins-2026-09-01"`
162162 
163 - `"spend-limit-reads-2026-09-26"`
164 
163165### Returns
164166 
165167- `data: array of BetaPluginInstallationSetting`
from line 407
405407 
406408 - `"ce-plugins-2026-09-01"`
407409 
410 - `"spend-limit-reads-2026-09-26"`
411 
408412### Body parameters
409413 
410414- `installation_preference: "auto_install" or "available" or "not_available" or "required"`
from line 670
666670 - `"mcp-client-2026-09-15"`
667671 
668672 - `"ce-plugins-2026-09-01"`
673 
674 - `"spend-limit-reads-2026-09-26"`
669675 
670676### Returns
671677 
Feedback