从 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)
改之前:
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)
改之后:
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)
改之前:
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: "你好" }],
});
改之后:
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 等能力丢失(成本更高、能力降级),仅适合简单对话场景。
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
改之前:
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
改之后:
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。
改之前:
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"]
改之后:
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 原生格式。 |
六、验证是否切换成功
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 还带着厂商/前缀,或不在我们的模型列表里,对照上面的表改。