Something odd has happened to frontier model pricing. Line up Anthropic's and OpenAI's current lineups and three tiers match to the cent:
| Tier | Anthropic | OpenAI | Input / output per 1M |
|---|---|---|---|
| Flagship | Claude Fable 5.1 | GPT-6 Astra | $10 / $50 |
| Upper-mid | Claude Opus 5.5 | gpt-5.6-sol | $4 / $20 |
| Mid | Claude Sonnet 5 | gpt-6-sol | $2 / $10 |
That is not a coincidence, and it is not a price war. It is two companies watching each other's pricing pages and refusing to hand anyone a reason to switch on sticker alone.
Which means the sticker is now the least interesting number on the page. I run LLM systems in production — agents, voice, RAG — and my invoices have never once matched the headline rate. Here is where the money actually goes, with live prices from both providers' own documentation and the arithmetic worked through.
Divergence one: cache reads, the agent tax
An agent loop resends its entire history every turn. After turn one, most of what you are billed for is not fresh input or output — it is cache reads on context the model has already seen. This line item is invisible in every launch announcement and dominant in every real invoice.
| Model | Base input | Cache read | Multiplier |
|---|---|---|---|
| Claude Fable 5.1 | $10 | $0.25 | 0.025× |
| GPT-6 Astra | $10 | $1.00 | 0.1× |
| Claude Opus 5.5 | $4 | $0.20 | 0.05× |
| gpt-5.6-sol | $4 | $0.40 | 0.1× |
| Claude Sonnet 5 | $2 | $0.20 | 0.1× |
| gpt-6-sol | $2 | $0.20 | 0.1× |
Anthropic has been quietly cutting the cache multiplier on its newest models — 0.025× on Fable 5.1, 0.05× on Opus 5.5 — while the industry standard stays 0.1×. At the mid tier the two providers are identical again. At the top, Fable's cache reads are four times cheaper than Astra's.
Put real numbers on it. A thousand agent sessions a month, twenty turns each, roughly 100K of context per turn, 95% cache hit rate, 1,500 output tokens per turn:
| Fable 5.1 | GPT-6 Astra | |
|---|---|---|
| Cache reads (1,900M) | $475 | $1,900 |
| Fresh input (100M) | $1,000 | $1,000 |
| Output (30M) | $1,500 | $1,500 |
| Monthly | $2,975 | $4,400 |
Same sticker price. 48% more on the invoice, and the entire gap is one line item nobody compares.
Divergence two: the long-context cliff
Astra charges a surcharge past 272K tokens: the whole request reprices to $20 input and $75 output, and cache reads double to $2.00. Anthropic includes the full 1M window at standard rates on Claude 4.6 and later, with no surcharge at any length — a 900K request is billed at the same per-token rate as a 9K one.
Rerun the same agent workload with 300K of context instead of 100K, which is entirely ordinary for a long-running coding or research agent:
| Fable 5.1 | GPT-6 Astra | |
|---|---|---|
| Monthly | $5,925 | $19,650 |
3.3×. Not because one model is better, but because crossing an invisible threshold repriced every token in the request. If your context length varies around 272K, your bill becomes bimodal and your forecasting becomes fiction.
Divergence three: the bottom tier, where OpenAI wins outright
Everyone benchmarks flagships. Almost nobody runs one for their actual volume. The cheap tier is where high-volume production lives — classification, routing, extraction, moderation — and here the gap is not subtle:
| Model | Input | Cached | Output |
|---|---|---|---|
| Claude Haiku 4.5 | $1.00 | $0.10 | $5.00 |
| gpt-6-luna | $0.10 | $0.01 | $0.50 |
| gpt-5.6-luna | $0.20 | $0.02 | $1.20 |
| gpt-5-nano | $0.05 | $0.005 | $0.40 |
gpt-6-luna is ten times cheaper than Haiku 4.5 on every axis. Anthropic has no answer at this price point.
Ten million classifications a month, 500 input tokens each (400 of them a cached system prompt), 20 output tokens:
| Haiku 4.5 | gpt-6-luna | |
|---|---|---|
| Monthly | $2,400 | $240 |
If that is your workload, this is not a close call, and no amount of flagship benchmarking changes it. Though it is worth noting what else is now in that bracket: a System One model like Jev does the same 10M classifications for about $210 at $0.042 per million input tokens with output unmetered — and returns a typed answer in roughly 100 ms instead of a string you have to parse. When the job is genuinely classification, the cheapest chat model may still be the wrong tool.
The asterisk nobody prices in: tokens aren't tokens
Per-token pricing only compares cleanly if the tokens are the same size. They are not.
Anthropic's own documentation notes that Claude 4.7 and later use a newer tokenizer that produces roughly 30% more tokens for the same text. That is a within-family comparison, not a cross-provider one, and the exact increase depends on your content — but it has a blunt implication: a $10-per-million price on one model and a $10-per-million price on another are not the same price for the same paragraph of English.
The only honest way to compare is to run a representative sample of your own traffic through both tokenizers and price the result. Everything else — including every comparison table in this post — is an approximation that assumes token parity nobody has verified. Treat the tables as a starting point and the measurement as the answer.
The modifiers that stack
Both providers layer discounts and premiums on top of the base rate, and they are not symmetrical:
- Batch: Anthropic gives 50% off input and output on every model. OpenAI runs Astra at half price ($5/$25) on batch and flex tiers. Roughly even.
- Fast mode: Anthropic charges $8/$40 for Opus 5.5 and $10/$50 for Opus 5. OpenAI's fast tier doubles Astra to $20/$100.
- Data residency: both charge about 10% extra to pin inference to a region.
- Cache writes: Anthropic's 5-minute write is 1.25× base, the 1-hour write is 2×. Astra's cache write is $12.50.
The rule that matters: caching pays for itself after a single read on a 5-minute cache, or two reads on a 1-hour cache. If your cache_read_input_tokens is zero across repeated calls, something in your prefix is changing — a timestamp, a request ID, an unsorted JSON key — and you are paying full freight on content the model has already seen. That single bug is more expensive than any provider choice on this page.
What I'd actually pick
Long-running agents with fat context: Claude, and it is not close. Cheaper cache reads, no long-context cliff, and predictable billing at any context length.
High-volume classification and extraction: OpenAI's luna tier, or a typed decision model if the task is genuinely a decision rather than a generation.
Mid-tier production traffic: a coin flip on price — Sonnet 5 and gpt-6-sol are identical down to the cache read. Decide on latency, tool-calling reliability and how the outputs feel on your own evals, because cost is not a tiebreaker here.
Short, hard, self-contained reasoning tasks: worth measuring both. Per-token price is only half the equation; the model that reasons in fewer tokens can be cheaper per completed task at a higher rate, which is why cost per task beats cost per token as a metric.
The broader point is the one I keep coming back to with voice agents too: the number on the pricing page is an input to your bill, not a prediction of it. Two providers charging exactly $10 per million tokens produced a 48% difference on the same workload, and a 3.3× difference on a slightly longer one. Run your own numbers — that is what the cost estimator is for.
References: Anthropic pricing documentation · OpenAI API pricing · GPT-6 Astra model card · Astra pricing breakdown · Claude API pricing overview. Prices verified against both providers' own documentation on 23 September 2026; they move often, so check before you commit a budget.