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

Chat Projects changedapi/admin/analytics/chat_projects

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+23added
Lines−19removed
From line 7 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 7, old and new numbered
/
lines
from line 7
77Get per-project activity for a given day, with cursor-based pagination.
88 
99Returns activity metrics for each project in the organization, sorted by
10project ID. Use group_by[] to break projects out per member or per RBAC
11group, and filter[] to scope results; the parameter descriptions list the
10project ID. Use `group_by[]` to break projects out per member or per RBAC
11group, and `filter[]` to scope results; the parameter descriptions list the
1212supported dimensions. Available to organizations on a Claude Enterprise
1313plan. Requires an API key with the `read:analytics` scope.
1414 
from line 22
2222 
2323- `ending_date: optional string`
2424 
25 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.
25 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`.
2626 
2727 format: date
2828 
2929- `filter: optional array of string`
3030 
31 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.
31 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.
3232 
3333 maxItems: 100
3434 
3535- `group_by: optional array of "rbac_group_id" or "user_id"`
3636 
37 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.
37 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.
3838 
3939 maxItems: 100
4040 
from line 50
5050 
5151- `order: optional "asc" or "desc"`
5252 
53 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.
53 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.
5454 
5555 - `"asc"`
5656 
from line 62
6262 
6363- `page: optional string`
6464 
65 Opaque cursor from a previous response's next_page field.
65 Opaque cursor from a previous response's `next_page` field.
6666 
6767- `starting_date: optional string`
6868 
69 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.
69 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.
7070 
7171 format: date
7272 
from line 88
8888 
8989 - `project_id: string`
9090 
91 Tagged project identifier (e.g. claude_proj_...)
91 Tagged project identifier (e.g. `claude_proj_...`)
9292 
9393 - `project_name: string`
9494 
from line 96
9696 
9797 - `created_at: optional string or null`
9898 
99 Project creation timestamp, RFC 3339. Null if the project was deleted before attribution was recorded.
99 Project creation timestamp in RFC 3339 format. Null if the project was deleted before attribution was recorded.
100100 
101 format: date-time
102 
101103 - `created_by: optional AnalyticsUser or null`
102104 
103 User identifier.
105 A user in the organization, identified by tagged id and email address.
104106 
105107 - `id: string`
106108 
from line 112
110112 
111113 Email address of the user
112114 
113 - `type: optional "user"`
115 - `type: "user"`
114116 
115117 Object type. Always `user`.
116118 
from line 124
122124 
123125 - `product: optional string or null`
124126 
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); /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.
127 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`.
126128 
127129 - `rbac_group_id: optional string or null`
128130 
from line 160
158160 "message_count": 0,
159161 "project_id": "project_id",
160162 "project_name": "project_name",
161 "created_at": "created_at",
163 "created_at": "2019-12-27T18:11:19.117Z",
162164 "created_by": {
163165 "id": "id",
164166 "email_address": "email_address",
from line 197
195197 
196198 - `project_id: string`
197199 
198 Tagged project identifier (e.g. claude_proj_...)
200 Tagged project identifier (e.g. `claude_proj_...`)
199201 
200202 - `project_name: string`
201203 
from line 205
203205 
204206 - `created_at: optional string or null`
205207 
206 Project creation timestamp, RFC 3339. Null if the project was deleted before attribution was recorded.
208 Project creation timestamp in RFC 3339 format. Null if the project was deleted before attribution was recorded.
207209 
210 format: date-time
211 
208212 - `created_by: optional AnalyticsUser or null`
209213 
210 User identifier.
214 A user in the organization, identified by tagged id and email address.
211215 
212216 - `id: string`
213217 
from line 221
217221 
218222 Email address of the user
219223 
220 - `type: optional "user"`
224 - `type: "user"`
221225 
222226 Object type. Always `user`.
223227 
from line 233
229233 
230234 - `product: optional string or null`
231235 
232 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.
236 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`.
233237 
234238 - `rbac_group_id: optional string or null`
235239 
Feedback