OpenAI and Anthropic have cut API prices hard since July 2026, and the cuts are on their own pricing pages. GPT-5.6 Luna dropped 80% overnight, GPT-6.1 Sol lists at $2/$10 against GPT-5.6 Sol’s $5/$30, Claude Opus 5.5 cut cache reads 60%, and Claude Haiku 5.5 lists at a tenth of Haiku 4.5. If your cost model, routing rules or budget alerts predate September, they’re wrong now, mostly in your favor. Below: verified before/after prices, per-request math, the traps that still inflate bills, and how to let your coding agent turn token budgets into tests.
The hook is Max Woolf’s essay OpenAI and Anthropic cut their LLM prices by up to 80% within a few months. Why? and its Hacker News thread. We covered the market side in the September 2026 AI model price war; this post is about what a team should change.
The verified before/after prices
USD per million tokens (input / output / cached input), standard tier, below long-context thresholds. OpenAI rows come from the OpenAI API pricing page read on 2026-10-26, with “before” prices from archived copies of that page. Anthropic rows come from the Claude pricing docs, which list old and new models side by side.
| Model change | Before | After | Change | When |
|---|---|---|---|---|
| GPT-5.6 Luna (price cut) | $1 / $6 / $0.10 | $0.20 / $1.20 / $0.02 | -80% across the board | 2026-07-30 |
| GPT-5.6 Terra (price cut) | $2.50 / $15 / $0.25 | $2 / $12 / $0.20 | -20% | 2026-07-30 |
| GPT-5.6 Sol (promotional) | $5 / $30 / $0.50 | $4 / $20 / $0.40 | -20% in, -33% out | 2026-08-21 |
| GPT-5.6 Sol list to GPT-6.1 Sol | $5 / $30 / $0.50 | $2 / $10 / $0.10 | -60% in, -67% out, -80% cache | 2026-09-29 |
| GPT-5.6 Luna to GPT-6 Luna | $0.20 / $1.20 / $0.02 | $0.10 / $0.50 / $0.01 | -50% in, -58% out | 2026-09-22 |
| Claude Opus 5 to Opus 5.5 | $5 / $25 / $0.50 | $4 / $20 / $0.20 | -20% in/out, -60% cache | 2026-09-22 |
| Claude Fable 5 to Fable 5.1 | $10 / $50 / $1 | $10 / $50 / $0.25 | -75% cache only | Sept 2026 |
| Claude Sonnet 5 to Sonnet 5.5 | $2 / $10 / $0.20 | $2 / $10 / $0.10 | -50% cache only | Sept-Oct 2026 |
| Claude Haiku 4.5 to Haiku 5.5 | $1 / $5 / $0.10 | $0.10 / $0.50 / $0.01 | -90% (prompts up to 100K) | Oct 2026 |
Only the GPT-5.6 rows are cuts on the same model; the rest are cheaper successors, so quality and token counts differ. Sonnet 5’s $2/$10 launch price became permanent, and the docs say the planned move to $3/$15 “will not occur”. The GPT-5.6 Sol discount is promotional, “available at least through November 21, 2026”. The pre-cut Luna and Terra prices are on the archived OpenAI pricing page from 29 July.
Per-model breakdowns: the GPT-5.6 price cut, GPT-6 Sol pricing, Claude Haiku 5.5 pricing.
Why the prices fell
The only first-party reason comes from Anthropic: the Claude Opus 5.5 announcement says the model “requires less compute to serve than Opus 5, and its pricing reflects that”, and estimates 40% lower cost on typical workloads. OpenAI’s pages give no reason. The rest is opinion:
- Competition, low switching costs. Woolf argues models are now close substitutes: switching is a toggle in a harness or a new model string through a router. Open-weight models served by many providers (he counted 29 for one DeepSeek Flash variant on OpenRouter on October 24) set the floor.
- Tit-for-tat. The cuts alternate between the two companies, and both shipped cheaper flagships on September 22.
- IPO timing. Woolf notes both are rumored to be nearing IPOs and finds the timing odd. That’s speculation about motive.
- Efficiency. Many HN commenters give the simpler story: better caching, smaller models, cheaper serving.
Woolf also cites Vercel AI Gateway data: cost per token fell to 43.3% of its April 2026 level while aggregate spend rose. Cheaper tokens rarely shrink a bill unless you change how you spend them.
What the cuts change: worked per-request math
A cache-heavy agent turn
Take one turn of a coding agent: 100,000 tokens of conversation read from cache, 2,000 new input tokens, 1,000 output tokens.
| Model | Cache reads | New input | Output | Turn cost |
|---|---|---|---|---|
| GPT-5.6 Sol (list) | $0.050 | $0.010 | $0.030 | $0.090 |
| GPT-5.6 Sol (promo) | $0.040 | $0.008 | $0.020 | $0.068 |
| GPT-6.1 Sol | $0.010 | $0.004 | $0.010 | $0.024 |
| Claude Opus 5 | $0.050 | $0.010 | $0.025 | $0.085 |
| Claude Opus 5.5 | $0.020 | $0.008 | $0.020 | $0.048 |

GPT-6.1 Sol is 73% below GPT-5.6 Sol’s list price on this turn, and Opus 5.5 is 44% below Opus 5, close to Anthropic’s 40%. On the old models, cache reads were more than half the turn, so the cache read price is now the number that matters for agents. That’s why Fable 5.1’s cache-only cut matters more than its unchanged $10/$50 suggests. See our Opus 5.5 caching break-even math and GPT-6 prompt caching guide.
What to change: rank models by cost per turn at your real cache-hit ratio, not by list input price.
A high-volume classifier
Now a router or classifier: 1 million requests a day, 1,500 input tokens and 200 output tokens each, no caching.
- GPT-5.6 Luna before July 30: 1.5B input at $1 plus 200M output at $6 = $2,700/day
- GPT-6 Luna: $150 + $100 = $250/day
- Claude Haiku 4.5: $1,500 + $1,000 = $2,500/day
- Claude Haiku 5.5: $150 + $100 = $250/day

What to change: stop trimming prompts for small models, and test whether mid-tier traffic now fits a small one. Run your eval set first: price per token says nothing about accuracy on your data.
Batch: smaller dollars, same percentage
Both still take 50% off asynchronous work: Anthropic’s Batch API halves input and output, and OpenAI’s Flex/Batch tier halves everything, cached input included (GPT-6.1 Sol: $1 / $5 / $0.05). On the classifier above, batch now saves $125 a day. For small workloads, that may no longer justify extra queueing infrastructure; for large ones, the OpenAI Batch API guide still applies.
The traps that still inflate the bill
Cache writes cost more than input. Anthropic charges 1.25x base input for a 5-minute write and 2x for a 1-hour write. OpenAI’s table has write columns too: 1.25x for 30 minutes and 2.5x for 12 hours (GPT-6.1 Sol: $2.50 and $5 against $2 input). A prefix written and never read costs 25% to 150% more than no cache. With reads at 5% of input, a short write pays off after one read, a long one after two.
Long-context multipliers. On GPT-6.1 Sol and GPT-6 Luna, OpenAI’s model pages say prompts over 272K input tokens are priced at 2x input and cache rates and 1.5x output “for the full request”. Claude Haiku 5.5 jumps from $0.10/$0.50 to $0.50/$2.50 above 100,000 prompt tokens, and Anthropic counts cache reads and writes toward that threshold. Other Claude 4.6 and later models bill the full 1M window at standard rates. One oversized prompt on a hot path can erase the savings.
Reasoning tokens are output tokens. OpenAI’s reasoning guide says reasoning tokens are “billed as output tokens” and shows them in usage.output_tokens_details.reasoning_tokens. A response can hit max_output_tokens before any visible output, and you still pay. Anthropic’s thinking cost docs bill the full thinking, not the visible summary, reported in usage.output_tokens_details.thinking_tokens. Output is the expensive side of every row, so effort settings can move bills more than model choice.
Regional uplifts. OpenAI adds 10% for regional processing (data residency) on models released on or after March 5, 2026, and 10% for FedRAMP endpoints. Anthropic applies a 1.1x multiplier when you set inference_geo: "us", and regional endpoints on Bedrock and Google Cloud carry a 10% premium over global ones.
Tokenizers and promos. Anthropic’s docs say Claude 4.7 and later models use a tokenizer that produces about 30% more tokens for the same text than Sonnet 4.6 and earlier, so on the same text Haiku 4.5 to Haiku 5.5 works out closer to 87% than 90%. And if you pinned gpt-5.6-sol to hold the promotional rate, put November 21, 2026 in your calendar.
Let your coding agent put cost assertions on your LLM calls with Apidog CLI
Prices change monthly; token counts change whenever someone edits a prompt or raises an effort setting. The durable fix is a test that fails when a call goes over budget, run on every pull request. Let Claude Code, Codex or Cursor write it with Apidog CLI.
Install the CLI and the agent skill once:
npm install -g apidog-cli@latest
apidog auth login --with-token <YOUR_TOKEN>
npx -y skills add https://apidog.com # pick your agent when prompted
Then give your agent one prompt:
In Apidog project <id>, create an environment "openai" with base URL https://api.openai.com
and an endpoint POST /v1/responses. Add a test case that sends our support-ticket summary
prompt to gpt-6.1-sol and asserts: HTTP 200, usage.output_tokens at most 1500 and
usage.output_tokens_details.reasoning_tokens at most 1000. Use an API key variable,
not a literal. Run it and summarize any failures.
The agent reads each payload schema, validates before writing, and runs the case:
apidog environment create openai --project <id> --base-url https://api.openai.com
apidog cli-schema get endpoint-create
apidog cli-schema validate endpoint-create --file endpoint.json
apidog endpoint create --project <id> --file endpoint.json
apidog test-case category --project <id>
apidog cli-schema get test-case-create
apidog cli-schema validate test-case-create --file case.json
apidog test-case create --project <id> --file case.json
apidog run --test-case <caseId> --project <id> -e <envId> -r cli,json
The budgets live in the case’s postProcessors as assertions on JSONPath, with comparisons such as isAtMost and isAtLeast from the test-case-create schema:
{
"type": "assertion",
"defaultEnable": true,
"enable": true,
"data": {
"name": "output tokens under budget",
"subject": "responseJson",
"comparison": "isAtMost",
"value": "1500",
"path": "$.usage.output_tokens"
}
}
For Claude, point the endpoint at /v1/messages and assert on $.usage.output_tokens and $.usage.output_tokens_details.thinking_tokens. Then ask for a test scenario that makes the same call twice and asserts the second response’s $.usage.input_tokens_details.cached_tokens (OpenAI) or $.usage.cache_read_input_tokens (Claude) is above zero: when someone breaks the cached prefix, the build fails before the invoice arrives. Feed representative prompts with -d, pass the API key from CI secrets with --env-var, and use -r junit in your pipeline (CI/CD guide). Apidog CLI in Claude Code covers agent setup.
FAQ
Did OpenAI and Anthropic really cut prices by 80%? For one model, yes: GPT-5.6 Luna went from $1/$6 to $0.20/$1.20 on July 30, 2026. Most other drops come from cheaper successor models.
Do the cuts apply to Claude Code and Codex subscriptions? The pricing pages cover the API. Woolf says the savings reach subscription harnesses too, but also reports OpenAI halved the usage allowance on Codex’s $200 tier, so check your plan’s limits.
Is the GPT-5.6 Sol price permanent? No. It’s promotional, at least through November 21, 2026. GPT-6.1 Sol is cheaper anyway.
What’s the cheapest way to cut an agent’s bill now? Raise your cache-hit rate and lower reasoning effort. Cache reads dominate long sessions, and reasoning bills at the output rate.
Next step
Rerun the cost math for your three busiest LLM calls, then have your agent add a token-budget test for each. Download Apidog to get started.



