Claude Opus 5 vs Opus 4.8: what actually changed

Same 1M context, same 128K output ceiling, same $5/$25 official rate, same 0.1× multiplier. The catalog separates them by release date and nothing else.

The specifications are identical

This is a shorter comparison than most, because the two ids match on every field the catalog records. Both take a 1,000,000-token context, both emit up to 128,000 tokens, both list text, tools and thinking, and both route through /v1/messages.

Pricing matches too: $5 per million input tokens and $25 per million output on each, billed at the 0.1× multiplier. Consumer cost works out to $0.50 and $2.50 per million either way, so moving between them changes nothing on the invoice.

The one field that differs is the release date — claude-opus-4-8 on 2026-02-05, claude-opus-5 on 2026-05-14, a little over three months apart. Everything anyone means by "is the newer one better" lives in that gap, and the catalog has nothing to say about it.

Which means the switch is free to try

Because price and request shape are the same, comparing them costs you one extra call rather than a migration. Send the same prompt to both ids, read both outputs, and decide on evidence from your own workload instead of a generation number.

A third id sits at the same price: claude-opus-4-6 is also 1M context, 128K output, $5/$25 at 0.1×, with no release date listed in the catalog. If you are already benchmarking two, adding a third costs one more call.

What the table cannot tell you is whether a prompt you tuned against 4.8 still behaves the same way on 5. That is the actual risk in switching, and the only way to see it is to run your own evaluation set through both.

Same request twice; only the model id changes.
for MODEL in claude-opus-5 claude-opus-4-8; do
  echo "=== $MODEL ==="
  curl -sS https://token-share.app/v1/messages \
    -H "x-api-key: $TOKEN_SHARE_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "content-type: application/json" \
    -d "{
      \"model\": \"$MODEL\",
      \"max_tokens\": 1024,
      \"messages\": [{\"role\": \"user\", \"content\": \"Refactor this function and explain the tradeoff.\"}]
    }"
done

The lane moves your bill; the generation does not

Both ids have a stable-* twin: stable-claude-opus-5 and stable-claude-opus-4-8. Same weights, same 1M context, same $5/$25 official rate — but a 0.4× multiplier instead of 0.1×, which is $2.00 and $10.00 per million. That is 4× the pool-lane cost, and it is the only price difference anywhere in this family.

A stable-* id is a dedicated lane served on our own key rather than the shared account pool, and it does not participate in pool failover. That is what the extra multiplier pays for — a separate path to the same weights, not a different model.

So the two questions are independent. Opus 5 against Opus 4.8 is a quality question with no cost attached. Pool lane against stable lane is a cost question with no quality attached. Answer them separately.

Common questions

Does Opus 5 cost more than Opus 4.8 here?
No. Both are $5 per million input tokens and $25 per million output at the official rate, and both carry the 0.1× multiplier — $0.50 and $2.50 per million as you are billed. The generation gap has no price attached in either direction.
Then why is Opus 4.8 still in the catalog?
Because a prompt tuned against one set of weights does not automatically behave the same on another. Keeping both ids routable means a workload built on 4.8 keeps working while you evaluate 5 on your own terms. claude-opus-4-6 is available on the same terms as well.
How many calls does a fair comparison take?
More than one per id. A single prompt tells you almost nothing — run the set of tasks you actually care about, on both ids, and compare the failures rather than the wins. Since the per-token price is identical, the whole exercise costs you one duplicate of your evaluation set.