How to Compare Claude, OpenAI and Gemini API Costs
A reproducible method for comparing AI API costs across input, output, caching, tools, retries and human review.
Updated September 21, 2026
This guide removes stale model prices, fixed exchange rates, undocumented client outcomes and universal savings claims. Its purpose is not to declare a permanent winner. It provides a decision system that can be rerun against current official prices and a fixed workload.
Quick answer
Sticker price is not a purchasing decision. Uncached input, cached input, output, tool calls, retries, latency and human review must be measured together. The useful comparison is total cost per accepted task after the quality gate.
Create a dated pricing record
Open the primary source on the day you run the calculation:
| Record field | Value to preserve | Why it matters |
|---|---|---|
| Provider and model ID | Exact model identifier from the API response | Separates a version from a marketing name |
| Pricing source | Official URL and access date | Shows which tariff supported the calculation |
| Unit | Currency and token unit | Prevents thousand-versus-million errors |
| Condition | Standard, batch, cache or long-context tier | Prevents an ineligible discount from being applied |
| Non-token items | Search, image, audio or other tools | Keeps tool charges visible |
Do not treat a copied price as a future guarantee. Version the source timestamp with the calculation workbook.
Use a full-cost formula
API cost =
uncached_input_tokens × uncached_input_rate
+ cache_write_tokens × cache_write_rate
+ cache_read_tokens × cache_read_rate
+ output_tokens × output_rate
+ tool_call_cost
Total task cost =
API cost
+ review_time × loaded_labor_rate
+ rework_cost
+ infrastructure_and_observability_share
Cost per accepted task =
total_cost_for_all_attempts / accepted_task_count
| Cost item | Evidence source | Control question |
|---|---|---|
| Token usage | API usage fields | Are actual counters used instead of estimates? |
| Tool usage | Call log and provider tariff | Are search and media charges separate? |
| Retries | Request ID and error record | Are failed attempts included? |
| Human labor | Time record | Are review and correction tracked separately? |
| Acceptance | Pre-registered rubric | Was the quality threshold fixed before results? |
Compare the same task set
Build a workload that represents production traffic without personal or confidential data. Give each candidate the same input, tool permissions, output schema and timeout. If one model receives an extra prompt revision, repeat an equivalent optimization round for every candidate.
| Dimension | Measurement | Publication gate |
|---|---|---|
| Accuracy | Statements that conflict with the approved source | No critical error |
| Completion | Required fields satisfied | Every mandatory field present |
| Safety | Policy or data-boundary violations | No violation |
| Human effort | Review and correction time | Within the operational limit |
| Latency | End-to-end completion time | Within the use-case target |
| Cost | Total cost per accepted task | Within budget |
Blind reviewers to the model name where practical. Preserve the raw output, reviewer decision and reason for rejection. A low-cost failed output is not a saving.
Evaluate caching, batch and routing honestly
Caching is useful when a large block of stable context repeats. Batch processing belongs to latency-tolerant work. Multi-model routing can help when task classes are distinguishable, but its classifier, fallback call and operational complexity are part of the cost.
| Decision | Suitable condition | Cost or risk to record |
|---|---|---|
| Prompt caching | Large, repeated and versioned context | Stale instructions and cache-write cost |
| Batch processing | Work does not require an immediate response | Queue delay and partial failure |
| Model routing | Task classes have measurable boundaries | Misrouting and double calls |
| Output limits | Expected schema and length are known | Truncation and retry risk |
Streaming can improve perceived latency, but it does not by itself prove a lower bill. Stopping generation early saves cost only when the API actually records fewer billable output tokens and the result still passes the acceptance gate.
Publish a bounded result
Before publishing a savings claim, disclose the task set, dates, model IDs, pricing-source snapshot, token counters, acceptance rubric, human labor and excluded charges. Report uncertainty and failed attempts. Do not generalize one pilot to every company or workload.
The goal is not to crown the cheapest label. It is to choose a workflow whose sources are traceable, quality is accepted and total cost can be recalculated.

Tonguç Karaçay
AI-Driven UX & Growth Partner | 25+ Years Experience
Frequently Asked Questions
Related Posts
Claude MCP Token Cost Analysis: Real Usage Benchmarks
Use ChatGPT and Claude Together: Complete AI Stack Guide
MiMo AI Chat Free Features vs Paid: Complete Breakdown
Latest Posts
- AI SEO Strategy: Implementation Guide for Search SuccessSEO
- AI Business Process Automation: Which Tasks to AutomateArtificial Intelligence
- VPS or Your Own Server for an AI Agent: A Decision GuideArtificial Intelligence
- How to Sell Prompt Engineering as a Measurable ServiceArtificial Intelligence
- GEO Content Optimization Checklist: Evidence-First GuideSEO
- Google Ads Campaign Optimization: Measurement and ExperimentsDigital Marketing