---
title: Get Cost By Dimension
url: https://platform.claude.com/docs/en/api/csharp/beta/organization/analytics/cost/list
---

# Get Cost By Dimension

`CostListPage Beta.Organization.Analytics.Cost.List(parameters, cancellationToken = default)`

**GET** `/v1/organizations/analytics/cost`

Get cost in USD across a date range, broken out by dimension.

Returns one row per combination of the requested `group_by[]`
dimensions (and time bucket, when `time_bucket_width` is set) that has
cost in the range, ranked by spend or ordered by time bucket; every
combination is returned across pages. With no `group_by[]` and no
`time_bucket_width`, a single row aggregates the whole range. Includes
all cost, whether or not it is attributable to a seat user. Requires an
API key with the `read:analytics` scope, or an Admin API key.

## Parameters

- `CostListParams parameters`

  - `required DateTimeOffset startingAt` (query parameter)

    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

  - `IReadOnlyList<string>? actorIds` (query parameter)

    Filter to usage attributed to specific identities, by tagged ID: a `user_...`, `svac_...` (service account), or `apikey_...` ID. An `apikey_` entry matches only usage attributed to the key itself, not usage on that key attributed to a user or service account (use `api_key_ids[]` for every request a key authenticated). Federated identities have no tagged ID; select them with `actor_types[]`. Use `group_by[]=actor` to break out per-identity values.

    maxItems: 100

  - `IReadOnlyList<BetaAnalyticsActorType>? actorTypes` (query parameter)

    Filter to usage attributed to specific kinds of identity. Use `group_by[]=actor_type` to break out per-kind values.

    maxItems: 100

    - `ApiActor("api_actor")`

    - `FederatedActor("federated_actor")`

    - `ServiceAccountActor("service_account_actor")`

    - `UserActor("user_actor")`

  - `IReadOnlyList<string>? agentIds` (query parameter)

    Filter to usage incurred by sessions of specific Claude Managed Agents agents. Use `group_by[]=agent_id` to break out per-agent values. Claude Developer Platform organizations only.

    maxItems: 100

  - `IReadOnlyList<string>? apiKeyIds` (query parameter)

    Filter to usage authenticated by specific API keys, by tagged API key ID (`apikey_...`), whichever identity the usage is attributed to. Include an empty entry (`api_key_ids[]=`) to also match usage that no API key authenticated. Use `group_by[]=api_key_id` to break out per-key values; usage without a key has a null `api_key_id`. Claude Developer Platform organizations only.

    maxItems: 100

  - `IReadOnlyList<BetaAnalyticsClaudeTagCategory>? claudeTagCategories` (query parameter)

    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("dm")`

    - `Engaged("engaged")`

    - `Monitoring("monitoring")`

    - `Proactive("proactive")`

    - `Scheduled("scheduled")`

  - `IReadOnlyList<string>? claudeTagUserIds` (query parameter)

    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

  - `IReadOnlyList<BetaAnalyticsContextWindow>? contextWindows` (query parameter)

    Filter to specific context-window pricing tiers. Use `group_by[]=context_window` to break out per-tier values.

    maxItems: 100

    - `From0To200k("0-200k")`

    - `From200kTo1M("200k-1M")`

  - `IReadOnlyList<string>? deploymentIds` (query parameter)

    Filter to usage incurred by Claude Managed Agents sessions that specific deployments started. Use `group_by[]=deployment_id` to break out per-deployment values. Claude Developer Platform organizations only.

    maxItems: 100

  - `DateTimeOffset? endingAt` (query parameter)

    End of range, exclusive. Required when `time_bucket_width` is set. Without `time_bucket_width`, defaults to the earlier of now and `starting_at` + 31 days. The range may span at most 31 days.

    format: date-time

  - `IReadOnlyList<string>? environmentIds` (query parameter)

    Filter to usage incurred by Claude Managed Agents sessions that ran in specific environments. Use `group_by[]=environment_id` to break out per-environment values. Claude Developer Platform organizations only.

    maxItems: 100

  - `bool excludeDeletedUsers` (query parameter)

    If true, omit rows whose `actor` is a `user_actor` with `deleted: true`. Requires `group_by[]=actor`. Rows for other actor types, and rows whose `actor` is null, are always kept. A page may contain fewer than `limit` rows; use `has_more` and `next_page` to paginate as usual.

  - `IReadOnlyList<BetaAnalyticsCostGroupBy>? groupBy` (query parameter)

    Dimensions to break cost out by (at most 5, not counting `cost_type` and `token_type`): one row per combination of their values with cost in the range (and per time bucket, when `time_bucket_width` is set), every combination returned across pages rather than a capped top set. `cost_type` and `token_type` do not count toward `limit`: `cost_type` returns one row per cost component (tokens, web search, code execution, and `session_usage`, Claude Managed Agents session time); `token_type` returns one row per token type, each with `cost_type: "tokens"`; combining both returns the per-token-type rows plus the web-search, code-execution and session-usage rows. When omitted, a single row aggregates the whole range.

    maxItems: 100

    - `Actor("actor")`

    - `ActorType("actor_type")`

    - `AgentID("agent_id")`

    - `ApiKeyID("api_key_id")`

    - `ClaudeTagCategory("claude_tag_category")`

    - `ClaudeTagUserID("claude_tag_user_id")`

    - `ContextWindow("context_window")`

    - `CostType("cost_type")`

    - `DeploymentID("deployment_id")`

    - `EnvironmentID("environment_id")`

    - `InferenceGeo("inference_geo")`

    - `Model("model")`

    - `Product("product")`

    - `RbacGroupID("rbac_group_id")`

    - `ServiceTier("service_tier")`

    - `SessionID("session_id")`

    - `SlackChannelID("slack_channel_id")`

    - `Speed("speed")`

    - `TokenType("token_type")`

    - `UserProfileID("user_profile_id")`

    - `WorkspaceID("workspace_id")`

  - `IReadOnlyList<BetaAnalyticsInferenceGeoFilter>? inferenceGeos` (query parameter)

    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("global")`

    - `NotAvailable("not_available")`

    - `Us("us")`

  - `long limit` (query parameter)

    Number of rows per page (1-1000, default 20). `cost_type`/`token_type` fan-out rows (cost endpoint only) do not count toward this limit, so `data` can exceed it.

    minimum: 1, maximum: 1000

  - `IReadOnlyList<string>? models` (query parameter)

    Models to include. Defaults to all models. Use `group_by[]=model` to break out per-model values.

    maxItems: 100

  - `BetaAnalyticsUsageCostSortOrder order` (query parameter)

    Sort direction of the `order_by` metric, or of the time buckets when `order_by` is `time` and `time_bucket_width` is set. Defaults to `desc`.

  - `BetaAnalyticsCostOrderBy orderBy` (query parameter)

    Row order. A metric ranks rows by that metric in the `order` direction. `time` orders rows by time bucket in the `order` direction (newest first by default) and, within a bucket, by `amount`, highest first. `time` takes effect only with `time_bucket_width`; without it, `time` is the same as `amount`. Defaults to `amount`.

  - `string? page` (query parameter)

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

  - `IReadOnlyList<BetaAnalyticsUsageCostProductFilter>? products` (query parameter)

    Product surfaces to include. Defaults to all products.

    maxItems: 100

    - `Chat("chat")`

    - `ChatCoworkUnified("chat_cowork_unified")`

    - `ClaudeCode("claude_code")`

    - `ClaudeConsole("claude_console")`

    - `ClaudeDesign("claude_design")`

    - `ClaudeInChrome("claude_in_chrome")`

    - `ClaudeTag("claude_tag")`

    - `Cowork("cowork")`

    - `ManagedAgentsApi("managed_agents_api")`

    - `MessageBatchesApi("message_batches_api")`

    - `MessagesApi("messages_api")`

    - `OfficeAgent("office_agent")`

  - `IReadOnlyList<string>? rbacGroupIds` (query parameter)

    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

  - `IReadOnlyList<BetaAnalyticsServiceTier>? serviceTiers` (query parameter)

    Filter to specific service tiers. Use `group_by[]=service_tier` to break out per-tier values. Claude Developer Platform organizations only; matches nothing for a Claude Enterprise organization.

    maxItems: 100

    - `Batch("batch")`

    - `Flex("flex")`

    - `FlexDiscount("flex_discount")`

    - `Priority("priority")`

    - `PriorityOnDemand("priority_on_demand")`

    - `Standard("standard")`

  - `IReadOnlyList<string>? sessionIds` (query parameter)

    Filter to usage incurred by specific Claude Managed Agents sessions, by tagged session ID (`sesn_...`). Use `group_by[]=session_id` to break out per-session values. Claude Developer Platform organizations only.

    maxItems: 100

  - `IReadOnlyList<string>? slackChannelIds` (query parameter)

    Filter to usage originating from specific Slack channels. Use `group_by[]=slack_channel_id` to break out per-channel values.

    maxItems: 100

  - `IReadOnlyList<BetaAnalyticsSpeed>? speeds` (query parameter)

    Filter to fast or standard inference mode. Use `group_by[]=speed` to break out per-mode values.

    maxItems: 100

    - `Fast("fast")`

    - `Standard("standard")`

  - `BetaAnalyticsTimeBucketWidth? timeBucketWidth` (query parameter)

    Time-bucket granularity. When set, rows are returned per time bucket (one per bucket and dimension combination with usage) and each row's `starting_at` and `ending_at` are that bucket's bounds; the time bucket counts toward `limit`. `ending_at` is required when `time_bucket_width` is set, and with `time_bucket_width="1m"` the range may span at most 24 hours. When omitted, each row aggregates the requested range with `starting_at` and `ending_at` each rounded down to the hour.

  - `IReadOnlyList<string>? userProfileIds` (query parameter)

    Filter to usage attributed to specific user profiles, by tagged user profile ID (`uprof_...`). Use `group_by[]=user_profile_id` to break out per-profile values. Claude Developer Platform organizations only.

    maxItems: 100

  - `IReadOnlyList<string>? workspaceIds` (query parameter)

    Filter to usage in specific workspaces, by tagged workspace ID (`wrkspc_...`). Use `group_by[]=workspace_id` to break out per-workspace values. Claude Developer Platform organizations only; matches nothing for a Claude Enterprise organization.

    maxItems: 100

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `analytics-usage-cost-2026-08-24` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

    - `MessageThreads2026_08_12("message-threads-2026-08-12")`

    - `AnalyticsUsageCost2026_08_24("analytics-usage-cost-2026-08-24")`

    - `ExperimentalClaudeTag2026_10_21("experimental-claude-tag-2026-10-21")`

## Returns

- `class BetaAnalyticsCostItem`

  - `required BetaAnalyticsCostMetrics Cost`

    Cost for this row.

    - `required string Amount`

      Amount (post-discount, pre-credit) in fractional cents (minor units).

    - `required string Currency`

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

    - `required string ListAmount`

      List-price amount (pre-discount) in fractional cents.

    - `required long? Requests`

      Number of API requests in this row's scope. Null when `group_by` includes `cost_type` or `token_type` (the count has no per-component attribution; read it from the ungrouped response). For sandbox / code-execution events, this counts execution spans rather than HTTP requests (these rows surface with `product: null`).

  - `required DateTimeOffset EndingAt`

    End of the period this row covers (exclusive), as an RFC 3339 UTC timestamp: the end of the row's time bucket when a time-bucket width is set; otherwise the requested `ending_at` (or, when omitted, the earlier of now and `starting_at` plus 31 days) rounded down to the hour, because without a time bucket the report covers whole hours.

    format: date-time

  - `required BetaAnalyticsCostGroup Group`

    The dimension values this row's cost is broken out by.

    - `required BetaAnalyticsActor? Actor`

      The identity the usage is attributed to: the user if one is attributed, else the service account, else the federated (cloud-platform) identity, else the API key. Populated only when `actor` is in `group_by[]`; null for usage with no attributable identity, and for users' and federated identities' usage when the reader is a member who can see only some workspaces. Distinct identities the server cannot render also read null, each as its own row.

      - `class BetaAnalyticsReportUserActor`

        - `JsonElement Type = "user_actor"`

          Actor type. Always `"user_actor"`.

        - `required bool Deleted`

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

        - `required string? EmailAddress`

          The user's current email address, including for users who are no longer members of the organization. Null when the account has been deleted and for system-minted service accounts.

        - `required string? Name`

          The user's current full name. Null when the user has not set one. `"Deleted User"` when the account has been deleted, or when the user is no longer a member and the organization hides removed users' names.

        - `required string UserID`

          Tagged user ID.

      - `class BetaAnalyticsServiceAccountActor`

        - `JsonElement Type = "service_account_actor"`

        - `required string ServiceAccountID`

          Tagged service account ID.

      - `class BetaAnalyticsFederatedActor`

        - `JsonElement Type = "federated_actor"`

        - `required BetaAnalyticsFederatedActorProvider Provider`

          The trusted provider that asserted the caller's identity.

          - `class BetaAnalyticsFederatedActorAwsProvider`

            - `JsonElement Type = "aws"`

            - `required string AccountID`

              The AWS account the organization is bound to.

            - `required string SignedPrincipal`

              The AWS-signed ARN of the IAM principal that made the requests.

          - `class BetaAnalyticsFederatedActorAzureProvider`

            - `JsonElement Type = "azure"`

            - `required string SubscriptionID`

              The Azure subscription the organization is bound to.

          - `class BetaAnalyticsFederatedActorGcpProvider`

            - `JsonElement Type = "gcp"`

            - `required string ProjectNumber`

              The Google Cloud project the organization is bound to.

          - `class BetaAnalyticsFederatedActorOidcProvider`

            - `JsonElement Type = "oidc"`

            - `required string? Issuer`

              The federation issuer's URL.

        - `required string? Subject`

          The provider's identifier for the caller: on `aws`, the IAM principal ARN (one role is one actor across its sessions); on `gcp`, the caller's IAM principal identifier as Google Cloud reports it, such as `serviceAccount:<email>`, `user:<email>`, or a `principal://...` URI.

      - `class BetaAnalyticsApiActor`

        - `JsonElement Type = "api_actor"`

        - `required string ApiKeyID`

          Tagged API key ID.

    - `required BetaAnalyticsActorType? ActorType`

      Kind of identity the usage is attributed to; matches `actor.type` when `actor` is set. Populated only when `actor_type` is in `group_by[]`.

      - `ApiActor("api_actor")`

      - `FederatedActor("federated_actor")`

      - `ServiceAccountActor("service_account_actor")`

      - `UserActor("user_actor")`

    - `required string? AgentID`

      Claude Managed Agents agent whose session incurred the usage. Populated only when `agent_id` is in `group_by[]`; null for usage outside a managed session.

    - `required string? ApiKeyID`

      API key that authenticated the requests, as a tagged API key ID, whichever identity `actor` resolves to. Populated only when `api_key_id` is in `group_by[]`; null for usage not authenticated by an API key.

    - `required BetaAnalyticsClaudeTagCategory? ClaudeTagCategory`

      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("dm")`

      - `Engaged("engaged")`

      - `Monitoring("monitoring")`

      - `Proactive("proactive")`

      - `Scheduled("scheduled")`

    - `required string? ClaudeTagUserID`

      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.

    - `required BetaAnalyticsContextWindow? ContextWindow`

      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.

      - `From0To200k("0-200k")`

      - `From200kTo1M("200k-1M")`

    - `required BetaAnalyticsGroupedCostType? CostType`

      Cost component breakdown; null when returning the combined total.

      - `CodeExecution("code_execution")`

      - `SessionUsage("session_usage")`

      - `Tokens("tokens")`

      - `WebSearch("web_search")`

    - `required string? DeploymentID`

      Deployment that started the Claude Managed Agents session. Populated only when `deployment_id` is in `group_by[]`; null for usage outside a managed session and for sessions no deployment started.

    - `required string? EnvironmentID`

      Claude Managed Agents environment the session ran in. Populated only when `environment_id` is in `group_by[]`; null for usage outside a managed session.

    - `required BetaAnalyticsUsageCostInferenceGeo? InferenceGeo`

      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("global")`

      - `Us("us")`

    - `required string? Model`

      Model that produced the usage or cost, as a model name in the form the `models[]` filter accepts (for example, `claude-opus-5-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.

    - `required string? Product`

      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`, `claude_tag`, and `chat_cowork_unified`. `claude_tag` is Claude Tag, the Claude product in Slack. `chat_cowork_unified` is Chat and Cowork unified, Cowork's features inside claude.ai chat: chat and Cowork usage by a member who has it turned on is reported under this value instead of `chat` or `cowork`. It is accepted as a filter only on deployments that offer Chat and Cowork unified. Some unattributed usage is reported as "other".

    - `required string? RbacGroupID`

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

    - `required BetaAnalyticsServiceTier? ServiceTier`

      Service tier the usage was served at. Populated only when `service_tier` is in `group_by[]`; null for usage with no service tier (for example, code execution) and for Claude Enterprise usage.

      - `Batch("batch")`

      - `Flex("flex")`

      - `FlexDiscount("flex_discount")`

      - `Priority("priority")`

      - `PriorityOnDemand("priority_on_demand")`

      - `Standard("standard")`

    - `required string? SessionID`

      Claude Managed Agents session that incurred the usage. Populated only when `session_id` is in `group_by[]`; null for usage outside a managed session.

    - `required string? SlackChannelID`

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

    - `required BetaAnalyticsSpeed? Speed`

      Inference speed mode of the usage or cost: `fast` or `standard`. Null unless `speed` is in `group_by[]`.

      - `Fast("fast")`

      - `Standard("standard")`

    - `required BetaAnalyticsTokenType? TokenType`

      Token type when `cost_type` is `tokens`; null otherwise.

      - `CacheCreationEphemeral1hInputTokens("cache_creation.ephemeral_1h_input_tokens")`

      - `CacheCreationEphemeral5mInputTokens("cache_creation.ephemeral_5m_input_tokens")`

      - `CacheReadInputTokens("cache_read_input_tokens")`

      - `OutputTokens("output_tokens")`

      - `UncachedInputTokens("uncached_input_tokens")`

    - `required string? UserProfileID`

      User profile the usage was attributed to, as a tagged `uprof_` ID. Populated only when `user_profile_id` is in `group_by[]`; null for usage that named no profile and for Claude Enterprise usage.

    - `required string? WorkspaceID`

      Workspace the usage occurred in, as a tagged workspace ID, including the organization's default workspace. Populated only when `workspace_id` is in `group_by[]`; null for Claude Enterprise usage.

  - `required DateTimeOffset StartingAt`

    Start of the period this row covers (inclusive), as an RFC 3339 UTC timestamp: the start of the row's time bucket when a time-bucket width is set, otherwise the requested `starting_at` rounded down to the hour.

    format: date-time

## Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.Analytics.Cost;

CostListParams parameters = new()
{
    StartingAt = DateTimeOffset.Parse("2026-09-01T00:00:00Z")
};

var page = await client.Beta.Organization.Analytics.Cost.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}
```

### Response (200)

```json
{
  "data": [
    {
      "cost": {
        "amount": "41280.000000",
        "currency": "USD",
        "list_amount": "51600.000000",
        "requests": 128
      },
      "ending_at": "2026-10-01T00:00:00Z",
      "group": {
        "actor": {
          "deleted": false,
          "email_address": "user@emaildomain.com",
          "name": "Jane Doe",
          "type": "user_actor",
          "user_id": "user_01WxYzAbCdEfGhJkMnPqRsTu"
        },
        "actor_type": "user_actor",
        "agent_id": "agent_01VHd3EAGJ6PLkP9LM7DDu3f",
        "api_key_id": "apikey_01Rj2N8SVvo6BePZj99NhmiT",
        "claude_tag_category": "dm",
        "claude_tag_user_id": "U0123ABCDEF",
        "context_window": "0-200k",
        "cost_type": "tokens",
        "deployment_id": "depl_01JFC6ihzZHtAuyHsaENdJhY",
        "environment_id": "env_017oTjuGedHtjhJauVC5xGJD",
        "inference_geo": "global",
        "model": "claude-opus-5-5",
        "product": "chat",
        "rbac_group_id": "rbac_group_012rppKaSVsmTo6NqRDXQXNF",
        "service_tier": "standard",
        "session_id": "sesn_0187kPDyNCwibNNvfaPEApCJ",
        "slack_channel_id": "C0123ABCDEF",
        "speed": "fast",
        "token_type": "cache_creation.ephemeral_1h_input_tokens",
        "user_profile_id": "uprof_01M33NeYUQK2WV9PpYcsPHLi",
        "workspace_id": "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
      },
      "starting_at": "2026-09-01T00:00:00Z"
    }
  ],
  "data_refreshed_at": "2026-10-01T04:02:11Z",
  "has_more": true,
  "next_page": "next_page"
}
```
