API 文档
RelayAI 提供 OpenAI / Anthropic 兼容接口,并统一处理鉴权、模型路由、限速、计费和用量记录。
https://relayai.aolingtech.com/api/v1所有公开示例均使用当前 RelayAI 服务地址。
快速接入指南
如果你已经在使用 OpenAI SDK,通常只需修改 Base URL 和 API Key 即可切换到 RelayAI:
Python
from openai import OpenAI
client = OpenAI(
api_key="rk-xxxxxxxxxxxx", # RelayAI API Key
base_url="https://relayai.aolingtech.com/api/v1"
)
response = client.chat.completions.create(
model="glm-5.2",
messages=[
{"role": "user", "content": "Hello, RelayAI!"}
]
)
print(response.choices[0].message.content)cURL
curl https://relayai.aolingtech.com/api/v1/chat/completions \
-H "Authorization: Bearer rk-xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-5.2",
"messages": [{"role": "user", "content": "Hello!"}]
}'认证方式
所有 API 请求必须携带 API Key。OpenAI 兼容端点推荐使用 Authorization Header,Anthropic 兼容端点也支持 x-api-key。
Authorization: Bearer rk-xxxxxxxxxxxx
x-api-key: rk-xxxxxxxxxxxxAPI Key 可在控制台的「密钥管理」页面创建。一个 Key 同时配置模型权限、路由策略、RPM 和可选月度预算。
- 全部常规模型只包含不按量采购的 standard 模型。
- 按量模型必须在同一个 API Key 中逐个显式授权。
- 未来新增按量模型不会自动授权给已有 Key。
- 创建结果显示一次完整明文;之后只能直接复制,不在页面重新显示。
路由策略
路由策略绑定在 API Key 上。客户端请求仍只传模型 ID,不能通过 Header 或请求体覆盖该 Key 的路由策略。
| Profile | 控制台标签 | 行为 |
|---|---|---|
default | 标准 | 普通调用和旧 Key 的默认语义,同模型 fallback 并过滤已知不可用 route |
coding | 研发 | 研发工具和代码任务,允许显式配置的兼容版本替代 |
vip | 高可靠 | 高价值任务,禁止低阶静默降级 |
agent | Agent | 预留 profile,未启用时按标准语义解析 |
low_cost | 低成本 | 预留 profile,未启用时按标准语义解析 |
long_context | 长上下文 | 预留 profile,未启用时按标准语义解析 |
上游厂商政策限流不由路由策略本身解决;例如智谱 1305 仍需要标准 API 池或上游授权确认。
Chat Completions
发送对话消息并获取模型回复。支持流式(SSE)和非流式响应。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 必填 | 模型 ID,如 glm-5.2、deepseek-v4-pro、kimi-k2.6、kimi-k3 |
| messages | array | 必填 | 消息数组,每项含 role 和 content |
| temperature | number | 可选 | 采样温度,0–2,默认 1 |
| max_tokens | integer | 可选 | 最大生成 token 数 |
| stream | boolean | 可选 | 是否启用流式输出,默认 false |
Responses(Codex)
面向 Codex CLI 的 Responses 兼容接口。支持非流式 JSON,以及文本增量、函数调用参数增量和完成/失败事件。
{
"model": "deepseek-v4-flash",
"instructions": "You are a coding assistant.",
"input": "Explain this error in one sentence.",
"stream": true
}支持文本输入、对话消息、标准函数工具、Codex namespace 工具、Web Search、 Custom Tools、tool_search 以及对应的函数调用结果。Web Search 由 RelayAI 在服务端执行并将结果回填给上游模型。 当前不支持previous_response_id、服务端存储、WebSocket、Files 和 Images。未配置BRAVE_SEARCH_API_KEY时,Web Search 回落到 Bing Web Search。
model_provider = "relayai"
model = "deepseek-v4-flash"
[model_providers.relayai]
name = "RelayAI"
base_url = "https://relayai.aolingtech.com/api/v1"
wire_api = "responses"
requires_openai_auth = true
env_key = "RELAYAI_API_KEY"Codex 的 /responses 会由wire_api = "responses"自动拼接。base_url 必须停在/api/v1,不能包含/chat/completions 或/responses。
Messages
Anthropic 兼容消息接口。请求使用 Anthropic 格式,网关内部会转换并路由到可用上游。
{
"model": "glm-5.2",
"max_tokens": 1000,
"messages": [
{ "role": "user", "content": "Hello" }
],
"stream": true
}该端点支持 Anthropic 风格的 tools 和 tool_choice,网关会转换为 OpenAI 兼容格式后转发。
Models
获取当前账户可用的所有模型列表。
当前支持的模型:
| 服务商 | 模型 |
|---|---|
| DeepSeek | deepseek-v4-flashdeepseek-v4-pro |
| 智谱 BigModel | glm-5.2glm-5.1glm-5-turboglm-4.7glm-4.5-air |
| 火山方舟 | doubao-seed-2.0-codedoubao-seed-2.0-prodoubao-seed-2.0-liteminimax-m2.7minimax-m3kimi-k2.6 |
| PPToken(已实现,默认关闭/需显式按量授权) | gpt-5.5gpt-5.6-solgpt-5.6-lunagpt-5.6-terra |
| Moonshot(已实现,默认关闭/需显式按量授权) | kimi-k3 |
返回结果示例:
{
"object": "list",
"data": [
{ "id": "deepseek-v4-flash", "object": "model", "owned_by": "deepseek" },
{ "id": "glm-5.2", "object": "model", "owned_by": "zhipu" },
{ "id": "kimi-k2.6", "object": "model", "owned_by": "volcengine" }
]
}Embeddings
该接口尚未实现,当前返回 HTTP 501。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 必填 | 计划支持的 embedding 模型 ID |
| input | string/array | 必填 | 要嵌入的文本,单个或数组 |
速率限制
速率限制按 API Key 配置。超出限制时返回 HTTP 429。
| 限制项 | 值 | 说明 |
|---|---|---|
| API Key RPM | 自定义 | 可在创建 API Key 时设置 rpmLimit |
| 普通请求重试 | 1s、2s | 上游临时错误会先重试,再按当前 API Key 的路由策略尝试备用 route |
| 流式超时 | 600s | 流式响应最长等待时间 |
错误码
| 状态码 | 类型 | 说明 |
|---|---|---|
| 400 | invalid_request / invalid_request_error | 请求格式错误或上游拒绝请求参数 |
| 401 | missing_api_key / invalid_api_key / key_revoked | 未提供 API Key、Key 无效或已撤销 |
| 402 | insufficient_balance | 账户余额不足 |
| 403 | model_forbidden / user_inactive | API Key 未显式获得目标模型权限,或账号不可用 |
| 404 | model_not_found / not_found_error | 模型未知或当前环境未启用 |
| 429 | rate_limit_exceeded | 超过 API Key 速率限制 |
| 502 | upstream_error / timeout | 上游服务商错误或响应超时 |
| 503 | model_temporarily_unavailable | 已发布模型暂时不可用 |
- 模型可用但当前 Key 未显式授权时返回 403,
error.code=model_forbidden。 - Chat Completions 的 404/503 使用 OpenAI 错误对象,分别通过
error.code=model_not_found和error.code=model_temporarily_unavailable标识。 - Responses 的 404/503 同样使用 OpenAI 错误对象和上述
error.code;对应error.type分别为invalid_request_error和model_unavailable。 - Messages 使用 Anthropic 错误信封且没有独立
error.code:404 为error.type=not_found_error;503 为error.type=api_error,并在 message 中携带model_temporarily_unavailable。
旧模型名兼容
以下标识仅用于历史 API Key 白名单归一化,不能作为请求 model 直接调用。客户端必须使用当前模型名。
| 旧模型名 | 当前模型名 | 说明 |
|---|---|---|
zhipu-glm-4.7 | glm-4.7 | 仅用于历史白名单归一化 |
alibaba-glm-4.7 | glm-4.7 | 不代表 Alibaba route |
volc-glm-5.1 | glm-5.1 | 仅用于历史白名单归一化 |
volc-deepseek-v4-flash | deepseek-v4-flash | 仅用于历史白名单归一化 |
volc-deepseek-v4-pro | deepseek-v4-pro | 仅用于历史白名单归一化 |
从 OpenAI API 迁移
如果你已经在使用 OpenAI 官方 SDK 或直接调用 API,只需以下三步即可完成迁移。
1. 替换 Base URL
将请求地址从 OpenAI 官方域名改为 RelayAI:
- base_url = "https://api.openai.com/v1"
+ base_url = "https://relayai.aolingtech.com/api/v1"2. 认证方式不变
RelayAI 的 API Key 格式为 rk-...,但 Authorization Header 的格式与 OpenAI 完全一致,无需修改认证逻辑:
Authorization: Bearer rk-xxxxxxxxxxxx3. 兼容性差异
大部分功能可直接使用,少数功能存在差异:
- Streaming(流式输出) — 完全兼容,无需改动
- Function Calling(函数调用) — 已支持,参数格式与 OpenAI 一致
- Responses(Codex) — 已支持首版 Codex 文本和工具调用流程
- Embeddings — 尚未实现,当前返回 HTTP 501
兼容性矩阵
各模型在 RelayAI 中转层上的功能支持情况:
| 功能 | DeepSeek | 智谱 | 火山方舟 | 自有算力 | PPToken | Moonshot |
|---|---|---|---|---|---|---|
| Chat Completions | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Responses(Codex) | ✓ | 转换 | 转换 | 转换 | 转换 | 转换 |
| Messages | 转换 | 转换 | 转换 | 转换 | 转换 | 转换 |
| Streaming | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Tools | ✓ | ✓ | ✓ | 部分 | ✓ | ✓ |
| Embeddings | 尚未实现,HTTP 501 | - | - | - | - | - |
PPToken 和 Moonshot 已实现但默认关闭/受限;满足服务端开关、模型白名单、凭证和价格配置后可启用,并仍需 API Key 显式授权。