对话与消息
通过同一个网关调用 chat completions、responses 与 Anthropic messages。
RouteMux 说你的 SDK 本来就用的协议。把 base URL 指向对应家族、传一个 RouteMux 模型 slug, 你现有的客户端无需改动即可工作。
| 家族 | Base URL | 端点 |
|---|---|---|
| 兼容 OpenAI | https://api.routemux.com/v1 | chat/completions、responses |
| 兼容 Anthropic | https://api.routemux.com/anthropic | v1/messages |
| Google GenAI / Vertex | https://api.routemux.com/vertex-ai | models/{model}:generateContent |
请求和响应体会原样透传给上游供应商。RouteMux 只读取 model、stream 和少量用量元数据 ——
不改写你的 payload,所以工具调用、system 提示和消息结构的行为完全与供应商文档一致。
Chat completions(OpenAI)
curl https://api.routemux.com/v1/chat/completions \
-H "Authorization: Bearer $ROUTEMUX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.5",
"messages": [{ "role": "user", "content": "用一句话解释预付费计费。" }]
}'import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.ROUTEMUX_API_KEY,
baseURL: "https://api.routemux.com/v1",
});
const completion = await client.chat.completions.create({
model: "openai/gpt-5.5",
messages: [{ role: "user", content: "用 RouteMux 打个招呼" }],
});流式
设 stream: true,像往常一样读取 SSE。RouteMux 直接把 chunk 转发,不缓冲整个响应,
并在上游结束后按真实用量结算。
curl https://api.routemux.com/v1/chat/completions \
-H "Authorization: Bearer $ROUTEMUX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.5",
"stream": true,
"messages": [{ "role": "user", "content": "流式写一首俳句" }]
}'断开会中止上游
如果你的客户端在流中途断开,RouteMux 会中止上游请求。你只为供应商实际报告的用量付费; 否则该记录会被对账或标记为失败。
Anthropic messages
推荐的 Anthropic 入口是 /anthropic/v1/messages。用 x-api-key 头,就和原生
Anthropic SDK 一样。
curl https://api.routemux.com/anthropic/v1/messages \
-H "x-api-key: $ROUTEMUX_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-opus-4.8",
"max_tokens": 256,
"messages": [{ "role": "user", "content": "用 RouteMux 打个招呼" }]
}'Responses 与 Vertex
- Responses:
POST /v1/responses(或短路径别名POST /responses),适用于基于 OpenAI Responses 协议构建的客户端。 - **Vertex / Gemini:**指向
https://api.routemux.com/vertex-ai,以 path 里的模型调用:generateContent/:streamGenerateContent。
要查看某个模型支持哪些协议,筛选目录即可 —— /v1/models?protocol=anthropic_messages。
完整筛选项见 模型与发现。
图片与视频输入
图片和视频在 RouteMux 上走的接口不一样,这一点比"模型支不支持"更常绊住人:
| 输入 | /v1/chat/completions(OpenAI 兼容) | /vertex-ai/v1beta/...:generateContent(原生 Gemini) |
|---|---|---|
| 图片 | 支持 | 支持 |
| 视频 | 不支持 | 支持 |
原因不在模型:Gemini 全系都能读视频。是 OpenAI 的请求结构里没有视频部件 ——
content[] 只定义了 text / image_url / input_audio 这些类型,没有装视频的地方。
⚠️ 这里有一个必须知道的失败形态:如果绕过网关直接把视频塞进 OpenAI 形状的请求,
上游不会报错,它会把视频丢掉、只读你的文字,然后照样返回 200 和一个看起来合理的答案。
RouteMux 会在扣费和连上游之前拦下这种请求,返回 400
REQUEST_VIDEO_INPUT_ENDPOINT_UNSUPPORTED,并告诉你改用哪条接口。
发视频用原生接口,视频放进 inline_data:
curl -X POST "https://api.routemux.com/vertex-ai/v1beta/models/google/gemini-3.5-flash:generateContent" \
-H "Authorization: Bearer $ROUTEMUX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"role": "user",
"parts": [
{"inline_data": {"mime_type": "video/mp4", "data": "<base64>"}},
{"text": "这段视频里依次出现了哪些颜色?"}
]
}]
}'计量按 Google 口径:默认分辨率约 300 token/秒视频(画面 258/帧 + 音轨 32/秒)。 视频 token 与文本同价,不另外计费。
哪些模型能读视频,看目录页的「视频输入」能力标签,或用
/v1/models 的能力筛选。