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

Users changedapi/admin/analytics/users

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+36added
Lines−14removed
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-user activity for a given day, with cursor-based pagination.
88 
99Returns activity metrics for each user in the organization, sorted by email
10address. Use group_by[] for per-RBAC-group aggregates, or filter[] to
10address. Use `group_by[]` for per-RBAC-group aggregates, or `filter[]` to
1111scope results to specific members, groups, or a chat project. Available
1212to organizations on a Claude Enterprise plan. Requires an API key with
1313the `read:analytics` scope.
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_...) and scopes each member's row to their claude.ai chat activity within that project (it cannot be combined with group_by[] or an rbac_group_id filter); rbac_group_id takes the tagged id (rbac_group_..., as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); user_id takes a tagged user id (user_...), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.
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_...`) and scopes each member's row to their claude.ai chat activity within that project (it cannot be combined with `group_by[]` or an `rbac_group_id` filter); `rbac_group_id` takes the tagged id (`rbac_group_...`, as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution); `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.
3232 
3333 maxItems: 100
3434 
3535- `group_by: optional array of "rbac_group_id"`
3636 
37 Dimensions to break results out by (e.g. group_by[]=rbac_group_id). Supported on this endpoint: rbac_group_id. Rows are already per-member, so the one supported grouping aggregates them per RBAC group instead. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via next_page; an unsupported dimension returns 400. rbac_group_id attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.
37 Dimensions to break results out by (e.g. `group_by[]=rbac_group_id`). Supported on this endpoint: `rbac_group_id`. Rows are already per-member, so the one supported grouping aggregates them per RBAC group instead. Grouped rows carry the requested dimension values as additional fields and paginate like ungrouped responses via `next_page`; an unsupported dimension returns 400. `rbac_group_id` attributes a user to every group they held at any point during each covered UTC day, so grouped rows are not an exclusive partition and can sum above org-level totals. At most 100 entries.
3838 
3939 maxItems: 100
4040 
from line 46
4646 
4747- `order: optional "asc" or "desc"`
4848 
49 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.
49 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.
5050 
5151 - `"asc"`
5252 
from line 58
5858 
5959- `page: optional string`
6060 
61 Opaque cursor from a previous response's next_page field.
61 Opaque cursor from a previous response's `next_page` field.
6262 
6363- `starting_date: optional string`
6464 
65 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.
65 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.
6666 
6767 format: date
6868 
from line 134
134134 
135135 Core Claude Code activity metrics for a single user on a given day.
136136 
137 - `artifacts_created_count: number`
138 
139 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.
140 
137141 - `commit_count: number`
138142 
139143 Number of commits made via Claude Code
from line 198
194198 
195199 Number of tool actions completed in Cowork sessions
196200 
201 - `artifacts_created_count: number`
202 
203 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.
204 
197205 - `connectors_used_count: number`
198206 
199207 Total number of connector invocations in Cowork sessions
from line 360
352360 
353361 - `last_activity_date: optional string or null`
354362 
355 Most recent UTC day (YYYY-MM-DD) on which the user had any counted activity, within the requested window: equal to the requested date in single-day mode, and to the latest active day in [starting_date, ending_date) in date-range rollup mode — never a day earlier than the window start. On filtered requests (`filter[]`) only days matching the filter count: with `filter[]=rbac_group_id` it is the last day the user was active while a member of that group, consistent with the row's other metrics. Null on grouped (`group_by[]`) rows. Omitted from the response while last-activity reporting is not enabled for this organization.
363 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.
356364 
365 format: date
366 
357367 - `rbac_group_id: optional string or null`
358368 
359369 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
from line 374
364374 
365375 - `user: optional AnalyticsUser or null`
366376 
367 User identifier.
377 A user in the organization, identified by tagged id and email address.
368378 
369379 - `id: string`
370380 
from line 384
374384 
375385 Email address of the user
376386 
377 - `type: optional "user"`
387 - `type: "user"`
378388 
379389 Object type. Always `user`.
380390 
from line 424
414424 },
415425 "claude_code_metrics": {
416426 "core_metrics": {
427 "artifacts_created_count": 0,
417428 "commit_count": 0,
418429 "distinct_session_count": 0,
419430 "lines_of_code": {
from line 454
443454 },
444455 "cowork_metrics": {
445456 "action_count": 0,
457 "artifacts_created_count": 0,
446458 "connectors_used_count": 0,
447459 "dispatch_turn_count": 0,
448460 "distinct_connectors_used_count": 0,
from line 520
508520 },
509521 "web_search_count": 0,
510522 "distinct_user_count": 0,
511 "last_activity_date": "last_activity_date",
523 "last_activity_date": "2019-12-27",
512524 "rbac_group_id": "rbac_group_id",
513525 "rbac_group_name": "rbac_group_name",
514526 "user": {
from line 604
592604 
593605 Core Claude Code activity metrics for a single user on a given day.
594606 
607 - `artifacts_created_count: number`
608 
609 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.
610 
595611 - `commit_count: number`
596612 
597613 Number of commits made via Claude Code
from line 668
652668 
653669 Number of tool actions completed in Cowork sessions
654670 
671 - `artifacts_created_count: number`
672 
673 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.
674 
655675 - `connectors_used_count: number`
656676 
657677 Total number of connector invocations in Cowork sessions
from line 830
810830 
811831 - `last_activity_date: optional string or null`
812832 
813 Most recent UTC day (YYYY-MM-DD) on which the user had any counted activity, within the requested window: equal to the requested date in single-day mode, and to the latest active day in [starting_date, ending_date) in date-range rollup mode — never a day earlier than the window start. On filtered requests (`filter[]`) only days matching the filter count: with `filter[]=rbac_group_id` it is the last day the user was active while a member of that group, consistent with the row's other metrics. Null on grouped (`group_by[]`) rows. Omitted from the response while last-activity reporting is not enabled for this organization.
833 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.
814834 
835 format: date
836 
815837 - `rbac_group_id: optional string or null`
816838 
817839 Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.
from line 844
822844 
823845 - `user: optional AnalyticsUser or null`
824846 
825 User identifier.
847 A user in the organization, identified by tagged id and email address.
826848 
827849 - `id: string`
828850 
from line 854
832854 
833855 Email address of the user
834856 
835 - `type: optional "user"`
857 - `type: "user"`
836858 
837859 Object type. Always `user`.
838860 
Feedback