Add Claude Opus 5.5 pricing
This pull request was posted by Claude Code using claude-opus-5-5 on behalf of Douwe.
Adds Claude Opus 5.5 (released 2026-09-22) across every provider that hosts it, and fixes the mispricing it hit on day one.
Prices
Opus 5.5 is cheaper than Opus 5 on every key, and bills cache hits at 0.05x base input rather than the usual 0.1x.
| Provider | Model id | input | 5m cache write | 1h cache write | cache read | output |
|---|---|---|---|---|---|---|
anthropic | claude-opus-5-5 | $4 | $5 | $8 | $0.20 | $20 |
google (Vertex, global) | claude-opus-5-5 | $4 | $5 | — | $0.20 | $20 |
aws (Bedrock, global) | global.anthropic.claude-opus-5-5 | $4 | $5 | $8 | $0.20 | $20 |
aws (Bedrock, regional, +10%) | anthropic.claude-opus-5-5, us./eu./jp./au. profiles | $4.40 | $5.50 | $8.80 | $0.22 | $22 |
openrouter | anthropic/claude-opus-5.5 | $4 | $5 | — | $0.20 | $20 |
The context window is 1M on all of them. The new entries accept the same id forms as every other Claude entry on each provider: the dated -YYYYMMDD form on anthropic, @date on google, -v1 and bare on aws, and :beta on openrouter. This follows Fable 5.1 (#671) and Opus 5's aliases. ~anthropic/claude-opus-latest on OpenRouter now resolves to Opus 5.5. That entry gets a dated price (start_date: 2026-09-22) instead of an overwrite, so requests before the switch keep Opus 5's rate.
The bug this fixes
Today, claude-opus-5-5 resolves to the Opus 5 record on anthropic, google and aws, because those entries match by prefix/substring (starts_with: claude-opus-5, contains: …claude-opus-5). Opus 5.5 is priced at $5/$25 instead of $4/$20, and cache reads at 2.5x their real rate, with no error. This is the same failure #671 fixed for Fable 5.1. So the existing Opus 5 clauses are tightened to stop at Opus 5:
anthropic.yml:starts_with: claude-opus-5→equals+regex: ^claude-opus-5-\d{8}$google.yml:contains: claude-opus-5→ends_with+contains: claude-opus-5@aws.yml(global):contains→ends_with+contains: …-v1aws.yml(regional): exact matches or a-v1suffix, including exactus./eu./jp./au.aliases for the unversioned profile ids (the form Bedrock lists); the Fable 5.1 entry misses these, see #690.
The tightened Opus 5 clauses still match the bare id, the dated (-YYYYMMDD, @YYYYMMDD, -v1:0) forms and the existing claude-opus-5.0/claude-5-opus aliases. What they stop matching is anything else after the claude-opus-5 prefix, as #671 did for Fable 5.
openrouter.yml already used equals clauses.
Tests
Parametrized regressions in Python (tests/test_price_regressions.py), JS (matcher.test.ts) and Go (api_test.go). They assert that each Opus 5.5 id form resolves to its own record, pin its cache-read rate at 1/2.5 of Opus 5's, pin the absolute totals, and check both sides of the -latest date boundary. A separate test pins that Opus 5's dated and -v1:0 forms still resolve to Opus 5 after the tightening. They fail on main, where Opus 5.5 resolves to Opus 5.
Sources
- Anthropic list price and the 0.05x cache multiplier: https://platform.claude.com/docs/en/about-claude/pricing
- Bedrock: AWS price list API,
AmazonBedrockFoundationModels→ "Claude Opus 5.5 (Amazon Bedrock Edition)", which gives the global and regional rates above, including 1h cache writes. Model ids were verified withlist_inference_profilesin us-east-1 and us-west-2. - OpenRouter:
https://openrouter.ai/api/v1/models(anthropic/claude-opus-5.5and~anthropic/claude-opus-latestat $4/$20, cache read $0.20). - Vertex: Google lists Opus 5.5 as a partner model, but its pricing page renders client-side and I couldn't read the figures. The entry follows Anthropic's list price, as every other Claude entry in
google.ymldoes, and itsprice_commentssays so. Worth a glance from someone with a browser.