RouteMux Docs
Integrations

兼容矩阵

各客户端该填什么形状的 base URL,以及每个模型家族在哪些协议上开放。

第一次请求失败,几乎只有两个原因:base URL 的形状,和这个模型是否在客户端所讲的 协议上开放。这一页是两者的简版。

为什么各客户端的 base URL 不一样

网关在三条路径上都接受 Anthropic Messages,三者等价:

/v1/messages
/anthropic/v1/messages
/v1/v1/messages          ← 容忍,给那些 base URL 末尾带了 /v1 的客户端

所以你该填的 base URL 不是一个固定字符串 —— 它取决于你的客户端会往后面追加什么。 从最终路径倒推:

你的客户端追加该填的 base URL
/v1/messages(官方 Anthropic SDK —— Claude Code、Pi、OpenClaw)https://api.routemux.com
/messages(Vercel AI SDK 的 Anthropic provider —— OpenCode)https://api.routemux.com/v1
/chat/completions/responses(OpenAI 客户端)https://api.routemux.com/v1
什么都不追加,要填完整路径https://api.routemux.com/v1/chat/completions
Gemini / Vertex 操作https://api.routemux.com/vertex-ai

最常见的那个错,其实不是致命的那个

在一个已经会追加 /v1/messages 的 Anthropic base URL 上再加 /v1,会得到 /v1/v1/messages —— 我们照样会正确路由,所以这种写法通常是能用的,不是卡住大家的原因。 反方向才是:客户端只追加一个操作名,而你漏掉/v1,那么每条请求都会 404。

各模型家族在哪些协议上开放

一个模型只能在它真正开放的协议上调用。对你这把 key 而言,GET /v1/models 是权威; 按家族看是这样:

模型家族OpenAI ChatOpenAI ResponsesAnthropic MessagesVertex
anthropic/claude-*
openai/gpt-5.*gpt-6-*
deepseek/*
minimax/minimax-m*
zhipu/glm-*
google/gemini-*(文本)
google/gemini-*(出图)
xai/grok-4.5
xai/grok-4.6

其中两条值得单独拎出来:

  • Gemini 文本模型同时在两个协议上。 你可以用普通 OpenAI 客户端调,也可以用 Gemini/Vertex 客户端调。Gemini 的出图模型只有 Vertex 一条。
  • 没有任何 Grok 模型在 Anthropic Messages 上。 Claude Code 形状的客户端在这里 够不着 Grok,base URL 怎么填都不行。

图片、视频、音乐模型完全不在上面三个文本协议上 —— 它们有自己的端点。

在一个模型没有开放的协议上调它,会返回 400 MODEL_PROTOCOL_UNSUPPORTED。 实际会发生的组合就两种:

  • 拿 Claude 的 slug 打 /v1/chat/completions 多半是编辑器或聊天客户端用了它那个 通用的「OpenAI Compatible」供应商。改用该客户端的 Anthropic 供应商。
  • 拿 Gemini 的 slug 打 /v1/messages/v1/responses Gemini 文本模型在这里走 的是 OpenAI Chat。

按客户端速查

只列本站有接入文的客户端;精确的配置键名在各自页面里。

客户端它发的协议Base URL备注
Claude CodeAnthropic Messages裸 originANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN
Codex CLI只有 OpenAI Responses/v1~/.codex/config.toml 里配自定义 provider;没有 Chat Completions 模式
OpenCode两者皆可,按 provider 块两条都带 /v1npm 字段决定协议
Pi四种皆可,按 providerAnthropic 用裸 origin,OpenAI 带 /v1api 字段决定协议
OpenClaw四种皆可,按 provider同 Pi配置在 models.providers 下面
Hermes Agent三种,按 provider一律带 /v1会归一化末尾的 /v1api_mode 决定协议
Cline两者皆可,按供应商类型Anthropic 用裸 origin,OpenAI 带 /v1Claude 模型必须走 Anthropic 供应商
CursorOpenAI Chat/v1只覆盖 chat 模型;请求从 Cursor 服务器发出
Gemini CLIVertex/vertex-ai用的是 Google 风格的 base URL 变量
CC Switch按目标应用写死替你填好导入器里每个应用的协议是硬编码的

模型 id

GET /v1/models 返回的正是这把 key 能调用的全集。能被解析的方言:

  • 裸名 ↔ 带 anthropic/openai/google/ 前缀的形态
  • 版本号里的横线 ↔ 点号(claude-sonnet-4-6claude-sonnet-4.6
  • 结尾的 -YYYYMMDD 日期快照会被忽略
  • 结尾的 [1m] 上下文标记会被忽略

不能解析、而且在真实流量里反复出现的:shell 变量带进来的尾部空格、变量名没展开就原样 发出、URL 编码的斜杠(%2F)、把活动标签连着模型名一起粘进来、以及我们没有上架的模型版本。

鉴权头

Authorization: Bearerx-api-keyx-goog-api-key 都接受。同一个 key 同时出现在两个 头里没问题 —— 我们按值去重。但发两个不同的值会返回 400 AUTH_AMBIGUOUS_API_KEY,把没在用的那个字段清掉。

超时

  • 流式请求没有总时长上限
  • 有空闲看门狗:文本 180 秒,图片与视频更长。在该窗口内没有新 chunk 就中止请求并记为超时。
  • 等上游第一个响应头的预算随请求体大小放宽,所以很大的会话比小请求拿到更多宽限。

On this page