Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
One change · api

Analytics changed

api/admin/analytics

Nearest release: v2.1.261, published 3 hours 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+189added
Lines−5removed
From line 482 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits6to this page, all time

The whole hunk

from line 482, old and new numbered
/
lines
from line 482
482482 
483483 - `"1m"`
484484 
485- `claude_tag_categories: optional array of "dm" or "engaged" or "monitoring" or 2 more`
486 
487 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.
488 
489 maxItems: 100
490 
491 - `"dm"`
492 
493 - `"engaged"`
494 
495 - `"monitoring"`
496 
497 - `"proactive"`
498 
499 - `"scheduled"`
500 
501- `claude_tag_user_ids: optional array of string`
502 
503 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.
504 
505 maxItems: 100
506 
485507- `context_windows: optional array of "0-200k" or "200k-1M"`
486508 
487509 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
from line 520
498520 
499521 format: date-time
500522 
501- `group_by: optional array of "context_window" or "inference_geo" or "model" or 4 more`
523- `group_by: optional array of "claude_tag_category" or "claude_tag_user_id" or "context_window" or 6 more`
502524 
503525 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.
504526 
505527 maxItems: 100
506528 
529 - `"claude_tag_category"`
530 
531 - `"claude_tag_user_id"`
532 
507533 - `"context_window"`
508534 
509535 - `"inference_geo"`
from line 654
628654 
629655 The number of input tokens read from the cache.
630656 
657 - `claude_tag_category: "dm" or "engaged" or "monitoring" or 2 more or null`
658 
659 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.
660 
661 - `"dm"`
662 
663 - `"engaged"`
664 
665 - `"monitoring"`
666 
667 - `"proactive"`
668 
669 - `"scheduled"`
670 
671 - `claude_tag_user_id: string or null`
672 
673 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.
674 
631675 - `context_window: "0-200k" or "200k-1M" or null`
632676 
633677 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.
from line 778
734778 "ephemeral_5m_input_tokens": 500
735779 },
736780 "cache_read_input_tokens": 0,
781 "claude_tag_category": "dm",
782 "claude_tag_user_id": "U0123ABCDEF",
737783 "context_window": "0-200k",
738784 "inference_geo": "global",
739785 "model": "claude-opus-5",
from line 837
791837 
792838 - `"1m"`
793839 
840- `claude_tag_categories: optional array of "dm" or "engaged" or "monitoring" or 2 more`
841 
842 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.
843 
844 maxItems: 100
845 
846 - `"dm"`
847 
848 - `"engaged"`
849 
850 - `"monitoring"`
851 
852 - `"proactive"`
853 
854 - `"scheduled"`
855 
856- `claude_tag_user_ids: optional array of string`
857 
858 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.
859 
860 maxItems: 100
861 
794862- `context_windows: optional array of "0-200k" or "200k-1M"`
795863 
796864 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
from line 881
813881 
814882 default: false
815883 
816- `group_by: optional array of "context_window" or "inference_geo" or "model" or 4 more`
884- `group_by: optional array of "claude_tag_category" or "claude_tag_user_id" or "context_window" or 6 more`
817885 
818886 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.
819887 
820888 maxItems: 100
821889 
890 - `"claude_tag_category"`
891 
892 - `"claude_tag_user_id"`
893 
822894 - `"context_window"`
823895 
824896 - `"inference_geo"`
from line 1053
9811053 
9821054 The number of input tokens read from the cache.
9831055 
1056 - `claude_tag_category: "dm" or "engaged" or "monitoring" or 2 more or null`
1057 
1058 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.
1059 
1060 - `"dm"`
1061 
1062 - `"engaged"`
1063 
1064 - `"monitoring"`
1065 
1066 - `"proactive"`
1067 
1068 - `"scheduled"`
1069 
1070 - `claude_tag_user_id: string or null`
1071 
1072 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.
1073 
9841074 - `context_window: "0-200k" or "200k-1M" or null`
9851075 
9861076 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.
from line 1191
11011191 "ephemeral_5m_input_tokens": 500
11021192 },
11031193 "cache_read_input_tokens": 3200000,
1194 "claude_tag_category": "dm",
1195 "claude_tag_user_id": "U0123ABCDEF",
11041196 "context_window": "0-200k",
11051197 "ending_at": "2019-12-27T18:11:19.117Z",
11061198 "inference_geo": "global",
from line 1251
11591251 
11601252 - `"1m"`
11611253 
1254- `claude_tag_categories: optional array of "dm" or "engaged" or "monitoring" or 2 more`
1255 
1256 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.
1257 
1258 maxItems: 100
1259 
1260 - `"dm"`
1261 
1262 - `"engaged"`
1263 
1264 - `"monitoring"`
1265 
1266 - `"proactive"`
1267 
1268 - `"scheduled"`
1269 
1270- `claude_tag_user_ids: optional array of string`
1271 
1272 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.
1273 
1274 maxItems: 100
1275 
11621276- `context_windows: optional array of "0-200k" or "200k-1M"`
11631277 
11641278 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
from line 1289
11751289 
11761290 format: date-time
11771291 
1178- `group_by: optional array of "context_window" or "cost_type" or "inference_geo" or 6 more`
1292- `group_by: optional array of "claude_tag_category" or "claude_tag_user_id" or "context_window" or 8 more`
11791293 
11801294 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.
11811295 
11821296 maxItems: 100
11831297 
1298 - `"claude_tag_category"`
1299 
1300 - `"claude_tag_user_id"`
1301 
11841302 - `"context_window"`
11851303 
11861304 - `"cost_type"`
from line 1415
12971415 
12981416 Amount (post-discount, pre-credit) in fractional cents.
12991417 
1418 - `claude_tag_category: "dm" or "engaged" or "monitoring" or 2 more or null`
1419 
1420 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.
1421 
1422 - `"dm"`
1423 
1424 - `"engaged"`
1425 
1426 - `"monitoring"`
1427 
1428 - `"proactive"`
1429 
1430 - `"scheduled"`
1431 
1432 - `claude_tag_user_id: string or null`
1433 
1434 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.
1435 
13001436 - `context_window: "0-200k" or "200k-1M" or null`
13011437 
13021438 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.
from line 1553
14171553 "results": [
14181554 {
14191555 "amount": "amount",
1556 "claude_tag_category": "dm",
1557 "claude_tag_user_id": "U0123ABCDEF",
14201558 "context_window": "0-200k",
14211559 "cost_type": "code_execution",
14221560 "currency": "USD",
from line 1611
14731611 
14741612 - `"1m"`
14751613 
1614- `claude_tag_categories: optional array of "dm" or "engaged" or "monitoring" or 2 more`
1615 
1616 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.
1617 
1618 maxItems: 100
1619 
1620 - `"dm"`
1621 
1622 - `"engaged"`
1623 
1624 - `"monitoring"`
1625 
1626 - `"proactive"`
1627 
1628 - `"scheduled"`
1629 
1630- `claude_tag_user_ids: optional array of string`
1631 
1632 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.
1633 
1634 maxItems: 100
1635 
14761636- `context_windows: optional array of "0-200k" or "200k-1M"`
14771637 
14781638 Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.
from line 1655
14951655 
14961656 default: false
14971657 
1498- `group_by: optional array of "context_window" or "cost_type" or "inference_geo" or 6 more`
1658- `group_by: optional array of "claude_tag_category" or "claude_tag_user_id" or "context_window" or 8 more`
14991659 
15001660 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.
15011661 
15021662 maxItems: 100
15031663 
1664 - `"claude_tag_category"`
1665 
1666 - `"claude_tag_user_id"`
1667 
15041668 - `"context_window"`
15051669 
15061670 - `"cost_type"`
from line 1815
16511815 
16521816 Amount (post-discount, pre-credit) in fractional cents (minor units).
16531817 
1818 - `claude_tag_category: "dm" or "engaged" or "monitoring" or 2 more or null`
1819 
1820 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.
1821 
1822 - `"dm"`
1823 
1824 - `"engaged"`
1825 
1826 - `"monitoring"`
1827 
1828 - `"proactive"`
1829 
1830 - `"scheduled"`
1831 
1832 - `claude_tag_user_id: string or null`
1833 
1834 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.
1835 
16541836 - `context_window: "0-200k" or "200k-1M" or null`
16551837 
16561838 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.
from line 1963
17811963 "user_id": "user_01AbCdEfGhIjKlMnOpQrSt"
17821964 },
17831965 "amount": "41280.000000",
1966 "claude_tag_category": "dm",
1967 "claude_tag_user_id": "U0123ABCDEF",
17841968 "context_window": "0-200k",
17851969 "cost_type": "code_execution",
17861970 "currency": "USD",
from line 2707
25232707 
25242708 - `skill_display_name: optional string or null`
25252709 
2526 Human-readable display name for rows whose `skill_name` is an opaque skill id (user/organization skill types — user-defined names are withheld from the analytics pipeline). Only organization-shared skills resolve; the literal 'unknown' bucket row also gets a fixed 'Unknown skill' label. Null for private (user-defined) skills — their names are not disclosed to analytics-key holders — and null when `skill_name` is already a display name, when the skill was deleted, or when display-name resolution is not enabled for this organization.
2710 Human-readable display name for rows whose `skill_name` is an opaque skill id (user/organization skill types and plugin-delivered skills — user-defined names are withheld from the analytics pipeline). 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. Null for private (user-defined) skills and members' personal-plugin skills those names are not disclosed to analytics-key holders — and for Anthropic-provided plugin skills (not resolved), and null when `skill_name` is already a display name, when the skill or plugin was deleted, or when display-name resolution is not enabled for this organization.
25272711 
25282712 - `user_id: optional string or null`
25292713