Audit your AI spend from the export you already have
Drop an OpenAI or Anthropic usage or cost export — or a Bedrock, Azure OpenAI or Vertex AI one — and get a priced audit in seconds: effective vs. list cost, cache economics, model-swap opportunities, and a reconciliation that names what it could not price against what you were billed.
Analysis runs entirely in your browser. Your file is never uploaded — this page makes no network request with its contents. Prices come from our price book (version shown), provenance labeled; where your export includes provider-billed dollars we cross-check against them.
The audit tells you what the tokens cost. The harder question — which of your AI features and customers are actually profitable — is what the platform answers.
Drop your usage export
Ten accepted formats
Format detection is automatic — drop the file and the parser works out which one it is. Current price book: 2026-10-v1.
OpenAI Usage API
Run this with an organization admin key in OPENAI_ADMIN_KEY: it asks for the last 31 days, one bucket per day and model, and saves the JSON. One response holds up to 31 daily buckets. If it ends with "has_more": true, fetch the next page by adding &page=<the next_page value> to the same URL. To audit every page as one export, save the responses into one file — as a JSON array of the responses, or one response per line — and drop that; or drop each saved page on its own.
curl -s "https://api.openai.com/v1/organization/usage/completions?start_time=$(( $(date +%s) - 31*86400 ))&bucket_width=1d&limit=31&group_by=model" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-o openai-usage.jsonAnthropic Admin API usage report
Run this with an Admin API key in ANTHROPIC_ADMIN_KEY: it asks for the last 31 days, one bucket per day and model, and saves the JSON (the date command works on macOS and Linux). One response holds up to 31 daily buckets. If it ends with "has_more": true, fetch the next page by adding &page=<the next_page value> to the same URL. To audit every page as one export, save the responses into one file — as a JSON array of the responses, or one response per line — and drop that; or drop each saved page on its own.
START=$(date -u -v-31d +%Y-%m-%dT00:00:00Z 2>/dev/null || date -u -d "31 days ago" +%Y-%m-%dT00:00:00Z)
curl -s -g "https://api.anthropic.com/v1/organizations/usage_report/messages?starting_at=$START&bucket_width=1d&limit=31&group_by[]=model" \
-H "x-api-key: $ANTHROPIC_ADMIN_KEY" \
-H "anthropic-version: 2023-06-01" \
-o anthropic-usage.jsonAnthropic Admin API cost report
The same Admin API key, the billed dollars instead of the tokens: one bucket per day, each charge named with its model. Save it into the same file as the usage report (a JSON array of the two responses) to compare the book with what you were billed. One response holds up to 31 daily buckets. If it ends with "has_more": true, fetch the next page by adding &page=<the next_page value> to the same URL. To audit every page as one export, save the responses into one file — as a JSON array of the responses, or one response per line — and drop that; or drop each saved page on its own.
START=$(date -u -v-31d +%Y-%m-%dT00:00:00Z 2>/dev/null || date -u -d "31 days ago" +%Y-%m-%dT00:00:00Z)
curl -s -g "https://api.anthropic.com/v1/organizations/cost_report?starting_at=$START&bucket_width=1d&limit=31&group_by[]=description" \
-H "x-api-key: $ANTHROPIC_ADMIN_KEY" \
-H "anthropic-version: 2023-06-01" \
-o anthropic-cost.jsonOpenAI dashboard export
platform.openai.com → Usage → Export. Column names are matched tolerantly (case and spacing don't matter).
Anthropic Console export
platform.claude.com (formerly console.anthropic.com) → Usage (or Cost) → Export CSV. Cache read/write columns and workspaces are picked up.
LiteLLM spend logs
Your LiteLLM proxy's /spend/logs output, as a JSON array or one record per line. Key aliases become dimensions.
Amazon Bedrock invocation logs
With model invocation logging on (Bedrock → Settings), drop the delivered records — an S3 object once unzipped is one record per line — or a CloudWatch Logs export of the log group, as below. Each invocation is one request; cache reads and writes are carried.
aws logs filter-log-events \
--log-group-name <your-bedrock-invocation-log-group> \
--start-time $(( ($(date +%s) - 31*86400) * 1000 )) \
--output json > bedrock-invocations.jsonAzure OpenAI token metrics
The Azure Monitor metrics of your Azure OpenAI resource, split by deployment and model, as below. Tokens are priced by the model; the deployment name is kept as the dimension. Per-deployment rows (deploymentName, promptTokens, completionTokens) are read too.
az monitor metrics list --resource <your-azure-openai-resource-id> \
--metrics ProcessedPromptTokens GeneratedTokens --aggregation Total --interval P1D \
--start-time $(date -u -v-31d +%Y-%m-%dT00:00:00Z 2>/dev/null || date -u -d "31 days ago" +%Y-%m-%dT00:00:00Z) \
--filter "ModelDeploymentName eq '*' and ModelName eq '*'" -o json > azure-openai-usage.jsonVertex AI billing export
Rows of your Cloud Billing export to BigQuery, as JSON or newline-delimited JSON. Vertex AI token SKUs are priced and compared with the billed cost; other services are skipped and counted. Credits are named, not netted.
bq query --use_legacy_sql=false --format=json --max_rows=100000 \
'SELECT service, sku, usage, cost, currency, usage_start_time, credits
FROM `<project>.<dataset>.gcp_billing_export_v1_<id>`
WHERE service.description = "Vertex AI"
AND usage_start_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 31 DAY)' > vertex-billing.jsonGeneric JSONL
One JSON object per line with model + input_tokens/prompt_tokens + output_tokens/completion_tokens, optional cost.
Honest answers first
Does my file leave the browser?
How accurate are the dollar figures?
Can it tell me cost per feature or per customer?
What happens with models you don't recognize?
Do you store anything?
Want this running continuously?
Run this analysis continuously against live usage — with per-feature attribution, budgets, and GPU allocation. CloudJaeger runs a ten-team design partner programme.
Request accessHolding a cloud bill instead of an AI usage export? The same credential-free audit for AWS, Azure and GCP exports runs at the cloud-bill audit inside the product — it needs a sign-in; this page never will.
