In the OpenAI platform, the Usage page shows cost grouped by project or API key, and activity (tokens and requests) grouped by project, key or model. The same breakdowns are in the CSV exports, and in the Costs and Usage APIs if you have an Admin key. Cost by model isn't a grouping of its own. You get it from cost line items, which name the model, or estimate it from usage grouped by model.
Cost data and usage data
OpenAI reports two kinds of data, and they group differently.
| Cost | Usage (activity) | |
|---|---|---|
| What it measures | Dollars billed | Tokens and requests |
| Smallest time bucket | One day | One minute |
| Groups by | Project, API key, line item, user, API source | Project, API key, model, user, batch, service tier, API source |
| API endpoint | /v1/organization/costs | /v1/organization/usage/completions and siblings |
| CSV export | Grouped by line item, filtered by project | Grouped by project, user, API key, model, batch or service tier |
Use cost data for how much was spent, and usage data to explain why: more requests, longer prompts or a different model. Multiplying tokens by list prices gives you an estimate of the bill. The real figure differs because of cached input, Batch and Flex pricing, Fast mode, long-prompt pricing and tool charges.
How to see costs by project
- Open the Usage page in the OpenAI platform. You need to be an organization owner or have the usage dashboard permission.
- Pick the date range. Dates are in UTC, so each day ends at midnight UTC, which is late afternoon or evening in the Americas.
- Use the project selector to choose one project, several or all of them, and group cost by project.
- Switch to the activity view to see tokens and requests for the same projects.
This only helps if your projects match the way you think about the spend. If everything runs in the Default project, you'll see a single line. Our guide to organizing OpenAI projects and API keys covers a layout that splits cleanly.
How to see cost per API key
OpenAI added API-key filtering and grouping to its usage and cost dashboards and APIs on August 4, 2026, so forum answers from before then that say it isn't possible are out of date. On the Usage page, filter to one project and group cost by API key to see which deployment is spending. In the Costs API, add group_by=api_key_id, or filter to particular keys with api_key_ids.
The dashboard shows keys by name, and the API returns IDs such as key_…. To match IDs to names, list a project's keys with GET /v1/organization/projects/{project_id}/api_keys, which also returns each key's owner and when it was last used. Cost per key helps most when each key belongs to one service. A personal key shared by three services tells you whose key it is and nothing about which service is spending.
How to see cost by model
The Costs API can't group by model, so group by line_item instead. Each line item names a model and a kind of charge, and OpenAI's reference gives gpt-6-astra, input_tokens as an example. Add up the line items for a model to get its cost. With line-item grouping, each result also carries a quantity and its quantity_unit.
For tokens and requests per model, use the activity view or the Usage API grouped by model. If spend jumped on a particular day, a model that first appears on that day is the first thing to check.
Export costs to CSV
On the Usage page, choose Export, then Cost data or Activity data. There's no limit on the date range.
- The cost export groups by line item and can be filtered to one project. It's the one to use at month end, as described in why your OpenAI usage doesn't match your invoice.
- The activity export groups by project, user, API key, model, batch or service tier. It counts tokens and requests rather than dollars.
Exports are good for one-off questions. For anything you check every week, the API saves someone from having to remember to run them.
Get the same breakdowns from the API
The Costs API (GET /v1/organization/costs) and the Usage API (GET /v1/organization/usage/completions, with siblings for embeddings, images, audio and others) take the same groupings as the dashboard. Both need an organization Admin key, which only organization owners can create. This request returns 30 daily buckets from October 1, 2026, grouped by project and API key:
curl "https://api.openai.com/v1/organization/costs?start_time=1790812800&limit=30&group_by=project_id&group_by=api_key_id" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" The results use IDs rather than names, and long ranges come back in pages. Our guide to the Usage and Costs API has Python for paging through results and looking up names. If you group costs by user_id together with project, expect a 400 error for some organizations and periods.
What these breakdowns don't show
All of these views report what OpenAI knows: project IDs, key names, models and line items. They don't record that backend-prod serves both the support assistant and the document pipeline, or who to ask when its cost doubles. That context has to be kept somewhere else, often in a spreadsheet or in someone's head. Our post on tracking AI API costs per feature, team or customer covers ways to keep it.
Common questions
Can I see OpenAI API costs per API key?
Yes. Since August 4, 2026, the Usage page can group cost by API key, and the Costs API accepts group_by=api_key_id. The cost CSV export only groups by line item, so use the dashboard or the API for dollars per key.
How do I see OpenAI cost per model?
Group cost by line item, since each line item names a model and a kind of charge, then add up the lines for each model. For token and request counts per model, group usage by model.
Who can see the OpenAI usage dashboard?
Organization owners can, and so can anyone who has been given the usage dashboard permission. Dates on the page are in UTC.
Why do some OpenAI costs have no project or API key?
Some results can come back with an empty project_id or api_key_id. Keep them as their own unassigned row rather than dropping them, or your totals won't match the organization's.
Where Braid fits
Braid reads the same cost and usage data through a read-only Admin key and adds what OpenAI doesn't record. Each project and API key is mapped to an Implementation, a use case your company names such as "Support assistant", with an owner, a team, the models it's expected to use and a monthly budget. Keys that aren't mapped to anything show up as unmapped. Every Monday, Braid emails a report of spend by Implementation and what changed.
It works at the level of projects, keys and models, so it doesn't show cost per request or per customer. The beta currently supports OpenAI API accounts. More provider connections are planned.