fastChat & copilots
High-volume work — drafts, classification, bulk transforms.
- Input
- $0.15
- per 1M tokens
- Output
- $0.60
- per 1M tokens
- Chat & copilots
- Bulk jobs
- First drafts
Starter · Pro · 262k context · 32k max output
A single OpenAI- and Anthropic-compatible endpoint, three model tiers, and hard spend ceilings. Grab a key, paste one snippet, and you're calling.
Quickstart
1 · Credential
export ZAINO_API_KEY='zn-… # paste the value shown once at creation'2 · Tier & endpoint
https://api.15-224-52-176.sslip.io/v1
3 · Send it — model: fast
curl https://api.15-224-52-176.sslip.io/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ZAINO_API_KEY" \
-d '{
"model": "fast",
"messages": [
{ "role": "user", "content": "Hello from Zaino — reply in one sentence." }
]
}'Models
fastChat & copilots
High-volume work — drafts, classification, bulk transforms.
Starter · Pro · 262k context · 32k max output
smartAgents
Everyday balanced tier — the default for most integrations.
Starter · Pro · 262k context · 32k max output
frontierDeep reasoning
Highest-priced tier for the hardest reasoning workloads.
Pro only · 262k context · 32k max output
Rates are nominal development figures so budgets stay exercisable — the provider publishes no pricing. They will be replaced with real numbers before customer money depends on them. Your plan's multiplier (Starter ×1.30, Pro ×1.25) applies on top.
Wire format
zn-… key. Streaming, tool calling, and the tool-result turn all work — verified end to end with agentic CLIs.from openai import OpenAI
client = OpenAI(
base_url="https://api.15-224-52-176.sslip.io/v1",
api_key="zn-...", # or os.environ["ZAINO_API_KEY"]
)
resp = client.chat.completions.create(
model="fast",
messages=[{"role": "user", "content": "Hello from Zaino!"}],
)
print(resp.choices[0].message.content)| POST /v1/chat/completions | Chat, tools, streaming — primary path |
| GET /v1/models | Returns [fast, smart, …] per your plan |
| POST /v1/responses | Translated to chat before metering (Codex) |
Wire format
/v1/messages — native upstream support, valid tool-use arguments, SSE framing, and the tool-result→answer turn all verified.import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://api.15-224-52-176.sslip.io/v1",
apiKey: process.env.ZAINO_API_KEY, // zn-…
});
const msg = await client.messages.create({
model: "fast",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello from Zaino!" }],
});
console.log(msg);| POST /v1/messages | Native messages incl. tool calling + SSE |
| max_tokens ≥ 1024 | Reasoning models can spend small budgets on thinking |
Agent CLI
1Declare the provider and the three tiers
# ~/.codex/config.toml — Zaino as a Codex provider.
# Verified with codex-cli 0.156.1 (Responses API only).
[model_providers.zaino]
base_url = "https://api.15-224-52-176.sslip.io/v1"
env_key = "ZAINO_API_KEY"
wire_api = "responses"
[models.fast]
model_provider = "zaino"
model_context_window = 262144
model_max_output_tokens = 32768
[models.smart]
model_provider = "zaino"
model_context_window = 262144
model_max_output_tokens = 32768
[models.frontier]
model_provider = "zaino"
model_context_window = 262144
model_max_output_tokens = 32768Without [models.*] Codex warns “Model metadata not found”. Context 262,144 · max output 32,768.
2Export the key and run with the override
export ZAINO_API_KEY='zn-…'
# The model override is REQUIRED — without it Codex sends its
# global default, which the gateway correctly rejects with 403.
codex -c model_provider=zaino -c model=fast-c model=fast is required — without it Codex sends its global default, rejected with 403.
Agent CLI
1Point Claude Code at the gateway
export ANTHROPIC_BASE_URL="https://api.15-224-52-176.sslip.io/v1"
export ANTHROPIC_AUTH_TOKEN="zn-…"
# Pick the tier Claude Code should drive (Starter: fast | smart).
export ANTHROPIC_MODEL="fast"Starter drives fast or smart; frontier needs Pro — the gateway 403s anything outside your plan.
2Or pin it in settings.json (optional)
{
// ~/.claude/settings.json — point Claude Code at Zaino.
// Credentials come from the environment (ANTHROPIC_AUTH_TOKEN),
// never from this file.
"env": {
"ANTHROPIC_BASE_URL": "https://api.15-224-52-176.sslip.io/v1",
"ANTHROPIC_MODEL": "fast"
}
}Keep the credential in ANTHROPIC_AUTH_TOKEN, never in the JSON file.
Operate
zn- prefix, shown once at creation. The gateway rewrites the prefix at the edge and enforces budgets, rate limits, and plan tiers on every request.Auth headers
Authorization: Bearer zn-… # preferred
x-api-key: zn-… # equivalentBoth styles authenticate. Never log, commit, or embed a key in client-side code.
| Gateway answer | Meaning |
|---|---|
| 401 | Missing, revoked, or wrong-door key |
| 403 | Tier outside your plan |
| 429 | Budget, RPM, or TPM ceiling hit |
| 402 | No live subscription (dashboard) |
Ready to make your first call?
Create an account, pick Starter or Pro, pay by D17 — your first key is seconds away.