OpenResponses API (HTTP)
Gateway OpenClaw може надавати OpenResponses-сумісний endpointPOST /v1/responses.
Цей endpoint типово вимкнений. Спочатку увімкніть його в конфігурації.
POST /v1/responses- Той самий порт, що й у Gateway (WS + HTTP multiplexer):
http://<gateway-host>:<port>/v1/responses
openclaw agent), тому маршрутизація/дозволи/конфігурація збігаються з вашим Gateway.
Автентифікація, безпека та маршрутизація
Операційна поведінка збігається з OpenAI Chat Completions:- використовуйте відповідний шлях HTTP-автентифікації Gateway:
- автентифікація через спільний секрет (
gateway.auth.mode="token"або"password"):Authorization: Bearer <token-or-password> - автентифікація через trusted-proxy (
gateway.auth.mode="trusted-proxy"): заголовки проксі з урахуванням ідентичності від налаштованого не-loopback trusted proxy source - відкрита автентифікація для приватного ingress (
gateway.auth.mode="none"): без заголовка автентифікації
- автентифікація через спільний секрет (
- розглядайте цей endpoint як повний операторський доступ до екземпляра gateway
- для режимів автентифікації через спільний секрет (
tokenіpassword) ігноруйте вужчі значенняx-openclaw-scopes, оголошені в bearer, і відновлюйте звичайні типові операторські значення - для довірених HTTP-режимів з передаванням ідентичності (наприклад, trusted proxy auth або
gateway.auth.mode="none") враховуйтеx-openclaw-scopes, якщо він присутній, і в іншому разі використовуйте звичайний типовий набір операторських scope - вибирайте агентів через
model: "openclaw",model: "openclaw/default",model: "openclaw/<agentId>"абоx-openclaw-agent-id - використовуйте
x-openclaw-model, якщо хочете перевизначити бекенд-модель вибраного агента - використовуйте
x-openclaw-session-keyдля явної маршрутизації сесії - використовуйте
x-openclaw-message-channel, якщо вам потрібен нетиповий синтетичний контекст каналу ingress
gateway.auth.mode="token"або"password"+Authorization: Bearer ...- доводить володіння спільним операторським секретом gateway
- ігнорує вужчі
x-openclaw-scopes - відновлює повний типовий набір операторських scope:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - трактує чат-ходи на цьому endpoint як ходи від відправника-власника
- довірені HTTP-режими з передаванням ідентичності (наприклад trusted proxy auth або
gateway.auth.mode="none"на приватному ingress)- враховують
x-openclaw-scopes, коли цей заголовок присутній - використовують звичайний типовий набір операторських scope, коли заголовок відсутній
- втрачають семантику власника лише тоді, коли виклик явно звужує scope і пропускає
operator.admin
- враховують
gateway.http.endpoints.responses.enabled.
Та сама поверхня сумісності також включає:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completions
openclaw/default, passthrough embeddings і перевизначення бекенд-моделі, див. у OpenAI Chat Completions і Список моделей і маршрутизація агентів.
Поведінка сесій
Типово endpoint є безстановим для кожного запиту (для кожного виклику генерується новий ключ сесії). Якщо запит містить рядокuser OpenResponses, Gateway виводить з нього стабільний ключ сесії,
щоб повторні виклики могли спільно використовувати одну сесію агента.
Форма запиту (що підтримується)
Запит відповідає OpenResponses API з item-орієнтованим input. Наразі підтримується:input: рядок або масив item-об’єктів.instructions: об’єднується із системним prompt.tools: означення клієнтських інструментів (function tools).tool_choice: фільтрувати або вимагати клієнтські інструменти.stream: вмикає потокове передавання SSE.max_output_tokens: best-effort обмеження виводу (залежить від провайдера).user: стабільна маршрутизація сесії.
max_tool_callsreasoningmetadatastoretruncation
previous_response_id: OpenClaw повторно використовує сесію попередньої відповіді, коли запит лишається в межах тієї самої області агента/користувача/запитаної сесії.
Items (input)
message
Ролі: system, developer, user, assistant.
systemіdeveloperдодаються до системного prompt.- Найновіший item
userабоfunction_call_outputстає “поточним повідомленням”. - Попередні повідомлення user/assistant включаються як історія для контексту.
function_call_output (інструменти по ходах)
Надішліть результати інструментів назад моделі:
reasoning і item_reference
Приймаються для сумісності зі схемою, але ігноруються під час побудови prompt.
Інструменти (клієнтські function tools)
Надавайте інструменти черезtools: [{ type: "function", function: { name, description?, parameters? } }].
Якщо агент вирішить викликати інструмент, у відповіді повернеться item виводу 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.
Поточна поведінка:
- Вміст файлу декодується і додається до системного prompt, а не до повідомлення користувача, щоб він залишався ефемерним (не зберігався в історії сесії).
- Декодований текст файлу загортається як недовірений зовнішній вміст перед додаванням, тому байти файлу трактуються як дані, а не як довірені інструкції.
- Вставлений блок файлу використовує явні маркери меж, такі як
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>, і містить рядок метаданихSource: External. - Цей шлях file-input навмисно пропускає довгий банер
SECURITY NOTICE:, щоб зберегти бюджет prompt; маркери меж і метадані все одно залишаються. - Для PDF спочатку виконується розбір тексту. Якщо тексту знайдено мало, перші сторінки
растеризуються в зображення і передаються моделі, а вставлений блок файлу використовує
заповнювач
[PDF content rendered to images].
pdfjs-dist (без worker). Сучасна
збірка PDF.js очікує browser worker/DOM globals, тому в Gateway вона не використовується.
Типові параметри URL fetch:
files.allowUrl:trueimages.allowUrl:truemaxUrlParts:8(загальна кількість URL-базованих частинinput_file+input_imageна запит)- Запити захищені (DNS resolution, блокування приватних IP, ліміти redirect, тайм-аути).
- Для кожного типу input підтримуються необов’язкові allowlist хостів (
files.urlAllowlist,images.urlAllowlist).- Точний хост:
"cdn.example.com" - Піддомени за шаблоном:
"*.assets.example.com"(не збігається з apex) - Порожній або пропущений allowlist означає відсутність обмеження на список дозволених хостів.
- Точний хост:
- Щоб повністю вимкнути URL-базовані fetch, установіть
files.allowUrl: falseі/абоimages.allowUrl: false.
Обмеження для файлів і зображень (конфігурація)
Типові значення можна налаштувати вgateway.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- Джерела
input_imageу HEIC/HEIF приймаються і нормалізуються до JPEG перед передаванням провайдеру.
- Списки дозволених URL застосовуються до fetch і на кожному redirect.
- Дозвіл для hostname не обходить блокування приватних/внутрішніх IP.
- Для gateway, відкритих в інтернет, застосовуйте контроль мережевого egress на додачу до захисту на рівні застосунку. Див. Security.
Потокове передавання (SSE)
Установітьstream: true, щоб отримувати події Server-Sent Events (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 заповнюється, коли базовий провайдер повідомляє кількість token.
OpenClaw нормалізує поширені псевдоніми в стилі OpenAI до того, як ці лічильники потрапляють
у downstream-поверхні status/session, включно з input_tokens / output_tokens
і prompt_tokens / completion_tokens.
Помилки
Помилки використовують JSON-об’єкт такого вигляду:401відсутня/некоректна автентифікація400некоректне тіло запиту405неправильний метод