Get Chat Project Usage changedapi/admin/analytics/chat_projects/list
Nearest release: v2.1.250, published an hour before this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+16added
Lines−14removed
From line
5
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits5to this page, all time
The whole hunk
from line 5, old and new numbered
/
from line 5
55Get per-project activity for a given day, with cursor-based pagination.
66
77Returns activity metrics for each project in the organization, sorted by
8project ID. Use group_by[] to break projects out per member or per RBAC
9group, and filter[] to scope results; the parameter descriptions list the
8project ID. Use `group_by[]` to break projects out per member or per RBAC
9group, and `filter[]` to scope results; the parameter descriptions list the
1010supported dimensions. Available to organizations on a Claude Enterprise
1111plan. Requires an API key with the `read:analytics` scope.
1212
from line 20
2020
2121- `ending_date: optional string`
2222
23 UTC date in YYYY-MM-DD format. End of the date range (exclusive); only valid with starting_date. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day), so this can be at most today — which is also the default when omitted, resolved once when the first page is served and reused for the rest of the pagination sequence. At most 366 days after starting_date.
23 UTC date in YYYY-MM-DD format. End of the date range (exclusive); only valid with `starting_date`. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day), so this can be at most today — which is also the default when omitted, resolved once when the first page is served and reused for the rest of the pagination sequence. At most 366 days after `starting_date`.
2424
2525 format: date
2626
2727- `filter: optional array of string`
2828
29 Filters as 'dimension:value', e.g. filter[]=rbac_group_id:<id>. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: project_id, rbac_group_id, user_id. Value forms: project_id takes a tagged project id (claude_proj_...); rbac_group_id takes the tagged id (rbac_group_..., as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); user_id takes a tagged user id (user_...), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.
29 Filters as `dimension:value`, e.g. `filter[]=rbac_group_id:{id}`. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint: `project_id`, `rbac_group_id`, `user_id`. Value forms: `project_id` takes a tagged project id (`claude_proj_...`); `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.
3030
3131 maxItems: 100
3232
3333- `group_by: optional array of "rbac_group_id" or "user_id"`
3434
35 Dimensions to break results out by (e.g. group_by[]=user_id). Supported on this endpoint: rbac_group_id, user_id. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via next_page; an unsupported dimension returns 400. rbac_group_id attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.
35 Dimensions to break results out by (e.g. `group_by[]=user_id`). Supported on this endpoint: `rbac_group_id`, `user_id`. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via `next_page`; an unsupported dimension returns 400. `rbac_group_id` attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.
3636
3737 maxItems: 100
3838
from line 48
4848
4949- `order: optional "asc" or "desc"`
5050
51 Sort direction: 'asc' or 'desc'. Defaults to 'asc' for the endpoint's sort column and to 'desc' when order_by names a metric (a top-N ranking). Applies to order_by, or to the endpoint's default sort field when order_by is omitted.
51 Sort direction: `asc` or `desc`. Defaults to `asc` for the endpoint's sort column and to `desc` when `order_by` names a metric (a top-N ranking). Applies to `order_by`, or to the endpoint's default sort field when `order_by` is omitted.
5252
5353 - `"asc"`
5454
from line 60
6060
6161- `page: optional string`
6262
63 Opaque cursor from a previous response's next_page field.
63 Opaque cursor from a previous response's `next_page` field.
6464
6565- `starting_date: optional string`
6666
67 UTC date in YYYY-MM-DD format. Start of a date range (inclusive). Enables rollup mode: one row per entity aggregated over the whole range — addable counters are summed across days, and a distinct count is never summed where summing could double-count (a field's range value is recomputed exactly over the window, approximate via HLL with typical error under 2%, null, or — for the creation-event counts, whose per-day values cannot overlap — a per-day sum that is itself exact; each field's own description says which). Use either date or starting_date, not both. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.
67 UTC date in YYYY-MM-DD format. Start of a date range (inclusive). Enables rollup mode: one row per entity aggregated over the whole range — addable counters are summed across days, and a distinct count is never summed where summing could double-count (a field's range value is recomputed exactly over the window, approximate via HLL with typical error under 2%, null, or — for the creation-event counts, whose per-day values cannot overlap — a per-day sum that is itself exact; each field's own description says which). Use either `date` or `starting_date`, not both. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.
6868
6969 format: date
7070
from line 86
8686
8787 - `project_id: string`
8888
89 Tagged project identifier (e.g. claude_proj_...)
89 Tagged project identifier (e.g. `claude_proj_...`)
9090
9191 - `project_name: string`
9292
from line 94
9494
9595 - `created_at: optional string or null`
9696
97 Project creation timestamp, RFC 3339. Null if the project was deleted before attribution was recorded.
97 Project creation timestamp in RFC 3339 format. Null if the project was deleted before attribution was recorded.
9898
99 format: date-time
100
99101 - `created_by: optional AnalyticsUser or null`
100102
101 User identifier.
103 A user in the organization, identified by tagged id and email address.
102104
103105 - `id: string`
104106
from line 110
108110
109111 Email address of the user
110112
111 - `type: optional "user"`
113 - `type: "user"`
112114
113115 Object type. Always `user`.
114116
from line 122
120122
121123 - `product: optional string or null`
122124
123 Product that produced this row's activity: one of chat, claude_code, cowork, or office_agent (the canonical Cost & Usage product naming; an office_agent row's per-surface breakdown is in its office_metrics). On /plugins only cowork and claude_code occur (the only surfaces with plugin attribution); /artifacts and /apps/chat/projects do not support the product dimension (a product `group_by[]` or `filter[]` there is rejected). Present only when the request grouped by product.
125 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`.
124126
125127 - `rbac_group_id: optional string or null`
126128
from line 158
156158 "message_count": 0,
157159 "project_id": "project_id",
158160 "project_name": "project_name",
159 "created_at": "created_at",
161 "created_at": "2019-12-27T18:11:19.117Z",
160162 "created_by": {
161163 "id": "id",
162164 "email_address": "email_address",
No line in this hunk matches that.