Anthropic

The Anthropic Messages API is served at POST /v1/messages: point the SDK or Claude Code at api.hanzo.ai with a Hanzo key as the bearer, and name a model as anthropic/claude-* or any other model in the catalogue.

Anthropic's API is POST /v1/messages, and Hanzo serves the same route at https://api.hanzo.ai/v1/messages. The body you send today works unchanged. Two things move: the host, and the key, which goes as a bearer token. Every Claude model is in the catalogue as anthropic/claude-*, beside the other providers' models and Hanzo's own, so one key reaches all of them through the same route.

Start here

# the call you already make, at a different host, with a Hanzo key as the bearer
curl -sS https://api.hanzo.ai/v1/messages \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H 'anthropic-version: 2023-06-01' \
  -H 'Content-Type: application/json' \
  -d '{"model":"anthropic/claude-haiku-4.5","max_tokens":256,
       "messages":[{"role":"user","content":"summarise Q3"}]}'

# the names it accepts
curl -sS https://api.hanzo.ai/v1/models | jq -r '.data[].id' | grep '^anthropic/'

In the SDKs, set the base URL and pass the key as the auth token, the form that sends a bearer:

from anthropic import Anthropic
client = Anthropic(base_url="https://api.hanzo.ai", auth_token=os.environ["HANZO_API_KEY"])
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({ baseURL: "https://api.hanzo.ai", authToken: process.env.HANZO_API_KEY });

Claude Code

Keep Claude Code. hanzo --claude starts it on your Claude plan with the Hanzo toolset attached, so it can hand work to Enso and Kai. hanzo --claude --cloud moves its own model calls onto Hanzo as well, sets ANTHROPIC_BASE_URL and the bearer for that run, and names enso-auto unless you pass --model. Your ~/.claude is not edited. Claude Code with Hanzo →

Nouns

AnthropicHanzo
x-api-key: sk-ant-…Authorization: Bearer <Hanzo key>
claude-sonnet-…anthropic/claude-…, or any model in GET /v1/models
WorkspaceOrg: the key carries it
Console usagehanzo usage summary, hanzo console (press 6), platform.hanzo.ai

What does not carry

The model name gains a prefix. A bare claude-… id is Anthropic's own naming. Here the catalogue names the provider, anthropic/claude-haiku-4.5, so the same key can also name openai/…, google/… or enso-auto.

The key goes as a bearer. Send it in Authorization: Bearer. That is what the SDKs' auth_token option sends, and what hanzo --claude --cloud sets.

Was this page useful?
Last updated Oct 15, 2026