Which AI vendors actually
let you track what you spend?
Nobody should make the two admins at your company doing a second job cobble together usage reports downloaded from a wonky dashboard. Non-aggregated atomic units of spend should be programmatically available to integrate into major cloud cost optimization tools.
This leads us here -- a comparison of cost APIs, usage endpoints, and billing exports across AI providers.
| Cost API | Usage API | Billing Export | Granularity | ||
|---|---|---|---|---|---|
| Yes | Yes | Yes | Per-model, per-token, per-invocation; plus per-IAM-principal, per-application-inference-profile, per-project/workspace, and per-request-metadata attribution (native dollar grain is per usage type per day) | A+ | |
| Yes | Yes | Yes | Per-model, per-token, per-deployment, per-region, per-API-operation, per-service-tier, per-stream-type, subscription-level | A+ | |
| Yes | Yes | Yes | Per-model, per-prediction, SKU-level | A+ | |
| Yes | Yes | Yes | Per-request token counts in API response; account-wide bill detail by product and billing period in real currency; scheduled bill files to object storage | A+ | |
| Yes | Yes | Yes | Cost/usage by billing-item, instance, model, API key, workspace, token type; daily or monthly cycle | A+ | |
| Yes | Yes | Yes | per-request response usage; rated USD by billing category or grouped by hour/day/model/user/API key; daily token buckets (billingUsage); per-event export-metrics CSV (tokens-only) | A+ | |
| Yes | Yes | Yes | per-App, per-Environment, per-day or per-hour cost; optional breakdown by CPU, memory, and GPU type; optional per-App-tag breakdown | A+ | |
| Yes | Yes | Partial | Per-model, per-request, tokens aggregated to API key* | A- | |
| Yes | Yes | Partial | Per-model, per-workspace, per-API-key, per-service-tier, per-context-window; aggregated in 1m/1h/1d buckets, per-request tokens in the response usage object | A- | |
| Yes | Yes | Partial | Per-model, per-request tokens; org cost by category per billing month (optional per-workspace) via Admin API | A- | |
| Yes | Yes | Partial | Per-request and per-billing-event cost in USD; aggregated usage by timeframe (minute/hour/day/week/month); on-demand FOCUS CSV report | A- | |
| Yes | Yes | Partial | per-request (POST /v1/request-costs, costNanoUsd) and per-model-per-month aggregate (GET /payment/usage) | A- | |
| Yes | Yes | Partial | per-bill line with cycleType (Hour/Day/Week/Month) and productCategory (llm/gpu/storage); monthly bills; USD as 1/10000 USD | A- | |
| Yes | Yes | Partial | Per-request USD (response.details.usd); per-period USD by accessor, deployment, tag or line item; usage by accessor, endpoint, model, method, tag or deployment in hours, tokens, characters and requests over a date range | A- | |
| Yes | Yes | Partial | per serverless-endpoint / pod / GPU-type, time-bucketed (hour to year) over an arbitrary startTime/endTime range | A- | |
| Yes | Yes | Partial | Per-account cost by product per day (Billable Usage API); per-model inference usage by time range (GraphQL aiInferenceAdaptive dataset) | A- | |
| Yes | Partial | Yes | SKU and character-transaction level detail | B | |
| Partial | Partial | Yes | Per-response token counts; USD only by SKU per day through Cloud Billing on the linked project, nothing on the Gemini API itself | B | |
| Partial | Yes | Partial | Per-model, per-request (input tokens, output tokens, search units) | B | |
| Partial | Partial | Partial | per-request token counts in response; per-currency balance via GET /user/balance; manual per-month export | B | |
| Partial | Yes | Partial | Per-request token counts in response; org-wide Billing Usage API (beta) returns per-line-item cost, quantity, and unit price by API key and project, queryable by month with daily or hourly windows | B | |
| Partial | Partial | Partial | per-request token counts in response; account balance in USD; aggregated usage/cost dashboard-only | B | |
| Partial | Yes | Partial | Per-character/credit, per-product, per-voice, per-API-key, per-user, per-model, per-region, per-workspace, per-surface, per-actor; USD spend via fiat_units_spent metric (opt-in, five currencies) | B | |
| Partial | Partial | Partial | Per-transcript audio_duration in seconds via GET /v2/transcript/{id}; balance, spend and usage charts in the dashboard only | B | |
| Partial | Partial | Yes | hourly FOCUS 1.2 line items with per-resource attribution over a billing-period range; Token Factory per-request token counts | B | |
| Partial | Yes | Partial | Hourly usage by resource (zone, cluster, SKU or capacity plan and rate class); Prometheus billing metrics over any time range | B | |
| Partial | Partial | No | per-request token usage in response; dashboard aggregates by model | B- | |
| Partial | Partial | No | Current USD balance via GET /v1/users/me/balance; per-request token counts in the response; no usage history | B- | |
| Yes | Yes | No | per-request response usage (cost_in_usd_ticks, 1 USD = 1e10 ticks) plus aggregated history via Management API /usage with time buckets, group_by, and aggregations | B- | |
| Yes | Partial | No | Per-response usage object (input, output, reasoning and citation tokens, search queries) with matching USD cost fields; no history endpoint | B- | |
| Partial | Partial | No | Per-model, per-request tokens | B- | |
| Partial | Partial | No | Compute seconds per run; multiply by hardware rate for USD | B- | |
| Yes | Yes | No | Per-deployment / per-model / per-training-job; daily; tokens and billable minutes; Model API spend by API key, user, model, or service tier | B- | |
| Partial | Yes | No | Per-generation cost object (amount plus unit, dollars or credits) in response; USD account balance under PAYG; credit balance via GET /me | B- | |
| Partial | Yes | No | Credit balance and 90-day usage history by model and day | B- | |
| Yes | Yes | No | Per-request USD cost in response (opt-in via includeCost); accountManagement getDetails (balance, credits/requests for today/7d/30d/lifetime) plus getUsageActivity, getUsagePerformance, getUsageErrors grouped by day, model, or API key | B- | |
| Partial | Partial | No | Credit balance via API, per-operation dollar costs | B- | |
| Partial | Partial | No | Credit balance via billing endpoint; credits require rate conversion | B- | |
| Yes | Yes | No | Credit balance via API (returned in USD cents); per-generation credit costs; queryable generations list endpoint | B- | |
| Partial | Partial | No | Per-request cost in response, credit balance via API | B- | |
| Partial | Partial | No | Credit balance only; per-model credit prices published (1 credit = $0.01) | B- | |
| Partial | Yes | No | Per-request, per-model, per-user token and cost data | B- | |
| No | Partial | Partial | per-request token usage in response; Prometheus per-minute metrics; Console cost by model/token type per month | C | |
| No | Partial | No | Per-request token counts; current-window quota-remaining endpoint | D | |
| No | Partial | No | Per-response token counts only; no documented account-level usage or balance API | D | |
| No | Partial | No | Per-response token usage and timing; dashboard usage by model and API key | D | |
| No | Partial | No | Index-level metrics; ecommerce event analytics (search/click/conversion) | D | |
| No | No | No | None | F | |
| No | No | No | None | F |
Per-model, per-token, per-invocation; plus per-IAM-principal, per-application-inference-profile, per-project/workspace, and per-request-metadata attribution (native dollar grain is per usage type per day)
Per-model, per-token, per-deployment, per-region, per-API-operation, per-service-tier, per-stream-type, subscription-level
Per-request token counts in API response; account-wide bill detail by product and billing period in real currency; scheduled bill files to object storage
Cost/usage by billing-item, instance, model, API key, workspace, token type; daily or monthly cycle
per-request response usage; rated USD by billing category or grouped by hour/day/model/user/API key; daily token buckets (billingUsage); per-event export-metrics CSV (tokens-only)
per-App, per-Environment, per-day or per-hour cost; optional breakdown by CPU, memory, and GPU type; optional per-App-tag breakdown
Per-model, per-request, tokens aggregated to API key*
Per-model, per-workspace, per-API-key, per-service-tier, per-context-window; aggregated in 1m/1h/1d buckets, per-request tokens in the response usage object
Per-model, per-request tokens; org cost by category per billing month (optional per-workspace) via Admin API
Per-request and per-billing-event cost in USD; aggregated usage by timeframe (minute/hour/day/week/month); on-demand FOCUS CSV report
per-request (POST /v1/request-costs, costNanoUsd) and per-model-per-month aggregate (GET /payment/usage)
per-bill line with cycleType (Hour/Day/Week/Month) and productCategory (llm/gpu/storage); monthly bills; USD as 1/10000 USD
Per-request USD (response.details.usd); per-period USD by accessor, deployment, tag or line item; usage by accessor, endpoint, model, method, tag or deployment in hours, tokens, characters and requests over a date range
per serverless-endpoint / pod / GPU-type, time-bucketed (hour to year) over an arbitrary startTime/endTime range
Per-account cost by product per day (Billable Usage API); per-model inference usage by time range (GraphQL aiInferenceAdaptive dataset)
SKU and character-transaction level detail
Per-response token counts; USD only by SKU per day through Cloud Billing on the linked project, nothing on the Gemini API itself
Per-model, per-request (input tokens, output tokens, search units)
per-request token counts in response; per-currency balance via GET /user/balance; manual per-month export
Per-request token counts in response; org-wide Billing Usage API (beta) returns per-line-item cost, quantity, and unit price by API key and project, queryable by month with daily or hourly windows
per-request token counts in response; account balance in USD; aggregated usage/cost dashboard-only
Per-character/credit, per-product, per-voice, per-API-key, per-user, per-model, per-region, per-workspace, per-surface, per-actor; USD spend via fiat_units_spent metric (opt-in, five currencies)
Per-transcript audio_duration in seconds via GET /v2/transcript/{id}; balance, spend and usage charts in the dashboard only
hourly FOCUS 1.2 line items with per-resource attribution over a billing-period range; Token Factory per-request token counts
Hourly usage by resource (zone, cluster, SKU or capacity plan and rate class); Prometheus billing metrics over any time range
per-request token usage in response; dashboard aggregates by model
Current USD balance via GET /v1/users/me/balance; per-request token counts in the response; no usage history
per-request response usage (cost_in_usd_ticks, 1 USD = 1e10 ticks) plus aggregated history via Management API /usage with time buckets, group_by, and aggregations
Per-response usage object (input, output, reasoning and citation tokens, search queries) with matching USD cost fields; no history endpoint
Compute seconds per run; multiply by hardware rate for USD
Per-deployment / per-model / per-training-job; daily; tokens and billable minutes; Model API spend by API key, user, model, or service tier
Per-generation cost object (amount plus unit, dollars or credits) in response; USD account balance under PAYG; credit balance via GET /me
Credit balance and 90-day usage history by model and day
Per-request USD cost in response (opt-in via includeCost); accountManagement getDetails (balance, credits/requests for today/7d/30d/lifetime) plus getUsageActivity, getUsagePerformance, getUsageErrors grouped by day, model, or API key
Credit balance via API, per-operation dollar costs
Credit balance via billing endpoint; credits require rate conversion
Credit balance via API (returned in USD cents); per-generation credit costs; queryable generations list endpoint
Per-request cost in response, credit balance via API
Credit balance only; per-model credit prices published (1 credit = $0.01)
Per-request, per-model, per-user token and cost data
per-request token usage in response; Prometheus per-minute metrics; Console cost by model/token type per month
Per-request token counts; current-window quota-remaining endpoint
Per-response token counts only; no documented account-level usage or balance API
Per-response token usage and timing; dashboard usage by model and API key
Index-level metrics; ecommerce event analytics (search/click/conversion)
Methodology
Grades
Grades are based on whether a vendor provides programmatic access to cost data, usage metrics, and billing exports.