Responses API(OpenAI 兼容)
OpenAI Responses 透传 POST /v1/responses,以及可选的有状态会话子路由(读取/取消/输入项)。
无界模型云提供 OpenAI Responses API 兼容入口 POST /v1/responses。它是 OpenAI Responses 协议的透传端点,也是 Codex CLI 的标准请求入口。已有 OpenAI Responses 客户端只需切换 Base、Key 与 provider 即可接入。
私有化部署 API 完全一致,仅需替换 Base 域名 → 企业私有化部署。
概览
- 端点:
POST https://api.tos.run/v1/responses(OpenAI Responses API 透传) - Base:
https://api.tos.run/v1(API 数据面;浏览器控制台是https://ai.tos.run,不要用作 API Base) - 鉴权:
Authorization: Bearer <gk_...>,API Key 以gk_开头,在控制台创建 - 默认行为:纯透传——请求体直接转发上游,请求路径不变
必须声明 provider
/v1/responses 与 /v1/chat/completions 同源,采用相同的严格路由:每次请求都必须明确声明上游 provider,没有隐式回退。三种声明方式(优先级从高到低):
- URL 查询参数
?provider=X - 请求头
X-Provider: X(Codex CLI 在沙箱内常用此方式,因为它无法在base_url上追加查询串) - 请求体字段
body.provider
缺失或未知 provider 返回 400 invalid_request_error。可路由的 provider 见 Chat Completions 一节(anthropic / openai / dashscope / deepseek / gemini / kimi / openrouter)。
透传调用
curl "https://api.tos.run/v1/responses?provider=openai" \
-H "Authorization: Bearer $TOS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5-x",
"input": "用三句话介绍一下你自己。"
}'import os, requests
resp = requests.post(
"https://api.tos.run/v1/responses",
params={"provider": "openai"},
headers={
"Authorization": f"Bearer {os.environ['TOS_API_KEY']}",
"Content-Type": "application/json",
},
json={
"model": "gpt-5-x",
"input": "用三句话介绍一下你自己。",
},
)
print(resp.json())const resp = await fetch(
"https://api.tos.run/v1/responses?provider=openai",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TOS_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-5-x",
input: "用三句话介绍一下你自己。",
}),
},
);
console.log(await resp.json());默认(未开启有状态模式)下,/v1/responses 是纯透传:网关只做鉴权、路由、参数裁剪与计量,请求 / 响应体保持 OpenAI Responses 协议原样。具体请求 / 响应字段以 OpenAI Responses API 规范为准。
有状态会话子路由(可选)
当部署开启有状态模式(RESPONSES_STATEFUL_ENABLED=true)时,网关额外暴露一组基于 response.id 的有状态会话子路由:
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /v1/responses/{id} | 读取某次 response |
DELETE | /v1/responses/{id} | 删除某次 response |
GET | /v1/responses/{id}/input_items | 列出该 response 的输入项 |
POST | /v1/responses/{id}/cancel | 取消进行中的 response |
# 读取
curl "https://api.tos.run/v1/responses/resp_xxx" \
-H "Authorization: Bearer $TOS_API_KEY"
# 列出输入项
curl "https://api.tos.run/v1/responses/resp_xxx/input_items" \
-H "Authorization: Bearer $TOS_API_KEY"
# 取消
curl -X POST "https://api.tos.run/v1/responses/resp_xxx/cancel" \
-H "Authorization: Bearer $TOS_API_KEY"
# 删除
curl -X DELETE "https://api.tos.run/v1/responses/resp_xxx" \
-H "Authorization: Bearer $TOS_API_KEY"有状态子路由需要 API Key 鉴权,未鉴权返回 401,错误体为数据面的扁平结构:
{
"error": "missing_api_key",
"message": "API key required (Authorization: Bearer gk_...)"
}子路由仅在 RESPONSES_STATEFUL_ENABLED=true 时挂载;未开启时,/v1/responses 仅作为纯透传 POST 入口,子路径不可用。是否启用有状态模式由部署方决定,公有云以控制台 / 实际行为为准。
计费
按 usage 中的输入 / 输出 token 计量计费,单位 1M token。具体单价、可用模型与折扣以控制台 / 组织价格为准;组织专属价格、合同折扣优先级更高。