Pricing
What a request costs — the three Enso tiers, per-token billing for every other model, and the per-call rates for tools, images and audio.
Pricing
After this page you can work out what a request will cost before you send it, and pick the tier that makes that number worth paying.
You are billed for what you use — tokens for a chat model, calls for a tool, images for an image model. There is no seat licence and no minimum: an account that sends nothing is charged nothing.
Every rate below is per million tokens unless the table says otherwise, in US dollars.
The Enso tiers
Enso is Hanzo's own family and the default for serious work. The three
tiers are one price/quality contract each — same endpoint, same request
shape, and moving between them is a one-string change to model.
| Model | GPQA-Diamond | Context | Input | Output |
|---|---|---|---|---|
enso-flash | 92.9% | 262K | $2.00 | $4.00 |
enso | 96.0% | 1M | $4.00 | $20.00 |
enso-ultra | 98.0% | 1M | $5.00 | $25.00 |
Prices and context windows are the gateway's own, read from
/v1/models — the same answer you get for the id you pass as model.
The GPQA-Diamond column is the exception — the catalogue carries no
benchmark field, so those figures come from
hanzo.ai/enso, where they are published.
Start at `enso-flash`.
It is the cheapest tier and the one most work never needs to leave. Move up when a smaller model has actually disappointed you — not before, because moving up costs you one word of a diff.
enso-flash— Fast, economical Enso tier for high-volume, low-latency everyday work, with 1M-context overflow.enso— Hanzo's proprietary frontier model — Opus-class reasoning by default with 1M-context overflow.enso-ultra— Adaptive fan-out — probes a task-appropriate model, escalates to a top-K panel only when needed, then verifies-then-selects the best answer.
What each tier is for, in depth →
Every other model
Alongside the Enso and Zen families the gateway carries models from outside labs, on the same key and the same endpoint. Each is billed at its own published rate.
Those rates move as providers change theirs, so they are not reprinted here. The catalogue at Models fetches them in your browser as you read, which means it is current without waiting for a docs deploy — read the price there, next to the model id you are about to paste.
75 of them cost nothing — billed at 0 out, subject to rate limits. They are not named by a common convention, so list them from the API rather than guessing at the id:
curl -s https://api.hanzo.ai/v1/pricing | jq -r '.freeModels[]'Tools
Tool calls are billed by their own unit, not by tokens:
| Tool | Unit | Price |
|---|---|---|
| Web Search | per query | $0.005 |
| Code Interpreter | per session minute | $0.03 |
| File Storage | per GB/month | $0.20 |
| Image Generation | per image | $0.04 |
| Speech-to-Text | per minute | $0.006 |
| Text-to-Speech | per 1M characters | $15.00 |
Billed per artefact, not per token
Images, audio, video and reranking have no output token count to charge against, so each is billed by the thing it actually produces:
| Model | Unit | Price |
|---|---|---|
zen-rerank | per call | $0.03 |
openai-gpt-image-1 | per image | $0.04 |
openai-gpt-image-1.5 | per image | $0.04 |
openai-gpt-image-2 | per image | $0.04 |
stable-diffusion-3.5-large | per image | $0.04 |
zen-voice | per call | $0.045 |
zen-foley | per call | $0.15 |
zen-image | per image | $0.24 |
zen-music | per call | $0.30 |
wan2-2-t2v-a14b | per video | $0.50 |
zen-video | per clip | $1.80 |
qwen3-tts-voicedesign | per 1M characters | $5.00 |
What you are actually charged
A token is roughly three quarters of a word, so a 2,000-token prompt is about three pages. Divide the rate by a million and multiply:
cost = (input_tokens x input_rate + output_tokens x output_rate) / 1_000_000You never have to trust that arithmetic. Every response to
/v1/chat/completions carries a usage object counting exactly what was
billed:
{
"usage": {
"prompt_tokens": 2000,
"completion_tokens": 500,
"total_tokens": 2500
}
}Where a model publishes a cache-read rate, tokens served from cache are
billed at that lower rate instead of the input rate — the catalogue shows it
per model as cacheRead.
Read the rates programmatically
The page you are reading is generated from this endpoint, so it can tell you nothing the endpoint will not:
curl -s https://api.hanzo.ai/v1/pricing | jq '.hanzoModels[] | select(.name | startswith("enso"))'It needs no key. /v1/pricing returns the Hanzo family, the third-party
rates, the free-model list, the tool table, and the provider breakdown in one
document; /v1/models returns the same rates alongside the model ids you
pass as model.
Next
Models
The live catalogue — every model id and its current rate.
Enso
What the three tiers are and how to pick between them.
API keys
Mint the key these requests are billed against.
Pricing API
Every pricing endpoint, generated from the spec.
Per-token rates and context windows read from /v1/models. Everything else captured from /v1/pricing on 2026-08-01.
How is this guide?