Skip to content

Part 01 / Understanding the Models

Reasoning vs Fast Models

When to choose reasoning models vs fast models for different coding tasks

Have you ever wondered why the same task costs 15x more on one model than another?

On this page

The first time I used o3 for a coding task, I was impressed — then I checked the latency and the bill. 40 seconds and 15× the cost of Sonnet, for a task Sonnet would have nailed. That moment is what started me keeping notes on when the expensive reasoning models actually earn their cost — and when they're just burning money.

I'm Filip van Harreveld, a senior creative developer at iO. I share work and notes at filipvanharreveld.com and on LinkedIn.

Everything below is an operating heuristic from my own coding sessions, not a permanent ranking. Model behavior shifts with the version, prompt, tool harness, repository context, and how success is measured. Treat the examples as patterns to test against your work.

The current model shortlist

The tools below now include Claude Opus 5.5 and Sonnet 5.5, GPT-6.1 Sol and GPT-6 Luna, GLM-5.3, GPT-6 Astra, Claude Fable 5.1, Gemini 3.8 Flash, DeepSeek-V4.1-Flash, and Kimi K3. Their specs come from provider documentation; the new releases do not yet have local scenario results. Opus 5.5 replaces Opus 4.8 and Opus 5, which now appear only in the scenario examples where they were run. The earlier sessions described here keep the model versions used at the time.

Start with a task you can check. Compare GPT-6 Luna, Gemini 3.8 Flash, or DeepSeek for a narrow step. Try Sonnet 5.5 or GPT-6.1 Sol for everyday implementation, and Opus 5.5 before Astra or Fable 5.1 when the problem needs more sustained reasoning. GLM-5.3 and Kimi K3 are the open-weight options; GLM-5.3 takes text only. Mistral Large 4 adds a public-preview candidate for coding, document analysis, and visual workflows. Compare it on the same checks before adopting it. The release notes explain what changed and link to the sources.

Token prices alone miss two costs: how much the model generates and how many attempts it needs. The calculators use explicit token assumptions and documented long-context surcharges. They cannot predict the number of retries your task will take.

When reasoning models actually earn it

In my tests, fast models usually do well when a task follows a well-known pattern — "write a React form," "add a REST endpoint" — because there is less ambiguity to resolve. Reasoning models have earned their cost more often when the task requires weighing tradeoffs or holding multiple constraints in tension. "Design the data model for this feature given these constraints" or "find the bug in this async code that only fails under load" asks for more than reproducing a familiar pattern.

  • Architecture decisions with real tradeoffs. I asked Sonnet to choose between three caching strategies for a Next.js app — it picked the most common one. o3 identified that my specific access pattern made the "common" choice wrong and explained why.
  • Complex refactors with many constraints. "Refactor this without changing the public API, keeping backward compatibility, and not touching the test files" — the more constraints you stack, the more reasoning models pull ahead.
  • Debugging non-obvious failures. A flaky integration test that only broke in CI. Sonnet suggested the usual suspects — timing, environment variables, missing mocks. Opus traced the actual execution path, found a shared database connection that leaked state between parallel test runs, and explained why it only surfaced in CI where tests run concurrently.

When fast models win

Fast models have often been better for my constrained tasks because they are less likely to expand the scope. In one run, I needed to convert 200 webhook payloads from one shape to another — straightforward field mapping, no ambiguity. Haiku did it in 2 seconds flat, correct on the first pass. o3 took 12 seconds per payload and added defensive null checks, fallback defaults, and logging I never asked for. Same output quality for the actual mapping in that run, 6× slower, 10× more expensive.

Reach for GPT-5.6 Luna, Haiku, or Flash when:

  • Boilerplate generation. Component scaffolding, test stubs, migration files — anything where the structure is known and the model just needs to fill in the blanks.
  • Structured data extraction. Pulling JSON from unstructured text, classifying support tickets, parsing log lines. Fast models follow extraction schemas reliably without "improving" them.
  • Pipeline steps where latency compounds. If the model runs in a loop — processing files, transforming records, generating variants — even small per-call overhead adds up fast. A 3-second Haiku call vs. a 30-second o3 call, repeated 50 times, is the difference between 2.5 minutes and 25.

When the pipeline only needs a decision

A returns photo does not always need a written explanation. Sometimes the next step needs a probability of visible damage, a choice of queue, or a score against a rubric.

OpenAI's Decisions API takes text and inline images and returns those bounded answers. That can fit a classification or routing step before a broader agent runs. The application still handles refusals and chooses what happens next; a model's confidence needs checking against labelled examples.

The Decisions API release note includes a vision request example and endpoint-specific pricing. Keep that pricing separate from the general model-token estimates below.

The model mixer approach

I don't pick one model for a task — I use different models for different steps in the same task. Here's a real example: building a new API endpoint with auth, validation, and tests.

  1. Fable 5 for the plan. I described the feature and constraints. Fable mapped out the data model, identified where the new endpoint fit in the existing auth middleware, and flagged a potential race condition with concurrent writes. Expensive, but it caught a design issue I would have hit two hours into implementation.
  2. GPT-5.6 Terra for implementation. With the plan locked, Terra wrote the route handler, validation logic, and database queries. Fast, correct, no scope creep — because the architecture decisions were already made.
  3. Composer 2.5 for the test suite. Gave it the implementation and said "full test coverage, including the race condition Fable flagged." It generated the tests, ran them, caught two failures from its own output, and fixed them autonomously.
  4. GPT-5.6 Sol for review. Asked it to review the final diff for edge cases and security issues, run the relevant checks, and verify the result. It spotted a missing rate limit on the new endpoint and a permissive CORS header I'd copied from another route.

Total cost: a fraction of running Fable end-to-end. Each model played to its strength — deep reasoning where it mattered, balanced execution in the middle, and flagship verification at the boundary.

Model Mixer

Assign models to steps and compare workflow cost assumptions

1. Scaffold

my pickbalanced

Component structure, boilerplate, file setup

1K in / 2K out$0.0260

2. Business logic

my pickbalanced

Core feature logic, edge cases, state

2K in / 3K out$0.0400

3. Code review

my pickreasoning

Architecture, patterns, security concerns

3K in / 1K out$0.0320

4. Tests

my pickbalanced

Unit tests, edge case coverage

1.5K in / 2.5K out$0.0330

Estimated cost per completed workflow

Mixed pipeline
$0.1310/run
All Sonnet 5.5
$0.1000/run
All Fable 5.1
$0.5000/run
31% more expensive than all-Sonnet74% cheaper than all-Fable

Each attempt repeats the full token budget. Model choice does not guarantee first-attempt success. Adjust both assumptions to reflect your experience.

Provider API estimates. Full registry checked 2026-10-05; Mistral checked separately 2026-10-07. Mistral’s 50% launch offer is interpreted as October 6–19 inclusive. Excludes subscription allowances, caching, and tool fees.

See it in practice

Pick a coding scenario below to inspect the existing examples and compare current model costs. Pay attention to where reasoning models spend their token budget — and whether that extra thinking actually improves the output.

Scenario Lab

Curated task examples and current model cost comparisons

Paste a stack trace and get a plain-English explanation with a fix suggestion.

~0.8k in~0.5k outsignal: speed
→

Fast models handle this as well as expensive ones. The answer is either right or obviously wrong — no back-and-forth needed.

Current models: estimated cost for this task

These models have not been run against the local scenario checks. Costs use the same token assumptions; they do not predict quality or actual token use.

  • Mistral Large 4 · Not tested$0.0016
  • Gemini 3.8 Flash · Not tested$0.0025
  • Claude Fable 5.1 · Not tested$0.033
  • Claude Opus 5.5 · Not tested$0.013
  • Claude Sonnet 5.5 · Not tested$0.0066
  • GPT-6 Astra · Not tested$0.033
  • GPT-6.1 Sol · Not tested$0.0066
  • GPT-6 Luna · Not tested$0.0003
  • DeepSeek-V4.1-Flash · Not tested$0.0008
  • GLM-5.3 · Not tested$0.0033
  • Kimi K3 · Not tested$0.0099

DeepSeek uses peak rates. Gemini uses its current introductory rate. Older excerpts below keep their original model versions.

The excerpts below are curated examples, not a measured ranking. Original run logs are not included; validate the approach against your own task.

🌙
GPT-5.6 LunaBest pickrecommended

Fast, correct, no fluff

What it produced

The error occurs because `user` can be `undefined` when the component first renders. Add a null check: `if (!user) return null;` before accessing `user.name`.

What went right

  • ▸Identified root cause immediately
  • ▸Gave a one-line fix
  • ▸No unnecessary explanation

Cost note

The current GPT-5.6 fast default; negligible at normal volume

token cost

$0.0008/run

💎
Gemini 3 Flash PreviewGood fit

Correct but slightly verbose

✨
Claude Sonnet 5Use with care

Correct, but added unrequested refactor suggestions

🧠
Claude Opus 4.8 (superseded; historical example)Avoid

Thorough but massively over-engineered for this task

Scenario takeaway

Luna is fast, cheap, and more than capable for error explanation. Paying for Sol or Fable here is waste.

Existing excerpts are retained as qualitative examples; original run logs are not included. New models have no local results yet. Prices checked 2026-10-05; Mistral checked separately 2026-10-07, with its 50% launch offer interpreted as October 6–19 inclusive. Mistral · Anthropic · OpenAI · Google · DeepSeek · Moonshot AI · Z.ai · Cursor Standard uncached text-token estimates. Excludes cache writes/reads, tool fees, taxes, and platform-specific charges. Reasoning tokens count as output.

Pick the right model for your task

Not sure which model fits? Describe what you're building and how complex the task is. The picker weighs tradeoffs you might not think about — latency sensitivity, number of constraints, whether the task needs creativity or compliance.

Model Picker

Five questions · editorial recommendations with tradeoffs

1 of 5

Question 1 of 5: What are you working on?

What are you working on?

What does it actually cost?

The price gap between model tiers is real, but it's not as simple as "expensive = better." Run your own numbers below — adjust task count, model choice, and context size to see how costs shift across a realistic workload.

Cost Calculator

Compare token costs across models for common tasks

Pick a task

Review a medium-sized file and get structured feedback on issues and improvements.

~4k in / ~1.5k out

How often?

600 runs / 30-day month · 4,000 input + 1,500 output tokens per run

GPT-6 Luna
$0.690/mo
$0.0011/run
GPT-5.6 Luna
$1.56/mo
$0.0026/run
DeepSeek-V4.1-FlashPeak, uncached API rates. Off-peak input/output: $0.15/$0.60 per million tokens. API model ID: deepseek-flash.
$1.80/mo
$0.0030/run
Composer 2.5
$3.45/mo
$0.0057/run
Mistral Large 450% launch offer; calendar interpretation: Oct 6–19 inclusive
$3.51/mo
$0.0059/run
Gemini 3 Flash Preview
$3.90/mo
$0.0065/run
Gemini 3.8 FlashIntroductory pricing through December 31, 2026
$5.18/mo
$0.0086/run
GLM-5.3Z.ai API list rates; cached input is $0.26 per million tokens. GLM-5.3-Flash is a separate multimodal model at $0.15/$0.50.
$7.32/mo
$0.012/run
Claude Sonnet 5.5
$13.80/mo
$0.023/run
GPT-6.1 Sol
$13.80/mo
$0.023/run
Claude Sonnet 5
$13.80/mo
$0.023/run
GPT-5.6 Terra
$15.60/mo
$0.026/run
Kimi K3
$20.70/mo
$0.035/run
Claude Opus 5.5
$27.60/mo
$0.046/run
GPT-5.6 Sol
$27.60/mo
$0.046/run
Claude Fable 5.1
$69.00/mo
$0.115/run
GPT-6 Astra
$69.00/mo
$0.115/run
Claude Fable 5
$69.00/mo
$0.115/run

GPT-6 Luna is 99% cheaper than Claude Fable 5 at these token assumptions — $0.690 vs $69.00/mo

A fast model catches obvious issues. A stronger model finds subtle logic bugs and gives more actionable feedback — fewer missed problems means less rework later.

Full registry checked 2026-10-05; Mistral checked separately 2026-10-07. Monthly estimates hold the current rate constant. Mistral · Anthropic · OpenAI · Google · DeepSeek · Moonshot AI · Z.ai · Cursor

Pricing assumptions and capacity limits

Standard uncached text-token estimates. Excludes cache writes/reads, tool fees, taxes, and platform-specific charges. Reasoning tokens count as output. Mistral Large 4 checked separately on 2026-10-07: public preview, $1.36/$4.18 standard input/output; $0.68/$2.09 launch rates. The two-week offer is interpreted as October 6–19 inclusive. Other models retain the full-registry verification date above. Claude Opus 5.5 is $4/$20 and Sonnet 5.5 is $2/$10. Opus 5 and Opus 4.8 remain available at $5/$25 and appear only in historical examples. Opus 5.5 fast mode is $8/$40. GPT-6.1 Sol is $2/$10 and GPT-6 Luna is $0.10/$0.50. GPT-5.6 Luna, Terra, and Sol remain $0.20/$1.20, $2/$12, and $4/$20; OpenAI calls the Sol rate promotional through at least November 21, 2026. GLM-5.3 uses Z.ai API list rates ($1.40/$4.40). GLM-5.3-Flash ($0.15/$0.50) is not in the calculators. Gemini 3.8 Flash is $0.75/$3.75 through December 31, 2026, then $1.50/$7.50. Google API rates are used; Cursor currently lists a different output rate. DeepSeek-V4.1-Flash estimates use peak uncached rates ($0.30/$1.20). Off-peak rates are half. Retired V4-Flash rates are historical only. OpenAI requests above 272K input tokens use 2× input and 1.5× output rates. Gemini 3.1 Pro applies those multipliers above 200K. Context windows describe provider API capacity, not a universal Cursor default. Availability and limits vary by platform. These are cost estimates, not a capacity check. Verify context and output limits for large requests.