Meet enso
Hanzo's own model family — enso, enso-flash, and enso-ultra. What each one is for, and how to pick.
Meet enso
After this page you can pick the right enso model for a job, switch between them with a one-string change, and work out what a request will cost before you send it.
enso is Hanzo's own model family. There are three of them. They share one
endpoint, one key, and one request shape — the only thing that changes between
them is the model string.
See them for yourself
The model catalog is public. No key, no account — you can run this line right now, before you have either:
curl -s https://api.hanzo.ai/v1/models \
| jq -r '.data[] | select(.id | startswith("enso")) | [.id, .context, .pricing.input, .pricing.output] | @tsv' \
| column -tenso 1000000 20 60
enso-flash 1000000 2 6
enso-ultra 200000 40 120That is the real output, and it is the same catalog the rest of this page is built from — id, context window, then price in US dollars per million tokens, input and output. The gateway is the source of truth for these numbers, so if this page and that command ever disagree, believe the command.
Which one
Start with enso-flash.
It has the full million-token context window and costs a tenth of enso. Most
work never needs more than this — reach for a bigger model when flash actually
disappoints you, not before.
| Model | Context | In / Out (per 1M tokens) | Reach for it when |
|---|---|---|---|
enso-flash | 1,000,000 | 6 | Default. High volume, tight latency budget, everyday work. |
enso | 1,000,000 | 60 | The answer's quality matters more than its cost — hard reasoning, long documents, code that has to be right. |
enso-ultra | 200,000 | 120 | Being right matters more than being fast or cheap. |
The three tiers are roughly 1x, 10x, and 20x the same unit of cost, which makes the choice easier than it looks: you are deciding how much a better answer is worth to you on this particular request.
What makes enso-ultra different
enso is a model. enso-ultra is a strategy. Instead of answering directly,
it probes with a model sized to the task, escalates to a panel of models only
when the task turns out to be hard, then verifies the candidate answers and
selects the best one.
You pay for that in two currencies: money, and context. Ultra's window is
200K tokens, not 1M — it is the one enso model that cannot take your whole
codebase in a single prompt. If your input is large, enso is the better tool
even though it is the cheaper one.
Switching between them
One string. Everything else about the request is identical.
curl https://api.hanzo.ai/v1/chat/completions \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "enso-flash",
"messages": [{ "role": "user", "content": "Name three uses for a paperclip." }]
}'import os
from openai import OpenAI
client = OpenAI(base_url="https://api.hanzo.ai/v1", api_key=os.environ["HANZO_API_KEY"])
answer = client.chat.completions.create(
model="enso-flash", # -> "enso" or "enso-ultra"
messages=[{"role": "user", "content": "Name three uses for a paperclip."}],
)
print(answer.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.hanzo.ai/v1',
apiKey: process.env.HANZO_API_KEY,
});
const answer = await client.chat.completions.create({
model: 'enso-flash', // -> 'enso' or 'enso-ultra'
messages: [{ role: 'user', content: 'Name three uses for a paperclip.' }],
});
console.log(answer.choices[0].message.content);That is the whole migration path between tiers. It is also why you should start cheap: moving up costs you one word of a diff, so there is no reason to pay for a bigger model until a smaller one has actually failed you.
/v1/chat/completions is a standard chat-completions endpoint, so a client you
already have installed works against it once you point its base URL at
api.hanzo.ai/v1. Every model in our catalog answers on that one path.
What a request costs
Prices are per million tokens, so divide. A 2,000-token prompt with a 500-token answer:
| Model | Input | Output | Total |
|---|---|---|---|
enso-flash | 2,000 x 0.004 | 500 x 0.003 | $0.007 |
enso | 2,000 x 0.04 | 500 x 0.03 | $0.07 |
enso-ultra | 2,000 x 0.08 | 500 x 0.06 | $0.14 |
A token is roughly three quarters of a word, so "2,000 tokens" is about three
pages. The response you get back reports exactly what you were charged for in
its usage field — trust that over any estimate, including this one.
Next
- All models — the full live catalog. enso is our own family; the gateway serves many more on the same key.
- API keys — what a key is, and where yours comes from.
- Build a game — enso doing something you can play, in three different ways.
How is this guide?
Last updated on