十分钟接上
推理请求由企业网关送到兼容协议入口,不经过这个网页,也不经过控制台适配层。把下面的基址换成你的线路,密钥用控制台里创建的那一把。
当前文档使用的基址: https://gateway.irouter.io
Claude Code
写在 ~/.claude/settings.json 的 env 里。Windows 的路径是 %USERPROFILE%\.claude\settings.json。基址不带 /v1。ANTHROPIC_AUTH_TOKEN 会作为 Authorization: Bearer 发出。
Claude Code settings.json
{
"env": {
"ANTHROPIC_BASE_URL": "https://gateway.irouter.io",
"ANTHROPIC_AUTH_TOKEN": "sk-..."
}
}Claude Code macOS / Linux
export ANTHROPIC_BASE_URL='https://gateway.irouter.io' export ANTHROPIC_AUTH_TOKEN='sk-...'
Claude Code Windows PowerShell
$env:ANTHROPIC_BASE_URL = "https://gateway.irouter.io" $env:ANTHROPIC_AUTH_TOKEN = "sk-..."
Codex
写在 ~/.codex/config.toml。model_provider 指向 irouter 这一段,base_url 带 /v1。密钥放在 OPENAI_API_KEY,不要写进文件。
Codex config.toml
model_provider = "irouter" model = "gpt-5.4" [model_providers.irouter] name = "iRouter" base_url = "https://gateway.irouter.io/v1" env_key = "OPENAI_API_KEY" wire_api = "responses" requires_openai_auth = false
Codex macOS / Linux
export OPENAI_API_KEY='sk-...'
Codex Windows PowerShell
$env:OPENAI_API_KEY = "sk-..."
OpenAI SDK
Python 和 Node 的基址都带 /v1。模型名使用目录里的 id。
OpenAI SDK Python
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.irouter.io/v1",
api_key="sk-...",
)
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "hello"}],
)OpenAI SDK Node
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://gateway.irouter.io/v1",
apiKey: "sk-...",
});
await client.chat.completions.create({
model: "gpt-5.4",
messages: [{ role: "user", content: "hello" }],
});OpenAI curl
curl https://gateway.irouter.io/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.4","messages":[{"role":"user","content":"hello"}]}'Anthropic SDK
SDK 的基址不带 /v1,客户端会自己补上。认证头是 x-api-key。
Anthropic SDK Python
import anthropic
client = anthropic.Anthropic(
base_url="https://gateway.irouter.io",
api_key="sk-...",
)
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=256,
messages=[{"role": "user", "content": "hello"}],
)Anthropic SDK Node
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://gateway.irouter.io",
apiKey: "sk-...",
});
await client.messages.create({
model: "claude-sonnet-4-5",
max_tokens: 256,
messages: [{ role: "user", content: "hello" }],
});Anthropic curl
curl https://gateway.irouter.io/v1/messages \
-H "x-api-key: sk-..." \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-4-5","max_tokens":256,"messages":[{"role":"user","content":"hello"}]}'常见错误
下面只写能从响应里判断的原因,以及下一步。不要靠猜状态码去改密钥。
- 401 未授权
- 密钥缺失、已停用,或放错了请求头。OpenAI 兼容调用和 Claude Code 的 ANTHROPIC_AUTH_TOKEN 使用 Authorization: Bearer。Anthropic SDK 使用 x-api-key。到控制台确认密钥仍是启用状态,并且以 sk- 开头。
- 429 过于频繁
- 请求超过了频率或余额限制。等一会儿再试,并在控制台核对余额。不要用同一把密钥并发重试。
- 找不到模型
- 模型名必须和目录里的 id 完全一致,包括大小写。目录里没有的名字会失败。换一个目录中的模型再调用。
- 超时
- 网关在客户端等待时间内没有返回。先重试一次。仍然超时就检查到 API 基址的网络,并调大客户端超时。不要把同一次请求连发很多遍。
- 403 IP 不在白名单
- 密钥的 IP 白名单非空时,调用方 IP 必须命中其中一行(IPv4、IPv6 或 CIDR)。否则推理接口返回 HTTP 403,error.message 以「您的 IP 不在令牌允许访问的列表中」开头,后面带 request id(英文:Your IP address is not on this token's allowlist),error.type 为 new_api_error。留空表示任意 IP。