The current GPT model map
The live catalog checked on October 4, 2026 returned gpt-6.1-sol, gpt-6-astra, gpt-6-sol, gpt-6-luna, gpt-5.6-sol, gpt-5.6-terra and gpt-5.6-luna. There are no prices or benchmark claims here on purpose: supplier availability and commercial terms change, so check the models page before you lock a configuration.
| Model ID | First workload to test | What to check |
|---|---|---|
gpt-6.1-sol | The newest flagship in the catalog: general production tasks mixing reasoning and writing | Task success, latency and output length; behavior on your contracts and regressions |
gpt-6-astra | Root-cause analysis of a hard failure and difficult prompts where a quality-first route is acceptable | Correctness on difficult cases and finished incidents, timeout rate |
gpt-6-sol | Working chat, code generation, support, analysis and structured drafts | Response format and tool use, accuracy, schema compliance, retries |
gpt-6-luna | Tags, short summaries, field extraction, short classification and high-volume transformations | Errors on rare and ambiguous examples, throughput, parse failures, cost in your account |
gpt-5.6-sol | Existing GPT-5.6 workloads that need a broad general route | Regression rate against your current fixtures |
gpt-5.6-terra | Tasks with a strict quality budget: a middle route between high quality and high throughput | Whether the result is enough without the next tier up, quality gain per added token and second |
gpt-5.6-luna | Small extraction, labeling and routing calls | Whether the task still passes without a retry, errors on rare examples |
The table is a test plan. It is not a ranking. A model that wins on a public coding example can lose on your support policy or JSON schema, and a model name does not replace a check. Take a handful of tasks from your history, save the expected answers and run them on two candidates. If a new model wins only on general text and slips on your API contracts, keep the proven ID for that area.
How to choose between GPT-6 and GPT-5.6
Start by writing down what a failure costs. A typo in a draft title is cheap. A wrong migration plan, an account action or a bad code review finding is not. Put the strictest checks on the expensive workflows, then run the least capable route against the same fixtures.
Keep old model IDs in a separate compatibility route while you migrate, which gives rollback a clear target. Do not change the prompt, the parser and the model in the same deploy. If the result shifts, you will not know which of the three variables did it.
Build a small model harness
Use a fixture file of real anonymized requests. Each case should carry the expected shape, a pass rule and a note on what the model must refuse. Run every candidate with identical generation settings.
const candidates = [
"gpt-6.1-sol",
"gpt-6-astra",
"gpt-6-sol",
"gpt-6-luna",
"gpt-5.6-sol",
"gpt-5.6-terra",
"gpt-5.6-luna",
];
for (const model of candidates) {
const result = await openai.chat.completions.create({
model,
messages: [{ role: "user", content: fixture.prompt }],
response_format: { type: "json_object" },
});
await saveResult({ model, result, fixtureId: fixture.id });
}
The exact response format depends on the SDK and the endpoint route. Keep credentials in environment variables and never put a live key in the fixture repository.
Routing patterns that hold up
In a mixed application, send quick labels and simple transforms to gpt-6-luna or gpt-5.6-luna. General requests go to gpt-6-sol or gpt-6.1-sol. Keep gpt-6-astra for a queue that has a clear reason to spend more time on a hard case.
For code, route by risk. A testable one-file change can run on a Sol or Luna model. A cross-service change should take the quality-first route, and then a human reviews the diff and the test output. The model does not replace the build.
GPT in Codex and the OpenAI SDK
Point any OpenAI-compatible client at https://api.codexkey.online/v1. After you register, keep the key in an environment variable, not in the repository.
from openai import OpenAI
client = OpenAI(base_url="https://api.codexkey.online/v1", api_key="your_key")
reply = client.chat.completions.create(
model="gpt-6-sol",
messages=[{"role": "user", "content": "Draft a plan to fix the test"}],
)
For a critical workflow add a capped budget, a structured response format and a test check on the result. The model helps find the work, but it does not stand in for CI or a human review.
A migration checklist
- Pin the current model ID in configuration.
- Save a fixture set from real, anonymized requests.
- Run the old and new models with the same prompt and parser.
- Compare pass rate, parse failures, latency and token usage.
- Move a small traffic slice to the new model before you change the default.
The most useful dashboard separates model errors from application errors. A timeout, a schema failure and a wrong answer need different fixes.
FAQ
What should I pick for Codex?
For everyday work start with gpt-6-sol. Switch on gpt-6-astra where deeper analysis pays for itself in verification and engineer time.
Which GPT model should I try first?
For a mixed general workload take gpt-6.1-sol. Then test gpt-6-sol and gpt-6-astra on the cases where correctness matters most, and try Luna on the simple queue.
Is GPT-6.1 Sol always better than GPT-5.6 Sol?
The model ID does not prove that. Run the same fixtures and keep the model with the better score on your task.
Can one API key call all the GPT IDs?
The current codexkey catalog exposes these IDs through one service. Your account permissions and the live catalog remain the source of truth before a deploy.
Should I use Luna for code review?
Only after a review fixture set shows acceptable findings and misses. For risky merges, pair the model with tests and a human approval step.
Where can I check current IDs and availability?
The models page and the API call GET /v1/models list the current IDs. Do not configure a model that is absent from that response.