POST /v1/responses. Її вимкнено за замовчуванням, і вона використовує спільний порт із Gateway (мультиплексування WS + HTTP): http://<gateway-host>:<port>/v1/responses.
Запити виконуються як звичайний запуск агента Gateway (тим самим шляхом коду, що й openclaw agent), тому маршрутизація, дозволи та конфігурація відповідають вашому Gateway.
Увімкніть або вимкніть її за допомогою gateway.http.endpoints.responses.enabled. Коли її ввімкнено, ця сама поверхня сумісності також обслуговує GET /v1/models, GET /v1/models/{id}, POST /v1/embeddings і POST /v1/chat/completions.
Автентифікація, безпека та маршрутизація
Робоча поведінка відповідає OpenAI Chat Completions:- Шлях автентифікації відповідає
gateway.auth.mode: режим зі спільним секретом (token/password) використовуєAuthorization: Bearer <token-or-password>; режим довіреного проксі використовує заголовки проксі з даними ідентичності (для проксі local loopback на тому самому хості потрібнеgateway.auth.trustedProxy.allowLoopback = true, а коли немає заголовкаForwarded/X-Forwarded-*/X-Real-IP, доступний прямий резервний варіант на тому самому хості черезgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD); режимnoneдля приватного вхідного трафіку не потребує заголовка автентифікації. Див. Автентифікація через довірений проксі. - Розглядайте цю кінцеву точку як повний операторський доступ до екземпляра Gateway.
- Режими автентифікації зі спільним секретом ігнорують вужчі області доступу
x-openclaw-scopes, заявлені в bearer-токені, і відновлюють повний стандартний набір операторських областей доступу:operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write. Репліки чату на цій кінцевій точці вважаються репліками відправника-власника. - Довірені HTTP-режими з даними ідентичності (довірений проксі або
gateway.auth.mode="none") ураховуютьx-openclaw-scopes, якщо його вказано; інакше використовують стандартний набір операторських областей доступу. Семантика власника втрачається лише тоді, коли викликач явно звужує області доступу й не вказуєoperator.admin. - Вибирайте агентів за допомогою
model: "openclaw","openclaw/default","openclaw/<agentId>"або заголовкаx-openclaw-agent-id. - Використовуйте
x-openclaw-model, щоб перевизначити модель бекенду вибраного агента (для шляхів автентифікації з даними ідентичності потрібна область доступуoperator.admin). - Використовуйте
x-openclaw-session-keyдля явної маршрутизації сеансу (запит відхиляється з400 invalid_request_error, якщо ключ використовує зарезервований простір імен:subagent:,cron:,acp:). - Використовуйте
x-openclaw-message-channelдля нестандартного контексту синтетичного каналу вхідного трафіку.
openclaw/default, наскрізного передавання вкладень і перевизначень моделей бекенду див. в OpenAI Chat Completions.
Див. Операторські області доступу і Безпека.
Поведінка сеансу
За замовчуванням кінцева точка є безстановою для кожного запиту (для кожного виклику генерується новий ключ сеансу). Якщо запит містить рядок OpenResponsesuser, Gateway виводить із нього стабільний ключ сеансу, щоб повторні виклики могли спільно використовувати сеанс агента.
previous_response_id повторно використовує сеанс попередньої відповіді, якщо запит залишається в межах тієї самої області агента, користувача й запитаного сеансу (зіставлення виконується за суб’єктом автентифікації, ідентифікатором агента та x-openclaw-session-key).
Структура запиту
Елементи (input)
message
Ролі: system, developer, user, assistant.
systemіdeveloperдодаються до системного запиту.- Найновіший елемент
userабоfunction_call_outputстає «поточним повідомленням». - Попередні повідомлення користувача й асистента включаються як історія для контексту.
function_call_output (інструменти на основі реплік)
Надсилайте результати інструментів назад моделі:
reasoning та item_reference
Приймаються для сумісності зі схемою, але ігноруються під час формування запиту.
Інструменти (клієнтські функціональні інструменти)
Надавайте інструменти за допомогоюtools: [{ type: "function", name, description?, parameters? }].
Якщо агент викликає інструмент, відповідь повертає вихідний елемент function_call. Щоб продовжити репліку, надішліть наступний запит із function_call_output.
Для tool_choice: "required" і tool_choice, закріпленого за функцією, кінцева точка звужує набір доступних клієнтських функціональних інструментів, вказує середовищу виконання викликати клієнтський інструмент перед відповіддю та відхиляє репліку, якщо вона не містить відповідного структурованого виклику клієнтського інструмента, згідно з контрактом /v1/chat/completions. Непотокові запити повертають 502 з api_error; потокові запити генерують подію response.failed.
Зображення (input_image)
Підтримуються джерела у форматі base64 або URL:
image/jpeg, image/png, image/gif, image/webp, image/heic, image/heif. Максимальний розмір (за замовчуванням): 10 МБ.
Файли (input_file)
Підтримуються джерела у форматі base64 або URL:
text/plain, text/markdown, text/html, text/csv, application/json, application/pdf. Максимальний розмір (за замовчуванням): 5 МБ.
Поточна поведінка:
- Вміст файлу декодується й додається до системного запиту, а не до повідомлення користувача, тому він залишається тимчасовим (не зберігається в історії сеансу).
- Декодований текст файлу перед додаванням обгортається як ненадійний зовнішній вміст, тому байти файлу розглядаються як дані, а не як довірені інструкції. Вставлений блок використовує явні маркери меж (
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>) і рядок метаданихSource: External. У ньому навмисно пропущено довгий банерSECURITY NOTICE:, щоб зберегти бюджет запиту; маркери меж і метадані все одно застосовуються. - Спочатку з PDF видобувається текст. Якщо тексту знайдено мало, перші сторінки растеризуються в зображення й передаються моделі, а вставлений блок файлу використовує заповнювач
[Вміст PDF відтворено як зображення].
document-extract, який використовує clawpdf і його упаковане середовище виконання PDFium WebAssembly для видобування тексту та відтворення сторінок.
Початкові параметри отримання за URL:
files.allowUrl:trueimages.allowUrl:truemaxUrlParts:8(загальна кількість частинinput_file+input_imageна основі URL в одному запиті)- Запити захищені (розв’язання DNS, блокування приватних IP-адрес, обмеження переспрямувань, тайм-аути).
- Для кожного типу вхідних даних підтримуються необов’язкові списки дозволених імен хостів (
files.urlAllowlist,images.urlAllowlist): точний хост ("cdn.example.com") або піддомени з груповим символом ("*.assets.example.com", не відповідає кореневому домену). Порожні або пропущені списки дозволів означають відсутність обмежень за іменами хостів. - Щоб повністю вимкнути отримання за URL, задайте
files.allowUrl: falseта/абоimages.allowUrl: false.
Обмеження файлів і зображень (конфігурація)
Значення за замовчуванням можна налаштувати вgateway.http.endpoints.responses:
Джерела
input_image у форматах HEIC/HEIF нормалізуються до JPEG перед передаванням провайдеру через спільний процесор зображень OpenClaw (Rastermill), який використовує системний конвертер (sips, ImageMagick, GraphicsMagick або ffmpeg) як резервний варіант для форматів, що потребують підтримки зовнішнього кодека.
Примітка щодо безпеки: списки дозволених URL застосовуються перед отриманням і на кожному етапі переспрямування. Додавання імені хоста до списку дозволів не обходить блокування приватних або внутрішніх IP-адрес. Для Gateway, доступних з інтернету, застосовуйте засоби контролю вихідного мережевого трафіку на додачу до захисту на рівні застосунку. Див. Безпека.
Потокове передавання (SSE)
Задайтеstream: true, щоб отримувати події, надіслані сервером:
Content-Type: text/event-stream- Кожен рядок події має формат
event: <type>іdata: <json> - Потік завершується рядком
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 (у разі помилки).
Використання
Полеusage заповнюється, коли базовий постачальник повідомляє кількість токенів. OpenClaw нормалізує поширені псевдоніми у стилі OpenAI, перш ніж ці лічильники потрапляють до подальших поверхонь стану та сеансів, зокрема input_tokens / output_tokens і prompt_tokens / completion_tokens.
Помилки
Для помилок використовується об’єкт JSON такого вигляду:400 — недійсне тіло запиту, 401 — автентифікація відсутня або недійсна, 403 — відсутня область доступу оператора, 405 — неправильний метод, 429 — забагато невдалих спроб автентифікації (із заголовком Retry-After).