POST /v1/responses tương thích với OpenResponses. Endpoint này bị tắt theo mặc định và dùng chung cổng với Gateway (ghép kênh WS + HTTP): http://<gateway-host>:<port>/v1/responses.
Các yêu cầu chạy như một lượt chạy tác nhân Gateway thông thường (cùng đường dẫn mã với openclaw agent), vì vậy việc định tuyến, quyền và cấu hình khớp với Gateway của bạn.
Bật hoặc tắt bằng gateway.http.endpoints.responses.enabled. Khi được bật, cùng bề mặt tương thích này cũng cung cấp GET /v1/models, GET /v1/models/{id}, POST /v1/embeddings và POST /v1/chat/completions.
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:- Đường dẫn xác thực khớp với
gateway.auth.mode: chế độ bí mật dùng chung (token/password) sử dụngAuthorization: Bearer <token-or-password>; proxy đáng tin cậy sử dụng các tiêu đề proxy nhận biết danh tính (proxy loopback trên cùng máy chủ cầngateway.auth.trustedProxy.allowLoopback = true, với phương án dự phòng trực tiếp trên cùng máy chủ quagateway.auth.password/OPENCLAW_GATEWAY_PASSWORDkhi không có tiêu đềForwarded/X-Forwarded-*/X-Real-IP);nonetrên điểm truy cập riêng tư không cần tiêu đề xác thực. Xem Xác thực proxy đáng tin cậy. - Hãy coi endpoint này là quyền truy cập đầy đủ của người vận hành vào phiên bản Gateway.
- Các chế độ xác thực bằng bí mật dùng chung bỏ qua
x-openclaw-scopescó phạm vi hẹp hơn được khai báo trong bearer và khôi phục toàn bộ tập phạm vi mặc định của người vận hành:operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write. Các lượt trò chuyện trên endpoint này được xử lý như lượt từ người gửi là chủ sở hữu. - Các chế độ HTTP đáng tin cậy mang thông tin danh tính (proxy đáng tin cậy hoặc
gateway.auth.mode="none") tuân theox-openclaw-scopeskhi có, nếu không sẽ dùng tập phạm vi mặc định của người vận hành. Ngữ nghĩa chủ sở hữu chỉ bị mất khi bên gọi thu hẹp phạm vi một cách rõ ràng và bỏ quaoperator.admin. - Chọn tác nhân bằng
model: "openclaw","openclaw/default","openclaw/<agentId>"hoặc tiêu đềx-openclaw-agent-id. - Dùng
x-openclaw-modelđể ghi đè mô hình backend của tác nhân đã chọn (yêu cầuoperator.admintrên các đường dẫn xác thực mang thông tin danh tính). - Dùng
x-openclaw-session-keyđể định tuyến phiên một cách rõ ràng (bị từ chối bằng400 invalid_request_errornếu sử dụng không gian tên dành riêng:subagent:,cron:,acp:). - Dùng
x-openclaw-message-channelcho ngữ cảnh kênh truy cập tổng hợp không mặc định.
openclaw/default, việc chuyển tiếp embedding và ghi đè mô hình backend, hãy xem OpenAI Chat Completions.
Xem Phạm vi của người vận hành và Bảo mật.
Hành vi phiên
Theo mặc định, endpoint không lưu trạng thái theo từng yêu cầu (mỗi lần gọi tạo một khóa phiên mới). Nếu yêu cầu chứa chuỗi OpenResponsesuser, Gateway sẽ 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ể dùng chung một phiên tác nhân.
previous_response_id tái sử dụng phiên của phản hồi trước đó khi yêu cầu vẫn nằm trong cùng phạm vi tác nhân/người dùng/phiên được yêu cầu (được đối chiếu theo chủ thể xác thực, ID tác nhân và x-openclaw-session-key).
Cấu trúc yêu cầu
Các mục (đầu vào)
message
Vai trò: system, developer, user, assistant.
systemvàdeveloperđược nối thêm vào lời nhắc hệ thống.- Mục
userhoặcfunction_call_outputgần nhất trở thành “thông điệp hiện tại”. - Các thông điệp người dùng/trợ lý trước đó được đưa vào làm lịch sử để cung cấp ngữ cảnh.
function_call_output (công cụ theo lượt)
Gửi kết quả công cụ trở lại mô hình:
reasoning và item_reference
Được chấp nhận để tương thích với lược đồ nhưng bị bỏ qua khi tạo lời nhắc.
Công cụ (công cụ hàm phía máy khách)
Cung cấp công cụ bằngtools: [{ type: "function", name, description?, parameters? }].
Nếu tác nhân gọi một công cụ, phản hồi sẽ trả về một mục đầu ra function_call. Gửi yêu cầu tiếp theo với function_call_output để tiếp tục lượt.
Đối với tool_choice: "required" và tool_choice được ghim vào hàm, endpoint thu hẹp tập công cụ hàm phía máy khách được cung cấp, chỉ thị runtime gọi một công cụ phía máy khách trước khi phản hồi và từ chối lượt nếu lượt đó không chứa lệnh gọi công cụ phía máy khách có cấu trúc phù hợp, theo hợp đồng /v1/chat/completions. Các yêu cầu không truyền phát trả về 502 cùng với api_error; các yêu cầu truyền phát phát ra sự kiện response.failed.
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 (mặc định): 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 (mặc định): 5MB.
Hành vi hiện tại:
- Nội dung tệp được giải mã và thêm vào lời nhắc hệ thống, không phải thông điệp người dùng, vì vậy nội dung này chỉ tồn tại 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 bao bọc dưới dạng nội dung bên ngoài không đáng tin cậy trước khi được thêm vào, vì vậy các byte của tệp được xử lý như dữ liệu, không phải chỉ thị đáng tin cậy. Khối được chèn sử dụng các dấu phân cách ranh giới rõ ràng (
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>) và một dòng siêu dữ liệuSource: External. Khối này chủ ý bỏ qua biểu ngữSECURITY NOTICE:dài để tiết kiệm ngân sách lời nhắc; các dấu phân cách ranh giới và siêu dữ liệu vẫn được áp dụng. - PDF được phân tích để trích xuất văn bản trước. Nếu tìm thấy ít văn bản, các trang đầu tiên được raster hóa thành hình ảnh và chuyển đến mô hình, đồng thời khối tệp được chèn sử dụng phần giữ chỗ
[PDF content rendered to images].
document-extract đi kèm cung cấp; Plugin này sử dụng clawpdf và runtime WebAssembly PDFium được đóng gói cùng để trích xuất văn bản và kết xuất trang.
Giá trị mặc định khi tìm nạp URL:
files.allowUrl:trueimages.allowUrl:truemaxUrlParts:8(tổng số phầninput_file+input_imagedựa trên URL trong mỗi yêu cầu)- Các yêu cầu được bảo vệ (phân giải DNS, chặn IP riêng tư, giới hạn chuyển hướng, thời gian chờ).
- Hỗ trợ danh sách cho phép tên máy chủ tùy chọn cho từng loại đầu vào (
files.urlAllowlist,images.urlAllowlist): máy chủ chính xác ("cdn.example.com") hoặc miền con ký tự đại diện ("*.assets.example.com", không khớp với miền gốc). Danh sách cho phép trống hoặc bị bỏ qua có nghĩa là không có hạn chế theo danh sách cho phép tên máy chủ. - Để tắt hoàn toàn việc tìm nạp dựa trên URL, hãy đặt
files.allowUrl: falsevà/hoặcimages.allowUrl: false.
Giới hạn tệp và hình ảnh
Endpoint sử dụng giới hạn tích hợp 20 MB cho phần thân yêu cầu. Chính sách nguồn tệp và hình ảnh vẫn có thể cấu hình tronggateway.http.endpoints.responses:
Các nguồn HEIC/HEIF
input_image được chuẩn hóa thành JPEG trước khi chuyển đến nhà cung cấp thông qua trình xử lý hình ảnh dùng chung của OpenClaw (Rastermill); trình xử lý này sẽ dùng trình chuyển đổi hệ thống (sips, ImageMagick, GraphicsMagick hoặc ffmpeg) làm phương án dự phòng cho các định dạng cần hỗ trợ codec bên ngoài.
Lưu ý bảo mật: danh sách URL cho phép được thực thi trước khi tìm nạp và tại mỗi bước chuyển hướng. Việc cho phép một tên máy chủ không vô hiệu hóa cơ chế chặn địa chỉ IP riêng/nội bộ. Đối với các Gateway tiếp xúc với Internet, hãy áp dụng biện pháp kiểm soát lưu lượng mạng đi ra bên cạnh các biện pháp bảo vệ ở cấp ứng dụng. Xem Bảo mật.
Truyền phát (SSE)
Đặtstream: true để nhận Server-Sent Events:
Content-Type: text/event-stream- Mỗi dòng sự kiện là
event: <type>vàdata: <json> - Luồng kết thúc bằng
data: [DONE]
response.created, response.in_progress, response.output_item.added, response.content_part.added, response.output_text.delta, response.output_text.done, response.content_part.done, response.output_item.done, response.completed, response.failed (khi xảy ra lỗi).
Mức sử dụng
usage được điền khi nhà cung cấp bên dưới báo cáo số lượng token. OpenClaw chuẩn hóa các bí danh phổ biến theo kiểu OpenAI trước khi các bộ đếm này được chuyển đến các bề mặt trạng thái/phiên ở hạ nguồn, bao gồm input_tokens / output_tokens và prompt_tokens / completion_tokens.
Lỗi
Lỗi sử dụng một đối tượng JSON như sau:400 nội dung yêu cầu không hợp lệ, 401 thiếu/xác thực không hợp lệ, 403 thiếu phạm vi operator, 405 sai phương thức, 429 có quá nhiều lần xác thực thất bại (kèm Retry-After).