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.”

Requested modelphantom-1
Selected modelanthropic/claude-sonnet-5.5
Routing reasonconcurrency bug
Price / 1M tokens$2.10 in, $10.50 out
Follow-up requestssame model
Signed receiptsigned
Example. phantom-1 picked this model when the page was built; the pick for another request may differ.

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 modelTypically used forInput / 1M tokensCached input / 1M tokensOutput / 1M tokensAvailability
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.FreeFreeFreeUp
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.32Up
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.50Up

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.

ControlWhat it doesKeep in mind
zdr: trueRequire 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: trueUse 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: offKeep this request off the free model.

May cost more.

May cost more.
x-phantom-escalate: 1Move the conversation up one model tier.

May cost more.

May cost more.
A model ID instead of phantom-1Call 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
true when 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 setTasksphantom-1 passedFrontier on every task passedphantom-1 costFrontier cost
Everyday set29591%99%$2.438$3.990
Hard set35755%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 method

Changes 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.

OperationEndpointUnderlying modelPricing unitAvailability
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 tokensUp
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 tokensUp
Rerank
Voyage Rerank 3
voyage/rerank-3
/v1/rerank
Voyage Rerank 3
voyage/rerank-3
$0.052 per 1M tokensUp
Images
FLUX1.1 [pro]
bfl/flux-pro-1.1
/v1/images/generations
FLUX1.1 [pro]
bfl/flux-pro-1.1
$0.042 per imageUp
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 secondUp
Speech
TTS-1
openai/tts-1
/v1/audio/speech
TTS-1
openai/tts-1
$0.016 per 1,000 charactersUp
Transcription
Whisper
openai/whisper-1
/v1/audio/transcriptions
Whisper
openai/whisper-1
$0.0063 per minuteUp

Try automatic model routing.

Use phantom-1 in an OpenAI-compatible chat request, or preview a routing decision before making a model call.