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.
-
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 "1m" or "1h"Time granularity of the response data.
-
"1d" -
"1m" -
"1h"
-
-
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.
-
group_by: optional array of "api_key_id" or "workspace_id" or "model" or 6 moreGroup by any subset of the available options. Grouping by
speedrequires thefast-mode-2026-02-01beta header.-
"api_key_id" -
"workspace_id" -
"model" -
"service_tier" -
"context_window" -
"inference_geo" -
"speed" -
"account_id" -
"service_account_id"
-
-
inference_geos: optional array of "global" or "us" or "not_available"Restrict usage returned to the specified inference geo(s). Use
not_availablefor models that do not support specifyinginference_geo.-
"global" -
"us" -
"not_available"
-
-
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 "standard" or "batch" or "priority" or 3 moreRestrict usage returned to the specified service tier(s).
-
"standard" -
"batch" -
"priority" -
"priority_on_demand" -
"flex" -
"flex_discount"
-
-
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).
Header Parameters
-
"anthropic-beta": optional array of stringOptional header to specify the beta version(s) you want to use.
To use multiple betas, use a comma separated list like
beta1,beta2or specify the header multiple times for each beta.
Returns
-
MessagesUsageReport object { data, has_more, next_page }-
data: array of object { ending_at, results, starting_at }-
ending_at: stringEnd of the time bucket (exclusive) in RFC 3339 format.
-
results: array of object { account_id, api_key_id, cache_creation, 10 more }List of usage items for this time bucket. There may be multiple items if one or more
group_by[]parameters are specified.-
account_id: stringID of the user account that made the request.
nullif not grouping by account or for non-OAuth requests. -
api_key_id: stringID of the API key used.
nullif not grouping by API key or for usage in the Anthropic Console. -
cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }The number of input tokens for cache creation.
-
ephemeral_1h_input_tokens: numberThe number of input tokens used to create the 1 hour cache entry.
-
ephemeral_5m_input_tokens: numberThe number of input tokens used to create the 5 minute cache entry.
-
-
cache_read_input_tokens: numberThe number of input tokens read from the cache.
-
context_window: "0-200k" or "200k-1M"Context window used.
nullif not grouping by context window.-
"0-200k" -
"200k-1M"
-
-
inference_geo: stringInference 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. -
model: stringModel used.
nullif not grouping by model. -
output_tokens: numberThe number of output tokens generated.
-
server_tool_use: object { web_search_requests }Server-side tool usage metrics.
-
web_search_requests: numberThe number of web search requests made.
-
-
service_account_id: stringID of the service account that made the request.
nullif not grouping by service account or for non-OIDC-federation requests. -
service_tier: "standard" or "batch" or "priority" or 3 moreService tier used.
nullif not grouping by service tier.-
"standard" -
"batch" -
"priority" -
"priority_on_demand" -
"flex" -
"flex_discount"
-
-
uncached_input_tokens: numberThe number of uncached input tokens processed.
-
workspace_id: stringID 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.
-
-
has_more: booleanIndicates if there are more results.
-
next_page: stringToken to provide in as
pagein the subsequent request to retrieve the next page of data.
-
Example
curl https://api.anthropic.com/v1/organizations/usage_report/messages \
-H 'anthropic-version: 2023-06-01' \
-H "X-Api-Key: $ANTHROPIC_ADMIN_API_KEY"
Response
{
"data": [
{
"ending_at": "2025-08-02T00:00:00Z",
"results": [
{
"account_id": "user_01WCz1FkmYMm4gnmykNKUu3Q",
"api_key_id": "apikey_01Rj2N8SVvo6BePZj99NhmiT",
"cache_creation": {
"ephemeral_1h_input_tokens": 1000,
"ephemeral_5m_input_tokens": 500
},
"cache_read_input_tokens": 200,
"context_window": "0-200k",
"inference_geo": "global",
"model": "claude-opus-4-6",
"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": "2019-12-27T18:11:19.117Z"
}
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.
-
limit: optional numberNumber of records per page (default: 20, max: 1000).
-
page: optional stringOpaque cursor token from previous response's
next_pagefield.
Returns
-
ClaudeCodeUsageReport object { data, has_more, next_page }-
data: array of object { actor, core_metrics, customer_type, 6 more }List of Claude Code usage records for the requested date.
-
actor: object { email_address, type } or object { api_key_name, type }The user or API key that performed the Claude Code actions.
-
UserActor object { email_address, type }-
email_address: stringEmail address of the user who performed Claude Code actions.
-
type: "user_actor""user_actor"
-
-
APIActor object { api_key_name, type }-
api_key_name: stringName of the API key used to perform Claude Code actions.
-
type: "api_actor""api_actor"
-
-
-
core_metrics: object { commits_by_claude_code, lines_of_code, num_sessions, pull_requests_by_claude_code }Core 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: object { added, removed }Statistics 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 date for the usage metrics in YYYY-MM-DD format.
-
model_breakdown: array of object { estimated_cost, model, tokens }Token usage and cost breakdown by AI model used.
-
estimated_cost: object { amount, currency }Estimated 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: object { cache_creation, cache_read, input, output }Token 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 { accepted, rejected } ]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"Subscription tier for subscription customers.
nullfor API customers.-
"enterprise" -
"team"
-
-
-
has_more: booleanTrue if there are more records available beyond the current page.
-
next_page: stringOpaque 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_ADMIN_API_KEY"
Response
{
"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",
"model_breakdown": [
{
"estimated_cost": {
"amount": 186,
"currency": "USD"
},
"model": "claude-sonnet-4-20250514",
"tokens": {
"cache_creation": 2340,
"cache_read": 8790,
"input": 45230,
"output": 12450
}
},
{
"estimated_cost": {
"amount": 42,
"currency": "USD"
},
"model": "claude-3-5-haiku-20241022",
"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
Claude Code Usage Report
-
ClaudeCodeUsageReport object { data, has_more, next_page }-
data: array of object { actor, core_metrics, customer_type, 6 more }List of Claude Code usage records for the requested date.
-
actor: object { email_address, type } or object { api_key_name, type }The user or API key that performed the Claude Code actions.
-
UserActor object { email_address, type }-
email_address: stringEmail address of the user who performed Claude Code actions.
-
type: "user_actor""user_actor"
-
-
APIActor object { api_key_name, type }-
api_key_name: stringName of the API key used to perform Claude Code actions.
-
type: "api_actor""api_actor"
-
-
-
core_metrics: object { commits_by_claude_code, lines_of_code, num_sessions, pull_requests_by_claude_code }Core 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: object { added, removed }Statistics 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 date for the usage metrics in YYYY-MM-DD format.
-
model_breakdown: array of object { estimated_cost, model, tokens }Token usage and cost breakdown by AI model used.
-
estimated_cost: object { amount, currency }Estimated 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: object { cache_creation, cache_read, input, output }Token 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 { accepted, rejected } ]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"Subscription tier for subscription customers.
nullfor API customers.-
"enterprise" -
"team"
-
-
-
has_more: booleanTrue if there are more records available beyond the current page.
-
next_page: stringOpaque cursor token for fetching the next page of results, or null if no more pages are available.
-
Messages Usage Report
-
MessagesUsageReport object { data, has_more, next_page }-
data: array of object { ending_at, results, starting_at }-
ending_at: stringEnd of the time bucket (exclusive) in RFC 3339 format.
-
results: array of object { account_id, api_key_id, cache_creation, 10 more }List of usage items for this time bucket. There may be multiple items if one or more
group_by[]parameters are specified.-
account_id: stringID of the user account that made the request.
nullif not grouping by account or for non-OAuth requests. -
api_key_id: stringID of the API key used.
nullif not grouping by API key or for usage in the Anthropic Console. -
cache_creation: object { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }The number of input tokens for cache creation.
-
ephemeral_1h_input_tokens: numberThe number of input tokens used to create the 1 hour cache entry.
-
ephemeral_5m_input_tokens: numberThe number of input tokens used to create the 5 minute cache entry.
-
-
cache_read_input_tokens: numberThe number of input tokens read from the cache.
-
context_window: "0-200k" or "200k-1M"Context window used.
nullif not grouping by context window.-
"0-200k" -
"200k-1M"
-
-
inference_geo: stringInference 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. -
model: stringModel used.
nullif not grouping by model. -
output_tokens: numberThe number of output tokens generated.
-
server_tool_use: object { web_search_requests }Server-side tool usage metrics.
-
web_search_requests: numberThe number of web search requests made.
-
-
service_account_id: stringID of the service account that made the request.
nullif not grouping by service account or for non-OIDC-federation requests. -
service_tier: "standard" or "batch" or "priority" or 3 moreService tier used.
nullif not grouping by service tier.-
"standard" -
"batch" -
"priority" -
"priority_on_demand" -
"flex" -
"flex_discount"
-
-
uncached_input_tokens: numberThe number of uncached input tokens processed.
-
workspace_id: stringID 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.
-
-
has_more: booleanIndicates if there are more results.
-
next_page: stringToken to provide in as
pagein the subsequent request to retrieve the next page of data.
-