Hanzo

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.

ModelGPQA-DiamondContextInputOutput
enso-flash92.9%262K$2.00$4.00
enso96.0%1M$4.00$20.00
enso-ultra98.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 0inand0 in and 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:

ToolUnitPrice
Web Searchper query$0.005
Code Interpreterper session minute$0.03
File Storageper GB/month$0.20
Image Generationper image$0.04
Speech-to-Textper minute$0.006
Text-to-Speechper 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:

ModelUnitPrice
zen-rerankper call$0.03
openai-gpt-image-1per image$0.04
openai-gpt-image-1.5per image$0.04
openai-gpt-image-2per image$0.04
stable-diffusion-3.5-largeper image$0.04
zen-voiceper call$0.045
zen-foleyper call$0.15
zen-imageper image$0.24
zen-musicper call$0.30
wan2-2-t2v-a14bper video$0.50
zen-videoper clip$1.80
qwen3-tts-voicedesignper 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_000

You 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

Per-token rates and context windows read from /v1/models. Everything else captured from /v1/pricing on 2026-08-01.

How is this guide?

On this page