JournalModel updates

Field guide / 6 min read

GPT-5.6 API migration: how to choose Sol, Terra, or Luna

A measured migration plan for routing workloads across GPT-5.6 Sol, Terra, and Luna without losing control of quality, latency, or token costs.

Aug 23, 20266 min readBy ISH Team
GPT-5.6 API migration: how to choose Sol, Terra, or Luna
Advertisement

GPT-5.6 API migration: how to choose Sol, Terra, or Luna

The GPT-5.6 API family has three current tiers. Sol is the flagship, Terra sits in the middle of the cost-quality curve, and Luna is intended for inexpensive, high-volume work. All three have a 1.05 million-token context window, a 128,000-token maximum output, and six reasoning-effort settings. Their token prices differ sharply.

A migration needs more than a new model ID. Decide which tier belongs on each route, check whether a lower reasoning setting keeps the same quality, and calculate caching and long-context charges before shifting production traffic.

Check the current model matrix

OpenAI's model catalog lists these standard token rates per one million tokens:

ModelInputCached inputOutputBest initial candidate for
gpt-5.6-sol$5.00$0.50$30.00Difficult coding, analysis, and quality-first agent work
gpt-5.6-terra$2.00$0.20$12.00General production assistants and balanced workloads
gpt-5.6-luna$0.20$0.02$1.20Classification, extraction, routing, and high-volume simple tasks

The gpt-5.6 alias currently routes to gpt-5.6-sol. Use explicit tier IDs when routing and budget predictability matter. An alias is convenient for a flagship default, but it does not record why a request needs the most expensive tier.

These prices are the baseline, not a complete cost estimate. Prompts with more than 272,000 input tokens are priced at twice the input rate and 1.5 times the output rate for the entire request. Cache writes cost 1.25 times the uncached input rate, while cache reads receive the listed 90% input discount. Repeated requests with a large, stable prefix can cost much less than one-off requests with the same total token count.

Route according to the cost of a bad answer

Before changing anything, list the application's main routes. Record what a wrong answer costs, the p95 latency target, typical input and output tokens, tool use, and whether an automatic grader exists.

Test Luna first when output is short, constrained, and easy to verify. Good candidates include intent classification, metadata extraction, spam triage, and simple rewriting. Terra is a sensible starting point for customer support, routine code explanation, grounded question answering, and tool workflows that need some planning. Sol belongs in the first test for complex code changes, multi-source analysis, difficult debugging, or high-value review where a missed constraint has a material cost.

Validate every placement. A well-specified extraction task may run reliably on Luna, while an ambiguous classification policy may need Terra. A narrow but unusually hard coding task may justify Sol. Move a route only when the cheaper tier passes its acceptance criteria.

Tune reasoning effort separately

All three tiers support none, low, medium, high, xhigh, and max. OpenAI's GPT-5.6 migration guidance recommends starting with the reasoning setting used by an existing GPT-5.5 or GPT-5.4 workload. Test that setting and one level lower on representative tasks.

Do not assign one effort level to a tier across the whole application. gpt-5.6-terra at low may suit a fast support route, while the same model at high may work for a slower analysis queue. Use max only when evaluation finds a quality gain worth its extra latency and token use.

A small Responses API request keeps each control visible:

import OpenAI from "openai";

const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-5.6-terra",
  input: "Review this deployment plan and return the three highest risks.",
  reasoning: { effort: "medium" },
  text: { verbosity: "low" },
});

console.log(response.output_text);

Use text.verbosity for the general level of detail. Keep required fields, length limits, and formatting rules in the prompt or a structured-output schema. With those controls separated, a test can show whether a behavior change came from the model tier, reasoning effort, or response length.

Build an eval grid for the routing decision

A useful migration set can be small. It needs to reflect production and catch the failures users notice. Begin with 30 to 100 saved inputs for each important route. Include ordinary cases, long inputs, tool failures, ambiguous requests, and examples near policy boundaries.

Run this controlled grid:

current model + current effort
GPT-5.6 candidate + current effort
GPT-5.6 candidate + one lower effort

Score task correctness first. Also capture schema validity, tool-call success, unsupported claims, latency, input tokens, cached tokens, reasoning tokens, output tokens, and estimated cost. OpenAI's evaluation best practices describes a cycle of defining the objective, collecting a dataset, choosing metrics, comparing runs, and continuing evaluation as the system changes.

Pairwise review helps only when the preference is meaningful and the judge has a clear rubric. Exact-match or executable checks are better for JSON, code, calculations, and tool arguments. Keep human review for a small set of close cases, especially when tone or completeness affects the product.

To compare model behavior without rebuilding the workflow, teams can use ISH chat for side-by-side inspection or the ISH API dashboard for repeatable calls. Keep prompts, tools, test cases, and graders fixed while changing one model control at a time.

Estimate the bill from usage data

Calculate each eval run from its usage fields. Do not multiply the whole prompt by the uncached input price. Separate uncached input, cached input, and output. Include reasoning tokens in output usage where the API reports them, and flag requests above the 272,000-token threshold.

Caching works best when the reusable prefix stays stable. Place durable instructions, tool definitions, and repeated reference material before request-specific content, then watch cache-hit rates after deployment. The prompt caching guide documents current automatic and explicit caching behavior.

For long-running agents, combine caching with retrieval, trimming, and compaction. A larger context window is still a limited and billed resource. The BLOGish context-budget guide covers that workflow.

Roll out one route at a time

Put the model ID, reasoning effort, and verbosity behind configuration. Send a small share of traffic to the candidate, log quality and cost signals, and keep a quick rollback path. Avoid changing the prompt, tool definitions, model tier, and reasoning effort in one release unless the old combination cannot run.

Wait until the sample covers normal production variation. Promote the candidate if it meets the route's quality threshold and improves the intended constraint, such as cost, latency, or reliability. Then repeat the process for the next route. The result should be a measured routing table, not one global model replacement.

Sources

#GPT-5.6#OpenAI API#model routing#API migration#AI evals
Advertisement

Keep reading

Related stories

Browse the archive