phantom-1
One model ID. Automatic routing.
Use phantom-1 for chat. Phantom selects one of three models based on the first request of a conversation, keeps that choice for follow-ups, and reports which model ran and what it cost.
- 3 chat models
- Selected-model pricing
- Signed usage receipts
Example routing decision
“Find the race condition in the webhook worker.”
Three models. One chat model ID.
phantom-1 chooses from an economy, standard or frontier chat model at the start of a conversation. The selected model handles follow-ups unless the route is escalated or a fallback occurs. You pay the applicable rate of the model that actually runs.
These are the defaults. A key can run another model in any tier: pick it in the key’s controls, or send PUT /v1/key/lineup.
| Tier and model | Typically used for | Input / 1M tokens | Cached input / 1M tokens | Output / 1M tokens | Availability |
|---|---|---|---|---|---|
Economy Nemotron 3.5 Lightning Free nvidia/nemotron-3.5-lightning-free Short text formatting and extraction, when the request's features and route policy allow. | Short text formatting and extraction, when the request's features and route policy allow. | Free | Free | Free | Up |
Standard DeepSeek V4.1 Flash deepseek/deepseek-v4.1-flash Everyday code, agent tasks, and requests that need more context. | Everyday code, agent tasks, and requests that need more context. | $0.079 | $0.002 | $0.32 | Up |
Frontier Claude Sonnet 5.5 anthropic/claude-sonnet-5.5 Complex debugging, proofs, and demanding reasoning tasks. | Complex debugging, proofs, and demanding reasoning tasks. | $2.10 | $0.10 | $10.50 | Up |
How routing works
Phantom makes a model selection when a new chat conversation begins. It filters out the models that can’t accept the request, then selects from the models that remain. Follow-up requests stay with that model unless you ask to escalate or a fallback is needed.
Check compatibility
Tool use, context length, images, and your privacy controls affect which models are eligible.
Select for the task
Among the models that fit, Phantom selects one for the conversation. Where the routing rules expect them to handle the task, lower-cost models come first.
Keep the conversation consistent
Follow-ups use the selected model for an hour after the last request. To move the conversation up one tier, send x-phantom-escalate: 1.
A chat request with an image runs Qwen 3.7 Flash, an image-capable model outside the three text tiers.
Preview a routing decision
POST /v1/key/route/test tests which model Phantom would select for a request, without generating a model response or incurring inference charges.
curl https://phantom.codes/v1/key/route/test \
-H "Authorization: Bearer $PHANTOM_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "phantom-1",
"messages": [{
"role": "user",
"content": "Find the race condition in the webhook worker."
}]
}'Control how requests are routed
Choose when to exclude free models, restrict providers by data handling policy, or escalate a conversation. These controls affect which models Phantom can select. Phantom keeps no prompt or completion text; these flags govern what the upstream provider may keep, and they are off unless you send them.
| Control | What it does | Keep in mind |
|---|---|---|
| zdr: true | Require a provider that keeps no data. Off by default, and it excludes the free model. | Off by default, and it excludes the free model. |
| no_training: true | Use only providers that don't train on prompts. Off by default, and it excludes the free model. | Off by default, and it excludes the free model. |
| x-phantom-free: off | Keep this request off the free model. May cost more. | May cost more. |
| x-phantom-escalate: 1 | Move the conversation up one model tier. May cost more. | May cost more. |
| A model ID instead of phantom-1 | Call one model directly. That request skips phantom-1 chat routing. | That request skips phantom-1 chat routing. |
Know which model ran, and what it cost
Every response reports the model that ran and the billed usage through response metadata. Signed receipts let you verify the fields covered by the signature. Every header
curl -i https://phantom.codes/v1/chat/completions \
-H "Authorization: Bearer $PHANTOM_KEY" \
-H "Content-Type: application/json" \
-H "x-phantom-session: refund-bug" \
-d '{
"model": "phantom-1",
"zdr": true,
"messages": [{
"role": "user",
"content": "Find the race condition in the webhook worker."
}]
}'Request controls
- "zdr": true
- Skips the free model and sends the request only to providers that keep no data. Set it on a key's route policy to cover every request.
- "no_training": true
- Skips the free model and uses only providers that don't train on prompts.
- x-phantom-free: off
- Keeps this request off the free model.
- x-phantom-session: <id>
- Names the conversation, so its requests stay on one model. Without it, phantom-1 matches requests by their system prompt and first user message.
- x-phantom-escalate: 1
- Moves the conversation up one model and keeps it there.
Response metadata
- x-phantom-fallback
truewhen another provider or model answered. A busy free model falls back to standard.- x-phantom-cost-usd
- What the call cost, in US dollars.
- x-phantom-receipt
- A signed receipt that names the model that ran, the tokens and the cost. Verify a receipt.
HTTP/2 200 x-phantom-router: phantom-1 x-phantom-fallback: false x-phantom-cost-usd: 0.003120 x-phantom-receipt: <signed receipt, base64>
Measured results, with the tradeoffs shown
These historical evaluations compare the model selected by the router with running a frontier model for every task. The results show both the savings and the accuracy differences. They are not a guarantee for future requests or the currently deployed routing configuration.
| Test set | Tasks | phantom-1 passed | Frontier on every task passed | phantom-1 cost | Frontier cost |
|---|---|---|---|---|---|
| Everyday set | 295 | 91% | 99% | $2.438 | $3.990 |
| Hard set | 357 | 55% | 86% | $0.299 | $6.790 |
Historical results for the October 5, 2026 configuration; not a benchmark of today’s deployment. On both sets the router cost less and passed fewer tasks than running the frontier model every time. On the hard set phantom-1 sent 3 of 357 tasks to frontier, and frontier was the only model to solve 62 of them.
Full results and methodChanges after these runs
- Prompts over 20,000 tokens go to standard instead of frontier. Standard passed all 25 long-context tasks for $0.017; frontier cost $2.819.
- Contest problems go to frontier. Frontier solved 113 of 125 LiveCodeBench problems and 59 of 60 AIME problems; standard solved 54 and 31.
- DeepSeek V4.1 Flash replaced DeepSeek V4 Flash as the standard model. With it, the same everyday picks pass 95% for $2.659.
- Nemotron 3.5 Lightning Free replaced Ling 3.1 Flash Free as the economy model after it stopped being offered. The economy scores in the table are Ling 3.1 Flash Free’s.
One familiar model ID across API endpoints
Chat uses automatic routing. On supported non-chat endpoints, phantom-1 maps to a specific model for that operation. The same API key and model name work across these endpoints, but non-chat calls do not run the three-model chat router.
| Operation | Endpoint | Underlying model | Pricing unit | Availability |
|---|---|---|---|---|
Chat with an image Qwen 3.7 Flash alibaba/qwen3.7-flash | /v1/chat/completions | Qwen 3.7 Flash alibaba/qwen3.7-flash | $0.032 in, $0.14 out per 1M tokens | Up |
Embeddings text-embedding-3-small openai/text-embedding-3-small | /v1/embeddings | text-embedding-3-small openai/text-embedding-3-small | $0.021 per 1M tokens | Up |
Rerank Voyage Rerank 3 voyage/rerank-3 | /v1/rerank | Voyage Rerank 3 voyage/rerank-3 | $0.052 per 1M tokens | Up |
Images FLUX1.1 [pro] bfl/flux-pro-1.1 | /v1/images/generations | FLUX1.1 [pro] bfl/flux-pro-1.1 | $0.042 per image | Up |
Video Wan v2.6 Text-to-Video alibaba/wan-v2.6-t2v | /v1/video/generations | Wan v2.6 Text-to-Video alibaba/wan-v2.6-t2v | $0.105 to $0.158 per second | Up |
Speech TTS-1 openai/tts-1 | /v1/audio/speech | TTS-1 openai/tts-1 | $0.016 per 1,000 characters | Up |
Transcription Whisper openai/whisper-1 | /v1/audio/transcriptions | Whisper openai/whisper-1 | $0.0063 per minute | Up |
Try automatic model routing.
Use phantom-1 in an OpenAI-compatible chat request, or preview a routing decision before making a model call.