POST /v1/responses tương thích với OpenResponses.
Điểm cuối này bị tắt theo mặc định. Hãy bật trong cấu hình trước.
POST /v1/responses- Cùng cổng với Gateway (ghép kênh WS + HTTP):
http://<gateway-host>:<port>/v1/responses
openclaw agent), nên định tuyến/quyền/cấu hình khớp với Gateway của bạn.
Xác thực, bảo mật và định tuyến
Hành vi vận hành khớp với OpenAI Chat Completions:- dùng đường dẫn xác thực HTTP Gateway tương ứng:
- xác thực shared-secret (
gateway.auth.mode="token"hoặc"password"):Authorization: Bearer <token-or-password> - xác thực trusted-proxy (
gateway.auth.mode="trusted-proxy"): các header proxy nhận biết danh tính từ một nguồn trusted proxy đã cấu hình; proxy loopback cùng máy chủ yêu cầu đặt rõgateway.auth.trustedProxy.allowLoopback = true - fallback trực tiếp cục bộ trusted-proxy: caller cùng máy chủ không có header
Forwarded,X-Forwarded-*, hoặcX-Real-IPcó thể dùnggateway.auth.password/OPENCLAW_GATEWAY_PASSWORD - xác thực mở private-ingress (
gateway.auth.mode="none"): không có header xác thực
- xác thực shared-secret (
- xem điểm cuối này như quyền truy cập operator đầy đủ cho phiên bản gateway
- với các chế độ xác thực shared-secret (
tokenvàpassword), bỏ qua các giá trịx-openclaw-scopeshẹp hơn do bearer khai báo và khôi phục các mặc định operator đầy đủ bình thường - với các chế độ HTTP mang danh tính tin cậy (ví dụ xác thực trusted proxy hoặc
gateway.auth.mode="none"), tôn trọngx-openclaw-scopeskhi có và nếu không thì fallback về tập scope operator mặc định bình thường - chọn agent bằng
model: "openclaw",model: "openclaw/default",model: "openclaw/<agentId>", hoặcx-openclaw-agent-id - dùng
x-openclaw-modelkhi bạn muốn ghi đè model backend của agent đã chọn - dùng
x-openclaw-session-keyđể định tuyến phiên rõ ràng - dùng
x-openclaw-message-channelkhi bạn muốn một ngữ cảnh kênh ingress tổng hợp không mặc định
gateway.auth.mode="token"hoặc"password"+Authorization: Bearer ...- chứng minh quyền sở hữu bí mật operator gateway dùng chung
- bỏ qua
x-openclaw-scopeshẹp hơn - khôi phục tập scope operator mặc định đầy đủ:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - xem các lượt chat trên điểm cuối này là các lượt có người gửi là chủ sở hữu
- các chế độ HTTP mang danh tính tin cậy (ví dụ xác thực trusted proxy, hoặc
gateway.auth.mode="none"trên private ingress)- tôn trọng
x-openclaw-scopeskhi header có mặt - fallback về tập scope operator mặc định bình thường khi header vắng mặt
- chỉ mất ngữ nghĩa chủ sở hữu khi caller thu hẹp scope rõ ràng và bỏ qua
operator.admin
- tôn trọng
gateway.http.endpoints.responses.enabled.
Bề mặt tương thích tương tự cũng bao gồm:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completions
openclaw/default, pass-through embeddings và ghi đè model backend phối hợp với nhau, hãy xem OpenAI Chat Completions và Danh sách model và định tuyến agent.
Hành vi phiên
Theo mặc định, điểm cuối này không giữ trạng thái theo từng yêu cầu (một khóa phiên mới được tạo trong mỗi lần gọi). Nếu yêu cầu bao gồm chuỗi OpenResponsesuser, Gateway suy ra một khóa phiên ổn định
từ chuỗi đó, để các lần gọi lặp lại có thể chia sẻ một phiên agent.
Hình dạng yêu cầu (được hỗ trợ)
Yêu cầu tuân theo OpenResponses API với đầu vào dựa trên item. Hỗ trợ hiện tại:input: chuỗi hoặc mảng các object item.instructions: được hợp nhất vào system prompt.tools: định nghĩa tool client (function tools).tool_choice:"auto","none","required", hoặc{ "type": "function", "name": "..." }để lọc hoặc yêu cầu tool client.stream: bật SSE streaming.max_output_tokens: giới hạn đầu ra theo nỗ lực tối đa (phụ thuộc provider).temperature: nhiệt độ sampling theo nỗ lực tối đa được chuyển tiếp tới provider. Bị backend Codex Responses dựa trên ChatGPT bỏ qua vì backend này dùng sampling cố định phía server.top_p: nucleus sampling theo nỗ lực tối đa được chuyển tiếp tới provider. Có cùng lưu ý Codex Responses nhưtemperature.user: định tuyến phiên ổn định.
max_tool_callsreasoningmetadatastoretruncation
previous_response_id: OpenClaw tái sử dụng phiên response trước đó khi yêu cầu vẫn nằm trong cùng phạm vi agent/user/requested-session.
Item (input)
message
Vai trò: system, developer, user, assistant.
systemvàdeveloperđược nối thêm vào system prompt.- Item
userhoặcfunction_call_outputgần nhất trở thành “thông điệp hiện tại.” - Các thông điệp user/assistant trước đó được đưa vào làm lịch sử cho ngữ cảnh.
function_call_output (tool theo lượt)
Gửi kết quả tool trở lại model:
reasoning và item_reference
Được chấp nhận để tương thích schema nhưng bị bỏ qua khi xây dựng prompt.
Tool (function tool phía client)
Cung cấp tool bằngtools: [{ type: "function", name, description?, parameters? }].
Nếu agent quyết định gọi tool, response trả về một item đầu ra function_call.
Sau đó bạn gửi một yêu cầu tiếp theo với function_call_output để tiếp tục lượt.
Với tool_choice: "required" và tool_choice ghim function, điểm cuối thu hẹp tập function-tool client được phơi bày, chỉ dẫn runtime gọi một tool client trước khi phản hồi, và từ chối lượt nếu lượt đó không bao gồm một lệnh gọi client-tool có cấu trúc khớp. Hợp đồng này áp dụng cho danh sách HTTP tools do caller cung cấp, không phải mọi tool agent nội bộ của OpenClaw. Yêu cầu không streaming trả về 502 với api_error; yêu cầu streaming phát sự kiện response.failed. Điều này khớp với hợp đồng /v1/chat/completions.
Hình ảnh (input_image)
Hỗ trợ nguồn base64 hoặc URL:
image/jpeg, image/png, image/gif, image/webp, image/heic, image/heif.
Kích thước tối đa (hiện tại): 10MB.
Tệp (input_file)
Hỗ trợ nguồn base64 hoặc URL:
text/plain, text/markdown, text/html, text/csv,
application/json, application/pdf.
Kích thước tối đa (hiện tại): 5MB.
Hành vi hiện tại:
- Nội dung tệp được giải mã và thêm vào system prompt, không phải thông điệp user, nên nội dung này vẫn là tạm thời (không được lưu trong lịch sử phiên).
- Văn bản tệp đã giải mã được bọc dưới dạng nội dung bên ngoài không tin cậy trước khi được thêm vào, nên byte tệp được xử lý như dữ liệu, không phải chỉ dẫn đáng tin cậy.
- Khối được chèn dùng các marker ranh giới rõ ràng như
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>và bao gồm một dòng metadataSource: External. - Đường dẫn đầu vào tệp này chủ ý bỏ qua banner dài
SECURITY NOTICE:để giữ ngân sách prompt; các marker ranh giới và metadata vẫn được giữ nguyên. - PDF được phân tích văn bản trước. Nếu tìm thấy ít văn bản, các trang đầu tiên được
rasterize thành hình ảnh và chuyển cho model, còn khối tệp được chèn dùng
placeholder
[PDF content rendered to images].
document-extract đi kèm, dùng
clawpdf và runtime PDFium WebAssembly đóng gói của nó để trích xuất văn bản và
render trang.
Mặc định fetch URL:
files.allowUrl:trueimages.allowUrl:truemaxUrlParts:8(tổng số phầninput_file+input_imagedựa trên URL cho mỗi yêu cầu)- Yêu cầu được bảo vệ (phân giải DNS, chặn IP riêng, giới hạn redirect, timeout).
- Hỗ trợ allowlist hostname tùy chọn cho từng loại đầu vào (
files.urlAllowlist,images.urlAllowlist).- Host chính xác:
"cdn.example.com" - Subdomain wildcard:
"*.assets.example.com"(không khớp apex) - Allowlist rỗng hoặc bị bỏ qua nghĩa là không có hạn chế allowlist hostname.
- Host chính xác:
- Để tắt hoàn toàn fetch dựa trên URL, đặt
files.allowUrl: falsevà/hoặcimages.allowUrl: false.
Giới hạn tệp + hình ảnh (cấu hình)
Có thể tinh chỉnh mặc định tronggateway.http.endpoints.responses:
maxBodyBytes: 20MBmaxUrlParts: 8files.maxBytes: 5MBfiles.maxChars: 200kfiles.maxRedirects: 3files.timeoutMs: 10sfiles.pdf.maxPages: 4files.pdf.maxPixels: 4,000,000files.pdf.minTextChars: 200images.maxBytes: 10MBimages.maxRedirects: 3images.timeoutMs: 10s- Nguồn HEIC/HEIF
input_imageđược chấp nhận khi có bộ chuyển đổi hệ thống và được chuẩn hóa thành JPEG trước khi chuyển tới provider. Các bộ chuyển đổi được hỗ trợ làsipstrên macOS, ImageMagick, GraphicsMagick, hoặc ffmpeg.
- Allowlist URL được thực thi trước khi fetch và trên các hop redirect.
- Việc allowlist một hostname không bỏ qua chặn IP riêng/nội bộ.
- Với gateway phơi ra internet, hãy áp dụng kiểm soát egress mạng bên cạnh các guard cấp ứng dụng. Xem Bảo mật.
Streaming (SSE)
Đặtstream: true để nhận Server-Sent Events (SSE):
Content-Type: text/event-stream- Mỗi dòng sự kiện là
event: <type>vàdata: <json> - Stream kết thúc bằng
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(khi lỗi)
Sử dụng
usage được điền khi provider bên dưới báo cáo số lượng token.
OpenClaw chuẩn hóa các alias kiểu OpenAI phổ biến trước khi các bộ đếm đó tới
các bề mặt trạng thái/phiên downstream, bao gồm input_tokens / output_tokens
và prompt_tokens / completion_tokens.
Lỗi
Lỗi dùng một object JSON như:401thiếu/xác thực không hợp lệ400body yêu cầu không hợp lệ405sai method