---
title: Usage and Cost Analytics API
url: https://platform.claude.com/docs/ja/manage-claude/usage-cost-analytics-api
description: Claude ConsoleまたはClaude Enterprise組織のトークン使用量とコストを、モデル、ワークスペース、APIキー、アクターなどの単位でクエリします。
---

<Tip>
  **Admin APIは個人アカウントではご利用いただけません。** チームメイトと共同作業を行い、メンバーを追加するには、Claude Consoleの[Organization](https://platform.claude.com/settings/organization)ページ（`platform.claude.com/settings/organization`）で組織を設定してください。
</Tip>

Usage and Cost Analytics APIは、組織の過去のトークン使用量とコストを、モデル、ワークスペース、APIキー、または各リクエストの背後にあるユーザーやサービスアカウントなど、選択したディメンションごとに分類してレポートします。Claude Console組織の場合、このデータはClaude Consoleの[Usage](https://platform.claude.com/usage)ページおよび[Cost](https://platform.claude.com/cost)ページに表示される内容と同様です。

このAPIには2つのエンドポイントがあります。

* `GET /v1/organizations/analytics/usage` はトークン数とリクエスト数をレポートします。
* `GET /v1/organizations/analytics/cost` はコストをUSDでレポートします。

Usage and Cost Analytics APIはベータ版です。すべてのリクエストで`anthropic-beta: analytics-usage-cost-2026-08-24` ヘッダーと[`anthropic-version`](https://platform.claude.com/docs/ja/api/versioning)ヘッダーを送信してください。SDKと`ant` CLIは両方のヘッダーを自動的に送信し、結果を読み進めるにつれて残りのページを取得するため、`limit`はページサイズのみを設定します。

このAPIは次の用途に使用できます。

* **支出の内訳を把握する：** コストとトークン使用量を、ワークスペース、APIキー、モデル、サービスティア、または各リクエストを行ったアイデンティティごとに分類します。
* **上位の消費者を特定する：** トークン、リクエスト、またはコストで結果をランク付けし、「今月最も支出の多いAPIキーはどれか？」といった質問に答えます。
* **時系列を構築する：** ダッシュボードや財務レポート向けに、結果を日次、時間単位、または分単位のバケットに分割します。
* **一度の統合で済ませる：** 同じエンドポイント、パラメータ、レスポンスフィールドがClaude ConsoleとClaude Enterpriseの両方の組織に対応します。

<Check>
  **Admin APIキーが必要です**

  Claude Console組織は、[Admin APIキー](https://platform.claude.com/docs/ja/manage-claude/admin-api-keys#create-a-key-for-a-claude-console-organization)またはその他の[Admin API認証情報](https://platform.claude.com/docs/ja/manage-claude/admin-api#authentication)を使用します。Claude Enterprise組織は、組織でAnalytics APIが有効化された後にプライマリオーナーがclaude.aiで作成した、`read:analytics` スコープを持つキーを使用します。詳しくは[Claude Enterprise Analytics APIへのアクセスを取得する](https://platform.claude.com/docs/ja/manage-claude/analytics-api#get-access-to-the-claude-enterprise-analytics-api)を参照してください。いずれの場合も、`ANTHROPIC_API_KEY` 環境変数にそのキーを設定してください。このページの例はこの環境変数からキーを読み取ります。

  Admin APIキーでこれらのエンドポイントを呼び出す場合は、このデータを収集するサービスに専用のキーを割り当て、シークレットマネージャーに保存し、定期的にローテーションしてください。キーの作成時に[キーの有効期限](https://platform.claude.com/docs/ja/manage-claude/authentication#key-expiration)を設定すると、ローテーションが強制されます。可能であれば、代わりに[`org:admin` スコープ](https://platform.claude.com/docs/ja/manage-claude/wif-reference#oauth-scopes)を持つ[Workload Identity Federation](https://platform.claude.com/docs/ja/manage-claude/workload-identity-federation)ルールを使用してください。そうすることで、サービスは短期間有効なトークンを取得し、漏洩する可能性のある長期間有効なキーが存在しなくなります。
</Check>

<Note>
  **Claude Platform on AWS：** 両方のエンドポイントが利用可能です。リクエストでは、Admin APIキーの代わりにClaude Platform on AWSのベースURLと認証を使用し（[リクエストの送信](https://platform.claude.com/docs/ja/build-with-claude/claude-platform-on-aws#making-requests)を参照）、AWS IAMが[`ListAccountUsage`および`ListAccountCost`アクション](https://platform.claude.com/docs/ja/api/claude-platform-on-aws-iam-actions#usage-and-cost)を通じてそれらを認可します。各リクエストは、呼び出したエンドポイントのAWSリージョン内のワークスペースのみを対象とするため、組織全体をカバーするには各リージョンのエンドポイントを呼び出してください。`user_profile_id`、`claude_tag_category`、`claude_tag_user_id`、およびClaude Managed Agentsのディメンション（`agent_id`、`environment_id`、`deployment_id`、`session_id`）は、すべての行で`null`になります。
</Note>

<Note>
  **Claude Models on Google Cloud (Anthropic managed)：** 両方のエンドポイントが利用可能です。Admin APIキーの代わりにGoogle Cloudの認証情報を使用して、[組織レベルのベースURL](https://platform.claude.com/docs/ja/build-with-claude/claude-models-on-google-cloud/anthropic-managed#making-requests)経由で呼び出してください。`/usage`エンドポイントには`usageAnalytics.list`の[IAM権限](https://platform.claude.com/docs/ja/api/claude-models-on-google-cloud-anthropic-managed-iam-permissions)が必要で、`/cost`エンドポイントには`costAnalytics.list`が必要です。
</Note>

## クイックスタート

9月の第1週の日次トークン使用量を、モデルと日ごとに1行ずつ取得します：

<CodeGroup>
  ```bash cURL
  curl --globoff "https://api.anthropic.com/v1/organizations/analytics/usage?\
  starting_at=2026-09-01T00:00:00Z&\
  ending_at=2026-09-08T00:00:00Z&\
  time_bucket_width=1d&\
  group_by[]=model&\
  limit=10" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: analytics-usage-cost-2026-08-24" \
    -H "x-api-key: $ANTHROPIC_API_KEY"
  ```

  ```bash CLI
  ant beta:organization:analytics:usage list \
    --starting-at 2026-09-01T00:00:00Z \
    --ending-at 2026-09-08T00:00:00Z \
    --time-bucket-width 1d \
    --group-by model \
    --limit 10
  ```

  ```python Python
  client = anthropic.Anthropic()

  rows = client.beta.organization.analytics.usage.list(
      starting_at="2026-09-01T00:00:00Z",
      ending_at="2026-09-08T00:00:00Z",
      time_bucket_width="1d",
      group_by=["model"],
      limit=10,
  )

  for row in rows:
      print(f"{row.starting_at} {row.group.model}: {row.usage.total_tokens}")
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const rows = await client.beta.organization.analytics.usage.list({
    starting_at: "2026-09-01T00:00:00Z",
    ending_at: "2026-09-08T00:00:00Z",
    time_bucket_width: "1d",
    group_by: ["model"],
    limit: 10
  });

  for await (const row of rows) {
    console.log(`${row.starting_at} ${row.group.model}: ${row.usage.total_tokens}`);
  }
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.Analytics;
  using Anthropic.Models.Beta.Organization.Analytics.Usage;

  AnthropicClient client = new();

  var page = await client.Beta.Organization.Analytics.Usage.List(
      new()
      {
          StartingAt = DateTimeOffset.Parse("2026-09-01T00:00:00Z"),
          EndingAt = DateTimeOffset.Parse("2026-09-08T00:00:00Z"),
          TimeBucketWidth = BetaAnalyticsTimeBucketWidth.Day,
          GroupBy = [BetaAnalyticsUsageGroupBy.Model],
          Limit = 10,
      }
  );

  await foreach (var row in page.Paginate())
  {
      Console.WriteLine($"{row.StartingAt} {row.Group.Model}: {row.Usage.TotalTokens}");
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  rows := client.Beta.Organization.Analytics.Usage.ListAutoPaging(context.Background(), anthropic.BetaOrganizationAnalyticsUsageListParams{
  	StartingAt:      time.Date(2026, time.September, 1, 0, 0, 0, 0, time.UTC),
  	EndingAt:        anthropic.Time(time.Date(2026, time.September, 8, 0, 0, 0, 0, time.UTC)),
  	TimeBucketWidth: anthropic.BetaAnalyticsTimeBucketWidthDay,
  	GroupBy:         []anthropic.BetaAnalyticsUsageGroupBy{anthropic.BetaAnalyticsUsageGroupByModel},
  	Limit:           anthropic.Int(10),
  })

  for rows.Next() {
  	row := rows.Current()
  	fmt.Printf("%s %s: %d\n", row.StartingAt.Format(time.RFC3339), row.Group.Model, row.Usage.TotalTokens)
  }
  if err := rows.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.analytics.BetaAnalyticsTimeBucketWidth;
  import com.anthropic.models.beta.organization.analytics.usage.BetaAnalyticsUsageGroupBy;
  import com.anthropic.models.beta.organization.analytics.usage.UsageListParams;
  import java.time.OffsetDateTime;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = UsageListParams.builder()
          .startingAt(OffsetDateTime.parse("2026-09-01T00:00:00Z"))
          .endingAt(OffsetDateTime.parse("2026-09-08T00:00:00Z"))
          .timeBucketWidth(BetaAnalyticsTimeBucketWidth.DAY)
          .addGroupBy(BetaAnalyticsUsageGroupBy.MODEL)
          .limit(10)
          .build();
      var rows = client.beta().organization().analytics().usage().list(params);

      for (var row : rows.autoPager()) {
          IO.println(row.startingAt() + " " + row.group().model().orElse(null) + ": " + row.usage().totalTokens());
      }
  }
  ```

  ```php PHP
  $client = new Client();

  $rows = $client->beta->organization->analytics->usage->list(
      startingAt: new \DateTimeImmutable('2026-09-01T00:00:00Z'),
      endingAt: new \DateTimeImmutable('2026-09-08T00:00:00Z'),
      timeBucketWidth: '1d',
      groupBy: ['model'],
      limit: 10,
  );

  foreach ($rows->pagingEachItem() as $row) {
      $startingAt = $row->startingAt->format(\DateTimeInterface::ATOM);
      echo "{$startingAt} {$row->group->model}: {$row->usage->totalTokens}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.analytics.usage.list(
    starting_at: Time.utc(2026, 9, 1),
    ending_at: Time.utc(2026, 9, 8),
    time_bucket_width: :"1d",
    group_by: [:model],
    limit: 10
  )

  page.auto_paging_each do |row|
    puts "#{row.starting_at} #{row.group.model}: #{row.usage.total_tokens}"
  end
  ```
</CodeGroup>

レスポンスには、使用量のあるモデルと日ごとに1行が含まれ、`total_tokens`が大きい順に並びます。この例では1行のみを示しています：

```json
{
  "data": [
    {
      "starting_at": "2026-09-03T00:00:00Z",
      "ending_at": "2026-09-04T00:00:00Z",
      "group": {
        "product": null,
        "model": "claude-sonnet-5",
        "context_window": null,
        "inference_geo": null,
        "speed": null,
        "slack_channel_id": null,
        "claude_tag_category": null,
        "claude_tag_user_id": null,
        "rbac_group_id": null,
        "workspace_id": null,
        "service_tier": null,
        "user_profile_id": null,
        "agent_id": null,
        "environment_id": null,
        "deployment_id": null,
        "session_id": null,
        "actor": null,
        "actor_type": null,
        "api_key_id": null
      },
      "usage": {
        "uncached_input_tokens": 1284500,
        "cache_creation": {
          "ephemeral_1h_input_tokens": 0,
          "ephemeral_5m_input_tokens": 215300
        },
        "cache_read_input_tokens": 3200000,
        "output_tokens": 891000,
        "total_tokens": 5590800,
        "server_tool_use": {
          "web_search_requests": 12
        },
        "requests": 4210
      }
    }
  ],
  "has_more": true,
  "next_page": "page_V2mQ4dkt9HcbX3pLr...",
  "data_refreshed_at": "2026-09-18T16:02:11Z"
}
```

<Tip>
  **統合用にUser-Agentヘッダーを設定する**

  統合を構築している場合は、Anthropicが使用パターンを把握できるよう、User-Agentヘッダーを設定してください。

  ```text wrap
  User-Agent: YourApp/1.0.0 (https://yourapp.com)
  ```
</Tip>

## 結果の構造

* **すべての行は3つの部分で構成されます：** `starting_at`と`ending_at`は行が対象とする期間を示し、`group`はすべてのディメンションを保持し、`usage`（コストエンドポイントでは`cost`）はメトリクスを保持します。
* **グループ化しない限りディメンションはnullです：** `group`内のディメンションは、`group_by[]`に指定しない限り`null`です。グループ化したディメンションも、コード実行の使用量における`model`のように、その値を持たない行では`null`になります。`group_by[]`には最大5つのディメンションを指定できます。
* **組み合わせごとに1行：** 各行はグループ化したディメンションの1つの組み合わせであり、使用量またはコストのあるすべての組み合わせは、クエリのページ全体を通じてちょうど1回だけ出現します。`group_by[]`も`time_bucket_width`も指定しない場合、レスポンスは範囲全体を合計した1行になります。
* **タイムバケットは任意です：** `time_bucket_width`を`1m`、`1h`、または`1d`に設定すると、各組み合わせがUTCのバケットごとに分割されます。その場合、各行の`starting_at`と`ending_at`はそのバケットの境界になります。使用量やコストのないバケットは行を生成しません。
* **デフォルトではランク順です：** 行は範囲全体における `order_by` メトリクスの順に並べられ、デフォルトでは大きいものから順になります（`order=asc` で逆順になります）。時系列を作成するには、`time_bucket_width` と `order_by=time` を設定します。その場合、行はタイムバケットごとに順に返され、デフォルトでは最新のバケットが先頭になり（`order=asc` で最も古いものが先頭になります）、各バケット内では大きい行から順に並びます。空のバケットはゼロで埋めてください。
* **フィルターはグループ化と併用できます：** グループ化できるほとんどのディメンションには、`models[]=claude-opus-5-5`のようなブラケット表記の対応するリストフィルターがあります。複数の値を渡すにはパラメータを繰り返します（最大100個）。同じフィルターの複数の値はORで結合され、異なるフィルターはANDで結合されます。フィルターと`group_by[]`は独立しています。あるディメンションでグループ化するかどうかに関係なくそのディメンションでフィルタリングでき、その逆も可能です。

`model` や `actor` などのディメンションはすべての組織に適用されます。`api_key_id` などの一部はClaude Console組織にのみ適用され、`slack_channel_id` などの他のものはClaude Enterprise組織にのみ適用されます。組織に適用されないディメンションはすべての行で `null` になり、そのフィルターは何にも一致しません。例外は `rbac_group_id` で、組織でチームが利用できない場合は代わりにエラーを返します。[使用量](https://platform.claude.com/docs/ja/api/beta/organization/analytics/usage/list) と [コスト](https://platform.claude.com/docs/ja/api/beta/organization/analytics/cost/list) のAPIリファレンスに、すべてのディメンション、フィルター、値が記載されています。

### アクター

`actor` ディメンションは、リクエストが誰に帰属するかを示します。ユーザー、サービスアカウント、フェデレーションされたクラウドアイデンティティ（クラウドプラットフォーム経由でClaudeにアクセスする組織の場合のAWSまたはGoogle Cloudのプリンシパル）、またはリクエストの背後にそのいずれも存在しない場合はAPIキー自体です。`actor` でグループ化すると、各行の `actor` はオブジェクトになり、その `type` がどの種類かを示します。どのアイデンティティにも帰属できない使用量は `actor: null` になります。

[個人キーとサービスアカウントキー](https://platform.claude.com/docs/ja/manage-claude/authentication#key-types)は、リンクされているユーザーまたはサービスアカウントとして動作するため、それらのリクエストではそのアイデンティティが `actor` として、キーが `api_key_id` として表示されます。レガシーのワークスペースキーはアイデンティティにリンクされていないため、キーが `actor` と `api_key_id` の両方として表示されます。例外は、メンバーがClaude ConsoleアカウントでサインインしたときにClaude Codeが作成するキーです。このキーは[Claude Codeワークスペース](https://platform.claude.com/docs/ja/manage-claude/workspaces#claude-code-workspace)に存在し、その使用量はそのメンバーに帰属します。Claude Consoleからのリクエストや[Workload Identity Federation](https://platform.claude.com/docs/ja/manage-claude/workload-identity-federation)トークンを使用したリクエストなど、APIキーなしで行われたリクエストは `api_key_id: null` になります。フェデレーションされたワークロードの `actor` はそのサービスアカウントです。APIキーのない使用量を `api_key_ids[]` フィルターに含めるには、空のエントリ `api_key_ids[]=` を追加してください。

`api_key_ids[]` フィルターと `actor_ids[]` フィルターは異なる問いに答えます。`api_key_ids[]=apikey_...` は、誰に帰属するかにかかわらず、そのキーが認証したすべてのリクエストに一致します。`actor_ids[]=apikey_...` は、キー自体に帰属するリクエストのみに一致します。

## 使用量エンドポイント

`GET /v1/organizations/analytics/usage` は、種類別のトークン数を返します。`order_by` には `total_tokens`（デフォルト）、`output_tokens`、`uncached_input_tokens`、`requests`、または `time` を指定できます。

たとえば、1つのワークスペースと1つのAPIキーについて1週間分の使用量をサービスティアごとに分類して確認するには（ティアごとに1行、1週間全体を対象）：

<CodeGroup>
  ```bash cURL
  curl --globoff "https://api.anthropic.com/v1/organizations/analytics/usage?\
  starting_at=2026-09-01T00:00:00Z&\
  ending_at=2026-09-08T00:00:00Z&\
  workspace_ids[]=wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ&\
  api_key_ids[]=apikey_01Rj2N8SVvo6BePZj99NhmiT&\
  group_by[]=service_tier" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: analytics-usage-cost-2026-08-24" \
    -H "x-api-key: $ANTHROPIC_API_KEY"
  ```

  ```bash CLI
  ant beta:organization:analytics:usage list \
    --starting-at 2026-09-01T00:00:00Z \
    --ending-at 2026-09-08T00:00:00Z \
    --workspace-id wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ \
    --api-key-id apikey_01Rj2N8SVvo6BePZj99NhmiT \
    --group-by service_tier
  ```

  ```python Python
  client = anthropic.Anthropic()

  rows = client.beta.organization.analytics.usage.list(
      starting_at="2026-09-01T00:00:00Z",
      ending_at="2026-09-08T00:00:00Z",
      workspace_ids=["wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"],
      api_key_ids=["apikey_01Rj2N8SVvo6BePZj99NhmiT"],
      group_by=["service_tier"],
  )

  for row in rows:
      print(f"{row.group.service_tier}: {row.usage.total_tokens}")
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const rows = await client.beta.organization.analytics.usage.list({
    starting_at: "2026-09-01T00:00:00Z",
    ending_at: "2026-09-08T00:00:00Z",
    workspace_ids: ["wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"],
    api_key_ids: ["apikey_01Rj2N8SVvo6BePZj99NhmiT"],
    group_by: ["service_tier"]
  });

  for await (const row of rows) {
    console.log(`${row.group.service_tier}: ${row.usage.total_tokens}`);
  }
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.Analytics.Usage;

  AnthropicClient client = new();

  var page = await client.Beta.Organization.Analytics.Usage.List(
      new()
      {
          StartingAt = DateTimeOffset.Parse("2026-09-01T00:00:00Z"),
          EndingAt = DateTimeOffset.Parse("2026-09-08T00:00:00Z"),
          WorkspaceIds = ["wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"],
          ApiKeyIds = ["apikey_01Rj2N8SVvo6BePZj99NhmiT"],
          GroupBy = [BetaAnalyticsUsageGroupBy.ServiceTier],
      }
  );

  await foreach (var row in page.Paginate())
  {
      Console.WriteLine($"{row.Group.ServiceTier?.Raw()}: {row.Usage.TotalTokens}");
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  rows := client.Beta.Organization.Analytics.Usage.ListAutoPaging(context.Background(), anthropic.BetaOrganizationAnalyticsUsageListParams{
  	StartingAt:   time.Date(2026, time.September, 1, 0, 0, 0, 0, time.UTC),
  	EndingAt:     anthropic.Time(time.Date(2026, time.September, 8, 0, 0, 0, 0, time.UTC)),
  	WorkspaceIDs: []string{"wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"},
  	APIKeyIDs:    []string{"apikey_01Rj2N8SVvo6BePZj99NhmiT"},
  	GroupBy:      []anthropic.BetaAnalyticsUsageGroupBy{anthropic.BetaAnalyticsUsageGroupByServiceTier},
  })

  for rows.Next() {
  	row := rows.Current()
  	fmt.Printf("%s: %d\n", row.Group.ServiceTier, row.Usage.TotalTokens)
  }
  if err := rows.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.analytics.usage.BetaAnalyticsUsageGroupBy;
  import com.anthropic.models.beta.organization.analytics.usage.UsageListParams;
  import java.time.OffsetDateTime;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = UsageListParams.builder()
          .startingAt(OffsetDateTime.parse("2026-09-01T00:00:00Z"))
          .endingAt(OffsetDateTime.parse("2026-09-08T00:00:00Z"))
          .addWorkspaceId("wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ")
          .addApiKeyId("apikey_01Rj2N8SVvo6BePZj99NhmiT")
          .addGroupBy(BetaAnalyticsUsageGroupBy.SERVICE_TIER)
          .build();
      var rows = client.beta().organization().analytics().usage().list(params);

      for (var row : rows.autoPager()) {
          IO.println(row.group().serviceTier().orElse(null) + ": " + row.usage().totalTokens());
      }
  }
  ```

  ```php PHP
  $client = new Client();

  $rows = $client->beta->organization->analytics->usage->list(
      startingAt: new \DateTimeImmutable('2026-09-01T00:00:00Z'),
      endingAt: new \DateTimeImmutable('2026-09-08T00:00:00Z'),
      workspaceIDs: ['wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ'],
      apiKeyIDs: ['apikey_01Rj2N8SVvo6BePZj99NhmiT'],
      groupBy: ['service_tier'],
  );

  foreach ($rows->pagingEachItem() as $row) {
      echo "{$row->group->serviceTier}: {$row->usage->totalTokens}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.analytics.usage.list(
    starting_at: Time.utc(2026, 9, 1),
    ending_at: Time.utc(2026, 9, 8),
    workspace_ids: ["wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"],
    api_key_ids: ["apikey_01Rj2N8SVvo6BePZj99NhmiT"],
    group_by: [:service_tier]
  )

  page.auto_paging_each do |row|
    puts "#{row.group.service_tier}: #{row.usage.total_tokens}"
  end
  ```
</CodeGroup>

APIキーとワークスペースのIDを調べるには、[List API Keys](https://platform.claude.com/docs/ja/api/organization/api_keys/list)エンドポイントと[List Workspaces](https://platform.claude.com/docs/ja/api/organization/workspaces/list)エンドポイント、またはClaude Consoleを使用してください。

1か月間で最も多くのリクエストを行ったユーザー、サービスアカウント、APIキーを見つけるには、次のようにします。

<CodeGroup>
  ```bash cURL
  curl --globoff "https://api.anthropic.com/v1/organizations/analytics/usage?\
  starting_at=2026-09-01T00:00:00Z&\
  ending_at=2026-10-01T00:00:00Z&\
  group_by[]=actor&\
  order_by=requests&\
  limit=25" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: analytics-usage-cost-2026-08-24" \
    -H "x-api-key: $ANTHROPIC_API_KEY"
  ```

  ```bash CLI
  ant beta:organization:analytics:usage list \
    --starting-at 2026-09-01T00:00:00Z \
    --ending-at 2026-10-01T00:00:00Z \
    --group-by actor \
    --order-by requests \
    --limit 25
  ```

  ```python Python
  client = anthropic.Anthropic()

  rows = client.beta.organization.analytics.usage.list(
      starting_at="2026-09-01T00:00:00Z",
      ending_at="2026-10-01T00:00:00Z",
      group_by=["actor"],
      order_by="requests",
      limit=25,
  )

  for row in rows:
      print(f"{row.group.actor}: {row.usage.requests}")
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const rows = await client.beta.organization.analytics.usage.list({
    starting_at: "2026-09-01T00:00:00Z",
    ending_at: "2026-10-01T00:00:00Z",
    group_by: ["actor"],
    order_by: "requests",
    limit: 25
  });

  for await (const row of rows) {
    console.log(`${JSON.stringify(row.group.actor)}: ${row.usage.requests}`);
  }
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.Analytics.Usage;

  AnthropicClient client = new();

  var page = await client.Beta.Organization.Analytics.Usage.List(
      new()
      {
          StartingAt = DateTimeOffset.Parse("2026-09-01T00:00:00Z"),
          EndingAt = DateTimeOffset.Parse("2026-10-01T00:00:00Z"),
          GroupBy = [BetaAnalyticsUsageGroupBy.Actor],
          OrderBy = BetaAnalyticsUsageOrderBy.Requests,
          Limit = 25,
      }
  );

  await foreach (var row in page.Paginate())
  {
      Console.WriteLine($"{row.Group.Actor?.Json}: {row.Usage.Requests}");
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  rows := client.Beta.Organization.Analytics.Usage.ListAutoPaging(context.Background(), anthropic.BetaOrganizationAnalyticsUsageListParams{
  	StartingAt: time.Date(2026, time.September, 1, 0, 0, 0, 0, time.UTC),
  	EndingAt:   anthropic.Time(time.Date(2026, time.October, 1, 0, 0, 0, 0, time.UTC)),
  	GroupBy:    []anthropic.BetaAnalyticsUsageGroupBy{anthropic.BetaAnalyticsUsageGroupByActor},
  	OrderBy:    anthropic.BetaAnalyticsUsageOrderByRequests,
  	Limit:      anthropic.Int(25),
  })

  for rows.Next() {
  	row := rows.Current()
  	fmt.Printf("%s: %d\n", row.Group.Actor.RawJSON(), row.Usage.Requests)
  }
  if err := rows.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.analytics.usage.BetaAnalyticsUsageGroupBy;
  import com.anthropic.models.beta.organization.analytics.usage.BetaAnalyticsUsageOrderBy;
  import com.anthropic.models.beta.organization.analytics.usage.UsageListParams;
  import java.time.OffsetDateTime;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = UsageListParams.builder()
          .startingAt(OffsetDateTime.parse("2026-09-01T00:00:00Z"))
          .endingAt(OffsetDateTime.parse("2026-10-01T00:00:00Z"))
          .addGroupBy(BetaAnalyticsUsageGroupBy.ACTOR)
          .orderBy(BetaAnalyticsUsageOrderBy.REQUESTS)
          .limit(25)
          .build();
      var rows = client.beta().organization().analytics().usage().list(params);

      for (var row : rows.autoPager()) {
          IO.println(row.group().actor().orElse(null) + ": " + row.usage().requests().orElse(null));
      }
  }
  ```

  ```php PHP
  $client = new Client();

  $rows = $client->beta->organization->analytics->usage->list(
      startingAt: new \DateTimeImmutable('2026-09-01T00:00:00Z'),
      endingAt: new \DateTimeImmutable('2026-10-01T00:00:00Z'),
      groupBy: ['actor'],
      orderBy: 'requests',
      limit: 25,
  );

  foreach ($rows->pagingEachItem() as $row) {
      $actor = json_encode($row->group->actor);
      echo "{$actor}: {$row->usage->requests}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.analytics.usage.list(
    starting_at: Time.utc(2026, 9, 1),
    ending_at: Time.utc(2026, 10, 1),
    group_by: [:actor],
    order_by: :requests,
    limit: 25
  )

  page.auto_paging_each do |row|
    puts "#{row.group.actor}: #{row.usage.requests}"
  end
  ```
</CodeGroup>

## コストエンドポイント

`GET /v1/organizations/analytics/cost` は、`/usage` エンドポイントと同じフィルター、ディメンション、タイムバケットを受け付けます。各行の `cost` オブジェクトには、`amount`（割引適用後、クレジット適用前のコスト）、`list_amount`（定価でのコスト）、`currency`（常に `"USD"`）、および `requests` が含まれます。金額はセント単位の小数点以下6桁の10進数文字列です。`"41280.000000"` は412.80 USDです。`order_by` には `amount`（デフォルト）、`list_amount`、または `time` を指定できます。

このエンドポイントにのみ存在し、5ディメンションの上限にカウントされない追加のディメンションが2つあります。`group_by[]=cost_type`は各行をコストタイプごとに1行ずつに分割し、`group_by[]=token_type`はトークンコストをトークンタイプごとに1行ずつに分割します。`limit`もこれら2つのディメンションには適用されないため、1ページに`limit`を超える行が含まれることがあります。たとえば、1か月分のモデル、コストタイプ、トークンタイプ別のコストは次のとおりです：

<CodeGroup>
  ```bash cURL
  curl --globoff "https://api.anthropic.com/v1/organizations/analytics/cost?\
  starting_at=2026-09-01T00:00:00Z&\
  ending_at=2026-10-01T00:00:00Z&\
  group_by[]=model&\
  group_by[]=cost_type&\
  group_by[]=token_type" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: analytics-usage-cost-2026-08-24" \
    -H "x-api-key: $ANTHROPIC_API_KEY"
  ```

  ```bash CLI
  ant beta:organization:analytics:cost list \
    --starting-at 2026-09-01T00:00:00Z \
    --ending-at 2026-10-01T00:00:00Z \
    --group-by model \
    --group-by cost_type \
    --group-by token_type
  ```

  ```python Python
  client = anthropic.Anthropic()

  rows = client.beta.organization.analytics.cost.list(
      starting_at="2026-09-01T00:00:00Z",
      ending_at="2026-10-01T00:00:00Z",
      group_by=["model", "cost_type", "token_type"],
  )

  for row in rows:
      print(
          f"{row.group.model} {row.group.cost_type} {row.group.token_type}: {row.cost.amount}"
      )
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const rows = await client.beta.organization.analytics.cost.list({
    starting_at: "2026-09-01T00:00:00Z",
    ending_at: "2026-10-01T00:00:00Z",
    group_by: ["model", "cost_type", "token_type"]
  });

  for await (const row of rows) {
    console.log(
      `${row.group.model} ${row.group.cost_type} ${row.group.token_type}: ${row.cost.amount}`
    );
  }
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.Analytics.Cost;

  AnthropicClient client = new();

  var page = await client.Beta.Organization.Analytics.Cost.List(
      new()
      {
          StartingAt = DateTimeOffset.Parse("2026-09-01T00:00:00Z"),
          EndingAt = DateTimeOffset.Parse("2026-10-01T00:00:00Z"),
          GroupBy = [BetaAnalyticsCostGroupBy.Model, BetaAnalyticsCostGroupBy.CostType, BetaAnalyticsCostGroupBy.TokenType],
      }
  );

  await foreach (var row in page.Paginate())
  {
      Console.WriteLine(
          $"{row.Group.Model} {row.Group.CostType?.Raw()} {row.Group.TokenType?.Raw()}: {row.Cost.Amount}"
      );
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  rows := client.Beta.Organization.Analytics.Cost.ListAutoPaging(context.Background(), anthropic.BetaOrganizationAnalyticsCostListParams{
  	StartingAt: time.Date(2026, time.September, 1, 0, 0, 0, 0, time.UTC),
  	EndingAt:   anthropic.Time(time.Date(2026, time.October, 1, 0, 0, 0, 0, time.UTC)),
  	GroupBy:    []anthropic.BetaAnalyticsCostGroupBy{anthropic.BetaAnalyticsCostGroupByModel, anthropic.BetaAnalyticsCostGroupByCostType, anthropic.BetaAnalyticsCostGroupByTokenType},
  })

  for rows.Next() {
  	row := rows.Current()
  	fmt.Printf("%s %s %s: %s\n", row.Group.Model, row.Group.CostType, row.Group.TokenType, row.Cost.Amount)
  }
  if err := rows.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.analytics.cost.BetaAnalyticsCostGroupBy;
  import com.anthropic.models.beta.organization.analytics.cost.CostListParams;
  import java.time.OffsetDateTime;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = CostListParams.builder()
          .startingAt(OffsetDateTime.parse("2026-09-01T00:00:00Z"))
          .endingAt(OffsetDateTime.parse("2026-10-01T00:00:00Z"))
          .addGroupBy(BetaAnalyticsCostGroupBy.MODEL)
          .addGroupBy(BetaAnalyticsCostGroupBy.COST_TYPE)
          .addGroupBy(BetaAnalyticsCostGroupBy.TOKEN_TYPE)
          .build();
      var rows = client.beta().organization().analytics().cost().list(params);

      for (var row : rows.autoPager()) {
          var group = row.group();
          IO.println(
              group.model().orElse(null) + " " + group.costType().orElse(null) + " "
                  + group.tokenType().orElse(null) + ": " + row.cost().amount()
          );
      }
  }
  ```

  ```php PHP
  $client = new Client();

  $rows = $client->beta->organization->analytics->cost->list(
      startingAt: new \DateTimeImmutable('2026-09-01T00:00:00Z'),
      endingAt: new \DateTimeImmutable('2026-10-01T00:00:00Z'),
      groupBy: ['model', 'cost_type', 'token_type'],
  );

  foreach ($rows->pagingEachItem() as $row) {
      $group = $row->group;
      echo "{$group->model} {$group->costType} {$group->tokenType}: {$row->cost->amount}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.analytics.cost.list(
    starting_at: Time.utc(2026, 9, 1),
    ending_at: Time.utc(2026, 10, 1),
    group_by: [:model, :cost_type, :token_type]
  )

  page.auto_paging_each do |row|
    group = row.group
    puts "#{group.model} #{group.cost_type} #{group.token_type}: #{row.cost.amount}"
  end
  ```
</CodeGroup>

各モデルについて、レスポンスには5つの`tokens`行（トークンタイプごとに1行）に加えて、`web_search`、`code_execution`、`session_usage`のそれぞれに1行ずつが含まれます。そのうちの1行：

```json
{
  "starting_at": "2026-09-01T00:00:00Z",
  "ending_at": "2026-10-01T00:00:00Z",
  "group": {
    "model": "claude-opus-5",
    ...,
    "cost_type": "tokens",
    "token_type": "cache_read_input_tokens"
  },
  "cost": {
    "currency": "USD",
    "amount": "41280.000000",
    "list_amount": "51600.000000",
    "requests": null
  }
}
```

`group` オブジェクトはすべてのディメンションを保持しますが、ここでは省略しています。`group_by[]=cost_type` または `token_type` を指定した場合、すべての行で `requests` は `null` になります。

<Warning>
  Priority Tierのコミットメントの下で処理されたリクエストは、使用量エンドポイントでは `service_tier: "priority"` として表示されますが、コミットメントでカバーされるため、`amount` と `list_amount` へのトークンコストの寄与はゼロです。コミットメント料金は別途請求され、このデータには含まれません。それらのリクエストでのウェブ検索は標準料金で請求されます。コミットしたキャパシティを超えるリクエストは、標準ティアで処理され、標準ティアの料金が適用されます。
</Warning>

## 日付範囲とタイムバケット

* タイムスタンプはUTCオフセット付きのRFC 3339形式です（例：`2026-09-01T00:00:00Z`）。`starting_at` は範囲に含まれ、`ending_at` は含まれません。
* `starting_at` は2026年1月1日以降、かつ過去365日以内である必要があります。1回のリクエストで指定できる期間は最大31日です。`ending_at` のデフォルトは、`starting_at` の31日後または現在時刻のいずれか早い方です。
* `time_bucket_width` を設定する場合は常に `ending_at` が必須であり、`time_bucket_width=1m` の場合、1回のリクエストで指定できる期間は最大24時間です。
* 範囲の両端はUTCのバケット境界に切り捨てられます。`time_bucket_width` が設定されていない場合は時間単位に切り捨てられます。たとえば、`time_bucket_width=1h` の場合、`starting_at` が `2026-09-01T10:43:00Z` であれば `2026-09-01T10:00:00Z` として、`ending_at` が `2026-09-01T15:43:00Z` であれば `2026-09-01T15:00:00Z` として扱われるため、レスポンスはUTCの10:00から15:00までを対象とします。

## データの鮮度

すべてのレスポンスには`data_refreshed_at`タイムスタンプが含まれ、その時刻以降の使用量は欠落しているか部分的です。リクエストした範囲のどの部分についてもまだデータが利用できない場合、`data_refreshed_at`は`null`になり、`data`は空になります。データは通常、基となる使用から4時間以内に更新され、最大24時間かかることがあります。値は、遅れて到着するイベントや照合処理の実行に伴い、暦月の終了後約7日まで修正される可能性があります。たとえば、10月1日の値は11月7日頃まで変わる可能性があります。繰り返し呼び出しても安定した結果を得るには、すでに確認した`data_refreshed_at`以前に`ending_at`を設定してください。最終的な合計を得るには、終了から少なくとも7日が経過した月のみをクエリしてください。ページネーションされたクエリのすべてのページは同じデータスナップショットを読み取るため、`data_refreshed_at`はページ間で同一です。

## Usage and Cost APIからの移行

このセクションは、レガシーの[Usage and Cost API](https://platform.claude.com/docs/ja/manage-claude/usage-cost-api)（`/v1/organizations/usage_report/messages` および `/v1/organizations/cost_report`）を呼び出しているClaude Console組織を対象としています。Admin APIキー、`anthropic-version` ヘッダー、`starting_at` と `ending_at`、バケット幅の値（`1m`、`1h`、`1d`）、ブラケット記法、ページネーションのフィールド名、トークンとコストのフィールド名はそのまま引き継がれます。変更点は次のとおりです。

| Usage and Cost API                                                                              | Usage and Cost Analytics API                                                                                                                                                                                                                                    |
| ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ベータヘッダーなし                                                                                       | すべてのリクエストで`anthropic-beta: analytics-usage-cost-2026-08-24`                                                                                                                                                                                                     |
| データは通常5分以内に表示される                                                                                | データは通常4時間以内に更新され、最大24時間かかることがある（[データの鮮度](https://platform.claude.com/docs/ja/manage-claude/usage-cost-analytics-api#data-freshness)を参照）                                                                                                                         |
| `data`はタイムバケットのリストで、古い順に並び、空のバケットも含む。各バケットには`results`リストがあり、そのエントリにはディメンションとメトリクスが並んで格納される      | `data`は`order_by`でランク付けされた行のリストで、各行は独自の`starting_at`と`ending_at`を持ち、ディメンションは`group`に、メトリクスは`usage`または`cost`に格納される。使用量やコストのない組み合わせには行がない。                                                                                                                        |
| `bucket_width`、デフォルトは`1d`                                                                       | `time_bucket_width`、デフォルトなし。日次の行を維持するには`time_bucket_width=1d`を渡し、範囲全体の合計を得るには省略する。コストエンドポイントもすべてのフィルターと`1m`および`1h`のバケットを受け付ける。                                                                                                                                  |
| `limit`はページあたりのタイムバケット数をカウントする                                                                  | `limit`はページあたりの行数をカウントする（1〜1,000、デフォルトは20）ため、ページ数はデータのある組み合わせの数に依存する                                                                                                                                                                                            |
| 任意の日付範囲、バケット単位で前方にページング                                                                         | `starting_at`は2026年1月1日以降かつ過去365日以内、1リクエストあたり最大31日、`time_bucket_width`を指定する場合は`ending_at`が必須、`1m`バケットでは最大24時間（[日付範囲とタイムバケット](https://platform.claude.com/docs/ja/manage-claude/usage-cost-analytics-api#date-ranges-and-time-buckets)を参照）。より長い範囲は複数のリクエストに分割する。 |
| `account_ids[]`、`service_account_ids[]`、`group_by[]=account_id`、`group_by[]=service_account_id` | 同じタグ付きIDを使用する`actor_ids[]`、および`group_by[]=actor`または`actor_type`。`actor.user_id`または`actor.service_account_id`を読み取る。[アクター](https://platform.claude.com/docs/ja/manage-claude/usage-cost-analytics-api#actors)を参照。                                                 |
| `context_window[]`                                                                              | `context_windows[]`                                                                                                                                                                                                                                             |
| コストレポートでの`group_by[]=description`と`description`文字列                                              | `description`なし。代わりに構造化されたディメンションでグループ化する：`model`、`cost_type`、`token_type`、`context_window`、`service_tier`、`inference_geo`、`speed`のいずれか。これらはすべて1つのリクエストに収まる。                                                                                                    |
| 不明なAPIキーまたはワークスペースIDはエラーを返す                                                                     | 何にも一致しない。スペルミスのある`models[]`名も同様。各リストは最大100個の値を受け付ける。                                                                                                                                                                                                            |
| デフォルトワークスペースでは`workspace_id: null`                                                              | デフォルトワークスペースの実際の`workspace_id`（[デフォルトワークスペースはどのように表されますか？](https://platform.claude.com/docs/ja/manage-claude/usage-cost-analytics-api#how-is-the-default-workspace-represented)を参照）                                                                             |
| ジオやティアのない使用量では`inference_geo: "not_available"`と`service_tier: "standard"`                       | 両方とも`null`。`inference_geos[]=not_available`は引き続き推論ジオのない行に一致する。                                                                                                                                                                                                  |
| コストの`service_tier`は`standard`または`batch`。`amount`は`"123.45"`のような形式                               | 実際のティア。`amount`は`"123.450000"`のように小数点以下6桁で、さらに`list_amount`が加わる。                                                                                                                                                                                                |
| コード実行は使用量レポートに含まれない。リクエスト数なし                                                                    | コード実行は`model: null`の使用量行として表示される。両方のエンドポイントに`requests`が、使用量行に`total_tokens`が追加される                                                                                                                                                                               |

従来の日次レポートを再現するには、同じ `group_by[]` で `time_bucket_width=1d` をリクエストし、`limit=1000` でページを順に取得してから、行を `starting_at` でグループ化し、欠けている日をゼロで埋めます。日付を順番に取得するには `order_by=time&order=asc` を追加します。1週間分のモデル別日次使用量の変更前の例：

```bash cURL
curl --globoff "https://api.anthropic.com/v1/organizations/usage_report/messages?\
starting_at=2026-09-01T00:00:00Z&\
ending_at=2026-09-08T00:00:00Z&\
group_by[]=model&\
bucket_width=1d" \
  -H "anthropic-version: 2023-06-01" \
  -H "x-api-key: $ANTHROPIC_API_KEY"
```

移行後：

<CodeGroup>
  ```bash cURL
  curl --globoff "https://api.anthropic.com/v1/organizations/analytics/usage?\
  starting_at=2026-09-01T00:00:00Z&\
  ending_at=2026-09-08T00:00:00Z&\
  group_by[]=model&\
  time_bucket_width=1d&\
  limit=1000" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: analytics-usage-cost-2026-08-24" \
    -H "x-api-key: $ANTHROPIC_API_KEY"
  ```

  ```bash CLI
  ant beta:organization:analytics:usage list \
    --starting-at 2026-09-01T00:00:00Z \
    --ending-at 2026-09-08T00:00:00Z \
    --time-bucket-width 1d \
    --group-by model \
    --limit 1000
  ```

  ```python Python
  client = anthropic.Anthropic()

  rows = client.beta.organization.analytics.usage.list(
      starting_at="2026-09-01T00:00:00Z",
      ending_at="2026-09-08T00:00:00Z",
      time_bucket_width="1d",
      group_by=["model"],
      limit=1000,
  )

  for row in rows:
      print(f"{row.starting_at} {row.group.model}: {row.usage.total_tokens}")
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const rows = await client.beta.organization.analytics.usage.list({
    starting_at: "2026-09-01T00:00:00Z",
    ending_at: "2026-09-08T00:00:00Z",
    time_bucket_width: "1d",
    group_by: ["model"],
    limit: 1000
  });

  for await (const row of rows) {
    console.log(`${row.starting_at} ${row.group.model}: ${row.usage.total_tokens}`);
  }
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.Analytics;
  using Anthropic.Models.Beta.Organization.Analytics.Usage;

  AnthropicClient client = new();

  var page = await client.Beta.Organization.Analytics.Usage.List(
      new()
      {
          StartingAt = DateTimeOffset.Parse("2026-09-01T00:00:00Z"),
          EndingAt = DateTimeOffset.Parse("2026-09-08T00:00:00Z"),
          TimeBucketWidth = BetaAnalyticsTimeBucketWidth.Day,
          GroupBy = [BetaAnalyticsUsageGroupBy.Model],
          Limit = 1000,
      }
  );

  await foreach (var row in page.Paginate())
  {
      Console.WriteLine($"{row.StartingAt} {row.Group.Model}: {row.Usage.TotalTokens}");
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  rows := client.Beta.Organization.Analytics.Usage.ListAutoPaging(context.Background(), anthropic.BetaOrganizationAnalyticsUsageListParams{
  	StartingAt:      time.Date(2026, time.September, 1, 0, 0, 0, 0, time.UTC),
  	EndingAt:        anthropic.Time(time.Date(2026, time.September, 8, 0, 0, 0, 0, time.UTC)),
  	TimeBucketWidth: anthropic.BetaAnalyticsTimeBucketWidthDay,
  	GroupBy:         []anthropic.BetaAnalyticsUsageGroupBy{anthropic.BetaAnalyticsUsageGroupByModel},
  	Limit:           anthropic.Int(1000),
  })

  for rows.Next() {
  	row := rows.Current()
  	fmt.Printf("%s %s: %d\n", row.StartingAt.Format(time.RFC3339), row.Group.Model, row.Usage.TotalTokens)
  }
  if err := rows.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.analytics.BetaAnalyticsTimeBucketWidth;
  import com.anthropic.models.beta.organization.analytics.usage.BetaAnalyticsUsageGroupBy;
  import com.anthropic.models.beta.organization.analytics.usage.UsageListParams;
  import java.time.OffsetDateTime;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = UsageListParams.builder()
          .startingAt(OffsetDateTime.parse("2026-09-01T00:00:00Z"))
          .endingAt(OffsetDateTime.parse("2026-09-08T00:00:00Z"))
          .timeBucketWidth(BetaAnalyticsTimeBucketWidth.DAY)
          .addGroupBy(BetaAnalyticsUsageGroupBy.MODEL)
          .limit(1000)
          .build();
      var rows = client.beta().organization().analytics().usage().list(params);

      for (var row : rows.autoPager()) {
          IO.println(row.startingAt() + " " + row.group().model().orElse(null) + ": " + row.usage().totalTokens());
      }
  }
  ```

  ```php PHP
  $client = new Client();

  $rows = $client->beta->organization->analytics->usage->list(
      startingAt: new \DateTimeImmutable('2026-09-01T00:00:00Z'),
      endingAt: new \DateTimeImmutable('2026-09-08T00:00:00Z'),
      timeBucketWidth: '1d',
      groupBy: ['model'],
      limit: 1000,
  );

  foreach ($rows->pagingEachItem() as $row) {
      $startingAt = $row->startingAt->format(\DateTimeInterface::ATOM);
      echo "{$startingAt} {$row->group->model}: {$row->usage->totalTokens}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.analytics.usage.list(
    starting_at: Time.utc(2026, 9, 1),
    ending_at: Time.utc(2026, 9, 8),
    time_bucket_width: :"1d",
    group_by: [:model],
    limit: 1000
  )

  page.auto_paging_each do |row|
    puts "#{row.starting_at} #{row.group.model}: #{row.usage.total_tokens}"
  end
  ```
</CodeGroup>

ワークスペース、モデル、サービスティア、コンテキストウィンドウ、推論ジオ別の日次コストを、コストタイプとトークンタイプで分割したもの：

<CodeGroup>
  ```bash cURL
  curl --globoff "https://api.anthropic.com/v1/organizations/analytics/cost?\
  starting_at=2026-09-01T00:00:00Z&\
  ending_at=2026-09-08T00:00:00Z&\
  time_bucket_width=1d&\
  group_by[]=workspace_id&\
  group_by[]=model&\
  group_by[]=service_tier&\
  group_by[]=context_window&\
  group_by[]=inference_geo&\
  group_by[]=cost_type&\
  group_by[]=token_type&\
  limit=1000" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: analytics-usage-cost-2026-08-24" \
    -H "x-api-key: $ANTHROPIC_API_KEY"
  ```

  ```bash CLI
  ant beta:organization:analytics:cost list \
    --starting-at 2026-09-01T00:00:00Z \
    --ending-at 2026-09-08T00:00:00Z \
    --time-bucket-width 1d \
    --group-by workspace_id \
    --group-by model \
    --group-by service_tier \
    --group-by context_window \
    --group-by inference_geo \
    --group-by cost_type \
    --group-by token_type \
    --limit 1000
  ```

  ```python Python
  client = anthropic.Anthropic()

  rows = client.beta.organization.analytics.cost.list(
      starting_at="2026-09-01T00:00:00Z",
      ending_at="2026-09-08T00:00:00Z",
      time_bucket_width="1d",
      group_by=[
          "workspace_id",
          "model",
          "service_tier",
          "context_window",
          "inference_geo",
          "cost_type",
          "token_type",
      ],
      limit=1000,
  )

  for row in rows:
      group = row.group
      print(
          f"{row.starting_at} {group.workspace_id} {group.model} {group.service_tier} "
          f"{group.context_window} {group.inference_geo} {group.cost_type} {group.token_type}: "
          f"{row.cost.amount}"
      )
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const rows = await client.beta.organization.analytics.cost.list({
    starting_at: "2026-09-01T00:00:00Z",
    ending_at: "2026-09-08T00:00:00Z",
    time_bucket_width: "1d",
    group_by: [
      "workspace_id",
      "model",
      "service_tier",
      "context_window",
      "inference_geo",
      "cost_type",
      "token_type"
    ],
    limit: 1000
  });

  for await (const row of rows) {
    const { group } = row;
    console.log(
      `${row.starting_at} ${group.workspace_id} ${group.model} ${group.service_tier} ` +
        `${group.context_window} ${group.inference_geo} ${group.cost_type} ${group.token_type}: ` +
        `${row.cost.amount}`
    );
  }
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.Analytics;
  using Anthropic.Models.Beta.Organization.Analytics.Cost;

  AnthropicClient client = new();

  var page = await client.Beta.Organization.Analytics.Cost.List(
      new()
      {
          StartingAt = DateTimeOffset.Parse("2026-09-01T00:00:00Z"),
          EndingAt = DateTimeOffset.Parse("2026-09-08T00:00:00Z"),
          TimeBucketWidth = BetaAnalyticsTimeBucketWidth.Day,
          GroupBy =
          [
              BetaAnalyticsCostGroupBy.WorkspaceID,
              BetaAnalyticsCostGroupBy.Model,
              BetaAnalyticsCostGroupBy.ServiceTier,
              BetaAnalyticsCostGroupBy.ContextWindow,
              BetaAnalyticsCostGroupBy.InferenceGeo,
              BetaAnalyticsCostGroupBy.CostType,
              BetaAnalyticsCostGroupBy.TokenType,
          ],
          Limit = 1000,
      }
  );

  await foreach (var row in page.Paginate())
  {
      var group = row.Group;
      Console.WriteLine(
          $"{row.StartingAt} {group.WorkspaceID} {group.Model} {group.ServiceTier?.Raw()} "
              + $"{group.ContextWindow?.Raw()} {group.InferenceGeo?.Raw()} {group.CostType?.Raw()} "
              + $"{group.TokenType?.Raw()}: {row.Cost.Amount}"
      );
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  rows := client.Beta.Organization.Analytics.Cost.ListAutoPaging(context.Background(), anthropic.BetaOrganizationAnalyticsCostListParams{
  	StartingAt:      time.Date(2026, time.September, 1, 0, 0, 0, 0, time.UTC),
  	EndingAt:        anthropic.Time(time.Date(2026, time.September, 8, 0, 0, 0, 0, time.UTC)),
  	TimeBucketWidth: anthropic.BetaAnalyticsTimeBucketWidthDay,
  	GroupBy: []anthropic.BetaAnalyticsCostGroupBy{
  		anthropic.BetaAnalyticsCostGroupByWorkspaceID,
  		anthropic.BetaAnalyticsCostGroupByModel,
  		anthropic.BetaAnalyticsCostGroupByServiceTier,
  		anthropic.BetaAnalyticsCostGroupByContextWindow,
  		anthropic.BetaAnalyticsCostGroupByInferenceGeo,
  		anthropic.BetaAnalyticsCostGroupByCostType,
  		anthropic.BetaAnalyticsCostGroupByTokenType,
  	},
  	Limit: anthropic.Int(1000),
  })

  for rows.Next() {
  	row := rows.Current()
  	group := row.Group
  	fmt.Printf("%s %s %s %s %s %s %s %s: %s\n",
  		row.StartingAt.Format(time.RFC3339), group.WorkspaceID, group.Model, group.ServiceTier,
  		group.ContextWindow, group.InferenceGeo, group.CostType, group.TokenType, row.Cost.Amount)
  }
  if err := rows.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.analytics.BetaAnalyticsTimeBucketWidth;
  import com.anthropic.models.beta.organization.analytics.cost.BetaAnalyticsCostGroupBy;
  import com.anthropic.models.beta.organization.analytics.cost.CostListParams;
  import java.time.OffsetDateTime;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = CostListParams.builder()
          .startingAt(OffsetDateTime.parse("2026-09-01T00:00:00Z"))
          .endingAt(OffsetDateTime.parse("2026-09-08T00:00:00Z"))
          .timeBucketWidth(BetaAnalyticsTimeBucketWidth.DAY)
          .addGroupBy(BetaAnalyticsCostGroupBy.WORKSPACE_ID)
          .addGroupBy(BetaAnalyticsCostGroupBy.MODEL)
          .addGroupBy(BetaAnalyticsCostGroupBy.SERVICE_TIER)
          .addGroupBy(BetaAnalyticsCostGroupBy.CONTEXT_WINDOW)
          .addGroupBy(BetaAnalyticsCostGroupBy.INFERENCE_GEO)
          .addGroupBy(BetaAnalyticsCostGroupBy.COST_TYPE)
          .addGroupBy(BetaAnalyticsCostGroupBy.TOKEN_TYPE)
          .limit(1000)
          .build();
      var rows = client.beta().organization().analytics().cost().list(params);

      for (var row : rows.autoPager()) {
          var group = row.group();
          IO.println(
              row.startingAt() + " " + group.workspaceId().orElse(null) + " " + group.model().orElse(null) + " "
                  + group.serviceTier().orElse(null) + " " + group.contextWindow().orElse(null) + " "
                  + group.inferenceGeo().orElse(null) + " " + group.costType().orElse(null) + " "
                  + group.tokenType().orElse(null) + ": " + row.cost().amount()
          );
      }
  }
  ```

  ```php PHP
  $client = new Client();

  $rows = $client->beta->organization->analytics->cost->list(
      startingAt: new \DateTimeImmutable('2026-09-01T00:00:00Z'),
      endingAt: new \DateTimeImmutable('2026-09-08T00:00:00Z'),
      timeBucketWidth: '1d',
      groupBy: [
          'workspace_id',
          'model',
          'service_tier',
          'context_window',
          'inference_geo',
          'cost_type',
          'token_type',
      ],
      limit: 1000,
  );

  foreach ($rows->pagingEachItem() as $row) {
      $startingAt = $row->startingAt->format(\DateTimeInterface::ATOM);
      $group = $row->group;
      echo "{$startingAt} {$group->workspaceID} {$group->model} {$group->serviceTier} "
          . "{$group->contextWindow} {$group->inferenceGeo} {$group->costType} {$group->tokenType}: "
          . "{$row->cost->amount}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.analytics.cost.list(
    starting_at: Time.utc(2026, 9, 1),
    ending_at: Time.utc(2026, 9, 8),
    time_bucket_width: :"1d",
    group_by: [
      :workspace_id,
      :model,
      :service_tier,
      :context_window,
      :inference_geo,
      :cost_type,
      :token_type
    ],
    limit: 1000
  )

  page.auto_paging_each do |row|
    group = row.group
    puts "#{row.starting_at} #{group.workspace_id} #{group.model} #{group.service_tier} " \
      "#{group.context_window} #{group.inference_geo} #{group.cost_type} #{group.token_type}: " \
      "#{row.cost.amount}"
  end
  ```
</CodeGroup>

## Claude Enterpriseの使用量レポートとコストレポートからの移行

このセクションは、`/v1/organizations/analytics/` 配下の[Claude Enterprise Analytics API](https://platform.claude.com/docs/ja/manage-claude/analytics-api)のレポートエンドポイント `usage_report`、`cost_report`、`user_usage_report`、`user_cost_report` を呼び出しているClaude Enterprise組織を対象としています。これらのエンドポイントはレガシーですが、引き続きサポートされます。次のいずれかが必要な場合は、`/analytics/usage` と `/analytics/cost` に移行してください。

* 各バケットの上位100グループではなく、すべてのタイムバケットのすべてのグループ
* 使用量とコストの両方で、`actor`または`actor_type`と他のディメンションを組み合わせたグループ化
* 範囲全体で任意のメトリクスによってランク付けされた行、またはタイムバケット順に並べられた行
* Claude Consoleの組織にも対応する単一の統合

キー、最も早い日付、365日のルックバックと31日の期間、フィルターとディメンションの名前と値（`user_ids[]`とClaude Tagのproduct値を除く）、ユーザーの`actor`フィールド、メトリクスと金額のフィールド、`data_refreshed_at`、カーソルのルール、および[組織レベルのレート制限](https://platform.claude.com/docs/ja/manage-claude/analytics-api#working-with-the-api)はそのまま引き継がれます。新しいヘッダーは`analytics-usage-cost-2026-08-24`ベータヘッダーのみです。変更点は次のとおりです：

| Claude Enterpriseのレポート                                                                                                        | Usage and Cost Analytics API                                                                                                                                            |
| ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `usage_report`と`cost_report`はタイムバケットを古い順に返し、空のバケットも含む。各バケットは最大で上位100グループを保持する。`bucket_width`のデフォルトは`1d`で、`limit`はバケット数をカウントする | データのあるすべての組み合わせを対象とする行を`order_by`でランク付けして返す。各行は独自の`starting_at`と`ending_at`を持ち、ディメンションは`group`に、メトリクスは`usage`または`cost`に格納される。`time_bucket_width`は任意で、`limit`は行数をカウントする。 |
| タイムバケットのパラメータは`bucket_width`                                                                                                  | `time_bucket_width`で、値は同じ                                                                                                                                               |
| `usage_report`と`cost_report`では、`bucket_width`を指定する場合`ending_at`は任意で、`1m`バケットは最大31日にわたることができる                                  | `time_bucket_width`を指定する場合`ending_at`は必須。`1m`バケットは1リクエストあたり最大24時間                                                                                                       |
| `user_usage_report`と`user_cost_report`はユーザーごとに1行を返す                                                                           | `group_by[]=actor&actor_types[]=user_actor`。フィルターを指定しない場合、ユーザー以外のアイデンティティの行と、帰属先のない使用量に対する`actor: null`の行も返される。                                                         |
| Claude Tagの使用量は`product: "claude-tag"`                                                                                        | `product: "claude_tag"`。`products[]`はどちらの表記も受け付ける                                                                                                                       |
| 認識されない`models[]`名は400エラーを返す                                                                                                   | 何にも一致しない                                                                                                                                                                |
| `user_ids[]`                                                                                                                  | 同じタグ付き`user_...` IDを使用する`actor_ids[]`                                                                                                                                   |
| ユーザーごとのレポートでの`exclude_deleted_users`                                                                                          | `group_by[]=actor`が必要。指定しない場合、リクエストは400エラーを返す。`actor`が`deleted: true`のユーザーである行のみを除外し、他のアイデンティティの行と`actor: null`の行は残る。                                                   |

1か月間のユーザーごとのコストを取得する場合、移行前は次のとおりです。

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/analytics/user_cost_report?\
  starting_at=2026-09-01T00:00:00Z&\
  ending_at=2026-10-01T00:00:00Z&\
  limit=100" \
    -H "anthropic-version: 2023-06-01" \
    -H "x-api-key: $ANTHROPIC_API_KEY"
  ```

  ```bash CLI
  ant beta:organization:analytics:user-cost-report list \
    --starting-at 2026-09-01T00:00:00Z \
    --ending-at 2026-10-01T00:00:00Z \
    --limit 100
  ```

  ```python Python
  client = anthropic.Anthropic()

  rows = client.beta.organization.analytics.user_cost_report.list(
      starting_at="2026-09-01T00:00:00Z",
      ending_at="2026-10-01T00:00:00Z",
      limit=100,
  )

  for row in rows:
      print(f"{row.actor.user_id}: {row.amount}")
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const rows = await client.beta.organization.analytics.userCostReport.list({
    starting_at: "2026-09-01T00:00:00Z",
    ending_at: "2026-10-01T00:00:00Z",
    limit: 100
  });

  for await (const row of rows) {
    console.log(`${row.actor.user_id}: ${row.amount}`);
  }
  ```

  ```csharp C#
  AnthropicClient client = new();

  var page = await client.Beta.Organization.Analytics.UserCostReport.List(
      new()
      {
          StartingAt = DateTimeOffset.Parse("2026-09-01T00:00:00Z"),
          EndingAt = DateTimeOffset.Parse("2026-10-01T00:00:00Z"),
          Limit = 100,
      }
  );

  await foreach (var row in page.Paginate())
  {
      Console.WriteLine($"{row.Actor.UserID}: {row.Amount}");
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  rows := client.Beta.Organization.Analytics.UserCostReport.ListAutoPaging(context.Background(), anthropic.BetaOrganizationAnalyticsUserCostReportListParams{
  	StartingAt: time.Date(2026, time.September, 1, 0, 0, 0, 0, time.UTC),
  	EndingAt:   anthropic.Time(time.Date(2026, time.October, 1, 0, 0, 0, 0, time.UTC)),
  	Limit:      anthropic.Int(100),
  })

  for rows.Next() {
  	row := rows.Current()
  	fmt.Printf("%s: %s\n", row.Actor.UserID, row.Amount)
  }
  if err := rows.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.analytics.usercostreport.UserCostReportListParams;
  import java.time.OffsetDateTime;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = UserCostReportListParams.builder()
          .startingAt(OffsetDateTime.parse("2026-09-01T00:00:00Z"))
          .endingAt(OffsetDateTime.parse("2026-10-01T00:00:00Z"))
          .limit(100)
          .build();
      var rows = client.beta().organization().analytics().userCostReport().list(params);

      for (var row : rows.autoPager()) {
          IO.println(row.actor().userId() + ": " + row.amount());
      }
  }
  ```

  ```php PHP
  $client = new Client();

  $rows = $client->beta->organization->analytics->userCostReport->list(
      startingAt: new \DateTimeImmutable('2026-09-01T00:00:00Z'),
      endingAt: new \DateTimeImmutable('2026-10-01T00:00:00Z'),
      limit: 100,
  );

  foreach ($rows->pagingEachItem() as $row) {
      echo "{$row->actor->userID}: {$row->amount}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.analytics.user_cost_report.list(
    starting_at: Time.utc(2026, 9, 1),
    ending_at: Time.utc(2026, 10, 1),
    limit: 100
  )

  page.auto_paging_each do |row|
    puts "#{row.actor.user_id}: #{row.amount}"
  end
  ```
</CodeGroup>

移行後（製品別の内訳を追加）：

<CodeGroup>
  ```bash cURL
  curl --globoff "https://api.anthropic.com/v1/organizations/analytics/cost?\
  starting_at=2026-09-01T00:00:00Z&\
  ending_at=2026-10-01T00:00:00Z&\
  group_by[]=actor&\
  group_by[]=product&\
  actor_types[]=user_actor&\
  limit=100" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: analytics-usage-cost-2026-08-24" \
    -H "x-api-key: $ANTHROPIC_API_KEY"
  ```

  ```bash CLI
  ant beta:organization:analytics:cost list \
    --starting-at 2026-09-01T00:00:00Z \
    --ending-at 2026-10-01T00:00:00Z \
    --actor-type user_actor \
    --group-by actor \
    --group-by product \
    --limit 100
  ```

  ```python Python
  client = anthropic.Anthropic()

  rows = client.beta.organization.analytics.cost.list(
      starting_at="2026-09-01T00:00:00Z",
      ending_at="2026-10-01T00:00:00Z",
      actor_types=["user_actor"],
      group_by=["actor", "product"],
      limit=100,
  )

  for row in rows:
      actor = row.group.actor
      if actor is not None and actor.type == "user_actor":
          print(f"{actor.user_id} {row.group.product}: {row.cost.amount}")
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const rows = await client.beta.organization.analytics.cost.list({
    starting_at: "2026-09-01T00:00:00Z",
    ending_at: "2026-10-01T00:00:00Z",
    actor_types: ["user_actor"],
    group_by: ["actor", "product"],
    limit: 100
  });

  for await (const row of rows) {
    const { actor } = row.group;
    if (actor?.type === "user_actor") {
      console.log(`${actor.user_id} ${row.group.product}: ${row.cost.amount}`);
    }
  }
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.Analytics;
  using Anthropic.Models.Beta.Organization.Analytics.Cost;

  AnthropicClient client = new();

  var page = await client.Beta.Organization.Analytics.Cost.List(
      new()
      {
          StartingAt = DateTimeOffset.Parse("2026-09-01T00:00:00Z"),
          EndingAt = DateTimeOffset.Parse("2026-10-01T00:00:00Z"),
          ActorTypes = [BetaAnalyticsActorType.UserActor],
          GroupBy = [BetaAnalyticsCostGroupBy.Actor, BetaAnalyticsCostGroupBy.Product],
          Limit = 100,
      }
  );

  await foreach (var row in page.Paginate())
  {
      if (row.Group.Actor is { } actor && actor.TryPickReportUser(out var user))
      {
          Console.WriteLine($"{user.UserID} {row.Group.Product}: {row.Cost.Amount}");
      }
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  rows := client.Beta.Organization.Analytics.Cost.ListAutoPaging(context.Background(), anthropic.BetaOrganizationAnalyticsCostListParams{
  	StartingAt: time.Date(2026, time.September, 1, 0, 0, 0, 0, time.UTC),
  	EndingAt:   anthropic.Time(time.Date(2026, time.October, 1, 0, 0, 0, 0, time.UTC)),
  	ActorTypes: []anthropic.BetaAnalyticsActorType{anthropic.BetaAnalyticsActorTypeUserActor},
  	GroupBy:    []anthropic.BetaAnalyticsCostGroupBy{anthropic.BetaAnalyticsCostGroupByActor, anthropic.BetaAnalyticsCostGroupByProduct},
  	Limit:      anthropic.Int(100),
  })

  for rows.Next() {
  	row := rows.Current()
  	if user, ok := row.Group.Actor.AsAny().(anthropic.BetaAnalyticsReportUserActor); ok {
  		fmt.Printf("%s %s: %s\n", user.UserID, row.Group.Product, row.Cost.Amount)
  	}
  }
  if err := rows.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.analytics.BetaAnalyticsActorType;
  import com.anthropic.models.beta.organization.analytics.cost.BetaAnalyticsCostGroupBy;
  import com.anthropic.models.beta.organization.analytics.cost.CostListParams;
  import java.time.OffsetDateTime;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = CostListParams.builder()
          .startingAt(OffsetDateTime.parse("2026-09-01T00:00:00Z"))
          .endingAt(OffsetDateTime.parse("2026-10-01T00:00:00Z"))
          .addActorType(BetaAnalyticsActorType.USER_ACTOR)
          .addGroupBy(BetaAnalyticsCostGroupBy.ACTOR)
          .addGroupBy(BetaAnalyticsCostGroupBy.PRODUCT)
          .limit(100)
          .build();
      var rows = client.beta().organization().analytics().cost().list(params);

      for (var row : rows.autoPager()) {
          row.group().actor().flatMap(actor -> actor.user()).ifPresent(user ->
              IO.println(user.userId() + " " + row.group().product().orElse(null) + ": " + row.cost().amount())
          );
      }
  }
  ```

  ```php PHP
  use Anthropic\Beta\Organization\Analytics\AnalyticsReportUserActor;
  // ...

  $client = new Client();

  $rows = $client->beta->organization->analytics->cost->list(
      startingAt: new \DateTimeImmutable('2026-09-01T00:00:00Z'),
      endingAt: new \DateTimeImmutable('2026-10-01T00:00:00Z'),
      actorTypes: ['user_actor'],
      groupBy: ['actor', 'product'],
      limit: 100,
  );

  foreach ($rows->pagingEachItem() as $row) {
      $actor = $row->group->actor;
      if ($actor instanceof AnalyticsReportUserActor) {
          echo "{$actor->userID} {$row->group->product}: {$row->cost->amount}\n";
      }
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.analytics.cost.list(
    starting_at: Time.utc(2026, 9, 1),
    ending_at: Time.utc(2026, 10, 1),
    actor_types: [:user_actor],
    group_by: [:actor, :product],
    limit: 100
  )

  page.auto_paging_each do |row|
    actor = row.group.actor
    if actor.is_a?(Anthropic::Models::Beta::Organization::BetaAnalyticsReportUserActor)
      puts "#{actor.user_id} #{row.group.product}: #{row.cost.amount}"
    end
  end
  ```
</CodeGroup>

## よくある質問

### デフォルトワークスペースはどのように表されますか？

Claude Consoleの組織のデフォルトワークスペースは、他のすべてのワークスペースと同様に独自の`wrkspc_` IDを持ちます。デフォルトワークスペースの行では`workspace_id`にそのIDが入り、`workspace_ids[]`でそのIDによるフィルタリングができます。[List Workspaces](https://platform.claude.com/docs/ja/api/organization/workspaces/list)は、`include_default=true`を渡さない限りデフォルトワークスペースを含めません。見慣れない`workspace_id`がデフォルトワークスペースかどうかを確認するには、それを[Get Workspace](https://platform.claude.com/docs/ja/api/organization/workspaces/retrieve)に渡してください。デフォルトワークスペースは`"name": "Default"`を返します。

### Claude Codeのユーザーごとのコストを取得するにはどうすればよいですか？

`products[]=claude_code&group_by[]=actor` を指定してコストエンドポイントを呼び出してください。Claude Console組織は、ユーザーごとのClaude Codeのアクティビティと推定コストをレポートする[Claude Code Analytics API](https://platform.claude.com/docs/ja/manage-claude/claude-code-analytics-api)も使用できます。

## 関連項目

* [Usage and Cost API](https://platform.claude.com/docs/ja/manage-claude/usage-cost-api)（レガシー）
* [Analytics API](https://platform.claude.com/docs/ja/manage-claude/analytics-api)：組織に必要なアナリティクスAPIとキーの種類
* [Claude Code Analytics API](https://platform.claude.com/docs/ja/manage-claude/claude-code-analytics-api)
* [Admin APIリファレンス](https://platform.claude.com/docs/ja/api/beta/organization)
* [料金](https://platform.claude.com/docs/ja/about-claude/pricing)
