Gateway
One API key. One base URL. Every model.
Point Claude Code, Codex, Cursor, or any OpenAI-compatible client at the zerouter gateway. Create a key, set the base URL, and call Claude, GPT, Gemini, Grok, and Kimi.
Last updated 7 September 2026.
base_url
How to set a custom base URL
The gateway origin is the same for every client. Claude Code uses ANTHROPIC_BASE_URL. Codex, GPT, and OpenAI SDKs use base_url on /v1. Cursor overrides the OpenAI base URL.
Gateway
https://api.zerouter.ai
API key
sk-xxxx
POST paths
POST https://api.zerouter.ai/v1/messages # Claude / Kimi
POST https://api.zerouter.ai/v1/responses # GPT / Grok / Codex
POST https://api.zerouter.ai/v1/chat/completions # Gemini / OpenAI ChatClaude Code
ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN
Write ~/.claude/settings.json or export the two variables in your shell before launching claude.
~/.claude/settings.json
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.zerouter.ai",
"ANTHROPIC_AUTH_TOKEN": "sk-xxxx"
}
}Shell
export ANTHROPIC_BASE_URL="https://api.zerouter.ai"
export ANTHROPIC_AUTH_TOKEN="sk-xxxx"
claudeCodex CLI and GPT ยท config.toml
Edit ~/.codex/config.toml
Add a provider named zerouter. base_url must include /v1. Set ZEROUTER_API_KEY in the environment, then start Codex.
~/.codex/config.toml
model = "gpt-5.4"
model_provider = "zerouter"
[model_providers.zerouter]
name = "zerouter"
base_url = "https://api.zerouter.ai/v1"
env_key = "ZEROUTER_API_KEY"
wire_api = "responses"Then export the key
export ZEROUTER_API_KEY="sk-xxxx"
codexCursor
Override the OpenAI base URL in Cursor
Use the OpenAI-compatible override, not an Anthropic-only field.
Open Cursor Settings
Go to Models / OpenAI.
Override the base URL
Set OpenAI Base URL to https://api.zerouter.ai/v1.
Paste the key
Use your zerouter sk-xxxx key. Pick a model ID from the catalog.
OpenAI SDK and curl
OpenAI SDK and curl
Any client that accepts a custom base URL can use the same key. Match the path to the protocol.
Python OpenAI SDK
from openai import OpenAI
client = OpenAI(
base_url="https://api.zerouter.ai/v1",
api_key="sk-xxxx",
)
print(client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "ping"}],
))curl
curl https://api.zerouter.ai/v1/chat/completions \
-H "Authorization: Bearer sk-xxxx" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.4","messages":[{"role":"user","content":"ping"}]}'