Unified AI API Gateway
clauderouter.app exposes one endpoint that speaks OpenAI, Anthropic (Claude), and Gemini formats. Create an account, generate a token, and plug it into Claude Code CLI, Codex CLI, or any SDK.
sk-...).| Format | Base URL | Auth header |
|---|---|---|
| OpenAI-compatible | https://clauderouter.app/v1 | Authorization: Bearer sk-... |
| Claude / Anthropic | https://clauderouter.app | x-api-key: sk-... |
| Gemini | https://clauderouter.app/v1beta | ?key=sk-... |
export ANTHROPIC_BASE_URL="https://clauderouter.app"
export ANTHROPIC_AUTH_TOKEN="sk-your-clauderouter-key"
claude
{
"env": {
"ANTHROPIC_BASE_URL": "https://clauderouter.app",
"ANTHROPIC_AUTH_TOKEN": "sk-your-clauderouter-key"
}
}
Claude Code will send all requests through your gateway using the /v1/messages (Anthropic Messages) format. Streaming is supported.
$env:ANTHROPIC_BASE_URL="https://clauderouter.app"; $env:ANTHROPIC_AUTH_TOKEN="sk-..."; claudenpm install -g @openai/codex
model_provider = "clauderouter"
model = "gpt-5"
[model_providers.clauderouter]
name = "ClaudeRouter"
base_url = "https://clauderouter.app/v1"
wire_api = "chat"
env_key = "CODEX_API_KEY"
wire_api = "chat" uses /v1/chat/completions. If your deployment has Responses API enabled, you can set wire_api = "responses" for /v1/responses.model to any model enabled on your account.export CODEX_API_KEY="sk-your-clauderouter-key"
codex "explain this repo"
curl https://clauderouter.app/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-clauderouter-key" \
-d '{
"model": "gpt-5",
"messages": [{"role": "user", "content": "Hello!"}]
}'
curl https://clauderouter.app/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: sk-your-clauderouter-key" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Hello!"}]
}'
from openai import OpenAI
client = OpenAI(
api_key="sk-your-clauderouter-key",
base_url="https://clauderouter.app/v1",
)
resp = client.chat.completions.create(
model="gpt-5",
messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)