- IDs: change
gpt-4o-mini→gpt-5.6-luna(never baregpt-5.6— that is Sol) - List price: mini $0.15 / $0.60 · Luna $0.20 / $1.20 — Luna is usually dearer per token, especially on output
- Why migrate anyway: ~1M context, GPT-5.6 tool surface, current-gen quality; measure retries not just $/1M
- Measured 2026-07-31: same SKU monitor — Luna correct at $0.000141; mini wrong spread at $0.000105 (~1.34× Luna vs mini cost)
- Tools: Chat Completions + function tools need
reasoning_effort: "none"(or use Responses)
Sibling posts: Luna guide · alias gotcha · cost per completed task · Luna vs Haiku.
What you are trading
Mini remains one of OpenAI’s best absolute bargains. Luna’s value is current-generation GPT-5.6 at a nano-ish price after the July 30 cut — not beating mini’s $0.15/$0.60 row. Migrate when quality, context, or tool features matter more than squeezing the last tenth of a cent.
- Context: mini ~128k · Luna ~1.05M (with the usual Luna long-context recall caveats)
- Family: mini is GPT-4o-era · Luna is GPT-5.6 with Responses / programmatic tool calling
- Vision: both accept images on common configs — re-test your image prompts
- CloudAxis: Auto Mode is already Luna — hosted operators do not edit model strings
Price table (API list)
Confirm on OpenAI pricing before you lock a budget. Late July 2026 list rates we use in planning:
| Model | Input / 1M | Output / 1M | Context |
|---|---|---|---|
gpt-4o-mini | $0.15 | $0.60 | ~128k |
gpt-5.6-luna | $0.20 | $1.20 | ~1.05M |
On a balanced 2:1 input:output mix, Luna’s output rate is what hurts. Example: 10M in + 5M out → mini ≈ $4.50 · Luna ≈ $8.00. Cache-heavy workloads narrow the input gap (Luna cached input $0.02) but do not erase the output delta. Model your mix on the cost calculator.
Migration checklist
Do these in order:
- Inventory every
gpt-4o-mini(and snapshot ids) in app config, gateways, eval harnesses, and cron - Replace with
gpt-5.6-luna— search also for baregpt-5.6mistakes - If you send
toolson Chat Completions, setreasoning_effort: "none"or move to the Responses API - Drop unsupported mini-only parameters; keep temperature/max tokens within Luna limits (128k max out)
- Re-run your eval set — especially JSON schema, tool loops, and long-doc tasks
- Compare cost per successful task (including retries), not only $/1M
- Roll out behind a flag; watch error rates and p95 latency for a week
API and parameter gotchas
Most “migrations that broke overnight” are parameter mismatches, not model quality:
- Alias trap:
gpt-5.6≠ Luna — it routes to Sol (flagship). Always pingpt-5.6-luna. See the alias post. - reasoning_effort: Chat Completions + function tools on GPT-5.6 often need
"none"or the call fails / behaves oddly. Responses API is the cleaner long-term surface. - JSON mode: re-check structured outputs. Mini sometimes fences JSON in markdown; Luna may return raw JSON — update parsers either way.
- max_tokens vs max_completion_tokens: align with your SDK’s GPT-5.x naming; do not assume 4o-mini parameter names copy cleanly.
- System prompt drift: GPT-5.6 instruction-following differs from 4o-mini. Re-tune short agent system prompts after the swap.
Measured example (why evals matter)
On 2026-07-31 we ran the same 40-SKU monitor prompt used in our cost-per-task series: extract cheapest SKU/vendor/price/spread/n as JSON. Ground truth: spread_usd = 29.
- gpt-4o-mini: $0.000105 · 502/50 tokens · 1347 ms · incorrect spread_usd (28 vs expected 29); fenced JSON
- gpt-5.6-luna: $0.000141 · 501/34 tokens · 870 ms · correct raw JSON
Mini was cheaper on that single call (~1.34× Luna) and still failed the task. Luna cost a fraction of a tenth of a cent more and passed. That is the migration heuristic: pay for completed work. Log in sites/cloudaxis/content/gpt-5-6-luna-vs-4o-mini-measurement.mjs. One task ≠ forever — re-run your eval suite.
Code-shaped diff
Typical client change (illustrative):
// before
model: "gpt-4o-mini"
// after
model: "gpt-5.6-luna",
reasoning_effort: "none" // if using Chat Completions + tools
On CloudAxis hosted chat you do not edit this — Auto Mode is already Luna on Free and paid. The checklist above is for teams calling OpenAI (or OpenAI-compatible gateways) directly with hard-coded mini.
When to stay on mini
Keep mini when your evals are already green, output volume is huge, and you do not need GPT-5.6 features or mega-context. There is no virtue in migrating for the blog post.
- Stay on mini for high-QPS classification, simple extraction with green evals, and pure $/token floors
- Move to Luna when long-doc agents, tool loops, vision, or measured task failures make retries cost more than Luna’s list premium
- Skip bare gpt-5.6 always — that is Sol billing, not a “safe default”
Related reading
- GPT-5.6 Luna complete guide
- gpt-5.6 → Sol gotcha
- Cost per completed task
- Luna vs DeepSeek
- Luna vs Claude Haiku
- AI cost calculator
Frequently asked questions
Is GPT-5.6 Luna cheaper than GPT-4o-mini?
Usually not on list rates. Mini is about $0.15/$0.60 vs Luna’s $0.20/$1.20 per 1M. Migrate for capability and task success rate, then re-check cost per success.
What model ID replaces gpt-4o-mini?
Use gpt-5.6-luna. Do not use gpt-5.6 — that alias routes to Sol (flagship pricing).
Will my tool-calling code break?
It can on Chat Completions if you omit reasoning_effort. Set reasoning_effort to none with function tools, or use the Responses API.
Does CloudAxis still use 4o-mini?
Auto Mode is GPT-5.6 Luna on every plan. 4o-mini may still appear in some tool/fallback catalogs; product chat defaults to Luna.
Should I migrate if mini passes all my evals?
Not required. Stay on mini until you need Luna’s context, tools, or measured quality wins. Migration is optional, not mandatory.
GPT-5.6 Luna complete guide · gpt-5.6 → Sol gotcha · Cost per completed task · Luna on CloudAxis Free · AI cost calculator