---
title: "Get Messages Usage Report"
method: GET
path: "/v1/organizations/usage_report/messages?beta=true"
---

# Get Messages Usage Report

`GET /v1/organizations/usage_report/messages?beta=true`

## Query parameters

- `limit` integer — Maximum number of time buckets to return in the response. The default and max limits depend on `bucket_width`: • `"1d"`: Default of 7 days, maximum of 31 days • `"1h"`: Default of 24 hours, maximum of 168 hours • `"1m"`: Default of 60 minutes, maximum of 1440 minutes
- `page` string, nullable — Optionally set to the `next_page` token from the previous response.
- `starting_at` string, date-time, required — Time buckets that start on or after this RFC 3339 timestamp will be returned. Each time bucket will be snapped to the start of the minute/hour/day in UTC.
- `ending_at` string, date-time, nullable — Time buckets that end before this RFC 3339 timestamp will be returned.
- `api_key_ids[]` string[], nullable — Restrict usage returned to the specified API key ID(s).
- `workspace_ids[]` string[], nullable — Restrict usage returned to the specified workspace ID(s).
- `account_ids[]` string[], nullable — Restrict usage returned to the specified user account ID(s).
- `service_account_ids[]` string[], nullable — Restrict usage returned to the specified service account ID(s).
- `models[]` string[], nullable — Restrict usage returned to the specified model(s).
- `service_tiers[]` BetaUsageReportServiceTier[], nullable — Restrict usage returned to the specified service tier(s).
- `context_window[]` BetaMessagesUsageReportContextWindow[], nullable — Restrict usage returned to the specified context window(s).
- `inference_geos[]` BetaInferenceGeoFilter[], nullable — Restrict usage returned to the specified inference geo(s). Use `not_available` for models that do not support specifying `inference_geo`.
- `speeds[]` BetaSpeed[], nullable — Restrict usage returned to the specified speed(s) (Claude Code research preview). Requires the `fast-mode-2026-02-01` beta header.
- `group_by[]` BetaMessagesUsageReportGroupBy[], nullable — Group by any subset of the available options. Grouping by `speed` requires the `fast-mode-2026-02-01` beta header.
- `bucket_width` '1d' | '1h' | '1m'

## Headers

- `anthropic-beta` string — Optional header to specify the beta version(s) you want to use. To use multiple betas, use a comma separated list like `beta1,beta2` or specify the header multiple times for each beta.
- `x-api-key` string — Your unique Admin API key for authentication. This key is required in the header of all Admin API requests, to authenticate your account and access Anthropic's services. Get your Admin API key through the [Console](https://console.anthropic.com/settings/admin-keys).
- `anthropic-version` string — The version of the Claude API you want to use. Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning).

## Response `200`

Successful Response

- BetaGetMessagesUsageReportResponse
  - `data` BetaMessagesUsageReportTimeBucket[], required — List of time buckets for this page, oldest first: one per `bucket_width` interval, including intervals with no usage (their `results` list is empty). A page holds at most `limit` buckets.
    - `starting_at` string, date-time, required — Start of the time bucket (inclusive) in RFC 3339 format.
    - `ending_at` string, date-time, required — End of the time bucket (exclusive) in RFC 3339 format.
    - `results` BetaMessagesUsageReportItem[], required — List of usage items for this time bucket. There may be multiple items if one or more `group_by[]` parameters are specified.
      - `uncached_input_tokens` integer, required — The number of uncached input tokens processed.
      - `cache_creation` BetaCacheCreation, required
        - `ephemeral_1h_input_tokens` integer, required — The number of input tokens used to create the 1 hour cache entry.
        - `ephemeral_5m_input_tokens` integer, required — The number of input tokens used to create the 5 minute cache entry.
      - `cache_read_input_tokens` integer, required — The number of input tokens read from the cache.
      - `output_tokens` integer, required — The number of output tokens generated.
      - `server_tool_use` BetaServerToolUse, required
        - `web_search_requests` integer, required — The number of web search requests made.
      - `api_key_id` string, nullable, required — ID of the API key used. `null` if not grouping by API key or for usage in the Anthropic Console.
      - `workspace_id` string, nullable, required — ID of the Workspace used. `null` if not grouping by workspace or for the default workspace.
      - `account_id` string, nullable, required — ID of the user account that made the request. `null` if not grouping by account or for non-OAuth requests.
      - `service_account_id` string, nullable, required — ID of the service account that made the request. `null` if not grouping by service account or for non-OIDC-federation requests.
      - `model` string, nullable, required — Model used. `null` if not grouping by model.
      - `service_tier` 'batch' | 'flex' | 'flex_discount' | 'priority' | 'priority_on_demand' | 'standard', required
      - `context_window` '0-200k' | '200k-1M', required
      - `inference_geo` 'global' | 'not_available' | 'us', required
  - `has_more` boolean, required — Indicates if there are more results.
  - `next_page` string, nullable, required — Opaque cursor for the next page, or `null` when `has_more` is false. Pass it as the `page` parameter in the next request.

## Other responses

- `400` — Invalid argument - The client specified an invalid argument
- `401` — Unauthenticated - The request does not have valid authentication credentials
- `403` — Permission denied - The caller does not have permission to execute the specified operation
- `404` — Not found - Some requested entity was not found
- `408` — Deadline exceeded - The deadline expired before the operation could complete
- `409` — Aborted - The operation was aborted due to concurrency issue
- `412` — Failed precondition - Operation was rejected because the system is not in required state
- `413` — Out of range - Operation was attempted past the valid range
- `429` — Resource exhausted - Some resource has been exhausted (rate limiting)
- `431` — Request header fields too large - Request metadata was too large
- `499` — Cancelled - The operation was cancelled by the client
- `500` — Internal - Internal server error
- `501` — Unimplemented - The operation is not implemented or supported
- `503` — Unavailable - The service is currently unavailable
- `504` — Deadline exceeded - Upstream service did not respond in time
- `529` — Overloaded - The service is temporarily overloaded

## Changes

- **2026-09-02** `4789294140a2` — 16 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
  - added the non-success response with the status `404`
  - …12 more
- **2026-08-26** `942a11636c42` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/anthropics/apis/anthropic-api/changes/v1/organizations/usage_report/messages?beta=true/get.md)

---

[API](https://skmtc.dev/anthropics/apis/anthropic-api.md) · [All operations](https://skmtc.dev/anthropics/apis/anthropic-api/llms.txt) · [OpenAPI document](https://skmtc.dev/anthropics/apis/anthropic-api/revisions/1bb7c7a0a4a9?raw)
