跳到主要内容

十分钟接上

推理请求由企业网关送到兼容协议入口,不经过这个网页,也不经过控制台适配层。把下面的基址换成你的线路,密钥用控制台里创建的那一把。

当前文档使用的基址: 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。