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 capture · api

One read of Claude Developer Platform

519 pages moved out of 628 read.

api-20260910T183729Z

Pages moved 519 significant first
Pages read 628 in this capture
Captured 18:37 UTC
Corpus hash 29858da7c2f1 corpus-hash

What this read moved

226–250 of 519

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

api/beta/organization/analytics/retrieve_summaries New page · 215 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/retrieve_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). 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

## Returns

- `BetaActivitySummary object`

  Response for GET /v1/organizations/analytics/summaries.

  - `summaries: array of object`

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

## Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/summaries \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

### Response (200)

```json
{
  "summaries": [
    {
      "assigned_seat_count": 0,
      "cowork_daily_active_user_count": 0,
      "cowork_monthly_active_user_count": 0,
      "cowork_weekly_active_user_count": 0,
      "daily_active_user_count": 0,
      "daily_adoption_rate": 0,
      "ending_at": "2019-12-27T18:11:19.117Z",
      "monthly_active_user_count": 0,
      "monthly_adoption_rate": 0,
      "pending_invite_count": 0,
      "starting_at": "2019-12-27T18:11:19.117Z",
      "weekly_active_user_count": 0,
      "weekly_adoption_rate": 0,
      "chat_daily_active_user_count": 0,
      "chat_monthly_active_user_count": 0,
      "chat_weekly_active_user_count": 0,
      "claude_code_daily_active_user_count": 0,
      "claude_code_monthly_active_user_count": 0,
      "claude_code_weekly_active_user_count": 0,
      "claude_design_daily_active_user_count": 0,
      "claude_design_monthly_active_user_count": 0,
      "claude_design_weekly_active_user_count": 0,
      "office_agent_daily_active_user_count": 0,
      "office_agent_monthly_active_user_count": 0,
      "office_agent_weekly_active_user_count": 0,
      "science_daily_active_user_count": 0,
      "science_entitled_user_count": 0,
      "science_monthly_active_user_count": 0,
      "science_weekly_active_user_count": 0
    }
  ]
}
```

api/beta/organization/analytics/skills New page · 373 lines, new page

# Skills ## Get Skill Usage ### Query parameters ### Returns ### Example #### Response (200) ## Domain types ### Beta Skill Usage

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

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

# Skills

## Get Skill Usage

**GET** `/v1/organizations/analytics/skills`

Get per-skill usage for a given day, with cursor-based pagination.

Returns skill usage metrics for the organization, sorted by skill name.
Use `group_by[]` to break usage out per member, per RBAC group, or per
product surface, and `filter[]` to scope results; the parameter
descriptions list the supported dimensions. Available to organizations
on a Claude Enterprise plan. Requires an API key with the
`read:analytics` scope.

### Query parameters

- `date: optional string`

  UTC date in YYYY-MM-DD format. The day to get skill usage for. 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); 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`.

  format: date

- `filter: optional array of string`

  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: `product`, `rbac_group_id`, `share_status`, `skill_name`, `user_id`. Value forms: `product` is one of `chat`, `claude_code`, `cowork`, or `office_agent`; `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); `share_status` is one of `organization`, `private`, or `public`; `skill_name` matches case-insensitively; `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.

  maxItems: 100

- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`

  Dimensions to break results out by (e.g. `group_by[]=user_id`). Supported on this endpoint: `product`, `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.

  maxItems: 100

  - `"product"`

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

  Number of results per page (1-1000, default 100).

  minimum: 1, maximum: 1000

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

  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.

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

  Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field.

- `starting_date: optional string`

  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.

  format: date

### Returns

- `BetaSkillUsage object`

  Response for GET /v1/organizations/analytics/skills.

  - `data: array of object`

    - `chat_metrics: object`

      Claude.ai activity metrics for a single skill on a given day.

      - `distinct_conversation_skill_used_count: number or null`

        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.

    - `claude_code_metrics: object`

      Claude Code activity metrics for a single skill on a given day.

      - `distinct_session_skill_used_count: number or null`

        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.

    - `cowork_metrics: object`

      Cowork activity metrics for a single skill on a given day.

      - `distinct_session_skill_used_count: number or null`

        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.

    - `distinct_user_count: number`

      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.

    - `office_metrics: object`

      Office Agent activity metrics for a single skill on a given day, broken out by Office product.

      - `excel: BetaSkillOfficeProductMetrics`

        Office Agent activity metrics for a single skill on a given day within one Office product.

        - `distinct_session_skill_used_count: number or null`

          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.

      - `outlook: BetaSkillOfficeProductMetrics`

        Office Agent activity metrics for a single skill on a given day within one Office product.

      - `powerpoint: BetaSkillOfficeProductMetrics`

        Office Agent activity metrics for a single skill on a given day within one Office product.

      - `word: BetaSkillOfficeProductMetrics`

        Office Agent activity metrics for a single skill on a given day within one Office product.

    - `skill_name: string`

      Name of the skill

    - `attributed_list_price: optional string or null`

      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.

    - `currency: optional "USD" or null`

      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.

    - `enable_count: optional number or null`

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

    - `estimated_overage_spend: optional string or null`

      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.

    - `invocation_count: optional number or null`

      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.

    - `product: optional string or null`

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

    - `rbac_group_id: optional string or null`

      Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

    - `rbac_group_name: optional string or null`

      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.

    - `share_status: optional "organization" or "private" or "public" or null`

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

      - `"organization"`

      - `"private"`

      - `"public"`

    - `skill_display_name: optional string or null`

      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.

    - `user_id: optional string or null`

      Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

  - `next_page: string or null`

    Opaque cursor for the next page, or null if no more results

### Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/skills \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

#### Response (200)

```json
{
  "data": [
    {
      "chat_metrics": {
        "distinct_conversation_skill_used_count": 0
      },
      "claude_code_metrics": {
        "distinct_session_skill_used_count": 0
      },
      "cowork_metrics": {
        "distinct_session_skill_used_count": 0
      },
      "distinct_user_count": 0,
      "office_metrics": {
        "excel": {
          "distinct_session_skill_used_count": 0
        },
        "outlook": {
          "distinct_session_skill_used_count": 0
        },
        "powerpoint": {
          "distinct_session_skill_used_count": 0
        },
        "word": {
          "distinct_session_skill_used_count": 0
        }
      },
      "skill_name": "skill_name",
      "attributed_list_price": "attributed_list_price",
      "currency": "USD",
      "enable_count": 0,
      "estimated_overage_spend": "estimated_overage_spend",
      "invocation_count": 0,
      "product": "product",
      "rbac_group_id": "rbac_group_id",
      "rbac_group_name": "rbac_group_name",
      "share_status": "organization",
      "skill_display_name": "skill_display_name",
      "user_id": "user_id"
    }
  ],
  "next_page": "next_page"
}
```

## Domain types

### Beta Skill Usage

- `BetaSkillUsage object`

  Response for GET /v1/organizations/analytics/skills.

  - `data: array of object`

    - `chat_metrics: object`

      Claude.ai activity metrics for a single skill on a given day.

      - `distinct_conversation_skill_used_count: number or null`

        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.

    - `claude_code_metrics: object`

      Claude Code activity metrics for a single skill on a given day.

      - `distinct_session_skill_used_count: number or null`

        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.

    - `cowork_metrics: object`

      Cowork activity metrics for a single skill on a given day.

      - `distinct_session_skill_used_count: number or null`

        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.

    - `distinct_user_count: number`

      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.

    - `office_metrics: object`

      Office Agent activity metrics for a single skill on a given day, broken out by Office product.

      - `excel: BetaSkillOfficeProductMetrics`

        Office Agent activity metrics for a single skill on a given day within one Office product.

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/skills/list New page · 251 lines, new page

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

# Get Skill Usage

**GET** `/v1/organizations/analytics/skills`

Get per-skill usage for a given day, with cursor-based pagination.

Returns skill usage metrics for the organization, sorted by skill name.
Use `group_by[]` to break usage out per member, per RBAC group, or per
product surface, and `filter[]` to scope results; the parameter
descriptions list the supported dimensions. Available to organizations
on a Claude Enterprise plan. Requires an API key with the
`read:analytics` scope.

## Query parameters

- `date: optional string`

  UTC date in YYYY-MM-DD format. The day to get skill usage for. 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); 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`.

  format: date

- `filter: optional array of string`

  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: `product`, `rbac_group_id`, `share_status`, `skill_name`, `user_id`. Value forms: `product` is one of `chat`, `claude_code`, `cowork`, or `office_agent`; `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); `share_status` is one of `organization`, `private`, or `public`; `skill_name` matches case-insensitively; `user_id` takes a tagged user id (`user_...`), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.

  maxItems: 100

- `group_by: optional array of "product" or "rbac_group_id" or "user_id"`

  Dimensions to break results out by (e.g. `group_by[]=user_id`). Supported on this endpoint: `product`, `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.

  maxItems: 100

  - `"product"`

  - `"rbac_group_id"`

  - `"user_id"`

- `limit: optional number`

  Number of results per page (1-1000, default 100).

  minimum: 1, maximum: 1000

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

  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.

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

  Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field.

- `starting_date: optional string`

  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.

  format: date

## Returns

- `BetaSkillUsage object`

  Response for GET /v1/organizations/analytics/skills.

  - `data: array of object`

    - `chat_metrics: object`

      Claude.ai activity metrics for a single skill on a given day.

      - `distinct_conversation_skill_used_count: number or null`

        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.

    - `claude_code_metrics: object`

      Claude Code activity metrics for a single skill on a given day.

      - `distinct_session_skill_used_count: number or null`

        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.

    - `cowork_metrics: object`

      Cowork activity metrics for a single skill on a given day.

      - `distinct_session_skill_used_count: number or null`

        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.

    - `distinct_user_count: number`

      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.

    - `office_metrics: object`

      Office Agent activity metrics for a single skill on a given day, broken out by Office product.

      - `excel: BetaSkillOfficeProductMetrics`

        Office Agent activity metrics for a single skill on a given day within one Office product.

        - `distinct_session_skill_used_count: number or null`

          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.

      - `outlook: BetaSkillOfficeProductMetrics`

        Office Agent activity metrics for a single skill on a given day within one Office product.

      - `powerpoint: BetaSkillOfficeProductMetrics`

        Office Agent activity metrics for a single skill on a given day within one Office product.

      - `word: BetaSkillOfficeProductMetrics`

        Office Agent activity metrics for a single skill on a given day within one Office product.

    - `skill_name: string`

      Name of the skill

    - `attributed_list_price: optional string or null`

      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.

    - `currency: optional "USD" or null`

      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.

    - `enable_count: optional number or null`

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

    - `estimated_overage_spend: optional string or null`

      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.

    - `invocation_count: optional number or null`

      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.

    - `product: optional string or null`

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

    - `rbac_group_id: optional string or null`

      Tagged RBAC group identifier (`rbac_group_...`), matching the spend-limits API spelling. Present only when the request grouped by `rbac_group_id`.

    - `rbac_group_name: optional string or null`

      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.

    - `share_status: optional "organization" or "private" or "public" or null`

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

      - `"organization"`

      - `"private"`

      - `"public"`

    - `skill_display_name: optional string or null`

      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.

    - `user_id: optional string or null`

      Tagged user identifier (e.g. `user_...`). Present only when the request grouped by `user_id`.

  - `next_page: string or null`

    Opaque cursor for the next page, or null if no more results

## Example

```bash
curl https://api.anthropic.com/v1/organizations/analytics/skills \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

### Response (200)

```json
{
  "data": [
    {
      "chat_metrics": {
        "distinct_conversation_skill_used_count": 0
      },
      "claude_code_metrics": {
        "distinct_session_skill_used_count": 0
      },
      "cowork_metrics": {
        "distinct_session_skill_used_count": 0
      },
      "distinct_user_count": 0,
      "office_metrics": {
        "excel": {
          "distinct_session_skill_used_count": 0
        },
        "outlook": {
          "distinct_session_skill_used_count": 0
        },
        "powerpoint": {
          "distinct_session_skill_used_count": 0
        },
        "word": {
          "distinct_session_skill_used_count": 0
        }
      },
      "skill_name": "skill_name",
      "attributed_list_price": "attributed_list_price",
      "currency": "USD",
      "enable_count": 0,
      "estimated_overage_spend": "estimated_overage_spend",
      "invocation_count": 0,
      "product": "product",
      "rbac_group_id": "rbac_group_id",
      "rbac_group_name": "rbac_group_name",
      "share_status": "organization",
      "skill_display_name": "skill_display_name",
      "user_id": "user_id"
    }
  ],
  "next_page": "next_page"
}
```

api/beta/organization/analytics/usage New page · 1087 lines, new page

# 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

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

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

# Usage

## 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 "dm" or "engaged" or "monitoring" or 2 more`

  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 "0-200k" or "200k-1M"`

  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 "global" or "not_available" or "us"`

  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 "chat" or "claude-tag" or "claude_code" or 4 more`

  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

- `BetaUsageBucket object`

  - `data: array of object`

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

      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: "dm" or "engaged" or "monitoring" or 2 more 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: "0-200k" or "200k-1M" 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: object`

        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`

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/usage/list New page · 362 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/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 "dm" or "engaged" or "monitoring" or 2 more`

  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 "0-200k" or "200k-1M"`

  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 "global" or "not_available" or "us"`

  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 "chat" or "claude-tag" or "claude_code" or 4 more`

  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

- `BetaUsageBucket object`

  - `data: array of object`

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

      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: "dm" or "engaged" or "monitoring" or 2 more 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: "0-200k" or "200k-1M" 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: object`

        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/list_by_user New page · 421 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/usage/list_by_user
---

# 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 "dm" or "engaged" or "monitoring" or 2 more`

  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 "0-200k" or "200k-1M"`

  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 "global" or "not_available" or "us"`

  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, maximum: 1000, 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

- `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 "chat" or "claude-tag" or "claude_code" or 4 more`

  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

- `BetaUserUsage object`

  - `data: array of object`

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

    - `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: "dm" or "engaged" or "monitoring" or 2 more 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: "0-200k" or "200k-1M" 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"`

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

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/users New page · 870 lines, new page

# Users ## List User Activity ### Query parameters ### Returns ### Example #### Response (200) ## Domain types ### Beta User Activity

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

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

# Users

## List User Activity

**GET** `/v1/organizations/analytics/users`

Get per-user activity for a given day, with cursor-based pagination.

Returns activity metrics for each user in the organization, sorted by email
address. Use `group_by[]` for per-RBAC-group aggregates, or `filter[]` to
scope results to specific members, groups, or a chat project. Available
to organizations on a Claude Enterprise plan. Requires an API key with
the `read:analytics` scope.

### Query parameters

- `date: optional string`

  UTC date in YYYY-MM-DD format. The day to get user activity for. 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); 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`.

  format: date

- `filter: optional array of string`

  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.

  maxItems: 100

- `group_by: optional array of "rbac_group_id"`

  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.

  maxItems: 100

- `limit: optional number`

  Number of results per page (1-1000, default 100).

  minimum: 1, maximum: 1000

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

  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.

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

  Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field.

- `starting_date: optional string`

  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.

  format: date

### Returns

- `BetaUserActivity object`

  Response for GET /v1/organizations/analytics/users.

  - `data: array of object`

    - `chat_metrics: object`

      Claude.ai activity metrics for a single user on a given day.

      - `connectors_used_count: number`

        Number of MCP connector invocations.

      - `distinct_artifacts_created_count: number`

        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.

      - `distinct_connectors_used_count: number or null`

        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.

      - `distinct_conversation_count: number or null`

        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.

      - `distinct_files_uploaded_count: number or null`

        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.

      - `distinct_projects_created_count: number`

        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.

      - `distinct_projects_used_count: number or null`

        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.

      - `distinct_shared_artifacts_viewed_count: number or null`

        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.

      - `distinct_skills_used_count: number or null`

        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.

      - `message_count: number`

        Number of messages sent

      - `shared_conversations_viewed_count: number`

        Number of times the user opened a shared conversation in a project

      - `thinking_message_count: number`

        Number of messages that used extended thinking

    - `claude_code_metrics: object`

      Claude Code activity metrics for a single user on a given day.

      - `core_metrics: object`

        Core Claude Code activity metrics for a single user on a given day.

        - `artifacts_created_count: number`

          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.

        - `commit_count: number`

          Number of commits made via Claude Code

        - `distinct_session_count: number or null`

          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.

        - `lines_of_code: object`

          Lines of code added and removed via Claude Code.

          - `added_count: number`

            Lines of code added

          - `removed_count: number`

            Lines of code removed

        - `pull_request_count: number`

          Number of pull requests created via Claude Code

      - `tool_actions: object`

        Per-tool accepted/rejected counts for Claude Code file modification tools.

        - `edit_tool: BetaToolActionCounts`

          Accepted/rejected counts for a single Claude Code tool type.

          - `accepted_count: number`

            Number of tool proposals accepted

          - `rejected_count: number`

            Number of tool proposals rejected

        - `multi_edit_tool: BetaToolActionCounts`

          Accepted/rejected counts for a single Claude Code tool type.

        - `notebook_edit_tool: BetaToolActionCounts`

          Accepted/rejected counts for a single Claude Code tool type.

        - `write_tool: BetaToolActionCounts`

          Accepted/rejected counts for a single Claude Code tool type.

    - `cowork_metrics: object`

      Cowork activity metrics for a single user on a given day.

      - `action_count: number`

        Number of tool actions completed in Cowork sessions

      - `artifacts_created_count: number`

        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.

      - `connectors_used_count: number`

        Total number of connector invocations in Cowork sessions

      - `dispatch_turn_count: number`

        Number of Dispatch (background agent) turns completed

      - `distinct_connectors_used_count: number or null`

        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.

      - `distinct_session_count: number or null`

        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.

      - `distinct_skills_used_count: number or null`

        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.

      - `message_count: number`

        Number of messages sent in Cowork sessions

      - `skills_used_count: number`

        Total number of skill invocations in Cowork sessions

      - `distinct_plugins_used_count: optional number or null`

        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.

      - `edit_tool_count: optional number or null`

        Number of successful Edit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.

      - `file_edit_count: optional number or null`

        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.

      - `multi_edit_tool_count: optional number or null`

        Number of successful MultiEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.

      - `notebook_edit_tool_count: optional number or null`

        Number of successful NotebookEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.

      - `plugins_used_count: optional number or null`

        Total number of plugin invocations in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization.

      - `sessions_with_file_edits_count: optional number or null`

        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.

      - `write_tool_count: optional number or null`

        Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.

    - `design_metrics: object`

      Claude Design activity metrics for a single user on a given day.

      - `distinct_projects_created_count: number`

        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.

      - `distinct_projects_used_count: number or null`

        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.

      - `distinct_session_count: number or null`

        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.

      - `message_count: number`

        Number of messages sent in Claude Design sessions

    - `office_metrics: object`

      Office Agent activity metrics for a single user on a given day, broken out by Office product.

      - `excel: BetaOfficeProductMetrics`

        Office Agent activity metrics for a single user on a given day within one Office product.

        - `connectors_used_count: number`

          Number of MCP connector invocations

Cut at 300 lines. The page has the rest.

api/beta/organization/analytics/users/list New page · 538 lines, new page

# List User Activity ## Query parameters ## Returns ## Example ### Response (200)

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

---
title: List User Activity
url: https://platform.claude.com/docs/en/api/beta/organization/analytics/users/list
---

# List User Activity

**GET** `/v1/organizations/analytics/users`

Get per-user activity for a given day, with cursor-based pagination.

Returns activity metrics for each user in the organization, sorted by email
address. Use `group_by[]` for per-RBAC-group aggregates, or `filter[]` to
scope results to specific members, groups, or a chat project. Available
to organizations on a Claude Enterprise plan. Requires an API key with
the `read:analytics` scope.

## Query parameters

- `date: optional string`

  UTC date in YYYY-MM-DD format. The day to get user activity for. 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); 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`.

  format: date

- `filter: optional array of string`

  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.

  maxItems: 100

- `group_by: optional array of "rbac_group_id"`

  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.

  maxItems: 100

- `limit: optional number`

  Number of results per page (1-1000, default 100).

  minimum: 1, maximum: 1000

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

  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.

  - `"asc"`

  - `"desc"`

- `order_by: optional string`

  Sort field. Restricted to the endpoint's sort column plus its rankable metrics (metrics default to descending; a few metrics rank in date-range mode only, per the endpoint's documented orderable set).

- `page: optional string`

  Opaque cursor from a previous response's `next_page` field.

- `starting_date: optional string`

  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.

  format: date

## Returns

- `BetaUserActivity object`

  Response for GET /v1/organizations/analytics/users.

  - `data: array of object`

    - `chat_metrics: object`

      Claude.ai activity metrics for a single user on a given day.

      - `connectors_used_count: number`

        Number of MCP connector invocations.

      - `distinct_artifacts_created_count: number`

        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.

      - `distinct_connectors_used_count: number or null`

        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.

      - `distinct_conversation_count: number or null`

        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.

      - `distinct_files_uploaded_count: number or null`

        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.

      - `distinct_projects_created_count: number`

        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.

      - `distinct_projects_used_count: number or null`

        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.

      - `distinct_shared_artifacts_viewed_count: number or null`

        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.

      - `distinct_skills_used_count: number or null`

        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.

      - `message_count: number`

        Number of messages sent

      - `shared_conversations_viewed_count: number`

        Number of times the user opened a shared conversation in a project

      - `thinking_message_count: number`

        Number of messages that used extended thinking

    - `claude_code_metrics: object`

      Claude Code activity metrics for a single user on a given day.

      - `core_metrics: object`

        Core Claude Code activity metrics for a single user on a given day.

        - `artifacts_created_count: number`

          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.

        - `commit_count: number`

          Number of commits made via Claude Code

        - `distinct_session_count: number or null`

          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.

        - `lines_of_code: object`

          Lines of code added and removed via Claude Code.

          - `added_count: number`

            Lines of code added

          - `removed_count: number`

            Lines of code removed

        - `pull_request_count: number`

          Number of pull requests created via Claude Code

      - `tool_actions: object`

        Per-tool accepted/rejected counts for Claude Code file modification tools.

        - `edit_tool: BetaToolActionCounts`

          Accepted/rejected counts for a single Claude Code tool type.

          - `accepted_count: number`

            Number of tool proposals accepted

          - `rejected_count: number`

            Number of tool proposals rejected

        - `multi_edit_tool: BetaToolActionCounts`

          Accepted/rejected counts for a single Claude Code tool type.

        - `notebook_edit_tool: BetaToolActionCounts`

          Accepted/rejected counts for a single Claude Code tool type.

        - `write_tool: BetaToolActionCounts`

          Accepted/rejected counts for a single Claude Code tool type.

    - `cowork_metrics: object`

      Cowork activity metrics for a single user on a given day.

      - `action_count: number`

        Number of tool actions completed in Cowork sessions

      - `artifacts_created_count: number`

        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.

      - `connectors_used_count: number`

        Total number of connector invocations in Cowork sessions

      - `dispatch_turn_count: number`

        Number of Dispatch (background agent) turns completed

      - `distinct_connectors_used_count: number or null`

        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.

      - `distinct_session_count: number or null`

        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.

      - `distinct_skills_used_count: number or null`

        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.

      - `message_count: number`

        Number of messages sent in Cowork sessions

      - `skills_used_count: number`

        Total number of skill invocations in Cowork sessions

      - `distinct_plugins_used_count: optional number or null`

        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.

      - `edit_tool_count: optional number or null`

        Number of successful Edit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.

      - `file_edit_count: optional number or null`

        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.

      - `multi_edit_tool_count: optional number or null`

        Number of successful MultiEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.

      - `notebook_edit_tool_count: optional number or null`

        Number of successful NotebookEdit tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.

      - `plugins_used_count: optional number or null`

        Total number of plugin invocations in Cowork sessions. Null while Cowork plugin-use metrics are not enabled for this organization.

      - `sessions_with_file_edits_count: optional number or null`

        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.

      - `write_tool_count: optional number or null`

        Number of successful Write tool calls in Cowork sessions. Null while the file-edit metrics are not enabled for this organization.

    - `design_metrics: object`

      Claude Design activity metrics for a single user on a given day.

      - `distinct_projects_created_count: number`

        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.

      - `distinct_projects_used_count: number or null`

        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.

      - `distinct_session_count: number or null`

        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.

      - `message_count: number`

        Number of messages sent in Claude Design sessions

    - `office_metrics: object`

      Office Agent activity metrics for a single user on a given day, broken out by Office product.

      - `excel: BetaOfficeProductMetrics`

        Office Agent activity metrics for a single user on a given day within one Office product.

        - `connectors_used_count: number`

          Number of MCP connector invocations

        - `distinct_connectors_used_count: number or null`

Cut at 300 lines. The page has the rest.

api/beta/organization/api_keys Changed · +109 / -104 lines

## Retrieve API Key (Admin API) ## Get API Key

from line 1
1---
2title: API Keys
3url: https://platform.claude.com/docs/en/api/beta/organization/api_keys
4---
5 
16# API Keys
27 
38## List API Keys
from line 53
4853 
4954- `data: array of BetaAPIKey`
5055 
56 - `type: "api_key"`
57 
58 Object type.
59 
60 For API Keys, this is always `"api_key"`.
61 
62 default: api_key
63 
5164 - `id: string`
5265 
5366 ID of the API key.
from line 77
6477 creator is not recorded (legacy, workload-identity-federated, or
6578 system-created keys).
6679 
67 - `id: string`
68 
69 ID of the actor that created the object.
70 
7180 - `type: "service_account" or "user"`
7281 
7382 Type of the actor that created the object.
from line 85
7685 
7786 - `"user"`
7887 
88 - `id: string`
89 
90 ID of the actor that created the object.
91 
7992 - `expires_at: string or null`
8093 
8194 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
from line 121
108121 
109122 - `BetaAPIKeyServiceAccountActor object`
110123 
111 - `service_account_id: string`
112 
113 ID of the Service Account the API key acts as.
114 
115124 - `type: "service_account_actor"`
116125 
117126 Principal type. Always `"service_account_actor"` for a Service Account.
from line 127
118127 
119128 default: service_account_actor
120129 
130 - `service_account_id: string`
131 
132 ID of the Service Account the API key acts as.
133 
121134 - `scope: BetaAPIKeyOrganizationScope or BetaAPIKeyWorkspaceScope`
122135 
123136 Where the API key belongs: its Workspace (`{"type": "workspace", "workspace_id": "wrkspc_..."}`, with the Workspace's real ID even when it is the organization's default Workspace), or the organization (`{"type": "organization"}`) for a principal-bound API key that has no Workspace.
from line 167
154167 
155168 - `"inactive"`
156169 
157 - `type: "api_key"`
158 
159 Object type.
160 
161 For API Keys, this is always `"api_key"`.
162 
163 default: api_key
164 
165170 - `workspace_id: string or null`
166171 
167172 **Deprecated**: Use `scope` instead. `workspace_id` is `null` both for an API key in the default Workspace and for a principal-bound API key that has no Workspace.
from line 227
222227}
223228```
224229 
225## Get API Key
230## Retrieve API Key (Admin API)
226231 
227232**GET** `/v1/organizations/api_keys/{api_key_id}`
228233 
229Get API Key
234Retrieve information about a single API key in your organization, looked up by its ID. This Admin API endpoint requires an Admin API key, is intended for programmatic key management, and never returns the key's secret value. To view or create your own API keys, go to [API keys](https://platform.claude.com/settings/keys) in the Claude Console.
230235 
231236### Path parameters
232237 
from line 243
238243 
239244- `BetaAPIKey object`
240245 
246 - `type: "api_key"`
247 
248 Object type.
249 
250 For API Keys, this is always `"api_key"`.
251 
252 default: api_key
253 
241254 - `id: string`
242255 
243256 ID of the API key.
from line 267
254267 creator is not recorded (legacy, workload-identity-federated, or
255268 system-created keys).
256269 
257 - `id: string`
258 
259 ID of the actor that created the object.
260 
261270 - `type: "service_account" or "user"`
262271 
263272 Type of the actor that created the object.
from line 275
266275 
267276 - `"user"`
268277 
278 - `id: string`
279 
280 ID of the actor that created the object.
281 
269282 - `expires_at: string or null`
270283 
271284 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
from line 311
298311 
299312 - `BetaAPIKeyServiceAccountActor object`
300313 
301 - `service_account_id: string`
302 
303 ID of the Service Account the API key acts as.
304 
305314 - `type: "service_account_actor"`
306315 
307316 Principal type. Always `"service_account_actor"` for a Service Account.
from line 317
308317 
309318 default: service_account_actor
310319 
320 - `service_account_id: string`
321 
322 ID of the Service Account the API key acts as.
323 
311324 - `scope: BetaAPIKeyOrganizationScope or BetaAPIKeyWorkspaceScope`
312325 
313326 Where the API key belongs: its Workspace (`{"type": "workspace", "workspace_id": "wrkspc_..."}`, with the Workspace's real ID even when it is the organization's default Workspace), or the organization (`{"type": "organization"}`) for a principal-bound API key that has no Workspace.
from line 357
344357 
345358 - `"inactive"`
346359 
347 - `type: "api_key"`
348 
349 Object type.
350 
351 For API Keys, this is always `"api_key"`.
352 
353 default: api_key
354 
355360 - `workspace_id: string or null`
356361 
357362 **Deprecated**: Use `scope` instead. `workspace_id` is `null` both for an API key in the default Workspace and for a principal-bound API key that has no Workspace.
from line 432
427432 
428433- `BetaAPIKey object`
429434 
435 - `type: "api_key"`
436 
437 Object type.
438 
439 For API Keys, this is always `"api_key"`.
440 
441 default: api_key
442 
430443 - `id: string`
431444 
432445 ID of the API key.
from line 456
443456 creator is not recorded (legacy, workload-identity-federated, or
444457 system-created keys).
445458 
446 - `id: string`
447 
448 ID of the actor that created the object.
449 
450459 - `type: "service_account" or "user"`
451460 
452461 Type of the actor that created the object.
from line 464
455464 
456465 - `"user"`
457466 
467 - `id: string`
468 
469 ID of the actor that created the object.
470 
458471 - `expires_at: string or null`
459472 
460473 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
from line 500
487500 
488501 - `BetaAPIKeyServiceAccountActor object`
489502 
490 - `service_account_id: string`
491 
492 ID of the Service Account the API key acts as.
493 
494503 - `type: "service_account_actor"`
495504 
496505 Principal type. Always `"service_account_actor"` for a Service Account.
from line 506
497506 
498507 default: service_account_actor
499508 
509 - `service_account_id: string`
510 
511 ID of the Service Account the API key acts as.
512 
500513 - `scope: BetaAPIKeyOrganizationScope or BetaAPIKeyWorkspaceScope`
501514 
502515 Where the API key belongs: its Workspace (`{"type": "workspace", "workspace_id": "wrkspc_..."}`, with the Workspace's real ID even when it is the organization's default Workspace), or the organization (`{"type": "organization"}`) for a principal-bound API key that has no Workspace.
from line 546
533546 
534547 - `"inactive"`
535548 
536 - `type: "api_key"`
537 
538 Object type.
539 
540 For API Keys, this is always `"api_key"`.
541 
542 default: api_key
543 
544549 - `workspace_id: string or null`
545550 
546551 **Deprecated**: Use `scope` instead. `workspace_id` is `null` both for an API key in the default Workspace and for a principal-bound API key that has no Workspace.
from line 595
590595 
591596- `BetaAPIKey object`
592597 
598 - `type: "api_key"`
599 
600 Object type.
601 
602 For API Keys, this is always `"api_key"`.
603 
604 default: api_key
605 
593606 - `id: string`
594607 
595608 ID of the API key.
from line 619
606619 creator is not recorded (legacy, workload-identity-federated, or
607620 system-created keys).
608621 
609 - `id: string`
610 
611 ID of the actor that created the object.
612 
613622 - `type: "service_account" or "user"`
614623 
615624 Type of the actor that created the object.
from line 627
618627 
619628 - `"user"`
620629 
630 - `id: string`
631 
632 ID of the actor that created the object.
633 
621634 - `expires_at: string or null`
622635 
623636 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
from line 663
650663 
651664 - `BetaAPIKeyServiceAccountActor object`
652665 
653 - `service_account_id: string`
654 
655 ID of the Service Account the API key acts as.
656 
657666 - `type: "service_account_actor"`
658667 
659668 Principal type. Always `"service_account_actor"` for a Service Account.
from line 669
660669 
661670 default: service_account_actor
662671 
672 - `service_account_id: string`
673 
674 ID of the Service Account the API key acts as.
675 
663676 - `scope: BetaAPIKeyOrganizationScope or BetaAPIKeyWorkspaceScope`
664677 
665678 Where the API key belongs: its Workspace (`{"type": "workspace", "workspace_id": "wrkspc_..."}`, with the Workspace's real ID even when it is the organization's default Workspace), or the organization (`{"type": "organization"}`) for a principal-bound API key that has no Workspace.
from line 709
696709 
697710 - `"inactive"`
698711 
699 - `type: "api_key"`
700 
701 Object type.
702 
703 For API Keys, this is always `"api_key"`.
704 
705 default: api_key
706 
707712 - `workspace_id: string or null`
708713 
709714 **Deprecated**: Use `scope` instead. `workspace_id` is `null` both for an API key in the default Workspace and for a principal-bound API key that has no Workspace.
from line 719
714719 
715720- `BetaAPIKeyCreatedBy object`
716721 
717 - `id: string`
718 
719 ID of the actor that created the object.
720 
721722 - `type: "service_account" or "user"`
722723 
723724 Type of the actor that created the object.
from line 727
726727 
727728 - `"user"`
728729 
730 - `id: string`
731 
732 ID of the actor that created the object.
733 
729734### Beta API Key Organization Scope
730735 
731736- `BetaAPIKeyOrganizationScope object`
from line 745
740745 
741746- `BetaAPIKeyServiceAccountActor object`
742747 
743 - `service_account_id: string`
744 
745 ID of the Service Account the API key acts as.
746 
747748 - `type: "service_account_actor"`
748749 
749750 Principal type. Always `"service_account_actor"` for a Service Account.
750751 
751752 default: service_account_actor
753 
754 - `service_account_id: string`
755 
756 ID of the Service Account the API key acts as.
752757 
753758### Beta API Key User Actor
754759 

api/beta/organization/api_keys/list Changed · +27 / -22 lines

from line 1
1---
2title: List API Keys
3url: https://platform.claude.com/docs/en/api/beta/organization/api_keys/list
4---
5 
16# List API Keys
27 
38**GET** `/v1/organizations/api_keys`
from line 51
4651 
4752- `data: array of BetaAPIKey`
4853 
54 - `type: "api_key"`
55 
56 Object type.
57 
58 For API Keys, this is always `"api_key"`.
59 
60 default: api_key
61 
4962 - `id: string`
5063 
5164 ID of the API key.
from line 75
6275 creator is not recorded (legacy, workload-identity-federated, or
6376 system-created keys).
6477 
65 - `id: string`
66 
67 ID of the actor that created the object.
68 
6978 - `type: "service_account" or "user"`
7079 
7180 Type of the actor that created the object.
from line 83
7483 
7584 - `"user"`
7685 
86 - `id: string`
87 
88 ID of the actor that created the object.
89 
7790 - `expires_at: string or null`
7891 
7992 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
from line 119
106119 
107120 - `BetaAPIKeyServiceAccountActor object`
108121 
109 - `service_account_id: string`
110 
111 ID of the Service Account the API key acts as.
112 
113122 - `type: "service_account_actor"`
114123 
115124 Principal type. Always `"service_account_actor"` for a Service Account.
from line 125
116125 
117126 default: service_account_actor
118127 
128 - `service_account_id: string`
129 
130 ID of the Service Account the API key acts as.
131 
119132 - `scope: BetaAPIKeyOrganizationScope or BetaAPIKeyWorkspaceScope`
120133 
121134 Where the API key belongs: its Workspace (`{"type": "workspace", "workspace_id": "wrkspc_..."}`, with the Workspace's real ID even when it is the organization's default Workspace), or the organization (`{"type": "organization"}`) for a principal-bound API key that has no Workspace.
from line 164
151164 - `"expired"`
152165 
153166 - `"inactive"`
154 
155 - `type: "api_key"`
156 
157 Object type.
158 
159 For API Keys, this is always `"api_key"`.
160 
161 default: api_key
162167 
163168 - `workspace_id: string or null`
164169 

api/beta/organization/api_keys/retrieve Changed · +23 / -18 lines

# Retrieve API Key (Admin API) # Get API Key

from line 1
1# Get API Key
1---
2title: Retrieve API Key (Admin API)
3url: https://platform.claude.com/docs/en/api/beta/organization/api_keys/retrieve
4---
25 
6# Retrieve API Key (Admin API)
7 
38**GET** `/v1/organizations/api_keys/{api_key_id}`
49 
5Get API Key
10Retrieve information about a single API key in your organization, looked up by its ID. This Admin API endpoint requires an Admin API key, is intended for programmatic key management, and never returns the key's secret value. To view or create your own API keys, go to [API keys](https://platform.claude.com/settings/keys) in the Claude Console.
611 
712## Path parameters
813 
from line 19
1419 
1520- `BetaAPIKey object`
1621 
22 - `type: "api_key"`
23 
24 Object type.
25 
26 For API Keys, this is always `"api_key"`.
27 
28 default: api_key
29 
1730 - `id: string`
1831 
1932 ID of the API key.
from line 43
3043 creator is not recorded (legacy, workload-identity-federated, or
3144 system-created keys).
3245 
33 - `id: string`
34 
35 ID of the actor that created the object.
36 
3746 - `type: "service_account" or "user"`
3847 
3948 Type of the actor that created the object.
from line 51
4251 
4352 - `"user"`
4453 
54 - `id: string`
55 
56 ID of the actor that created the object.
57 
4558 - `expires_at: string or null`
4659 
4760 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
from line 87
7487 
7588 - `BetaAPIKeyServiceAccountActor object`
7689 
77 - `service_account_id: string`
78 
79 ID of the Service Account the API key acts as.
80 
8190 - `type: "service_account_actor"`
8291 
8392 Principal type. Always `"service_account_actor"` for a Service Account.
from line 93
8493 
8594 default: service_account_actor
8695 
96 - `service_account_id: string`
97 
98 ID of the Service Account the API key acts as.
99 
87100 - `scope: BetaAPIKeyOrganizationScope or BetaAPIKeyWorkspaceScope`
88101 
89102 Where the API key belongs: its Workspace (`{"type": "workspace", "workspace_id": "wrkspc_..."}`, with the Workspace's real ID even when it is the organization's default Workspace), or the organization (`{"type": "organization"}`) for a principal-bound API key that has no Workspace.
from line 132
119132 - `"expired"`
120133 
121134 - `"inactive"`
122 
123 - `type: "api_key"`
124 
125 Object type.
126 
127 For API Keys, this is always `"api_key"`.
128 
129 default: api_key
130135 
131136 - `workspace_id: string or null`
132137 

api/beta/organization/api_keys/update Changed · +21 / -16 lines

from line 1
1---
2title: Update API Key
3url: https://platform.claude.com/docs/en/api/beta/organization/api_keys/update
4---
5 
16# Update API Key
27 
38**POST** `/v1/organizations/api_keys/{api_key_id}`
from line 37
3237 
3338- `BetaAPIKey object`
3439 
40 - `type: "api_key"`
41 
42 Object type.
43 
44 For API Keys, this is always `"api_key"`.
45 
46 default: api_key
47 
3548 - `id: string`
3649 
3750 ID of the API key.
from line 61
4861 creator is not recorded (legacy, workload-identity-federated, or
4962 system-created keys).
5063 
51 - `id: string`
52 
53 ID of the actor that created the object.
54 
5564 - `type: "service_account" or "user"`
5665 
5766 Type of the actor that created the object.
from line 69
6069 
6170 - `"user"`
6271 
72 - `id: string`
73 
74 ID of the actor that created the object.
75 
6376 - `expires_at: string or null`
6477 
6578 RFC 3339 datetime string indicating when the API Key expires, or `null` if it never expires.
from line 105
92105 
93106 - `BetaAPIKeyServiceAccountActor object`
94107 
95 - `service_account_id: string`
96 
97 ID of the Service Account the API key acts as.
98 
99108 - `type: "service_account_actor"`
100109 
101110 Principal type. Always `"service_account_actor"` for a Service Account.
from line 111
102111 
103112 default: service_account_actor
104113 
114 - `service_account_id: string`
115 
116 ID of the Service Account the API key acts as.
117 
105118 - `scope: BetaAPIKeyOrganizationScope or BetaAPIKeyWorkspaceScope`
106119 
107120 Where the API key belongs: its Workspace (`{"type": "workspace", "workspace_id": "wrkspc_..."}`, with the Workspace's real ID even when it is the organization's default Workspace), or the organization (`{"type": "organization"}`) for a principal-bound API key that has no Workspace.
from line 150
137150 - `"expired"`
138151 
139152 - `"inactive"`
140 
141 - `type: "api_key"`
142 
143 Object type.
144 
145 For API Keys, this is always `"api_key"`.
146 
147 default: api_key
148153 
149154 - `workspace_id: string or null`
150155 

api/beta/organization/compliance_settings Changed · +48 / -15 lines

### Beta Compliance Settings State ### Beta Compliance Settings State Param

from line 1
1---
2title: Compliance Settings
3url: https://platform.claude.com/docs/en/api/beta/organization/compliance_settings
4---
5 
16# Compliance Settings
27 
38## Get Compliance Settings
from line 20
1520 
1621- `BetaComplianceSettings object`
1722 
18 - `state: BetaComplianceSettingsStateEnabled or BetaComplianceSettingsStateDisabled`
23 - `type: "compliance_settings"`
1924 
25 default: compliance_settings
26 
27 - `state: BetaComplianceSettingsState`
28 
2029 Whether the Compliance API is enabled for this organization.
2130 
2231 - `BetaComplianceSettingsStateEnabled object`
from line 40
3140 
3241 default: disabled
3342 
34 - `type: "compliance_settings"`
35 
36 default: compliance_settings
37 
3843### Example
3944 
4045```bash
from line 80
7580 
7681### Body parameters
7782 
78- `state: BetaComplianceSettingsStateEnabledParam or BetaComplianceSettingsStateDisabledParam`
83- `state: BetaComplianceSettingsStateParam`
7984 
8085 Desired state. Accepts the string shorthand "enabled" or "disabled" in place of the object form; the response always returns the canonical object form.
8186 
from line 96
9196 
9297- `BetaComplianceSettings object`
9398 
94 - `state: BetaComplianceSettingsStateEnabled or BetaComplianceSettingsStateDisabled`
99 - `type: "compliance_settings"`
95100 
101 default: compliance_settings
102 
103 - `state: BetaComplianceSettingsState`
104 
96105 Whether the Compliance API is enabled for this organization.
97106 
98107 - `BetaComplianceSettingsStateEnabled object`
from line 116
107116 
108117 default: disabled
109118 
110 - `type: "compliance_settings"`
111 
112 default: compliance_settings
113 
114119### Example
115120 
116121```bash
from line 147
142147 
143148- `BetaComplianceSettings object`
144149 
145 - `state: BetaComplianceSettingsStateEnabled or BetaComplianceSettingsStateDisabled`
150 - `type: "compliance_settings"`
146151 
152 default: compliance_settings
153 
154 - `state: BetaComplianceSettingsState`
155 
147156 Whether the Compliance API is enabled for this organization.
148157 
149158 - `BetaComplianceSettingsStateEnabled object`
from line 167
158167 
159168 default: disabled
160169 
161 - `type: "compliance_settings"`
170### Beta Compliance Settings State
162171 
163 default: compliance_settings
172- `BetaComplianceSettingsState = BetaComplianceSettingsStateEnabled or BetaComplianceSettingsStateDisabled`
164173 
174 - `BetaComplianceSettingsStateEnabled object`
175 
176 - `type: "enabled"`
177 
178 default: enabled
179 
180 - `BetaComplianceSettingsStateDisabled object`
181 
182 - `type: "disabled"`
183 
184 default: disabled
185 
165186### Beta Compliance Settings State Disabled
166187 
167188- `BetaComplianceSettingsStateDisabled object`
from line 210
189210- `BetaComplianceSettingsStateEnabledParam object`
190211 
191212 - `type: "enabled"`
213 
214### Beta Compliance Settings State Param
215 
216- `BetaComplianceSettingsStateParam = BetaComplianceSettingsStateEnabledParam or BetaComplianceSettingsStateDisabledParam`
217 
218 - `BetaComplianceSettingsStateEnabledParam object`
219 
220 - `type: "enabled"`
221 
222 - `BetaComplianceSettingsStateDisabledParam object`
223 
224 - `type: "disabled"`
192225 

api/beta/organization/compliance_settings/retrieve Changed · +10 / -5 lines

from line 1
1---
2title: Get Compliance Settings
3url: https://platform.claude.com/docs/en/api/beta/organization/compliance_settings/retrieve
4---
5 
16# Get Compliance Settings
27 
38**GET** `/v1/organizations/compliance_settings`
from line 18
1318 
1419- `BetaComplianceSettings object`
1520 
16 - `state: BetaComplianceSettingsStateEnabled or BetaComplianceSettingsStateDisabled`
21 - `type: "compliance_settings"`
1722 
23 default: compliance_settings
24 
25 - `state: BetaComplianceSettingsState`
26 
1827 Whether the Compliance API is enabled for this organization.
1928 
2029 - `BetaComplianceSettingsStateEnabled object`
from line 37
2837 - `type: "disabled"`
2938 
3039 default: disabled
31 
32 - `type: "compliance_settings"`
33 
34 default: compliance_settings
3540 
3641## Example
3742 

api/beta/organization/compliance_settings/update Changed · +11 / -6 lines

from line 1
1---
2title: Update Compliance Settings
3url: https://platform.claude.com/docs/en/api/beta/organization/compliance_settings/update
4---
5 
16# Update Compliance Settings
27 
38**POST** `/v1/organizations/compliance_settings`
from line 24
1924 
2025## Body parameters
2126 
22- `state: BetaComplianceSettingsStateEnabledParam or BetaComplianceSettingsStateDisabledParam`
27- `state: BetaComplianceSettingsStateParam`
2328 
2429 Desired state. Accepts the string shorthand "enabled" or "disabled" in place of the object form; the response always returns the canonical object form.
2530 
from line 40
3540 
3641- `BetaComplianceSettings object`
3742 
38 - `state: BetaComplianceSettingsStateEnabled or BetaComplianceSettingsStateDisabled`
43 - `type: "compliance_settings"`
3944 
45 default: compliance_settings
46 
47 - `state: BetaComplianceSettingsState`
48 
4049 Whether the Compliance API is enabled for this organization.
4150 
4251 - `BetaComplianceSettingsStateEnabled object`
from line 59
5059 - `type: "disabled"`
5160 
5261 default: disabled
53 
54 - `type: "compliance_settings"`
55 
56 default: compliance_settings
5762 
5863## Example
5964 

api/beta/organization/cost_report New page · 400 lines, new page

# Cost Report ## Get Cost Report ### Query parameters ### Headers ### Returns ### Example #### Response (200) ## Domain types ### Beta Cost Report

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

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

# Cost Report

## Get Cost Report

**GET** `/v1/organizations/cost_report`

Get Cost Report

### Query parameters

- `starting_at: string`

  Time buckets that start on or after this RFC 3339 timestamp will be returned.
  Each time bucket will be snapped to the start of the minute/hour/day in UTC.

  format: date-time

- `bucket_width: optional "1d"`

  Time granularity of the response data.

  default: 1d

- `ending_at: optional string`

  Time buckets that end before this RFC 3339 timestamp will be returned.

  format: date-time

- `group_by: optional array of "description" or "workspace_id"`

  Group by any subset of the available options.

  - `"description"`

  - `"workspace_id"`

- `limit: optional number`

  Maximum number of time buckets to return in the response.

  default: 7, maximum: 31, minimum: 1

- `page: optional string`

  Optionally set to the `next_page` token from the previous response.

### Headers

- `"anthropic-beta": optional array of AnthropicBeta`

  Optional header to specify the beta version(s) you want to use.

  - `string`

  - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`

    - `"message-batches-2024-09-24"`

    - `"prompt-caching-2024-07-31"`

    - `"computer-use-2024-10-22"`

    - `"computer-use-2025-01-24"`

    - `"pdfs-2024-09-25"`

    - `"token-counting-2024-11-01"`

    - `"token-efficient-tools-2025-02-19"`

    - `"output-128k-2025-02-19"`

    - `"files-api-2025-04-14"`

    - `"mcp-client-2025-04-04"`

    - `"mcp-client-2025-11-20"`

    - `"dev-full-thinking-2025-05-14"`

    - `"interleaved-thinking-2025-05-14"`

    - `"code-execution-2025-05-22"`

    - `"extended-cache-ttl-2025-04-11"`

    - `"context-1m-2025-08-07"`

    - `"context-management-2025-06-27"`

    - `"model-context-window-exceeded-2025-08-26"`

    - `"skills-2025-10-02"`

    - `"fast-mode-2026-02-01"`

    - `"output-300k-2026-03-24"`

    - `"user-profiles-2026-03-24"`

    - `"user-profiles-2026-08-18"`

    - `"user-profiles-2026-09-04"`

    - `"advisor-tool-2026-03-01"`

    - `"managed-agents-2026-04-01"`

    - `"cache-diagnosis-2026-04-07"`

    - `"dreaming-2026-04-21"`

    - `"thinking-token-count-2026-05-13"`

    - `"server-side-fallback-2026-06-01"`

    - `"server-side-fallback-2026-07-01"`

    - `"fallback-credit-2026-06-01"`

    - `"fallback-credit-2026-07-01"`

    - `"agent-memory-2026-07-22"`

    - `"mid-conversation-tool-changes-2026-07-01"`

    - `"compact-2026-01-12"`

    - `"computer-use-2025-11-24"`

    - `"mcp-tunnels-2026-06-22"`

    - `"structured-outputs-2025-11-13"`

    - `"task-budgets-2026-03-13"`

    - `"thinking-display-updates-2026-08-18"`

    - `"ce-user-management-2026-07-13"`

    - `"mid-conversation-output-config-2026-07-01"`

    - `"thinking-binding-controls-2026-08-01"`

    - `"mid-conversation-system-clear-at-2026-08-21"`

### Returns

- `BetaCostReport object`

  - `data: array of object`

    List of time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no costs (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 object`

      List of cost items for this time bucket. There may be multiple items if one or more `group_by[]` parameters are specified.

      - `amount: string`

        Cost amount in lowest currency units (e.g. cents) as a decimal string. For example, `"123.45"` in `"USD"` represents `$1.23`.

      - `context_window: "0-200k" or "200k-1M" or null`

        Input context window used. `null` if not grouping by description or for non-token costs.

        - `"0-200k"`

        - `"200k-1M"`

      - `cost_type: "code_execution" or "session_usage" or "tokens" or "web_search" or null`

        Type of cost. `null` if not grouping by description.

        - `"code_execution"`

        - `"session_usage"`

        - `"tokens"`

        - `"web_search"`

      - `currency: string`

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

      - `description: string or null`

        Description of the cost item. `null` if not grouping by description.

      - `inference_geo: "global" or "not_available" or "us" or null`

        Inference geo used matching requests' `inference_geo` parameter if set, otherwise the workspace's `default_inference_geo`.
        For models that do not support specifying `inference_geo` the value is `"not_available"`. Always `null` if not grouping by inference geo.

        - `"global"`

        - `"not_available"`

        - `"us"`

      - `model: string or null`

        Model name used. `null` if not grouping by description or for non-token costs.

      - `service_tier: "batch" or "standard" or null`

        Service tier used. `null` if not grouping by description or for non-token costs.

        - `"batch"`

        - `"standard"`

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

        Type of token. `null` if not grouping by description or for non-token costs.

        - `"cache_creation.ephemeral_1h_input_tokens"`

        - `"cache_creation.ephemeral_5m_input_tokens"`

        - `"cache_read_input_tokens"`

        - `"output_tokens"`

        - `"uncached_input_tokens"`

      - `workspace_id: string or null`

        ID of the Workspace this cost is associated with. `null` if not grouping by workspace or for the default workspace.

    - `starting_at: string`

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

      format: date-time

  - `has_more: boolean`

    Indicates if there are more results.

  - `next_page: string or null`

    Opaque cursor for the next page, or `null` when `has_more` is false. Pass it as the `page` parameter in the next request.

### Example

```bash
curl https://api.anthropic.com/v1/organizations/cost_report \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

#### Response (200)

```json
{
  "data": [
    {
      "ending_at": "2025-08-02T00:00:00Z",
      "results": [
        {
          "amount": "123.78912",
          "context_window": "0-200k",
          "cost_type": "tokens",
          "currency": "USD",
          "description": "Claude Opus 5 Usage - Input Tokens",
          "inference_geo": "global",
          "model": "claude-opus-5",
          "service_tier": "standard",
          "token_type": "uncached_input_tokens",
          "workspace_id": "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
        }
      ],
      "starting_at": "2025-08-01T00:00:00Z"
    }
  ],
  "has_more": true,
  "next_page": "page_MjAyNS0wNS0xNFQwMDowMDowMFo="
}
```

## Domain types

### Beta Cost Report

- `BetaCostReport object`

Cut at 300 lines. The page has the rest.

api/beta/organization/cost_report/retrieve New page · 291 lines, new page

# Get Cost Report ## Query parameters ## Headers ## Returns ## Example ### Response (200)

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

---
title: Get Cost Report
url: https://platform.claude.com/docs/en/api/beta/organization/cost_report/retrieve
---

# Get Cost Report

**GET** `/v1/organizations/cost_report`

Get Cost Report

## Query parameters

- `starting_at: string`

  Time buckets that start on or after this RFC 3339 timestamp will be returned.
  Each time bucket will be snapped to the start of the minute/hour/day in UTC.

  format: date-time

- `bucket_width: optional "1d"`

  Time granularity of the response data.

  default: 1d

- `ending_at: optional string`

  Time buckets that end before this RFC 3339 timestamp will be returned.

  format: date-time

- `group_by: optional array of "description" or "workspace_id"`

  Group by any subset of the available options.

  - `"description"`

  - `"workspace_id"`

- `limit: optional number`

  Maximum number of time buckets to return in the response.

  default: 7, maximum: 31, minimum: 1

- `page: optional string`

  Optionally set to the `next_page` token from the previous response.

## Headers

- `"anthropic-beta": optional array of AnthropicBeta`

  Optional header to specify the beta version(s) you want to use.

  - `string`

  - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`

    - `"message-batches-2024-09-24"`

    - `"prompt-caching-2024-07-31"`

    - `"computer-use-2024-10-22"`

    - `"computer-use-2025-01-24"`

    - `"pdfs-2024-09-25"`

    - `"token-counting-2024-11-01"`

    - `"token-efficient-tools-2025-02-19"`

    - `"output-128k-2025-02-19"`

    - `"files-api-2025-04-14"`

    - `"mcp-client-2025-04-04"`

    - `"mcp-client-2025-11-20"`

    - `"dev-full-thinking-2025-05-14"`

    - `"interleaved-thinking-2025-05-14"`

    - `"code-execution-2025-05-22"`

    - `"extended-cache-ttl-2025-04-11"`

    - `"context-1m-2025-08-07"`

    - `"context-management-2025-06-27"`

    - `"model-context-window-exceeded-2025-08-26"`

    - `"skills-2025-10-02"`

    - `"fast-mode-2026-02-01"`

    - `"output-300k-2026-03-24"`

    - `"user-profiles-2026-03-24"`

    - `"user-profiles-2026-08-18"`

    - `"user-profiles-2026-09-04"`

    - `"advisor-tool-2026-03-01"`

    - `"managed-agents-2026-04-01"`

    - `"cache-diagnosis-2026-04-07"`

    - `"dreaming-2026-04-21"`

    - `"thinking-token-count-2026-05-13"`

    - `"server-side-fallback-2026-06-01"`

    - `"server-side-fallback-2026-07-01"`

    - `"fallback-credit-2026-06-01"`

    - `"fallback-credit-2026-07-01"`

    - `"agent-memory-2026-07-22"`

    - `"mid-conversation-tool-changes-2026-07-01"`

    - `"compact-2026-01-12"`

    - `"computer-use-2025-11-24"`

    - `"mcp-tunnels-2026-06-22"`

    - `"structured-outputs-2025-11-13"`

    - `"task-budgets-2026-03-13"`

    - `"thinking-display-updates-2026-08-18"`

    - `"ce-user-management-2026-07-13"`

    - `"mid-conversation-output-config-2026-07-01"`

    - `"thinking-binding-controls-2026-08-01"`

    - `"mid-conversation-system-clear-at-2026-08-21"`

## Returns

- `BetaCostReport object`

  - `data: array of object`

    List of time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no costs (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 object`

      List of cost items for this time bucket. There may be multiple items if one or more `group_by[]` parameters are specified.

      - `amount: string`

        Cost amount in lowest currency units (e.g. cents) as a decimal string. For example, `"123.45"` in `"USD"` represents `$1.23`.

      - `context_window: "0-200k" or "200k-1M" or null`

        Input context window used. `null` if not grouping by description or for non-token costs.

        - `"0-200k"`

        - `"200k-1M"`

      - `cost_type: "code_execution" or "session_usage" or "tokens" or "web_search" or null`

        Type of cost. `null` if not grouping by description.

        - `"code_execution"`

        - `"session_usage"`

        - `"tokens"`

        - `"web_search"`

      - `currency: string`

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

      - `description: string or null`

        Description of the cost item. `null` if not grouping by description.

      - `inference_geo: "global" or "not_available" or "us" or null`

        Inference geo used matching requests' `inference_geo` parameter if set, otherwise the workspace's `default_inference_geo`.
        For models that do not support specifying `inference_geo` the value is `"not_available"`. Always `null` if not grouping by inference geo.

        - `"global"`

        - `"not_available"`

        - `"us"`

      - `model: string or null`

        Model name used. `null` if not grouping by description or for non-token costs.

      - `service_tier: "batch" or "standard" or null`

        Service tier used. `null` if not grouping by description or for non-token costs.

        - `"batch"`

        - `"standard"`

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

        Type of token. `null` if not grouping by description or for non-token costs.

        - `"cache_creation.ephemeral_1h_input_tokens"`

        - `"cache_creation.ephemeral_5m_input_tokens"`

        - `"cache_read_input_tokens"`

        - `"output_tokens"`

        - `"uncached_input_tokens"`

      - `workspace_id: string or null`

        ID of the Workspace this cost is associated with. `null` if not grouping by workspace or for the default workspace.

    - `starting_at: string`

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

      format: date-time

  - `has_more: boolean`

    Indicates if there are more results.

  - `next_page: string or null`

    Opaque cursor for the next page, or `null` when `has_more` is false. Pass it as the `page` parameter in the next request.

## Example

```bash
curl https://api.anthropic.com/v1/organizations/cost_report \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

### Response (200)

```json
{
  "data": [
    {
      "ending_at": "2025-08-02T00:00:00Z",
      "results": [
        {
          "amount": "123.78912",
          "context_window": "0-200k",
          "cost_type": "tokens",
          "currency": "USD",
          "description": "Claude Opus 5 Usage - Input Tokens",
          "inference_geo": "global",
          "model": "claude-opus-5",
          "service_tier": "standard",
          "token_type": "uncached_input_tokens",
          "workspace_id": "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
        }
      ],
      "starting_at": "2025-08-01T00:00:00Z"
    }
  ],
  "has_more": true,
  "next_page": "page_MjAyNS0wNS0xNFQwMDowMDowMFo="
}
```

api/beta/organization/external_keys Changed · +103 / -98 lines

from line 1
1---
2title: External Keys
3url: https://platform.claude.com/docs/en/api/beta/organization/external_keys
4---
5 
16# External Keys
27 
38## Create External Key
from line 19
1419 
1520 - `BetaAWSExternalKeyConfig object`
1621 
22 - `type: "aws"`
23 
1724 - `kms_arn: string`
1825 
1926 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 27
2027 
2128 maxLength: 2048
2229 
23 - `type: "aws"`
24 
2530 - `region: optional string or null`
2631 
2732 AWS region. Derived from `kms_arn` if omitted.
from line 39
3439 
3540 - `BetaGCPExternalKeyConfig object`
3641 
42 - `type: "gcp"`
43 
3744 - `key_name: string`
3845 
3946 Full resource name of the Cloud KMS key.
4047 
41 - `type: "gcp"`
42 
4348 - `BetaAzureExternalKeyConfigParam object`
4449 
4550 Azure Key Vault provider configuration.
4651 
52 - `type: "azure"`
53 
4754 - `key_name: string`
4855 
4956 Name of the key within the vault.
from line 59
5259 
5360 Azure AD tenant ID.
5461 
55 - `type: "azure"`
56 
5762 - `vault_uri: string`
5863 
5964 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 87
8287 workspace references it, the provider fields become effectively immutable
8388 (existing encrypted data needs the config for decrypt).
8489 
90 - `type: "external_key"`
91 
92 default: external_key
93 
8594 - `id: string`
8695 
8796 Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.
from line 129
120129 
121130 - `BetaAWSExternalKeyConfig object`
122131 
132 - `type: "aws"`
133 
123134 - `kms_arn: string`
124135 
125136 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 137
126137 
127138 maxLength: 2048
128139 
129 - `type: "aws"`
130 
131140 - `region: optional string or null`
132141 
133142 AWS region. Derived from `kms_arn` if omitted.
from line 149
140149 
141150 - `BetaGCPExternalKeyConfig object`
142151 
152 - `type: "gcp"`
153 
143154 - `key_name: string`
144155 
145156 Full resource name of the Cloud KMS key.
146157 
147 - `type: "gcp"`
148 
149158 - `BetaAzureExternalKeyConfig object`
150159 
160 - `type: "azure"`
161 
151162 - `key_name: string`
152163 
153164 Name of the key within the vault.
from line 167
156167 
157168 Azure AD tenant ID.
158169 
159 - `type: "azure"`
160 
161170 - `vault_uri: string`
162171 
163172 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 175
166175 
167176 Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.
168177 
169 - `type: "external_key"`
170 
171 default: external_key
172 
173178 - `updated_at: string`
174179 
175180 format: date-time
from line 241
236241 
237242- `data: array of BetaExternalKey`
238243 
244 - `type: "external_key"`
245 
246 default: external_key
247 
239248 - `id: string`
240249 
241250 Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.
from line 283
274283 
275284 - `BetaAWSExternalKeyConfig object`
276285 
286 - `type: "aws"`
287 
277288 - `kms_arn: string`
278289 
279290 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 291
280291 
281292 maxLength: 2048
282293 
283 - `type: "aws"`
284 
285294 - `region: optional string or null`
286295 
287296 AWS region. Derived from `kms_arn` if omitted.
from line 303
294303 
295304 - `BetaGCPExternalKeyConfig object`
296305 
306 - `type: "gcp"`
307 
297308 - `key_name: string`
298309 
299310 Full resource name of the Cloud KMS key.
300311 
301 - `type: "gcp"`
302 
303312 - `BetaAzureExternalKeyConfig object`
304313 
314 - `type: "azure"`
315 
305316 - `key_name: string`
306317 
307318 Name of the key within the vault.
from line 321
310321 
311322 Azure AD tenant ID.
312323 
313 - `type: "azure"`
314 
315324 - `vault_uri: string`
316325 
317326 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 329
320329 
321330 Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.
322331 
323 - `type: "external_key"`
324 
325 default: external_key
326 
327332 - `updated_at: string`
328333 
329334 format: date-time
from line 396
391396 workspace references it, the provider fields become effectively immutable
392397 (existing encrypted data needs the config for decrypt).
393398 
399 - `type: "external_key"`
400 
401 default: external_key
402 
394403 - `id: string`
395404 
396405 Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.
from line 438
429438 
430439 - `BetaAWSExternalKeyConfig object`
431440 
441 - `type: "aws"`
442 
432443 - `kms_arn: string`
433444 
434445 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 446
435446 
436447 maxLength: 2048
437448 
438 - `type: "aws"`
439 
440449 - `region: optional string or null`
441450 
442451 AWS region. Derived from `kms_arn` if omitted.
from line 458
449458 
450459 - `BetaGCPExternalKeyConfig object`
451460 
461 - `type: "gcp"`
462 
452463 - `key_name: string`
453464 
454465 Full resource name of the Cloud KMS key.
455466 
456 - `type: "gcp"`
457 
458467 - `BetaAzureExternalKeyConfig object`
459468 
469 - `type: "azure"`
470 
460471 - `key_name: string`
461472 
462473 Name of the key within the vault.
from line 476
465476 
466477 Azure AD tenant ID.
467478 
468 - `type: "azure"`
469 
470479 - `vault_uri: string`
471480 
472481 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 484
475484 
476485 Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.
477486 
478 - `type: "external_key"`
479 
480 default: external_key
481 
482487 - `updated_at: string`
483488 
484489 format: date-time
from line 554
549554 
550555 - `BetaAWSExternalKeyConfig object`
551556 
557 - `type: "aws"`
558 
552559 - `kms_arn: string`
553560 
554561 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 562
555562 
556563 maxLength: 2048
557564 
558 - `type: "aws"`
559 
560565 - `region: optional string or null`
561566 
562567 AWS region. Derived from `kms_arn` if omitted.
from line 574
569574 
570575 - `BetaGCPExternalKeyConfig object`
571576 
577 - `type: "gcp"`
578 
572579 - `key_name: string`
573580 
574581 Full resource name of the Cloud KMS key.
575582 
576 - `type: "gcp"`
577 
578583 - `BetaAzureExternalKeyConfigParam object`
579584 
580585 Azure Key Vault provider configuration.
581586 
587 - `type: "azure"`
588 
582589 - `key_name: string`
583590 
584591 Name of the key within the vault.
from line 594
587594 
588595 Azure AD tenant ID.
589596 
590 - `type: "azure"`
591 
592597 - `vault_uri: string`
593598 
594599 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 612
607612 workspace references it, the provider fields become effectively immutable
608613 (existing encrypted data needs the config for decrypt).
609614 
615 - `type: "external_key"`
616 
617 default: external_key
618 
610619 - `id: string`
611620 
612621 Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.
from line 654
645654 
646655 - `BetaAWSExternalKeyConfig object`
647656 
657 - `type: "aws"`
658 
648659 - `kms_arn: string`
649660 
650661 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 662
651662 
652663 maxLength: 2048
653664 
654 - `type: "aws"`
655 
656665 - `region: optional string or null`
657666 
658667 AWS region. Derived from `kms_arn` if omitted.
from line 674
665674 
666675 - `BetaGCPExternalKeyConfig object`
667676 
677 - `type: "gcp"`
678 
668679 - `key_name: string`
669680 
670681 Full resource name of the Cloud KMS key.
671682 
672 - `type: "gcp"`
673 
674683 - `BetaAzureExternalKeyConfig object`
675684 
685 - `type: "azure"`
686 
676687 - `key_name: string`
677688 
678689 Name of the key within the vault.
from line 692
681692 
682693 Azure AD tenant ID.
683694 
684 - `type: "azure"`
685 
686695 - `vault_uri: string`
687696 
688697 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 700
691700 
692701 Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.
693702 
694 - `type: "external_key"`
695 
696 default: external_key
697 
698703 - `updated_at: string`
699704 
700705 format: date-time
from line 754
749754 
750755### Returns
751756 
752- `id: string`
753 
754 ID of the deleted External Key.
755 
756757- `type: "external_key_deleted"`
757758 
758759 default: external_key_deleted
759760 
761- `id: string`
762 
763 ID of the deleted External Key.
764 
760765### Example
761766 
762767```bash
from line 801
796801 
797802### Returns
798803 
804- `type: "external_key_validation"`
805 
806 default: external_key_validation
807 
799808- `error: string or null`
800809 
801810 Error message when status is `failure`. Null otherwise.
from line 817
808817 
809818 - `"success"`
810819 
811- `type: "external_key_validation"`
812 
813 default: external_key_validation
814 
815820### Example
816821 
817822```bash
from line 842
837842 
838843- `BetaAWSExternalKeyConfig object`
839844 
845 - `type: "aws"`
846 
840847 - `kms_arn: string`
841848 
842849 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 850
843850 
844851 maxLength: 2048
845852 
846 - `type: "aws"`
847 
848853 - `region: optional string or null`
849854 
850855 AWS region. Derived from `kms_arn` if omitted.
from line 864
859864 
860865- `BetaAzureExternalKeyConfig object`
861866 
867 - `type: "azure"`
868 
862869 - `key_name: string`
863870 
864871 Name of the key within the vault.
from line 874
867874 
868875 Azure AD tenant ID.
869876 
870 - `type: "azure"`
871 
872877 - `vault_uri: string`
873878 
874879 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 888
883888 
884889 Azure Key Vault provider configuration.
885890 
891 - `type: "azure"`
892 
886893 - `key_name: string`
887894 
888895 Name of the key within the vault.
from line 898
891898 
892899 Azure AD tenant ID.
893900 
894 - `type: "azure"`
895 
896901 - `vault_uri: string`
897902 
898903 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 916
911916 workspace references it, the provider fields become effectively immutable
912917 (existing encrypted data needs the config for decrypt).
913918 
919 - `type: "external_key"`
920 
921 default: external_key
922 
914923 - `id: string`
915924 
916925 Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.
from line 958
949958 
950959 - `BetaAWSExternalKeyConfig object`
951960 
961 - `type: "aws"`
962 
952963 - `kms_arn: string`
953964 
954965 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 966
955966 
956967 maxLength: 2048
957968 
958 - `type: "aws"`
959 
960969 - `region: optional string or null`
961970 
962971 AWS region. Derived from `kms_arn` if omitted.
from line 978
969978 
970979 - `BetaGCPExternalKeyConfig object`
971980 
981 - `type: "gcp"`
982 
972983 - `key_name: string`
973984 
974985 Full resource name of the Cloud KMS key.
975986 
976 - `type: "gcp"`
977 
978987 - `BetaAzureExternalKeyConfig object`
979988 
989 - `type: "azure"`
990 
980991 - `key_name: string`
981992 
982993 Name of the key within the vault.
from line 996
985996 
986997 Azure AD tenant ID.
987998 
988 - `type: "azure"`
989 
990999 - `vault_uri: string`
9911000 
9921001 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 1004
9951004 
9961005 Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.
9971006 
998 - `type: "external_key"`
999 
1000 default: external_key
1001 
10021007 - `updated_at: string`
10031008 
10041009 format: date-time
from line 1028
10231028 
10241029- `BetaGCPExternalKeyConfig object`
10251030 
1031 - `type: "gcp"`
1032 
10261033 - `key_name: string`
10271034 
10281035 Full resource name of the Cloud KMS key.
10291036 
1030 - `type: "gcp"`
1031 
10321037### External Key Delete Response
10331038 
10341039- `ExternalKeyDeleteResponse object`
10351040 
1036 - `id: string`
1037 
1038 ID of the deleted External Key.
1039 
10401041 - `type: "external_key_deleted"`
10411042 
10421043 default: external_key_deleted
10431044 
1045 - `id: string`
1046 
1047 ID of the deleted External Key.
1048 
10441049### External Key Validate Response
10451050 
10461051- `ExternalKeyValidateResponse object`
from line 1055
10501055 HTTP 200 for both outcomes — the operation completed; `status` says
10511056 whether the key works.
10521057 
1058 - `type: "external_key_validation"`
1059 
1060 default: external_key_validation
1061 
10531062 - `error: string or null`
10541063 
10551064 Error message when status is `failure`. Null otherwise.
from line 1070
10611070 - `"failure"`
10621071 
10631072 - `"success"`
1064 
1065 - `type: "external_key_validation"`
1066 
1067 default: external_key_validation
10681073 

api/beta/organization/external_keys/create Changed · +21 / -16 lines

from line 1
1---
2title: Create External Key
3url: https://platform.claude.com/docs/en/api/beta/organization/external_keys/create
4---
5 
16# Create External Key
27 
38**POST** `/v1/organizations/external_keys`
from line 17
1217 
1318 - `BetaAWSExternalKeyConfig object`
1419 
20 - `type: "aws"`
21 
1522 - `kms_arn: string`
1623 
1724 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 25
1825 
1926 maxLength: 2048
2027 
21 - `type: "aws"`
22 
2328 - `region: optional string or null`
2429 
2530 AWS region. Derived from `kms_arn` if omitted.
from line 37
3237 
3338 - `BetaGCPExternalKeyConfig object`
3439 
40 - `type: "gcp"`
41 
3542 - `key_name: string`
3643 
3744 Full resource name of the Cloud KMS key.
3845 
39 - `type: "gcp"`
40 
4146 - `BetaAzureExternalKeyConfigParam object`
4247 
4348 Azure Key Vault provider configuration.
4449 
50 - `type: "azure"`
51 
4552 - `key_name: string`
4653 
4754 Name of the key within the vault.
from line 57
5057 
5158 Azure AD tenant ID.
5259 
53 - `type: "azure"`
54 
5560 - `vault_uri: string`
5661 
5762 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 85
8085 workspace references it, the provider fields become effectively immutable
8186 (existing encrypted data needs the config for decrypt).
8287 
88 - `type: "external_key"`
89 
90 default: external_key
91 
8392 - `id: string`
8493 
8594 Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.
from line 127
118127 
119128 - `BetaAWSExternalKeyConfig object`
120129 
130 - `type: "aws"`
131 
121132 - `kms_arn: string`
122133 
123134 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 135
124135 
125136 maxLength: 2048
126137 
127 - `type: "aws"`
128 
129138 - `region: optional string or null`
130139 
131140 AWS region. Derived from `kms_arn` if omitted.
from line 147
138147 
139148 - `BetaGCPExternalKeyConfig object`
140149 
150 - `type: "gcp"`
151 
141152 - `key_name: string`
142153 
143154 Full resource name of the Cloud KMS key.
144155 
145 - `type: "gcp"`
146 
147156 - `BetaAzureExternalKeyConfig object`
148157 
158 - `type: "azure"`
159 
149160 - `key_name: string`
150161 
151162 Name of the key within the vault.
from line 165
154165 
155166 Azure AD tenant ID.
156167 
157 - `type: "azure"`
158 
159168 - `vault_uri: string`
160169 
161170 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 172
163172 - `client_id: optional string or null`
164173 
165174 Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.
166 
167 - `type: "external_key"`
168 
169 default: external_key
170175 
171176 - `updated_at: string`
172177 

api/beta/organization/external_keys/delete Changed · +9 / -4 lines

from line 1
1---
2title: Delete External Key
3url: https://platform.claude.com/docs/en/api/beta/organization/external_keys/delete
4---
5 
16# Delete External Key
27 
38**DELETE** `/v1/organizations/external_keys/{external_key_id}`
from line 21
1621 
1722## Returns
1823 
19- `id: string`
20 
21 ID of the deleted External Key.
22 
2324- `type: "external_key_deleted"`
2425 
2526 default: external_key_deleted
27 
28- `id: string`
29 
30 ID of the deleted External Key.
2631 
2732## Example
2833 

api/beta/organization/external_keys/list Changed · +15 / -10 lines

from line 1
1---
2title: List External Keys
3url: https://platform.claude.com/docs/en/api/beta/organization/external_keys/list
4---
5 
16# List External Keys
27 
38**GET** `/v1/organizations/external_keys`
from line 28
2328 
2429- `data: array of BetaExternalKey`
2530 
31 - `type: "external_key"`
32 
33 default: external_key
34 
2635 - `id: string`
2736 
2837 Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.
from line 70
6170 
6271 - `BetaAWSExternalKeyConfig object`
6372 
73 - `type: "aws"`
74 
6475 - `kms_arn: string`
6576 
6677 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 78
6778 
6879 maxLength: 2048
6980 
70 - `type: "aws"`
71 
7281 - `region: optional string or null`
7382 
7483 AWS region. Derived from `kms_arn` if omitted.
from line 90
8190 
8291 - `BetaGCPExternalKeyConfig object`
8392 
93 - `type: "gcp"`
94 
8495 - `key_name: string`
8596 
8697 Full resource name of the Cloud KMS key.
8798 
88 - `type: "gcp"`
89 
9099 - `BetaAzureExternalKeyConfig object`
91100 
101 - `type: "azure"`
102 
92103 - `key_name: string`
93104 
94105 Name of the key within the vault.
from line 108
97108 
98109 Azure AD tenant ID.
99110 
100 - `type: "azure"`
101 
102111 - `vault_uri: string`
103112 
104113 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 115
106115 - `client_id: optional string or null`
107116 
108117 Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.
109 
110 - `type: "external_key"`
111 
112 default: external_key
113118 
114119 - `updated_at: string`
115120 

api/beta/organization/external_keys/retrieve Changed · +15 / -10 lines

from line 1
1---
2title: Get External Key
3url: https://platform.claude.com/docs/en/api/beta/organization/external_keys/retrieve
4---
5 
16# Get External Key
27 
38**GET** `/v1/organizations/external_keys/{external_key_id}`
from line 27
2227 workspace references it, the provider fields become effectively immutable
2328 (existing encrypted data needs the config for decrypt).
2429 
30 - `type: "external_key"`
31 
32 default: external_key
33 
2534 - `id: string`
2635 
2736 Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.
from line 69
6069 
6170 - `BetaAWSExternalKeyConfig object`
6271 
72 - `type: "aws"`
73 
6374 - `kms_arn: string`
6475 
6576 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 77
6677 
6778 maxLength: 2048
6879 
69 - `type: "aws"`
70 
7180 - `region: optional string or null`
7281 
7382 AWS region. Derived from `kms_arn` if omitted.
from line 89
8089 
8190 - `BetaGCPExternalKeyConfig object`
8291 
92 - `type: "gcp"`
93 
8394 - `key_name: string`
8495 
8596 Full resource name of the Cloud KMS key.
8697 
87 - `type: "gcp"`
88 
8998 - `BetaAzureExternalKeyConfig object`
9099 
100 - `type: "azure"`
101 
91102 - `key_name: string`
92103 
93104 Name of the key within the vault.
from line 107
96107 
97108 Azure AD tenant ID.
98109 
99 - `type: "azure"`
100 
101110 - `vault_uri: string`
102111 
103112 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 114
105114 - `client_id: optional string or null`
106115 
107116 Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.
108 
109 - `type: "external_key"`
110 
111 default: external_key
112117 
113118 - `updated_at: string`
114119 

api/beta/organization/external_keys/update Changed · +21 / -16 lines

from line 1
1---
2title: Update External Key
3url: https://platform.claude.com/docs/en/api/beta/organization/external_keys/update
4---
5 
16# Update External Key
27 
38**POST** `/v1/organizations/external_keys/{external_key_id}`
from line 39
3439 
3540 - `BetaAWSExternalKeyConfig object`
3641 
42 - `type: "aws"`
43 
3744 - `kms_arn: string`
3845 
3946 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 47
4047 
4148 maxLength: 2048
4249 
43 - `type: "aws"`
44 
4550 - `region: optional string or null`
4651 
4752 AWS region. Derived from `kms_arn` if omitted.
from line 59
5459 
5560 - `BetaGCPExternalKeyConfig object`
5661 
62 - `type: "gcp"`
63 
5764 - `key_name: string`
5865 
5966 Full resource name of the Cloud KMS key.
6067 
61 - `type: "gcp"`
62 
6368 - `BetaAzureExternalKeyConfigParam object`
6469 
6570 Azure Key Vault provider configuration.
6671 
72 - `type: "azure"`
73 
6774 - `key_name: string`
6875 
6976 Name of the key within the vault.
from line 79
7279 
7380 Azure AD tenant ID.
7481 
75 - `type: "azure"`
76 
7782 - `vault_uri: string`
7883 
7984 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 97
9297 workspace references it, the provider fields become effectively immutable
9398 (existing encrypted data needs the config for decrypt).
9499 
100 - `type: "external_key"`
101 
102 default: external_key
103 
95104 - `id: string`
96105 
97106 Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.
from line 139
130139 
131140 - `BetaAWSExternalKeyConfig object`
132141 
142 - `type: "aws"`
143 
133144 - `kms_arn: string`
134145 
135146 Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.
from line 147
136147 
137148 maxLength: 2048
138149 
139 - `type: "aws"`
140 
141150 - `region: optional string or null`
142151 
143152 AWS region. Derived from `kms_arn` if omitted.
from line 159
150159 
151160 - `BetaGCPExternalKeyConfig object`
152161 
162 - `type: "gcp"`
163 
153164 - `key_name: string`
154165 
155166 Full resource name of the Cloud KMS key.
156167 
157 - `type: "gcp"`
158 
159168 - `BetaAzureExternalKeyConfig object`
160169 
170 - `type: "azure"`
171 
161172 - `key_name: string`
162173 
163174 Name of the key within the vault.
from line 177
166177 
167178 Azure AD tenant ID.
168179 
169 - `type: "azure"`
170 
171180 - `vault_uri: string`
172181 
173182 Key Vault data-plane URI — `https://{vault-name}.vault.azure.net` or `https://{hsm-name}.managedhsm.azure.net`.
from line 184
175184 - `client_id: optional string or null`
176185 
177186 Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.
178 
179 - `type: "external_key"`
180 
181 default: external_key
182187 
183188 - `updated_at: string`
184189 

api/beta/organization/external_keys/validate Changed · +9 / -4 lines

from line 1
1---
2title: Validate External Key
3url: https://platform.claude.com/docs/en/api/beta/organization/external_keys/validate
4---
5 
16# Validate External Key
27 
38**POST** `/v1/organizations/external_keys/{external_key_id}/validate`
from line 24
1924 
2025## Returns
2126 
27- `type: "external_key_validation"`
28 
29 default: external_key_validation
30 
2231- `error: string or null`
2332 
2433 Error message when status is `failure`. Null otherwise.
from line 39
3039 - `"failure"`
3140 
3241 - `"success"`
33 
34- `type: "external_key_validation"`
35 
36 default: external_key_validation
3742 
3843## Example
3944 

api/beta/organization/federation Changed · +124 / -93 lines

from line 1
1---
2title: Federation
3url: https://platform.claude.com/docs/en/api/beta/organization/federation
4---
5 
16# Federation
27 
38## Federation › Issuers
from line 33
2833 
2934 - `string`
3035 
31 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
36 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
3237 
3338 - `"message-batches-2024-09-24"`
3439 
from line 81
7681 
7782 - `"user-profiles-2026-08-18"`
7883 
84 - `"user-profiles-2026-09-04"`
85 
7986 - `"advisor-tool-2026-03-01"`
8087 
8188 - `"managed-agents-2026-04-01"`
from line 185
178185 
179186 JWKS supplied directly; no network fetch.
180187 
188 - `type: "inline"`
189 
181190 - `keys: array of map[unknown]`
182191 
183192 Inline JWK objects.
from line 193
184193 
185194 minItems: 1
186195 
187 - `type: "inline"`
188 
189196- `max_jwt_lifetime_seconds: optional number or null`
190197 
191198 Maximum allowed iat→exp spread for assertions from this issuer (1-176400 seconds, i.e. up to 49h). Defaults to 3600 (1h). Assertions must carry both `iat` and `exp`; a missing `iat` is rejected.
from line 208
201208 Records an external IdP the organization trusts for the RFC 7523
202209 jwt-bearer grant. The `issuer_url` must match the JWT `iss` claim exactly.
203210 
211 - `type: "federation_issuer"`
212 
213 default: federation_issuer
214 
204215 - `id: string`
205216 
206217 Tagged ID of the federation issuer.
from line 286
275286 
276287 JWKS supplied directly; no network fetch.
277288 
289 - `type: "inline"`
290 
278291 - `keys: array of map[unknown]`
279292 
280293 Inline JWK objects.
from line 294
281294 
282295 minItems: 1
283296 
284 - `type: "inline"`
285 
286297 - `jwks_polling_disabled_at: string or null`
287298 
288299 If set, Anthropic's JWKS poller has paused polling for this issuer after repeated fetch failures. Re-enable by sending `jwks_polling_disabled: false` via the issuer update endpoint (POST) once the upstream JWKS endpoint is fixed. An OAuth caller cannot send this when the issuer backs a rule with any scope other than `workspace:developer` or `workspace:inference`; use a Console session.
from line 332
321332 
322333 format: date-time
323334 
324 - `type: "federation_issuer"`
325 
326 default: federation_issuer
327 
328335 - `updated_at: string`
329336 
330337 When this issuer was last updated.
from line 421
414421 
415422 - `string`
416423 
417 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
424 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
418425 
419426 - `"message-batches-2024-09-24"`
420427 
from line 469
462469 
463470 - `"user-profiles-2026-08-18"`
464471 
472 - `"user-profiles-2026-09-04"`
473 
465474 - `"advisor-tool-2026-03-01"`
466475 
467476 - `"managed-agents-2026-04-01"`
from line 517
508517 
509518- `data: array of BetaFederationIssuer`
510519 
520 - `type: "federation_issuer"`
521 
522 default: federation_issuer
523 
511524 - `id: string`
512525 
513526 Tagged ID of the federation issuer.
from line 595
582595 
583596 JWKS supplied directly; no network fetch.
584597 
598 - `type: "inline"`
599 
585600 - `keys: array of map[unknown]`
586601 
587602 Inline JWK objects.
from line 603
588603 
589604 minItems: 1
590605 
591 - `type: "inline"`
592 
593606 - `jwks_polling_disabled_at: string or null`
594607 
595608 If set, Anthropic's JWKS poller has paused polling for this issuer after repeated fetch failures. Re-enable by sending `jwks_polling_disabled: false` via the issuer update endpoint (POST) once the upstream JWKS endpoint is fixed. An OAuth caller cannot send this when the issuer backs a rule with any scope other than `workspace:developer` or `workspace:inference`; use a Console session.
from line 641
628641 
629642 format: date-time
630643 
631 - `type: "federation_issuer"`
632 
633 default: federation_issuer
634 
635644 - `updated_at: string`
636645 
637646 When this issuer was last updated.
from line 720
711720 
712721 - `string`
713722 
714 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
723 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
715724 
716725 - `"message-batches-2024-09-24"`
717726 
from line 768
759768 
760769 - `"user-profiles-2026-08-18"`
761770 
771 - `"user-profiles-2026-09-04"`
772 
762773 - `"advisor-tool-2026-03-01"`
763774 
764775 - `"managed-agents-2026-04-01"`
from line 821
810821 Records an external IdP the organization trusts for the RFC 7523
811822 jwt-bearer grant. The `issuer_url` must match the JWT `iss` claim exactly.
812823 
824 - `type: "federation_issuer"`
825 
826 default: federation_issuer
827 
813828 - `id: string`
814829 
815830 Tagged ID of the federation issuer.
from line 899
884899 
885900 JWKS supplied directly; no network fetch.
886901 
902 - `type: "inline"`
903 
887904 - `keys: array of map[unknown]`
888905 
889906 Inline JWK objects.
from line 907
890907 
891908 minItems: 1
892909 
893 - `type: "inline"`
894 
895910 - `jwks_polling_disabled_at: string or null`
896911 
897912 If set, Anthropic's JWKS poller has paused polling for this issuer after repeated fetch failures. Re-enable by sending `jwks_polling_disabled: false` via the issuer update endpoint (POST) once the upstream JWKS endpoint is fixed. An OAuth caller cannot send this when the issuer backs a rule with any scope other than `workspace:developer` or `workspace:inference`; use a Console session.
from line 945
930945 
931946 format: date-time
932947 
933 - `type: "federation_issuer"`
934 
935 default: federation_issuer
936 
937948 - `updated_at: string`
938949 
939950 When this issuer was last updated.
from line 1022
10111022 
10121023 - `string`
10131024 
1014 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
1025 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
10151026 
10161027 - `"message-batches-2024-09-24"`
10171028 
from line 1070
10591070 
10601071 - `"user-profiles-2026-08-18"`
10611072 
1073 - `"user-profiles-2026-09-04"`
1074 
10621075 - `"advisor-tool-2026-03-01"`
10631076 
10641077 - `"managed-agents-2026-04-01"`
from line 1168
11551168 
11561169 JWKS supplied directly; no network fetch.
11571170 
1171 - `type: "inline"`
1172 
11581173 - `keys: array of map[unknown]`
11591174 
11601175 Inline JWK objects.
from line 1176
11611176 
11621177 minItems: 1
11631178 
1164 - `type: "inline"`
1165 
11661179- `jwks_polling_disabled: optional boolean or null`
11671180 
11681181 Only `false` is accepted, to re-enable polling after the system pauses it. Polling is paused automatically; sending `true` is rejected.
from line 1201
11881201 Records an external IdP the organization trusts for the RFC 7523
11891202 jwt-bearer grant. The `issuer_url` must match the JWT `iss` claim exactly.
11901203 
1204 - `type: "federation_issuer"`
1205 
1206 default: federation_issuer
1207 
11911208 - `id: string`
11921209 
11931210 Tagged ID of the federation issuer.
from line 1279
12621279 
12631280 JWKS supplied directly; no network fetch.
12641281 
1282 - `type: "inline"`
1283 
12651284 - `keys: array of map[unknown]`
12661285 
12671286 Inline JWK objects.
from line 1287
12681287 
12691288 minItems: 1
12701289 
1271 - `type: "inline"`
1272 
12731290 - `jwks_polling_disabled_at: string or null`
12741291 
12751292 If set, Anthropic's JWKS poller has paused polling for this issuer after repeated fetch failures. Re-enable by sending `jwks_polling_disabled: false` via the issuer update endpoint (POST) once the upstream JWKS endpoint is fixed. An OAuth caller cannot send this when the issuer backs a rule with any scope other than `workspace:developer` or `workspace:inference`; use a Console session.
from line 1325
13081325 
13091326 format: date-time
13101327 
1311 - `type: "federation_issuer"`
1312 
1313 default: federation_issuer
1314 
13151328 - `updated_at: string`
13161329 
13171330 When this issuer was last updated.
from line 1402
13891402 
13901403 - `string`
13911404 
1392 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
1405 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
13931406 
13941407 - `"message-batches-2024-09-24"`
13951408 
from line 1450
14371450 
14381451 - `"user-profiles-2026-08-18"`
14391452 
1453 - `"user-profiles-2026-09-04"`
1454 
14401455 - `"advisor-tool-2026-03-01"`
14411456 
14421457 - `"managed-agents-2026-04-01"`
from line 1503
14881503 Records an external IdP the organization trusts for the RFC 7523
14891504 jwt-bearer grant. The `issuer_url` must match the JWT `iss` claim exactly.
14901505 
1506 - `type: "federation_issuer"`
1507 
1508 default: federation_issuer
1509 
14911510 - `id: string`
14921511 
14931512 Tagged ID of the federation issuer.
from line 1581
15621581 
15631582 JWKS supplied directly; no network fetch.
15641583 
1584 - `type: "inline"`
1585 
15651586 - `keys: array of map[unknown]`
15661587 
15671588 Inline JWK objects.
from line 1589
15681589 
15691590 minItems: 1
15701591 
1571 - `type: "inline"`
1572 
15731592 - `jwks_polling_disabled_at: string or null`
15741593 
15751594 If set, Anthropic's JWKS poller has paused polling for this issuer after repeated fetch failures. Re-enable by sending `jwks_polling_disabled: false` via the issuer update endpoint (POST) once the upstream JWKS endpoint is fixed. An OAuth caller cannot send this when the issuer backs a rule with any scope other than `workspace:developer` or `workspace:inference`; use a Console session.
from line 1627
16081627 
16091628 format: date-time
16101629 
1611 - `type: "federation_issuer"`
1612 
1613 default: federation_issuer
1614 
16151630 - `updated_at: string`
16161631 
16171632 When this issuer was last updated.
from line 1708
16931708 
16941709 - `string`
16951710 
1696 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
1711 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
16971712 
16981713 - `"message-batches-2024-09-24"`
16991714 
from line 1756
17411756 
17421757 - `"user-profiles-2026-08-18"`
17431758 
1759 - `"user-profiles-2026-09-04"`
1760 
17441761 - `"advisor-tool-2026-03-01"`
17451762 
17461763 - `"managed-agents-2026-04-01"`
from line 1848
18311848 
18321849 Identity that tokens minted via this rule act as. Currently always a `service_account` target.
18331850 
1851 - `type: "service_account"`
1852 
18341853 - `service_account_id: string`
18351854 
18361855 Tagged ID of the service account to mint tokens for.
18371856 
1838 - `type: "service_account"`
1839 
18401857 - `service_account_name: optional string or null`
18411858 
18421859 Service account's display name at read time. Ignored on writes.
from line 1897
18801897 rules carrying only the legacy `workspace_id` binding do not enforce
18811898 this.
18821899 
1900 - `type: "federation_rule"`
1901 
1902 default: federation_rule
1903 
18831904 - `id: string`
18841905 
18851906 Tagged ID of the federation rule.
from line 1983
19621983 
19631984 Identity that tokens minted via this rule act as. Currently always a `service_account` target.
19641985 
1986 - `type: "service_account"`
1987 
19651988 - `service_account_id: string`
19661989 
19671990 Tagged ID of the service account to mint tokens for.
19681991 
1969 - `type: "service_account"`
1970 
19711992 - `service_account_name: optional string or null`
19721993 
19731994 Service account's display name at read time. Ignored on writes.
from line 1997
19761997 
19771998 Lifetime in seconds of access tokens minted via this rule. Minted tokens are capped at `max(60, min(this value, 2 × remaining assertion validity))` seconds.
19781999 
1979 - `type: "federation_rule"`
1980 
1981 default: federation_rule
1982 
19832000 - `updated_at: string`
19842001 
19852002 When this rule was last updated.
from line 2117
21002117 
21012118 - `string`
21022119 
2103 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
2120 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
21042121 
21052122 - `"message-batches-2024-09-24"`
21062123 
from line 2165
21482165 
21492166 - `"user-profiles-2026-08-18"`
21502167 
2168 - `"user-profiles-2026-09-04"`
2169 
21512170 - `"advisor-tool-2026-03-01"`
21522171 
21532172 - `"managed-agents-2026-04-01"`
from line 2213
21942213 
21952214- `data: array of BetaFederationRule`
21962215 
2216 - `type: "federation_rule"`
2217 
2218 default: federation_rule
2219 
21972220 - `id: string`
21982221 
21992222 Tagged ID of the federation rule.
from line 2299
22762299 
22772300 Identity that tokens minted via this rule act as. Currently always a `service_account` target.
22782301 
2302 - `type: "service_account"`
2303 
22792304 - `service_account_id: string`
22802305 
22812306 Tagged ID of the service account to mint tokens for.
22822307 
2283 - `type: "service_account"`
2284 
22852308 - `service_account_name: optional string or null`
22862309 
22872310 Service account's display name at read time. Ignored on writes.
from line 2313
22902313 
22912314 Lifetime in seconds of access tokens minted via this rule. Minted tokens are capped at `max(60, min(this value, 2 × remaining assertion validity))` seconds.
22922315 
2293 - `type: "federation_rule"`
2294 
2295 default: federation_rule
2296 
22972316 - `updated_at: string`
22982317 
22992318 When this rule was last updated.
from line 2412
23932412 
23942413 - `string`
23952414 
2396 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
2415 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
23972416 
23982417 - `"message-batches-2024-09-24"`
23992418 
from line 2460
24412460 
24422461 - `"user-profiles-2026-08-18"`
24432462 
2463 - `"user-profiles-2026-09-04"`
2464 
24442465 - `"advisor-tool-2026-03-01"`
24452466 
24462467 - `"managed-agents-2026-04-01"`
from line 2519
24982519 rules carrying only the legacy `workspace_id` binding do not enforce
24992520 this.
25002521 
2522 - `type: "federation_rule"`
2523 
2524 default: federation_rule
2525 
25012526 - `id: string`
25022527 
25032528 Tagged ID of the federation rule.
from line 2605
25802605 
25812606 Identity that tokens minted via this rule act as. Currently always a `service_account` target.
25822607 
2608 - `type: "service_account"`
2609 
25832610 - `service_account_id: string`
25842611 
25852612 Tagged ID of the service account to mint tokens for.
25862613 
2587 - `type: "service_account"`
2588 
25892614 - `service_account_name: optional string or null`
25902615 
25912616 Service account's display name at read time. Ignored on writes.
from line 2619
25942619 
25952620 Lifetime in seconds of access tokens minted via this rule. Minted tokens are capped at `max(60, min(this value, 2 × remaining assertion validity))` seconds.
25962621 
2597 - `type: "federation_rule"`
2598 
2599 default: federation_rule
2600 
26012622 - `updated_at: string`
26022623 
26032624 When this rule was last updated.
from line 2725
27042725 
27052726 - `string`
27062727 
2707 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
2728 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
27082729 
27092730 - `"message-batches-2024-09-24"`
27102731 
from line 2773
27522773 
27532774 - `"user-profiles-2026-08-18"`
27542775 
2776 - `"user-profiles-2026-09-04"`
2777 
27552778 - `"advisor-tool-2026-03-01"`
27562779 
27572780 - `"managed-agents-2026-04-01"`
from line 2879
28562879 
28572880 Bind to a fixed service account by ID.
28582881 
2882 - `type: "service_account"`
2883 
28592884 - `service_account_id: string`
28602885 
28612886 Tagged ID of the service account to mint tokens for.
28622887 
2863 - `type: "service_account"`
2864 
28652888 - `service_account_name: optional string or null`
28662889 
28672890 Service account's display name at read time. Ignored on writes.
from line 2914
28912914 rules carrying only the legacy `workspace_id` binding do not enforce
28922915 this.
28932916 
2917 - `type: "federation_rule"`
2918 
2919 default: federation_rule
2920 
28942921 - `id: string`
28952922 
28962923 Tagged ID of the federation rule.
from line 3000
29733000 
29743001 Identity that tokens minted via this rule act as. Currently always a `service_account` target.
29753002 
3003 - `type: "service_account"`
3004 
29763005 - `service_account_id: string`
29773006 
29783007 Tagged ID of the service account to mint tokens for.
29793008 
2980 - `type: "service_account"`
2981 
29823009 - `service_account_name: optional string or null`
29833010 
29843011 Service account's display name at read time. Ignored on writes.
from line 3014
29873014 
29883015 Lifetime in seconds of access tokens minted via this rule. Minted tokens are capped at `max(60, min(this value, 2 × remaining assertion validity))` seconds.
29893016 
2990 - `type: "federation_rule"`
2991 
2992 default: federation_rule
2993 
29943017 - `updated_at: string`
29953018 
29963019 When this rule was last updated.
from line 3114
30913114 
30923115 - `string`
30933116 
3094 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
3117 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
30953118 
30963119 - `"message-batches-2024-09-24"`
30973120 
from line 3162
31393162 
31403163 - `"user-profiles-2026-08-18"`
31413164 
3165 - `"user-profiles-2026-09-04"`
3166 
31423167 - `"advisor-tool-2026-03-01"`
31433168 
31443169 - `"managed-agents-2026-04-01"`
from line 3221
31963221 rules carrying only the legacy `workspace_id` binding do not enforce
31973222 this.
31983223 
3224 - `type: "federation_rule"`
3225 
3226 default: federation_rule
3227 
31993228 - `id: string`
32003229 
32013230 Tagged ID of the federation rule.
from line 3307
32783307 
32793308 Identity that tokens minted via this rule act as. Currently always a `service_account` target.
32803309 
3310 - `type: "service_account"`
3311 
32813312 - `service_account_id: string`
32823313 
32833314 Tagged ID of the service account to mint tokens for.
32843315 
3285 - `type: "service_account"`
3286 
32873316 - `service_account_name: optional string or null`
32883317 
32893318 Service account's display name at read time. Ignored on writes.
from line 3321
32923321 
32933322 Lifetime in seconds of access tokens minted via this rule. Minted tokens are capped at `max(60, min(this value, 2 × remaining assertion validity))` seconds.
32943323 
3295 - `type: "federation_rule"`
3296 
3297 default: federation_rule
3298 
32993324 - `updated_at: string`
33003325 
33013326 When this rule was last updated.
from line 3423
33983423 
33993424 - `string`
34003425 
3401 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
3426 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
34023427 
34033428 - `"message-batches-2024-09-24"`
34043429 
from line 3471
34463471 
34473472 - `"user-profiles-2026-08-18"`
34483473 
3474 - `"user-profiles-2026-09-04"`
3475 
34493476 - `"advisor-tool-2026-03-01"`
34503477 
34513478 - `"managed-agents-2026-04-01"`
from line 3525
34983525 
34993526- `BetaFederationRuleWorkspace object`
35003527 
3528 - `type: "federation_rule_workspace"`
3529 
3530 default: federation_rule_workspace
3531 
35013532 - `created_at: string`
35023533 
35033534 When this workspace was enabled for the rule.
from line 3543
35123543 
35133544 Tagged ID of the federation rule.
35143545 
3515 - `type: "federation_rule_workspace"`
3516 
3517 default: federation_rule_workspace
3518 
35193546 - `workspace_id: string`
35203547 
35213548 Tagged ID of the workspace this rule is enabled for.
from line 3616
35893616 
35903617 - `string`
35913618 
3592 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
3619 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
35933620 
35943621 - `"message-batches-2024-09-24"`
35953622 
from line 3664
36373664 
36383665 - `"user-profiles-2026-08-18"`
36393666 
3667 - `"user-profiles-2026-09-04"`
3668 
36403669 - `"advisor-tool-2026-03-01"`
36413670 
36423671 - `"managed-agents-2026-04-01"`
from line 3712
36833712 
36843713- `data: array of BetaFederationRuleWorkspace`
36853714 
3715 - `type: "federation_rule_workspace"`
3716 
3717 default: federation_rule_workspace
3718 
36863719 - `created_at: string`
36873720 
36883721 When this workspace was enabled for the rule.
from line 3730
36973730 
36983731 Tagged ID of the federation rule.
36993732 
3700 - `type: "federation_rule_workspace"`
3701 
3702 default: federation_rule_workspace
3703 
37043733 - `workspace_id: string`
37053734 
37063735 Tagged ID of the workspace this rule is enabled for.
from line 3799
37703799 
37713800 - `string`
37723801 
3773 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 41 more`
3802 - `"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 42 more`
37743803 
37753804 - `"message-batches-2024-09-24"`
37763805 
from line 3847
38183847 
38193848 - `"user-profiles-2026-08-18"`
38203849 
3850 - `"user-profiles-2026-09-04"`
3851 
38213852 - `"advisor-tool-2026-03-01"`
38223853 
38233854 - `"managed-agents-2026-04-01"`
from line 3893
38623893 
38633894#### Returns
38643895 
3865- `federation_rule_id: string`
3866 
3867 Tagged ID of the federation rule.
3868 
38693896- `type: "federation_rule_workspace_deleted"`
38703897 
38713898 default: federation_rule_workspace_deleted
3899 
3900- `federation_rule_id: string`
3901 
3902 Tagged ID of the federation rule.
38723903 
38733904- `workspace_id: string`
38743905