On a Team plan there's no API for this: the owner exports the CSV from the Claude.ai console's usage/billing screen. It downloads one file covering whatever date range you pick — and unlike Cursor's event log, this file has no per-request rows and no per-day rows at all.

Enterprise is different — it has a real API

A Claude Enterprise org isn't limited to the console export: Anthropic documents the Claude Enterprise Analytics API, created as an API key under Organization settings → API, with endpoints under api.anthropic.com/v1/organizations/analytics/ that return per-user and org-level token usage and cost over time. Everything below — the CSV's columns, the gross/net distinction, the per-window rollup — describes the console export a Team owner downloads, not the Enterprise Analytics API. (Source: platform.claude.com/docs/en/manage-claude/analytics-api and platform.claude.com/docs/en/manage-claude/usage-cost-api, both fetched 2026-08-30.)

Two header styles show up depending on export version — both describe the same underlying data:

Real export headersnake_case
user_email,account_uuid,product,model,total_requests,total_prompt_tokens,total_completion_tokens,total_net_spend_usd,total_gross_spend_usd,user_id,total_uncached_input_tokens,total_cache_read_tokens,total_cache_write_5m_tokens,total_cache_write_1h_tokens,total_web_search_count,slack_channel_id,teams_channel_id
Documented display headerolder/alternate export
User's email,Account UUID,Product,Model and model family,total_requests,total_prompt_tokens,total_completion_tokens,total_net_spend_usd,total_gross_spend_usd

What each row actually represents

Every row is a sum over the whole export window for one (email, product, model) combination. Product is one of eight values in a real export: Chat, Claude Code, Claude Design, Claude Tag, Claude in Chrome, Cowork, Office Agents, or Research. Model is a display name like Claude Opus 4.1 or an API-style id like claude-opus-5 depending on export version. If Alice used Sonnet in Chat and Opus in Claude Code this month, that's two rows for Alice, not one — but each of those two rows is itself already a 30-day total, not a daily breakdown.

ColumnMeaning
total_requestsRequest count for this person/product/model, summed over the window.
total_prompt_tokens / total_completion_tokensInput/output tokens, window total.
total_net_spend_usdWhat was actually billed — the number to trust as spend.
total_gross_spend_usdList price before any Team/Enterprise discount is applied. Not what you paid.
Why a naive row-sum overstates spend

Two separate ways this goes wrong, both real:

Wrong column. total_gross_spend_usd is the list-price figure before your organization's negotiated discount — summing that column instead of total_net_spend_usd reports what Anthropic's rate card would have charged, not what your invoice says. The gap between the two reflects that discount, whatever it is for your contract — it's often just a percent or two, not a dramatic swing, so don't assume it's large enough to notice; check both columns to be sure.

Overlapping exports. This file carries no per-row date — a 90-day export's total is one number, not 90 daily numbers. Download a wide range (say, the whole quarter) and later a narrower one inside it (say, just last week) and add both files' total_net_spend_usd together, and you've now counted last week's spend twice. Nothing in the CSV itself warns you the two exports overlap.

What it can't tell you on its own

No conversation-level detail, no timestamp per request, and no way to tell which specific day inside a multi-day window a burst of spend happened on — that granularity only exists in Cursor's and the Anthropic Console's own exports (see the other guides below), never in this one. A report built from this file alone can show accurate per-person, per-model totals for the exact window you picked — not a daily trend inside it.