New Sign up free, 10 calls on us. Up to $1, no card needed.

Claude Opus 4.8 vs Claude Opus 5

vs

Which one, when

Same rate card on every line - $5 per million input, $25 output, $0.5 cache reads - and the same 1000000-token context with 128000 max output tokens, so cost is not what decides this one. claude-opus-5 caches from 512 tokens where claude-opus-4-8 needs 1024, and it ships with thinking on plus the xhigh and max effort levels, while claude-opus-4-8 defaults to thinking off. Upgrading moves behaviour and cache-hit rates on short prefixes, not the bill: budget the same and re-check any thinking or effort settings you pinned.

Benchmarks

LeadsAbove averageNo peer higherClaude Opus 4.8082 / 12918 / 129Claude Opus 51414 / 147 / 14

14 measured on both.

Claude Opus 4.8 Claude Opus 5 other models measured peer average no peer scored higher
DeepSWE 1.1
59%
68.8%
BioMysteryBench hard
42.4%
no peer scored higher 49.4%
OSWorld 2.0
55.7%
no peer scored higher 70.6%
Cybergym
78.3%
N/A
HealthBench Professional
57.4%
59.8%
GDPval-AA v2 Elo · 642-1861
1593
no peer scored higher 1861
Legal Agent Benchmark held-out
10.4%
11.7%
Humanity's Last Exam no tools
49.8%
56.3%
Blueprint-Bench 2
14.5%
N/A
BrowseComp
84.3%
90.8%
Video-MME (w. sub)
86%
N/A

Vendor-published: Alibaba (Qwen) Anthropic ByteDance DeepSeek Google MiniMax Moonshot OpenAI Tencent Z.ai

Pricing

Claude Opus 4.8 Claude Opus 5 Δ
Input / 1M tokens $5 $5 =
Output / 1M tokens $25 $25 =
Cache read / 1M tokens $0.5 $0.5 =
Cache write 1.25x (5m) / 2x (1h) 1.25x (5m) / 2x (1h) -

Rates from the live catalog at build time; each model page carries the current card.

Where they sit - input price per 1M tokens across all 64 chat models on this billing unit (log scale)

Capabilities

Claude Opus 4.8 Claude Opus 5
Tool use yes yes
Thinking control configurable configurable
Structured output yes yes
Prompt caching explicit (you mark the prefix) explicit (you mark the prefix)
Cache lifetime 5m default, 1h option 5m default, 1h option
Minimum cached prefix 1024 tokens 1024 tokens

Specs

Claude Opus 4.8 Claude Opus 5
Input modalities text image text image
Output modalities text text
Released 2026-05-28 2026-07-24
Knowledge cutoff 2026-01 2026-05
Context window 1M 1M
Max output 128K 128K
Thinking parameter
  • thinking.type "adaptive"
  • output_config.effort
  • thinking.type
  • output_config.effort
Accepted values
thinking.type
  • adaptive
  • disabled
effort
  • low
  • medium
  • high
  • xhigh
  • max

"enabled" returns 400

thinking.type
  • adaptive
  • disabled
effort
  • low
  • medium
  • high
  • xhigh
  • max
Default

thinking off

effort
  • high

thinking on

effort
  • high (Claude API and Claude Code)

Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: Claude Opus 4.8 · Claude Opus 5

One prompt, both models - measured through the gateway

PROMPT Explain to a CFO, in exactly three sentences, why our LLM bill doubled after we enabled reasoning. CHECK exactly 3 sentences

Claude Opus 4.8 passed · 3 sentences

Reasoning models generate a hidden "thinking" phase before producing their final answer, and we're billed for every one of those internal tokens even though they never appear in the user-facing output. Because this deliberation often runs several times longer than the answer itself, our token consumption per request grew substantially even though our request volume stayed flat. The upside is that this trade buys us materially higher accuracy on complex tasks, so the right question isn't just cost but whether the improved output quality justifies the per-query premium for each use case.

out 162 tok latency 4.2 s

Claude Opus 5 passed · 3 sentences

When reasoning is enabled, the model generates a hidden chain of "thinking" tokens before it writes the visible answer, and those internal tokens are billed at the output rate even though no one ever sees them — commonly 3–10x more tokens than the response itself. Because output tokens are priced several times higher than input tokens, that added volume hits us at our most expensive rate, which is why the bill roughly doubled while our request count stayed flat. The spend is controllable: we can cap the reasoning budget per call, route only genuinely hard requests to reasoning mode and cheaper models for the rest, and track cost per successfully completed task rather than cost per token, since a single correct answer usually beats three cheap retries plus human cleanup.

out 529 tok latency 9.0 s

Instruction following (exactly three sentences - countable), audience shaping (CFO register), and the hidden-thinking billing gap the token meters below expose.

PROMPT This function is supposed to return the longest run of consecutive equal items, but callers report it is off by one on single-element inputs and misses runs that end at the last index. Fix it and explain the bug in one paragraph. CHECK fix passes tests

Claude Opus 4.8 passed · 8/8 cases

## Fixed Function ```python def longest_run(xs): if not xs: return 0 best = 1 cur = 1 for i in range(1, len(xs)): if xs[i] == xs[i - 1]: cur += 1 else: cur = 1 best = max(best, cur) return best ``` ## Explanation of the Bug The original code counted **transitions between equal adjacent elements** rather than the **length of the run** itself. It initialized `best` and `cur` to `0` and incremented `cur` only when a match was found, so a run of length *N* recorded a count of *N-1* (e.g., a single element `[5]` never enters the loop and returns `0` instead of `1`, and `[5, 5]` returns `1` instead of `2`)—this is the off-by-one. […]

out 495 tok latency 9.2 s

Claude Opus 5 passed · 8/8 cases

## Fixed version ```python def longest_run(xs): if not xs: return 0 best = 1 cur = 1 for i in range(1, len(xs)): if xs[i] == xs[i - 1]: cur += 1 else: cur = 1 if cur > best: best = cur return best ``` ## The bug The counters were tracking the wrong quantity: `cur` counted *matching adjacent pairs* rather than *elements in the current run*, and both counters started at `0` instead of `1`. Since a run of length *n* contains only *n − 1* adjacent equal pairs, every result came back one too small — `[1, 1]` returned 1, `[3, 3, 3]` returned 2 — and a single-element list returned 0 because the loop body never executed and `best` kept its initial value of `0`. […]

out 1094 tok latency 16.1 s

Whether the fix is actually correct (runnable), explanation density, and token efficiency on a bounded task.

PROMPT Extract a JSON object with fields {company, quarter, revenue_usd_m, growth_pct, guidance} from this text. Use null for anything not stated; add no other fields. CHECK valid JSON, schema exact

Claude Opus 4.8 passed · 5/5 fields, guidance null

```json { "company": "Meridian Robotics", "quarter": "Q3", "revenue_usd_m": 412, "growth_pct": 11, "guidance": null } ```

out 72 tok latency 1.8 s

Claude Opus 5 passed · 5/5 fields, guidance "Withheld pending Q4 close"

```json { "company": "Meridian Robotics", "quarter": "Q3", "revenue_usd_m": 412, "growth_pct": 11, "guidance": "Withheld pending Q4 close" } ``` Notes on judgment calls: - **quarter**: "September quarter" is labeled Q3 because the text refers to an upcoming "Q4 close," implying a calendar-aligned fiscal year. No fiscal year is given. - **revenue_usd_m**: 412 is stated as constant-currency and hedged ("call it"), so it's approximate; the currency is not explicitly stated as USD. - **growth_pct**: "up eleven and change" means slightly more than 11, so 11 is a floor rather than an exact figure.

out 539 tok latency 7.6 s

Schema obedience (no invented fields), hallucination pressure (guidance is explicitly withheld), and structured-output path differences.

PROMPT Write a 120-word product announcement for an API gateway feature that caches prompts across providers. Forbidden words: "seamless", "unlock", "game-changer", "revolutionize", "empower". Exactly one sentence must be a question. CHECK 120 words, 0 banned words

Claude Opus 4.8 passed · 121 words, 0 banned, 1 question

**Introducing Cross-Provider Prompt Caching** Today we're launching prompt caching directly within our API gateway, designed to cut latency and reduce your inference costs. When identical or overlapping prompts hit the gateway, cached responses are served instantly instead of being routed to the underlying model provider again. What makes this different from provider-specific caching? Our system works across OpenAI, Anthropic, Google, and any custom endpoint you configure, so you maintain one consistent cache regardless of which model handles a request. You control cache duration, invalidation rules, and scope through simple configuration settings. Teams running high-volume workloads can expect meaningful savings on repeated queries and faster response times for end users. Cross-provider prompt caching is available now for all customers on paid plans.

out 258 tok latency 5.3 s

Claude Opus 5 passed · 123 words, 0 banned, 1 question

**Cross-Provider Prompt Caching** We're introducing Cross-Provider Prompt Caching in the API Gateway. Repeated system prompts, long documents, and few-shot examples are stored once at the gateway layer and reused across OpenAI, Anthropic, Google, and self-hosted models. Instead of paying full input token costs on every request, your application sends a cache reference, and the gateway rehydrates the context before forwarding it downstream. Why does that matter? Teams running high-volume agents and retrieval pipelines typically see input token spend fall 40 to 70 percent, with median latency dropping by several hundred milliseconds. Caches are scoped per project, encrypted at rest, and invalidated automatically when a prompt template changes. Enable it with a single header, and see the docs for TTL tuning and per-route controls.

out 1593 tok latency 19.1 s

Constraint obedience (word budget, banned-word list, the single question), style fingerprint, and length control.

Switch between them with one line

Both ids are in every tab below - the highlighted pair of lines is the only edit. Same endpoint, same key, same request shape.

from openai import OpenAI

client = OpenAI(
    base_url="https://synthorai.io/v1",
    api_key="sk-syn-...",
)

resp = client.chat.completions.create(
    model="claude-opus-4-8",
    # model="claude-opus-5",  # uncomment this line, comment the one above
    messages=[{"role": "user", "content": "Summarize this diff"}],
    reasoning_effort="medium",
)
print(resp.choices[0].message.content)

Get your API key →

FAQ

Which is cheaper, Claude Opus 4.8 or Claude Opus 5?

They list the same input / 1m tokens ($5), so price does not decide this one - see the specs and capabilities below.

Can I A/B test Claude Opus 4.8 against Claude Opus 5 without two integrations?

Yes. Both are served through the same OpenAI-compatible endpoint with one API key - switching is a one-line model-string change, so you can route a fraction of traffic to each and compare bills directly.

Do Claude Opus 4.8 and Claude Opus 5 support prompt caching?

Yes - both bill cached reads below their input rate, so warm-prefix workloads cost less than the list rates suggest. The exact cache-read rows are in the pricing table above.

Related comparisons

From our measured studies