What the current catalog contains
The live codexkey response checked on October 4, 2026 included these families:
| Family | Current IDs to test first | Good first workload |
|---|---|---|
| Claude | claude-opus-5-5, claude-sonnet-5, claude-fable-5-1 | Code review, support, long-form reasoning |
| GPT | gpt-6.1-sol, gpt-6-astra, gpt-6-sol, gpt-6-luna | General tasks, coding, structured automation |
| Gemini | gemini-3.1-pro, gemini-3.7-flash, gemini-3.8-flash | Mixed text tasks and fast processing experiments |
| DeepSeek | deepseek-v4-pro, deepseek-v4-flash, deepseek-v4.1-flash | Coding and high-volume text experiments |
Beyond these, the current catalog also has Qwen and GLM: qwen3.8-flash, qwen3.8-max, glm-5.2, glm-5.3 and glm-5.3-flash. Model availability changes, so an integration should read the live IDs instead of keeping a list in code for years.
These are supplier model IDs, not independent claims about official product naming or comparative scores. Check the current models page before pinning one in code.
Compare the work, not the logo
| Family | Where to start testing | What to measure |
|---|---|---|
| Claude | Agentic coding, requirements analysis, review | Number of real problems found and the quality of the plan |
| GPT | General engineering and product flows | JSON format, tools, iteration speed |
| Gemini | Tasks with long context and multimodal input | Loss of facts in a long document |
| DeepSeek | Large flows where cost matters | Accuracy on edge cases |
| Qwen | Code, classification, experiments with the open ecosystem | Compatibility with your stack and Russian-language quality |
| GLM | An alternative candidate for text and code tasks | Repeatability of the answer on a fixed set |
| Workload | First candidates | Acceptance check |
|---|---|---|
| Pull request review | claude-opus-5-5, gpt-6.1-sol | Findings sit on changed lines and reproduce from the diff |
| Customer support | claude-sonnet-5, gemini-3.7-flash | The answer cites the supplied policy and escalates unknown cases |
| Bulk extraction | gpt-6-luna, deepseek-v4-flash | Required fields parse without silent repairs |
| Long technical document | claude-opus-5-5, gemini-3.1-pro | Constraints survive the full context |
| Fast code helper | claude-sonnet-5, gpt-6-luna, deepseek-v4.1-flash | Tests pass and the diff stays inside scope |
The first candidate is only a starting point. If two models pass, compare latency and token use on the same requests. If one fails, save the failing prompt. That example will tell you more than a vague preference.
A fair evaluation loop
For each important workflow, collect 20 to 50 anonymized requests from your own data, with no personal information. For example: 10-20 closed tickets, a few merged pull requests and samples of customer messages. Give every model the same system rules and the same input. Score the output with a short rubric:
- Did it answer the requested task?
- Did it follow the output schema?
- Did it invent a fact that was not in the input?
- Did it finish within the allowed time?
Define the check for each answer up front. Support either gives an exact answer or hands the conversation to a human, review shows a reproducible risk, and extraction returns valid JSON.
Run the set again after changing a model ID or a prompt. Keep model selection separate from prompt editing, or the comparison has two moving parts.
Then assign a route: a fast candidate takes the incoming flow, and a hard request goes to Claude or GPT once an escalation rule fires. That beats making one flagship serve everything.
Routing rules
Put a strong model on the first pass of a high-risk task, then hand deterministic follow-up work to a smaller one. Do not send personal data or secrets to a model unless your data policy explicitly allows it. Redact before the request, and log identifiers rather than full prompts.
Set a timeout and a retry budget. Retries help with network errors. A second call rarely fixes a bad instruction, so send that case to a review queue.
A provider-neutral client
The route depends on the SDK you use. codexkey keeps model selection in the request, so your application can make the choice in one place:
const route = {
review: "claude-opus-5-5",
support: "claude-sonnet-5",
extraction: "gpt-6-luna",
longDocument: "gemini-3.1-pro",
codingExperiment: "deepseek-v4.1-flash",
} as const;
const result = await client.responses.create({
model: route[task],
input: prompt,
});
Use the request format your selected client supports. If your app calls Anthropic Messages, OpenAI-compatible chat or another protocol, keep a model adapter at the boundary.
Where a single provider helps
Four vendor accounts make experiments harder to reproduce: keys, billing views, rate limits and logging all differ. A single gateway gives your router one authentication boundary and one place to record model ID, latency and token counts.
You still have to read the model documentation. Confirm request shape, context limits, streaming support and error handling for every route. A shared endpoint simplifies operations. It does not make different models interchangeable in every detail.
FAQ
Which family is the best default?
There is no honest universal winner. The best family passes your task rubric with acceptable latency and operating cost.
Can I compare Claude, GPT, Gemini and DeepSeek with one key?
The current codexkey catalog exposes model IDs from these families through one service. Verify access in the live catalog and keep a small fallback route for unavailable IDs.
Can I switch families without a new key?
Yes, one codexkey key covers every model available to your account. Check the ID in the catalog first.
What matters more, the model or the prompt?
Both change the result. First fix the input format and the check on the answer, then compare models under the same conditions.
Should I use a benchmark to choose a model?
Use published benchmarks as background. Decide with anonymized examples from your own workflow, because prompt shape and output checks change the result.
Which model should handle a support escalation?
Give the first answer to a model that passes your policy and escalation tests. Account actions, payments, legal issues and unclear policy go to a human.
Where are the current model IDs listed?
Check the models documentation and the API catalog before deployment. Model names in an old article should not override the live response.