从 OpenRouter 迁移到 TeamoRouter:模型 ID 对照表与改法

从 OpenRouter 切过来只改三处:Base URL、API Key、模型 ID(去掉 厂商/ 前缀)。OpenAI SDK、Anthropic SDK、Claude Code、Codex 的其他配置都不用动。

新账号余额为 0,先充值再调用。 第一次请求前先充值,$5 起。如果请求返回 402(OpenAI 格式为 400)、提示「钱包余额不足」,说明余额为 0,不是 Base URL 或 Key 配错了,充值后重试即可。

没有海外卡?也可以用 USDT 充值:在充值弹窗点「Crypto支付」,用 USDT、USDC 或 ETH,从币安、OKX 等交易所 App 转账即可——收银台会按金额显示可用网络(BEP20 从 $5 起就能用),不用装钱包插件(教程)。

一、要改哪几处

OpenRouter TeamoRouter
Base URL(OpenAI 格式) https://openrouter.ai/api/v1 https://api.teamorouter.com/v1
Base URL(Anthropic 格式:Claude Code、Anthropic SDK) https://openrouter.ai/api https://api.teamorouter.com(不带 /v1)
API Key sk-or-v1-... sk-teamo-...,在控制台创建
鉴权头 Authorization: Bearer <key> OpenAI 格式:Authorization: Bearer <key>;Anthropic 格式:x-api-key: <key>(Claude Code 的 ANTHROPIC_AUTH_TOKEN 也能用)
模型 ID 厂商/模型,例如 deepseek/deepseek-v4-pro 不带厂商前缀,例如 deepseek-v4-pro

二、模型 ID 对照表

去掉 厂商/ 前缀即可。Claude 的版本号还要把点换成横线:anthropic/claude-opus-5.5 改成 claude-opus-5-5。带厂商前缀的 ID 会返回 400 model_not_available。

OpenRouter 模型 ID TeamoRouter 模型 ID
anthropic/claude-sonnet-5.5 claude-sonnet-5-5
anthropic/claude-haiku-5.5 claude-haiku-5-5
anthropic/claude-opus-5.5 claude-opus-5-5
anthropic/claude-opus-5 claude-opus-5
anthropic/claude-fable-5.1 claude-fable-5-1
anthropic/claude-fable-5 claude-fable-5
anthropic/claude-sonnet-5 claude-sonnet-5
anthropic/claude-opus-4.8 claude-opus-4-8
anthropic/claude-opus-4.7 claude-opus-4-7
anthropic/claude-sonnet-4.6 claude-sonnet-4-6
anthropic/claude-opus-4.6 claude-opus-4-6
anthropic/claude-haiku-4.5 claude-haiku-4-5
openai/gpt-6.1-terra gpt-6.1-terra
openai/gpt-6.1-sol gpt-6.1-sol
openai/gpt-6-sol gpt-6-sol
openai/gpt-6-luna gpt-6-luna
openai/gpt-6-astra gpt-6-astra
openai/gpt-5.6-sol gpt-5.6-sol
openai/gpt-5.6-terra gpt-5.6-terra
openai/gpt-5.6-luna gpt-5.6-luna
openai/gpt-5.5 gpt-5.5
openai/gpt-5.4-mini gpt-5.4-mini
openai/gpt-5.4 gpt-5.4
google/gemini-4-argon gemini-4-argon
google/gemini-3.8-flash gemini-3.8-flash
google/gemini-3.7-flash gemini-3.7-flash
google/gemini-3.6-flash gemini-3.6-flash
google/gemini-3.5-flash gemini-3.5-flash
google/gemini-3.5-flash-lite gemini-3.5-flash-lite
google/gemini-3.1-pro-preview gemini-3.1-pro-preview
OpenRouter 模型 ID TeamoRouter 模型 ID
deepseek/deepseek-v4.1-flash-1017 deepseek-flash-1017
deepseek/deepseek-v4.1-flash deepseek-flash
deepseek/deepseek-v4-flash-vision-exp deepseek-v4-flash-vision-exp
deepseek/deepseek-v4-pro deepseek-v4-pro
deepseek/deepseek-v4-flash deepseek-v4-flash
moonshotai/kimi-k3.1-pro kimi-k3.1-pro
moonshotai/kimi-k3 kimi-k3
qwen/qwen3.8-flash qwen3.8-flash
qwen/qwen3.7-max qwen3.7-max
qwen/qwen3.7-flash qwen3.7-flash
z-ai/glm-5.3-flash glm-5.3-flash
z-ai/glm-5.3 glm-5.3
z-ai/glm-5.2 glm-5.2

上表只列两边都有的主力模型,按 2026-11-04 两边公开的模型列表生成。其他模型和实时价格见模型广场,或调 GET /v1/models。

  • openrouter/auto 和 ~厂商/...-latest 这类别名没有对应,请从表里选一个固定的模型 ID。
  • :nitro、:floor、:online、:batch 这类后缀不支持,去掉即可。免费模型是单独的 ID,以 -free 结尾,在模型广场里有标注。
  • Claude Code 里的 [1m] 后缀(claude-opus-5-5[1m])不用加,直接写 claude-opus-5-5。

三、可以删掉的请求头

OpenRouter 的 HTTP-Referer、X-OpenRouter-Title(旧名 X-Title)、X-OpenRouter-Categories、X-OpenRouter-App-Visibility 只用来把你的应用登上它的公开排行榜。TeamoRouter 不用这些头,切换时删掉即可。

四、代码怎么改

Python(OpenAI SDK)

改之前:

python
from openai import OpenAI

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key="sk-or-v1-xxxxxx",
)

resp = client.chat.completions.create(
    model="deepseek/deepseek-v4-pro",
    messages=[{"role": "user", "content": "你好"}],
    extra_headers={"HTTP-Referer": "https://example.com", "X-OpenRouter-Title": "My App"},
    extra_body={"provider": {"order": ["deepseek"]}},
)
print(resp.choices[0].message.content)

改之后:

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.teamorouter.com/v1",
    api_key="sk-teamo-xxxxxx",
)

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

JavaScript / TypeScript(OpenAI SDK)

改之前:

javascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://openrouter.ai/api/v1",
  apiKey: process.env.OPENROUTER_API_KEY,
  defaultHeaders: { "HTTP-Referer": "https://example.com", "X-OpenRouter-Title": "My App" },
});

const resp = await client.chat.completions.create({
  model: "deepseek/deepseek-v4-pro",
  messages: [{ role: "user", content: "你好" }],
});

改之后:

javascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.teamorouter.com/v1",
  apiKey: process.env.TEAMOROUTER_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "deepseek-v4-pro",
  messages: [{ role: "user", content: "你好" }],
});

Claude 模型:改用 Anthropic 格式

在 OpenRouter 上你可能用 OpenAI SDK 调 anthropic/claude-...。Claude 模型请务必使用 Anthropic 原生协议(/v1/messages)调用。 用 OpenAI 兼容格式调用 Claude 可能导致 prompt cache、thinking 等能力丢失(成本更高、能力降级),仅适合简单对话场景。

python
from anthropic import Anthropic

client = Anthropic(
    api_key="sk-teamo-xxxxxx",
    base_url="https://api.teamorouter.com",
)

resp = client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.content[0].text)

缓存需要调用方用 cache_control 显式开启,写法见 API 接入文档 的常见问题。

Claude Code

改之前:

bash
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
export ANTHROPIC_AUTH_TOKEN="sk-or-v1-xxxxxx"
export ANTHROPIC_API_KEY=""
export ANTHROPIC_DEFAULT_OPUS_MODEL="~anthropic/claude-opus-latest[1m]"
export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1

改之后:

bash
export ANTHROPIC_BASE_URL="https://api.teamorouter.com"
export ANTHROPIC_AUTH_TOKEN="sk-teamo-xxxxxx"
export ANTHROPIC_API_KEY=""
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5-5"
  • ANTHROPIC_API_KEY 和在 OpenRouter 时一样保持为空。设了它,Claude Code 会问要不要用这个 Key,默认选 No,回车就进 Anthropic 官方登录。
  • 所有模型变量(ANTHROPIC_MODEL、ANTHROPIC_DEFAULT_*_MODEL、CLAUDE_CODE_SUBAGENT_MODEL)改成 TeamoRouter 的 ID,或者直接删掉。
  • 删掉 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY,用上面的变量指定模型。
  • 如果这些写在 .claude/settings.local.json 的 env 里,在那里做同样的修改。改完重启 claude,/status 里的 base URL 应显示 https://api.teamorouter.com。

完整步骤见 Claude Code 接入文档。

Codex

Codex 读的是 ~/.codex/config.toml,不读 OPENAI_BASE_URL。

改之前:

toml
model_provider = "openrouter"
model = "~openai/gpt-sol-latest"

[model_providers.openrouter]
name = "openrouter"
base_url = "https://openrouter.ai/api/v1"

[model_providers.openrouter.auth]
command = "sh"
args = ["-c", "echo $OPENROUTER_API_KEY"]

改之后:

toml
model_provider = "teamorouter"
model = "gpt-6-sol"
model_reasoning_effort = "high"

[model_providers.teamorouter]
name = "TeamoRouter"
base_url = "https://api.teamorouter.com/v1"
env_key = "OPENAI_API_KEY"
wire_api = "responses"

再用 export OPENAI_API_KEY="sk-teamo-xxxxxx" 设好 Key。Codex 走 Responses API,TeamoRouter 的这个接口只支持 GPT 系列(Claude / Gemini 会返回 400),所以这里要选 GPT 模型。完整步骤(含 Windows)见 Codex CLI 接入文档。

五、OpenRouter 有、TeamoRouter 没有的

OpenRouter 功能 TeamoRouter
自动路由(openrouter/auto)和 ~...-latest 别名 没有。请写固定的模型 ID。
models 备选模型列表 没有。请在代码里捕获报错,换一个模型重试。同一个模型背后有多条线路,TeamoRouter 会自动切换,但不能指定走哪条。
provider 偏好参数(order、only、ignore、sort、allow_fallbacks、data_collection、zdr、max_price、quantizations) 没有。请删掉 provider 字段。
模型后缀(:nitro、:floor、:online、:batch) 没有。去掉后缀即可。
plugins(联网搜索、文件解析)和 transforms 没有。请删掉这两个字段。
返回结果里的费用(usage.cost) 返回的 usage 里只有 token 数,每次请求扣了多少钱在控制台看。
/api/v1/credits、/api/v1/key、/api/v1/generation 没有对外接口,余额和用量在控制台看。
自带上游 Key(BYOK) 没有。
所有模型都能走 Responses API /v1/responses 只支持 GPT 系列。Claude 用 /v1/messages,Gemini 用 Gemini 原生格式。

六、验证是否切换成功

bash
curl https://api.teamorouter.com/v1/chat/completions \
  -H "Authorization: Bearer sk-teamo-xxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-pro","messages":[{"role":"user","content":"你好"}]}'
  • 401:Key 不对。应以 sk-teamo- 开头,而不是 sk-or-。
  • 402(OpenAI 格式为 400),提示「钱包余额不足」:余额为 0,充值后重试。
  • 400 model_not_available:模型 ID 还带着 厂商/ 前缀,或不在我们的模型列表里,对照上面的表改。

更多错误码和限流说明见 API 接入文档 和限流说明。

准备好了?三步即可开始登录控制台 · 购买额度 · 创建 API Key
DiscordGet community help instantly