title: Usage Report url: https://platform.claude.com/docs/en/api/beta/organization/usage_report
Usage Report
Get Messages Usage Report
GET /v1/organizations/usage_report/messages
Get Messages Usage Report
Query parameters
-
starting_at: stringTime buckets that start on or after this RFC 3339 timestamp will be returned. Each time bucket will be snapped to the start of the minute/hour/day in UTC.
format: date-time
-
account_ids: optional array of stringRestrict usage returned to the specified user account ID(s).
-
api_key_ids: optional array of stringRestrict usage returned to the specified API key ID(s).
-
bucket_width: optional "1d" or "1h" or "1m"Time granularity of the response data.
default: 1d
-
"1d" -
"1h" -
"1m"
-
-
context_window: optional array of "0-200k" or "200k-1M"Restrict usage returned to the specified context window(s).
-
"0-200k" -
"200k-1M"
-
-
ending_at: optional stringTime buckets that end before this RFC 3339 timestamp will be returned.
format: date-time
-
group_by: optional array of "account_id" or "api_key_id" or "context_window" or 6 moreGroup by any subset of the available options. Grouping by
speedrequires thefast-mode-2026-02-01beta header.-
"account_id" -
"api_key_id" -
"context_window" -
"inference_geo" -
"model" -
"service_account_id" -
"service_tier" -
"speed" -
"workspace_id"
-
-
inference_geos: optional array of "global" or "not_available" or "us"Restrict usage returned to the specified inference geo(s). Use
not_availablefor models that do not support specifyinginference_geo.-
"global" -
"not_available" -
"us"
-
-
limit: optional numberMaximum 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 -
models: optional array of stringRestrict usage returned to the specified model(s).
-
page: optional stringOptionally set to the
next_pagetoken from the previous response. -
service_account_ids: optional array of stringRestrict usage returned to the specified service account ID(s).
-
service_tiers: optional array of "batch" or "flex" or "flex_discount" or 3 moreRestrict usage returned to the specified service tier(s).
-
"batch" -
"flex" -
"flex_discount" -
"priority" -
"priority_on_demand" -
"standard"
-
-
speeds: optional array of "standard" or "fast"Restrict usage returned to the specified speed(s) (Claude Code research preview). Requires the
fast-mode-2026-02-01beta header.-
"standard" -
"fast"
-
-
workspace_ids: optional array of stringRestrict usage returned to the specified workspace ID(s).
Headers
-
"anthropic-beta": optional array of AnthropicBetaOptional header to specify the beta version(s) you want to use.
-
string -
"message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 43 more-
"message-batches-2024-09-24" -
"prompt-caching-2024-07-31" -
"computer-use-2024-10-22" -
"computer-use-2025-01-24" -
"pdfs-2024-09-25" -
"token-counting-2024-11-01" -
"token-efficient-tools-2025-02-19" -
"output-128k-2025-02-19" -
"files-api-2025-04-14" -
"mcp-client-2025-04-04" -
"mcp-client-2025-11-20" -
"dev-full-thinking-2025-05-14" -
"interleaved-thinking-2025-05-14" -
"code-execution-2025-05-22" -
"extended-cache-ttl-2025-04-11" -
"context-1m-2025-08-07" -
"context-management-2025-06-27" -
"model-context-window-exceeded-2025-08-26" -
"skills-2025-10-02" -
"fast-mode-2026-02-01" -
"output-300k-2026-03-24" -
"user-profiles-2026-03-24" -
"user-profiles-2026-08-18" -
"user-profiles-2026-09-04" -
"advisor-tool-2026-03-01" -
"managed-agents-2026-04-01" -
"cache-diagnosis-2026-04-07" -
"dreaming-2026-04-21" -
"thinking-token-count-2026-05-13" -
"server-side-fallback-2026-06-01" -
"server-side-fallback-2026-07-01" -
"fallback-credit-2026-06-01" -
"fallback-credit-2026-07-01" -
"agent-memory-2026-07-22" -
"mid-conversation-tool-changes-2026-07-01" -
"compact-2026-01-12" -
"computer-use-2025-11-24" -
"mcp-tunnels-2026-06-22" -
"structured-outputs-2025-11-13" -
"task-budgets-2026-03-13" -
"thinking-display-updates-2026-08-18" -
"ce-user-management-2026-07-13" -
"mid-conversation-output-config-2026-07-01" -
"thinking-binding-controls-2026-08-01" -
"mid-conversation-system-clear-at-2026-08-21" -
"compact-2026-09-04"
-
-
Returns
-
BetaMessagesUsageReport object-
data: array of objectList of time buckets for this page, oldest first: one per
bucket_widthinterval, including intervals with no usage (theirresultslist is empty). A page holds at mostlimitbuckets.-
ending_at: stringEnd of the time bucket (exclusive) in RFC 3339 format.
format: date-time
-
results: array of objectList of usage items for this time bucket. There may be multiple items if one or more
group_by[]parameters are specified.-
account_id: string or nullID of the user account that made the request.
nullif not grouping by account or for non-OAuth requests. -
api_key_id: string or nullID of the API key used.
nullif not grouping by API key or for usage in the Anthropic Console. -
cache_creation: BetaCacheCreationThe number of input tokens for cache creation.
-
ephemeral_1h_input_tokens: numberThe number of input tokens used to create the 1 hour cache entry.
default: 0, minimum: 0
-
ephemeral_5m_input_tokens: numberThe number of input tokens used to create the 5 minute cache entry.
default: 0, minimum: 0
-
-
cache_read_input_tokens: numberThe number of input tokens read from the cache.
-
context_window: "0-200k" or "200k-1M" or nullContext window used.
nullif not grouping by context window.-
"0-200k" -
"200k-1M"
-
-
inference_geo: "global" or "not_available" or "us" or nullInference geo used matching requests'
inference_geoparameter if set, otherwise the workspace'sdefault_inference_geo. For models that do not support specifyinginference_geothe value is"not_available". Alwaysnullif not grouping by inference geo.-
"global" -
"not_available" -
"us"
-
-
model: string or nullModel used.
nullif not grouping by model. -
output_tokens: numberThe number of output tokens generated.
-
server_tool_use: objectServer-side tool usage metrics.
-
web_search_requests: numberThe number of web search requests made.
-
-
service_account_id: string or nullID of the service account that made the request.
nullif not grouping by service account or for non-OIDC-federation requests. -
service_tier: "batch" or "flex" or "flex_discount" or 3 more or nullService tier used.
nullif not grouping by service tier.-
"batch" -
"flex" -
"flex_discount" -
"priority" -
"priority_on_demand" -
"standard"
-
-
uncached_input_tokens: numberThe number of uncached input tokens processed.
-
workspace_id: string or nullID of the Workspace used.
nullif not grouping by workspace or for the default workspace.
-
-
starting_at: stringStart of the time bucket (inclusive) in RFC 3339 format.
format: date-time
-
-
has_more: booleanIndicates if there are more results.
-
next_page: string or nullOpaque cursor for the next page, or
nullwhenhas_moreis false. Pass it as thepageparameter in the next request.
-
Example
curl https://api.anthropic.com/v1/organizations/usage_report/messages \
-H 'anthropic-version: 2023-06-01' \
-H "X-Api-Key: $ANTHROPIC_API_KEY"Response (200)
{
"data": [
{
"ending_at": "2025-08-02T00:00:00Z",
"results": [
{
"account_id": "user_01WCz1FkmYMm4gnmykNKUu3Q",
"api_key_id": "apikey_01Rj2N8SVvo6BePZj99NhmiT",
"cache_creation": {
"ephemeral_1h_input_tokens": 0,
"ephemeral_5m_input_tokens": 0
},
"cache_read_input_tokens": 200,
"context_window": "0-200k",
"inference_geo": "global",
"model": "claude-opus-5",
"output_tokens": 500,
"server_tool_use": {
"web_search_requests": 10
},
"service_account_id": "svac_01Hk3R9TWxq7CfQak00OiVw4",
"service_tier": "standard",
"uncached_input_tokens": 1500,
"workspace_id": "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
}
],
"starting_at": "2025-08-01T00:00:00Z"
}
],
"has_more": true,
"next_page": "page_MjAyNS0wNS0xNFQwMDowMDowMFo="
}Get Claude Code Usage Report
GET /v1/organizations/usage_report/claude_code
Retrieve daily aggregated usage metrics for Claude Code users. Enables organizations to analyze developer productivity and build custom dashboards.
Query parameters
-
starting_at: stringUTC date in YYYY-MM-DD format. Returns metrics for this single day only.
pattern: ^\d{4}-\d{2}-\d{2}$, format: date
-
limit: optional numberNumber of records per page (default: 20, max: 1000).
default: 20, maximum: 1000, minimum: 1
-
page: optional stringOpaque cursor token from previous response's
next_pagefield.
Returns
-
BetaClaudeCodeUsageReport object-
data: array of objectList of Claude Code usage records for the requested date.
-
actor: UserActor or APIActorThe user or API key that performed the Claude Code actions.
-
UserActor object-
type: "user_actor"Actor type. Always
"user_actor"for a user. -
email_address: stringEmail address of the user who performed Claude Code actions.
-
-
APIActor object-
type: "api_actor"Actor type. Always
"api_actor"for an API key. -
api_key_name: stringName of the API key used to perform Claude Code actions.
-
-
-
core_metrics: objectCore productivity metrics measuring Claude Code usage and impact.
-
commits_by_claude_code: numberNumber of git commits created through Claude Code's commit functionality.
-
lines_of_code: objectStatistics on code changes made through Claude Code.
-
added: numberTotal number of lines of code added across all files by Claude Code.
-
removed: numberTotal number of lines of code removed across all files by Claude Code.
-
-
num_sessions: numberNumber of distinct Claude Code sessions initiated by this actor.
-
pull_requests_by_claude_code: numberNumber of pull requests created through Claude Code's PR functionality.
-
-
customer_type: "api" or "subscription"Type of customer account (api for API customers, subscription for Pro/Team customers).
-
"api" -
"subscription"
-
-
date: stringUTC day the usage metrics cover, as an RFC 3339 timestamp at midnight UTC (for example
2025-08-08T00:00:00Z).format: date-time
-
is_remote: booleanWhether the usage came from remote Claude Code sessions, such as Claude Code on the web. Remote and local usage are reported as separate rows.
-
model_breakdown: array of objectToken usage and cost breakdown by AI model used.
-
estimated_cost: objectEstimated cost for using this model
-
amount: numberEstimated cost amount in minor currency units (e.g., cents for USD).
-
currency: stringCurrency code for the estimated cost (e.g., 'USD').
-
-
model: stringName of the AI model used for Claude Code interactions.
-
tokens: objectToken usage breakdown for this model
-
cache_creation: numberNumber of cache creation tokens consumed by this model.
-
cache_read: numberNumber of cache read tokens consumed by this model.
-
input: numberNumber of input tokens consumed by this model.
-
output: numberNumber of output tokens generated by this model.
-
-
-
organization_id: stringID of the organization that owns the Claude Code usage.
-
terminal_type: stringType of terminal or environment where Claude Code was used.
-
tool_actions: map[object]Breakdown of tool action acceptance and rejection rates by tool type.
-
accepted: numberNumber of tool action proposals that the user accepted.
-
rejected: numberNumber of tool action proposals that the user rejected.
-
-
subscription_type: optional "enterprise" or "team" or nullSubscription tier for subscription customers.
nullfor API customers.-
"enterprise" -
"team"
-
-
-
has_more: booleanTrue if there are more records available beyond the current page.
-
next_page: string or nullOpaque cursor token for fetching the next page of results, or null if no more pages are available.
-
Example
curl https://api.anthropic.com/v1/organizations/usage_report/claude_code \
-H 'anthropic-version: 2023-06-01' \
-H "X-Api-Key: $ANTHROPIC_API_KEY"Response (200)
{
"data": [
{
"actor": {
"email_address": "user@emaildomain.com",
"type": "user_actor"
},
"core_metrics": {
"commits_by_claude_code": 8,
"lines_of_code": {
"added": 342,
"removed": 128
},
"num_sessions": 15,
"pull_requests_by_claude_code": 2
},
"customer_type": "api",
"date": "2025-08-08T00:00:00Z",
"is_remote": false,
"model_breakdown": [
{
"estimated_cost": {
"amount": 186,
"currency": "USD"
},
"model": "claude-opus-5",
"tokens": {
"cache_creation": 2340,
"cache_read": 8790,
"input": 45230,
"output": 12450
}
},
{
"estimated_cost": {
"amount": 42,
"currency": "USD"
},
"model": "claude-sonnet-5",
"tokens": {
"cache_creation": 890,
"cache_read": 3420,
"input": 23100,
"output": 5680
}
}
],
"organization_id": "12345678-1234-5678-1234-567812345678",
"terminal_type": "iTerm.app",
"tool_actions": {
"edit_tool": {
"accepted": 25,
"rejected": 3
},
"multi_edit_tool": {
"accepted": 12,
"rejected": 1
},
"notebook_edit_tool": {
"accepted": 5,
"rejected": 2
},
"write_tool": {
"accepted": 8,
"rejected": 0
}
},
"subscription_type": "enterprise"
}
],
"has_more": true,
"next_page": "page_MjAyNS0wNS0xNFQwMDowMDowMFo="
}Domain types
Beta Claude Code Usage Report
-
BetaClaudeCodeUsageReport object-
data: array of objectList of Claude Code usage records for the requested date.
-
actor: UserActor or APIActorThe user or API key that performed the Claude Code actions.
-
UserActor object-
type: "user_actor"Actor type. Always
"user_actor"for a user. -
email_address: stringEmail address of the user who performed Claude Code actions.
-
-
APIActor object-
type: "api_actor"Actor type. Always
"api_actor"for an API key. -
api_key_name: stringName of the API key used to perform Claude Code actions.
-
-
-
core_metrics: objectCore productivity metrics measuring Claude Code usage and impact.
-
commits_by_claude_code: numberNumber of git commits created through Claude Code's commit functionality.
-
lines_of_code: objectStatistics on code changes made through Claude Code.
-
added: numberTotal number of lines of code added across all files by Claude Code.
-
removed: numberTotal number of lines of code removed across all files by Claude Code.
-
-
num_sessions: numberNumber of distinct Claude Code sessions initiated by this actor.
-
pull_requests_by_claude_code: numberNumber of pull requests created through Claude Code's PR functionality.
-
-
customer_type: "api" or "subscription"Type of customer account (api for API customers, subscription for Pro/Team customers).
-
"api" -
"subscription"
-
-
date: stringUTC day the usage metrics cover, as an RFC 3339 timestamp at midnight UTC (for example
2025-08-08T00:00:00Z).format: date-time
-
is_remote: booleanWhether the usage came from remote Claude Code sessions, such as Claude Code on the web. Remote and local usage are reported as separate rows.
-
model_breakdown: array of objectToken usage and cost breakdown by AI model used.
-
estimated_cost: objectEstimated cost for using this model
-
amount: numberEstimated cost amount in minor currency units (e.g., cents for USD).
-
currency: stringCurrency code for the estimated cost (e.g., 'USD').
-
-
model: stringName of the AI model used for Claude Code interactions.
-
tokens: objectToken usage breakdown for this model
-
cache_creation: numberNumber of cache creation tokens consumed by this model.
-
cache_read: numberNumber of cache read tokens consumed by this model.
-
input: numberNumber of input tokens consumed by this model.
-
output: numberNumber of output tokens generated by this model.
-
-
-
organization_id: stringID of the organization that owns the Claude Code usage.
-
terminal_type: stringType of terminal or environment where Claude Code was used.
-
tool_actions: map[object]Breakdown of tool action acceptance and rejection rates by tool type.
-
accepted: numberNumber of tool action proposals that the user accepted.
-
rejected: numberNumber of tool action proposals that the user rejected.
-
-
subscription_type: optional "enterprise" or "team" or nullSubscription tier for subscription customers.
nullfor API customers.-
"enterprise" -
"team"
-
-
-
has_more: booleanTrue if there are more records available beyond the current page.
-
next_page: string or nullOpaque cursor token for fetching the next page of results, or null if no more pages are available.
-
Beta Messages Usage Report
-
BetaMessagesUsageReport object-
data: array of objectList of time buckets for this page, oldest first: one per
bucket_widthinterval, including intervals with no usage (theirresultslist is empty). A page holds at mostlimitbuckets.-
ending_at: stringEnd of the time bucket (exclusive) in RFC 3339 format.
format: date-time
-
results: array of objectList of usage items for this time bucket. There may be multiple items if one or more
group_by[]parameters are specified.-
account_id: string or nullID of the user account that made the request.
nullif not grouping by account or for non-OAuth requests. -
api_key_id: string or nullID of the API key used.
nullif not grouping by API key or for usage in the Anthropic Console. -
cache_creation: BetaCacheCreationThe number of input tokens for cache creation.
-
ephemeral_1h_input_tokens: numberThe number of input tokens used to create the 1 hour cache entry.
default: 0, minimum: 0
-
ephemeral_5m_input_tokens: numberThe number of input tokens used to create the 5 minute cache entry.
default: 0, minimum: 0
-
-
cache_read_input_tokens: numberThe number of input tokens read from the cache.
-
context_window: "0-200k" or "200k-1M" or nullContext window used.
nullif not grouping by context window.-
"0-200k" -
"200k-1M"
-
-
inference_geo: "global" or "not_available" or "us" or nullInference geo used matching requests'
inference_geoparameter if set, otherwise the workspace'sdefault_inference_geo. For models that do not support specifyinginference_geothe value is"not_available". Alwaysnullif not grouping by inference geo.-
"global" -
"not_available" -
"us"
-
-
model: string or nullModel used.
nullif not grouping by model. -
output_tokens: numberThe number of output tokens generated.
-
server_tool_use: objectServer-side tool usage metrics.
-
web_search_requests: numberThe number of web search requests made.
-
-
service_account_id: string or nullID of the service account that made the request.
nullif not grouping by service account or for non-OIDC-federation requests. -
service_tier: "batch" or "flex" or "flex_discount" or 3 more or nullService tier used.
nullif not grouping by service tier.-
"batch" -
"flex" -
"flex_discount" -
"priority" -
"priority_on_demand" -
"standard"
-
-
uncached_input_tokens: numberThe number of uncached input tokens processed.
-
workspace_id: string or nullID of the Workspace used.
nullif not grouping by workspace or for the default workspace.
-
-
starting_at: stringStart of the time bucket (inclusive) in RFC 3339 format.
format: date-time
-
-
has_more: booleanIndicates if there are more results.
-
next_page: string or nullOpaque cursor for the next page, or
nullwhenhas_moreis false. Pass it as thepageparameter in the next request.
-