Pass API

OpenAI-compatibleBYOKeverything is Auto

Point any OpenAI SDK at https://api.pass.io/v1 (https://pass.io/v1 also serves the API during the transition). There are no model decisions to make: every request routes Auto — Pass classifies the task, picks the model across your connected providers, verifies the answer, and serves cached results when it already knows the answer. The SDK requires a model field; use "auto" (any value routes Auto).

1 · Connect your provider keys

Pass is fully BYOK: you pay Anthropic / OpenAI / OpenRouter / Fireworks directly with your own keys, connected once in the console (Keys → Provider keys). Pass itself charges nothing — no commission, no markup. Per-provider monthly caps protect your keys, and whatever routing saves you is yours.

2 · Call the API

from openai import OpenAI

client = OpenAI(
    base_url="https://api.pass.io/v1",
    api_key="pass_io_...",  # from the console
)

r = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "Summarize this ticket: ..."}],
)
print(r.choices[0].message.content)

3 · Read your receipt

Every response carries a pass object: the route taken, cache status, verification scores, cost, and measured savings — the same numbers your invoice is computed from.

"pass": {
  "route": ["deepseek/deepseek-v4-flash"],
  "cache": "miss",
  "task_type": "summarization",
  "verification": {"score": 0.96, "passed": true},
  "cost_usd": 0.000021,
  "savings_usd": 0.000388
}

Options

Quality tier — the one knob: "pass_quality": "economy" | "balanced" | "premium" per request (or set on the key).
Streaming"stream": true, standard SSE.
Caching — on by default; "pass_cache": false to bypass.
Models listGET /v1/models returns auto plus informational entries for what your keys can route.

Other surfaces

MCP — Pass is a remote MCP server: point your MCP client at https://api.pass.io/mcp with your Pass API key as the bearer token. One tool, ask — everything Auto, receipts included.
Telegram — connect your bot token (from @BotFather) in the console's Provider keys; your bot answers through Pass. Send /start to link a chat.
Web chatpass.io/v1/chat.

Contact

hello@pass.io

Errors

402 — free allowance exhausted (unpaid account) or budget cap. 429 — rate limited. Standard OpenAI error envelope.

Web search grounding

Connect a Serper key in Providers and questions with time-sensitive intent ("latest", "today", "current"...) are automatically grounded in live web results before the model answers — on every surface. The response's pass.web lists the sources used. No Serper key, no change.