Opus 5 took the flagship spot on 24 July 2026, but Opus 4.8 has not gone anywhere. It stays in the codexkey lineup and plays two roles at once: the fallback target for Opus 5, and a standalone choice for teams that have already tuned their setup to it.
Why 4.8 is still in service
When the Opus 5 safety classifier flags a request, the call is routed to Opus 4.8 automatically instead of failing with an error. So some slice of your traffic is served by 4.8 either way, even if you call 5 on purpose. Keeping this model disabled or unreachable would be strange, since part of the system already relies on it.
On top of that, 4.8 is a solid workhorse by itself. Teams that tuned prompts, tooling and evals to its behavior before 5 shipped get predictable results without a migration.
When to pin to 4.8 instead of moving to 5
A few situations where an explicit pin on claude-opus-4.8 makes more sense than moving to the flagship:
- Production is already stable on 4.8. Are your prompts, few-shot examples and response parsing tuned to one model's behavior? Then a revision switch is a regression risk to test for, not something you get free with an update.
- You need predictable tool behavior. Opus 5 can change its tool set mid-conversation. If your logic assumes the tool list is fixed from the start of a session, 4.8 is closer to the contract your code was written against.
- Revisions are still being compared before a migration. Until you have run your own eval dataset on Opus 5 and seen the delta, it is safer to keep production on 4.8 and test 5 in parallel.
How to call Opus 4.8
The base URL and key stay the same, only the model id changes:
curl https://api.codexkey.online/v1/messages \
-H "x-api-key: sk_cdx_..." \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-opus-4.8",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Draft a migration plan for moving the service to a new DB schema"}]
}'
Python via the OpenAI-compatible endpoint:
from openai import OpenAI
client = OpenAI(api_key="sk_cdx_...", base_url="https://api.codexkey.online/v1")
resp = client.chat.completions.create(
model="claude-opus-4.8",
messages=[{"role": "user", "content": "Draft a migration plan for the service"}],
)
print(resp.choices[0].message.content)
The Anthropic Messages format and OpenAI Chat Completions both work on the same endpoint, so switching SDKs needs neither a new key nor a new domain.
How this fits with the fallback logic
Opus 5 already knows how to fall back to 4.8 by itself, and it still helps to keep an explicit branch in your own code. If a claude-opus-5 call returns an error or times out, a retry against claude-opus-4.8 gives you a backup path without waiting for the model's built-in fallback. That matters most in agentic chains, where one stuck step blocks everything after it.
Pinning does not change the price
On codexkey every Opus revision costs the same: $0.3 per million input tokens and $0.3 per million output tokens. Pinning to a revision adds no markup and earns no discount, the bill depends only on token volume. Estimate your own numbers with the calculator on the site, and per-key usage shows up separately in the dashboard.
When moving to 5 is still worth it
If your task is bottlenecked on speed in long agentic runs, or you need to change tools mid-conversation, those are exactly the two things Opus 5 improved. Otherwise there is no rush: 4.8 keeps working until Anthropic says otherwise.
Bottom line
Opus 4.8 is not a legacy model but an active workhorse and the fallback target for the flagship. Pin to it explicitly if production is already tuned to its behavior or you are still comparing revisions. Call it as claude-opus-4.8 at the same price as Opus 5.