Let us pick the model.
Ask for an auto model and we choose the right model for each conversation.
Quick jobs go to a fast model, hard work goes to the strongest one. Every response tells you which model answered. Prefer a specific model? Pick it by name, as before.
# Use an auto model like any other model name
curl https://api.endlesstokens.ai/v1/chat/completions \
-H "Authorization: Bearer $ET_KEY" \
-d '{"model": "et:auto", "messages": [...]}'
# The response says which model answered
x-et-routed-model: <model-name>
x-et-route-tier: Mid
Three auto modelsPick one name, we do the rest
et:auto
Our own models, chosen per conversation. Included with every pass.
- Routes between the open models we host.
- Optional: switch on your own Anthropic or OpenAI key, and it can send the hardest work there too.
- With your key switched on, it also uses it when our GPUs are full, instead of making you wait.
claude:auto
Only Anthropic models, chosen per conversation.
- Uses your own Anthropic API key.
- Anthropic bills you for that usage, at their prices.
openai:auto
Only OpenAI models, chosen per conversation.
- Uses your own OpenAI API key.
- OpenAI bills you for that usage, at their prices.
How routing decidesThe right size of model for each job
Every request is sorted into one of three tiers by what it asks for: tools, length, thinking and the shape of the request. In doubt, we pick the higher tier.
Simple jobs
Titles, short summaries, quick lookups, the small background calls your coding agent makes.
Goes to a fast, lighter model
Everyday work
Everyday coding, tool use, edits and answers.
Goes to a balanced model
Hard work
Planning, design, large refactors, long context and extended thinking.
Goes to the strongest model
One conversation, one model
A conversation stays on the model it started on, so answers stay consistent and the cache stays warm. If a lighter model struggles, we move that conversation up. Never down.
- Low
- Mid
- High
- Your key
The last step is for et:auto only, and only if you switch on your own key.
What moves a conversation up
The router also learns over time which requests need a stronger model. It learns from anonymised numbers derived from requests. We never keep your text. How we handle this
No black boxYou always see which model answered
x-et-routed-model: <model-name>
x-et-route-tier: High
# The body keeps the name you asked for,
# so your client never breaks:
{"model": "et:auto", ...}
And on your usage page
The portal lists each request with the auto model you asked for and the model that answered.
| Time | Asked for → answered by |
|---|---|
| 14:02 | et:auto → <model-name>Mid |
| 14:05 | et:auto → <model-name>High |
| 14:05 | et:auto → <model-name>Low |
Bring your own keyUse your own Anthropic or OpenAI key
Bring your own key (BYOK) means you save your own Anthropic or OpenAI API key in the portal. Requests that use it go straight to that provider, and the provider bills you directly.
- Works with any pass. You need an active endlesstokens pass to save a key.
- Checked, encrypted, hidden. We check the key with the provider when you save it, store it encrypted, and only ever show its last 4 characters.
- Your consent first. When you save a key, you agree that prompts sent with it go to that provider.
- Off for et:auto until you switch it on. Each key has a switch, "Let et:auto use this key". Off by default.
- Call their models by name. With a key saved, you can also ask for that provider's specific models.
- Yours to remove. Replace or delete a key at any time. Deleting your account deletes your keys.
Who pays for what
| Our models | Your pass. No token cap. |
| Anthropic or OpenAI models | You pay the provider directly, at their prices. |
We don't resell Anthropic or OpenAI. Their models are reached only with your own key, under your own account with them.
To route requests well, we keep anonymised numeric signals derived from your requests. We never keep the text, and the signals are not linked to your account. Requests sent with your own provider key are never used.
Full details in our privacy policy ↗.
Auto models FAQ
What does an auto model cost?
et:auto is included in every pass, at no extra cost. When a request goes to Anthropic or OpenAI with your own key, that provider bills you for it, at their prices. We add nothing on top.
Which models does it use?
et:auto uses the open models we host (see Models) and, only if you switch it on, the models your own key can reach. claude:auto uses only Anthropic models and openai:auto only OpenAI models. Every response names the model that answered.
How do I opt out?
Pick a model by name. We only route when you ask for an auto model.
Will my conversation jump between models?
No. One conversation stays on one model. It moves up to a stronger model only if the lighter one struggles, and never moves down.
Can et:auto spend my provider key without asking?
No. The switch "Let et:auto use this key" is off by default, for each key. While it is off, et:auto uses only our models.
What if my provider key stops working?
et:auto carries on with our strongest model. claude:auto and openai:auto return the provider's error, and the portal asks you to replace the key.
Do you keep my prompts to train the router?
No. We keep only anonymised numbers derived from requests, never the text, and they are not linked to your account. Requests sent with your own provider key are never used.
Try it: set your model to et:auto
Works in Claude Code, Codex, Cline and any OpenAI- or Anthropic-compatible client. Set every model slot to the auto name, including the small, fast one.