OpenResponses API(HTTP)
OpenClaw 的 Gateway 可以提供一个兼容 OpenResponses 的POST /v1/responses 端点。
该端点 默认情况下是禁用的,需先在配置中启用。
POST /v1/responses- 与 Gateway 相同端口(WS 和 HTTP 复用):
http://<gateway-host>:<port>/v1/responses
openclaw agent 相同代码路径),因此路由/权限/配置与您的 Gateway 保持一致。
认证
使用 Gateway 的认证配置。发送 bearer token:Authorization: Bearer <token>
- 当
gateway.auth.mode="token"时,使用gateway.auth.token(或环境变量OPENCLAW_GATEWAY_TOKEN)。 - 当
gateway.auth.mode="password"时,使用gateway.auth.password(或环境变量OPENCLAW_GATEWAY_PASSWORD)。 - 如果配置了
gateway.auth.rateLimit且认证失败次数过多,端点将返回429并带有Retry-After。
安全边界(重要)
将此端点视为 Gateway 实例的 完全操作员访问 接口。- 此处的 HTTP bearer 认证不是狭义的单用户权限模型。
- 有效的 Gateway 令牌/密码用于此端点时,应视作拥有者/操作员凭证。
- 请求通过与受信操作员操作相同的控制平面代理路径执行。
- 如果目标代理策略允许敏感工具,该端点可以调用这些工具。
- 应将此端点仅限于环回接口、Tailnet 或私有入口,切勿直接暴露于公网。
选择代理
无须自定义头部:在 OpenResponses 的model 字段中编码代理 ID:
model: "openclaw:<agentId>"(示例:"openclaw:main"、"openclaw:beta")model: "agent:<agentId>"(别名)
x-openclaw-agent-id: <agentId>(默认:main)
x-openclaw-session-key: <sessionKey>用于完全控制会话路由。
启用该端点
设置gateway.http.endpoints.responses.enabled 为 true:
禁用该端点
设置gateway.http.endpoints.responses.enabled 为 false:
会话行为
默认情况下,该端点对每个请求无状态(每次调用都会生成新的会话密钥)。 如果请求中包含 OpenResponses 的user 字符串,Gateway 会基于它派生稳定的会话密钥,方便多次调用共享同一代理会话。
请求格式(支持)
请求遵循 OpenResponses API,基于项的输入。当前支持:input:字符串或项对象数组。instructions:合并进系统提示。tools:客户端工具定义(函数工具)。tool_choice:过滤或指定客户端工具。stream:启用 SSE 流式输出。max_output_tokens:尽力限制输出令牌数(依提供方而定)。user:稳定会话路由。
max_tool_callsreasoningmetadatastoreprevious_response_idtruncation
项(输入)
message
角色包含:system、developer、user、assistant。
system与developer内容附加到系统提示中。- 最近的
user或function_call_output项成为“当前消息”。 - 之前的用户/助手消息作为上下文历史包含。
function_call_output(基于回合的工具)
将工具结果发送回模型:
reasoning 和 item_reference
为兼容模式被接受,但生成提示时忽略。
工具(客户端函数工具)
工具定义例:function_call 输出项。
之后您可发送后续请求,包含 function_call_output 继续对话。
图片(input_image)
支持 base64 或 URL 来源:
image/jpeg、image/png、image/gif、image/webp、image/heic、image/heif。
最大尺寸(当前):10MB。
文件(input_file)
支持 base64 或 URL 来源:
text/plain、text/markdown、text/html、text/csv、application/json、application/pdf。
最大尺寸(当前):5MB。
当前行为说明:
- 文件内容解码后会添加进系统提示,而非用户消息,
因此内容是瞬时的(不会写入会话历史)。 - PDF 会被解析成文本。如果文本内容很少,将把前几页转为光栅图像传给模型。
pdfjs-dist 旧版构建(不使用 worker)。现代的 PDF.js 构建依赖浏览器 worker/DOM,全局对象,因此不在 Gateway 中使用。
URL 拉取默认:
files.allowUrl:trueimages.allowUrl:truemaxUrlParts:8(每请求基于 URL 的input_file+input_image总数限制)- 请求有保护机制(DNS 解析、私有 IP 阻断、重定向限制、超时限制)。
- 每个输入类型支持可选的主机名允入白名单(
files.urlAllowlist、images.urlAllowlist)。- 精确主机名示例:
"cdn.example.com" - 通配符子域示例:
"*.assets.example.com"(不匹配顶级域名)
- 精确主机名示例:
文件与图片限制(配置)
可在gateway.http.endpoints.responses 下调整默认值:
maxBodyBytes: 20MBmaxUrlParts: 8files.maxBytes: 5MBfiles.maxChars: 200kfiles.maxRedirects: 3files.timeoutMs: 10秒files.pdf.maxPages: 4files.pdf.maxPixels: 400万像素files.pdf.minTextChars: 200images.maxBytes: 10MBimages.maxRedirects: 3images.timeoutMs: 10秒- HEIC/HEIF
input_image源被接受,且在传递给提供方前转换成 JPEG 格式。
- URL 允许列表在拉取和重定向跳转时都会生效。
- 允许某个主机名不能绕过私有/内部 IP 阻断。
- 对于暴露于互联网的 Gateway,除了应用层保护,还应使用网络出口控制。
详情见 安全。
流式传输(SSE)
设置stream: true 可接收服务器发送事件(SSE):
Content-Type: text/event-stream- 每条事件包含
event: <type>和data: <json> - 流结束时发送
data: [DONE]
response.createdresponse.in_progressresponse.output_item.addedresponse.content_part.addedresponse.output_text.deltaresponse.output_text.doneresponse.content_part.doneresponse.output_item.doneresponse.completedresponse.failed(出错时)
使用率
当底层提供商报告令牌计数时,usage 字段会被填充。
错误
错误以 JSON 对象返回,如:401缺失/无效认证400请求体无效405请求方法错误