← 返回小鸣TV
API 中转站 · 技术文档
OpenAI 兼容 · 官方 5 折 · 多上游(通义 / MiniMax / 豆包)· 支持文生图
1基本信息
| Base URL | https://aigcbox.com.cn/relay/v1 |
| 认证方式 | HTTP Header:Authorization: Bearer sk-xm-你的Key |
| 协议 | OpenAI 兼容(POST /chat/completions、GET /models、POST /images/generations) |
| 请求格式 | JSON,UTF-8,请求体上限 256KB |
| 限流 | 60 次/分钟/Key(滑动窗口),超限返回 429 |
| 超时建议 | 对话 180s,文生图 150s(服务端同步等待出图) |
| Key 获取 | 登录小鸣TV →「我的」→ API 中转站(累计充值满 ¥198 开通,支持随时重置) |
2模型清单
| 模型 ID | 提供方 | 擅长场景 |
qwen3-coder-plus | 通义(百炼) | 编程首选:代码生成、调试、技术写作,长上下文 |
qwen-plus | 通义(百炼) | 通用对话、写作、翻译、摘要,性价比高 |
qwen-max | 通义(百炼) | 复杂推理、长文档分析、高难度任务 |
MiniMax-M2 | MiniMax | 新一代通用模型,指令遵循好 |
MiniMax-M1 | MiniMax | 通用对话、内容创作 |
doubao-seed-1-6-250615 | 豆包(火山方舟) | 字节旗舰模型,综合能力强 |
doubao-seed-1-6-flash-250615 | 豆包(火山方舟) | 速度优先,延迟低,适合高频轻量调用 |
wanx2.1-t2i-turbo | 通义万相 | 文生图(快速),见第 5 节 |
wanx2.1-t2i-plus | 通义万相 | 文生图(高质量),见第 5 节 |
模型名即路由:请求按 model 字段自动转发到对应上游,无需关心上游差异。新模型上架会在此页更新。
3对话接口 POST /chat/completions
请求参数
| 参数 | 类型 | 必填 | 说明 |
model | string | 是 | 模型 ID(见第 2 节清单,精确匹配,区分大小写) |
messages | array | 是 | 对话消息数组,role 为 system/user/assistant |
stream | bool | 否 | true 走 SSE 流式(见第 4 节),默认 false |
temperature | float | 否 | 采样温度,0~2,越小越确定,默认上游默认 |
max_tokens | int | 否 | 最大生成 token 数 |
top_p | float | 否 | 核采样参数,0~1 |
stop | string/array | 否 | 停止序列(上游支持时生效) |
presence_penalty | float | 否 | 话题新鲜度惩罚(上游支持时生效) |
未列出的 OpenAI 参数会原样透传给上游,上游不支持的参数会被其忽略。
非流式响应结构
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1787000000,
"model": "qwen-plus",
"choices": [{
"index": 0,
"message": {"role": "assistant", "content": "你好!"},
"finish_reason": "stop"
}],
"usage": {"prompt_tokens": 12, "completion_tokens": 61, "total_tokens": 73}
}
用量(usage)会同时记录在你的账户里,可在「我的 → API 中转站」查看今日/累计消耗。
4流式协议(SSE)
请求加 "stream": true 后,响应为 text/event-stream,逐行推送:
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":""}}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"你"}}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"好"}}]}
data: [DONE]
| 行格式 | data: 前缀 + JSON,行间以空行分隔 |
| 增量字段 | choices[0].delta.content 为新增文本片段,客户端自行拼接 |
| 结束标志 | data: [DONE](部分上游省略,连接关闭即结束) |
| 错误处理 | 上游异常时推送 data: {"error": {...}} 后结束 |
| 反向代理 | 已关闭响应缓冲(X-Accel-Buffering: no),逐字可达 |
5文生图 POST /images/generations
请求参数
| 参数 | 类型 | 必填 | 说明 |
model | string | 否 | wanx2.1-t2i-turbo(默认)/ wanx2.1-t2i-plus |
prompt | string | 是 | 画面描述,中英文均可,最长 800 字符 |
size | string | 否 | 1024x1024(默认)/ 720x1280 / 1280x720 |
n | int | 否 | 生成数量 1~4,默认 1 |
请求示例
curl https://aigcbox.com.cn/relay/v1/images/generations \
-H "Authorization: Bearer sk-xm-你的Key" \
-H "Content-Type: application/json" \
-d '{"model":"wanx2.1-t2i-turbo","prompt":"一只戴耳机的蓝色小企鹅,3D 卡通风格","size":"1024x1024","n":1}'
响应示例
{
"created": 1787000000,
"data": [{"url": "https://dashscope-xxx.aliyuncs.com/xxx.png", "revised_prompt": null}]
}
生成耗时约 10~60 秒(接口同步等待)。返回的 URL 为临时签名地址(约 24 小时有效),请及时下载保存。
6错误码
| HTTP | 含义 | 处理建议 |
| 400 | 参数错误(JSON 非法 / 模型不存在 / prompt 为空) | 检查 model 拼写与必填参数 |
| 401 | Key 无效、未开通或已重置 | 到「我的 → API 中转站」确认或重取 Key |
| 403 | 未达开通条件 | 累计充值满 ¥198 后自动开通 |
| 413 | 请求体超过 256KB | 拆分长上下文,或精简 messages |
| 429 | 触发限流(60 次/分钟) | 指数退避重试,或联系提升配额 |
| 502 | 上游接口异常 | 稍后重试;连续出现请联系客服 |
| 504 | 文生图超时(>120s) | 简化 prompt 重试 |
错误响应统一为 {"detail": "错误描述"}(JSON)。上游错误不会泄露上游密钥等内部信息。
7客户端接入
Codex CLI
# 方式一:环境变量(推荐)
export OPENAI_BASE_URL="https://aigcbox.com.cn/relay/v1"
export OPENAI_API_KEY="sk-xm-你的Key"
codex
# 方式二:~/.codex/config.toml
model = "qwen3-coder-plus"
model_provider = "xiaoming"
[model_providers.xiaoming]
name = "xiaoming"
base_url = "https://aigcbox.com.cn/relay/v1"
env_key = "XIAOMING_API_KEY"
wire_api = "chat"
图形客户端
| 客户端 | 配置方法 |
| Cursor | Settings → Models → OpenAI API Key 填 Key;Override OpenAI Base URL 填中转地址;模型名 qwen3-coder-plus |
| Cherry Studio | 设置 → 模型服务 → OpenAI → API 密钥填 Key,API 地址填中转地址,添加模型 |
| NextChat | 设置 → 自定义接口 → OpenAI → API Key + 自定义 Base URL |
| ChatBox | 设置 → AI 提供方 → OpenAI API → 密钥与 API 域名 |
| VSCode Continue / Cline | Provider 选 OpenAI Compatible,Base URL 与 Key 同上 |
| 沉浸式翻译 | 设置 → 翻译服务 → 自定义 OpenAI 接口 |
8代码示例
Python(openai SDK,含流式与异常处理)
from openai import OpenAI, APIError, RateLimitError
client = OpenAI(api_key="sk-xm-你的Key", base_url="https://aigcbox.com.cn/relay/v1")
# 非流式
resp = client.chat.completions.create(
model="qwen3-coder-plus",
messages=[{"role": "user", "content": "用 Python 写快排"}],
temperature=0.3,
)
print(resp.choices[0].message.content)
# 流式
stream = client.chat.completions.create(
model="qwen-plus",
messages=[{"role": "user", "content": "写一首短诗"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
# 异常处理
try:
client.chat.completions.create(model="qwen-plus", messages=[])
except RateLimitError:
# 429:退避重试
pass
except APIError as e:
print("调用失败:", e)
Node.js
import OpenAI from "openai";
const client = new OpenAI({ apiKey: "sk-xm-你的Key", baseURL: "https://aigcbox.com.cn/relay/v1" });
const resp = await client.chat.completions.create({
model: "qwen3-coder-plus",
messages: [{ role: "user", content: "你好" }],
});
console.log(resp.choices[0].message.content);
Java(OkHttp)
OkHttpClient client = new OkHttpClient();
String json = "{\"model\":\"qwen-plus\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}";
Request req = new Request.Builder()
.url("https://aigcbox.com.cn/relay/v1/chat/completions")
.addHeader("Authorization", "Bearer sk-xm-你的Key")
.post(RequestBody.create(json, MediaType.get("application/json")))
.build();
String body = client.newCall(req).execute().body().string();
Go
payload := strings.NewReader(`{"model":"qwen-plus","messages":[{"role":"user","content":"你好"}]}`)
req, _ := http.NewRequest("POST", "https://aigcbox.com.cn/relay/v1/chat/completions", payload)
req.Header.Set("Authorization", "Bearer sk-xm-你的Key")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
9用量与计费
| 价格 | 统一为官方刊例价的 50%(5 折),按上游实际 token 用量折算 |
| 查询用量 | 「我的 → API 中转站」实时显示:今日调用次数、累计次数、累计 token 消耗 |
| 限流 | 60 次/分钟/Key;更高并发需求联系微信 Aigc1668888 单独开通 |
| Key 安全 | Key 仅服务端哈希存储;泄露可在「我的」一键重置,旧 Key 立即失效 |
10FAQ
- Key 在哪里获取?
- 登录小鸣TV →「我的」→ API 中转站,自动签发(累计充值满 ¥198 开通)。
- 401 / 429 怎么处理?
- 401:Key 错误、未开通或刚重置过;429:触发限流,降速或做指数退避(建议 1s/2s/4s 重试)。
- 支持 function calling / vision 吗?
- 参数会透传,但取决于上游模型能力;多模态输入暂以文本对话为主,图片请走文生图接口。
- 返回的图片 URL 多久有效?
- 文生图返回的是上游临时签名 URL,约 24 小时有效,请下载后自行存储。
- 可以商用吗?并发多少?
- 可以商用。默认 60 次/分钟,企业级并发联系微信 Aigc1668888 评估。
- Key 泄露了怎么办?
- 「我的 → API 中转站」点「重置」秒换新 Key,旧 Key 即刻失效;也可联系微信处理。
- 我的请求内容会被存储吗?
- 仅记录调用元数据(时间、模型、token 用量、IP),不审查不存储对话内容。