POST /v1/responses.
Эта конечная точка по умолчанию отключена. Сначала включите ее в конфигурации.
POST /v1/responses- Тот же порт, что и у Gateway (мультиплексирование WS + HTTP):
http://<gateway-host>:<port>/v1/responses
openclaw agent), поэтому маршрутизация, разрешения и конфигурация соответствуют вашему Gateway.
Аутентификация, безопасность и маршрутизация
Операционное поведение соответствует OpenAI Chat Completions:- используйте соответствующий путь HTTP-аутентификации Gateway:
- аутентификация с общим секретом (
gateway.auth.mode="token"или"password"):Authorization: Bearer <token-or-password> - аутентификация через доверенный прокси (
gateway.auth.mode="trusted-proxy"): прокси-заголовки с учетом идентичности от настроенного доверенного источника прокси; прокси same-host loopback требуют явногоgateway.auth.trustedProxy.allowLoopback = true - локальный прямой резервный вариант для доверенного прокси: вызывающие на том же хосте без заголовков
Forwarded,X-Forwarded-*илиX-Real-IPмогут использоватьgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD - открытая аутентификация для приватного входящего трафика (
gateway.auth.mode="none"): без заголовка аутентификации
- аутентификация с общим секретом (
- рассматривайте конечную точку как полный операторский доступ к экземпляру gateway
- для режимов аутентификации с общим секретом (
tokenиpassword) игнорируйте более узкие значенияx-openclaw-scopes, объявленные bearer-токеном, и восстанавливайте обычные полные операторские значения по умолчанию - для доверенных HTTP-режимов с идентичностью (например, аутентификация через доверенный прокси или
gateway.auth.mode="none") учитывайтеx-openclaw-scopes, когда они присутствуют, иначе возвращайтесь к обычному набору операторских областей по умолчанию - выбирайте агентов с
model: "openclaw",model: "openclaw/default",model: "openclaw/<agentId>"илиx-openclaw-agent-id - используйте
x-openclaw-model, когда хотите переопределить backend-модель выбранного агента - используйте
x-openclaw-session-keyдля явной маршрутизации сессии - используйте
x-openclaw-message-channel, когда нужен нестандартный синтетический контекст входящего канала
gateway.auth.mode="token"или"password"+Authorization: Bearer ...- подтверждает владение общим операторским секретом gateway
- игнорирует более узкие
x-openclaw-scopes - восстанавливает полный операторский набор областей по умолчанию:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - рассматривает ходы чата на этой конечной точке как ходы отправителя-владельца
- доверенные HTTP-режимы с идентичностью (например, аутентификация через доверенный прокси или
gateway.auth.mode="none"для приватного входящего трафика)- учитывают
x-openclaw-scopes, когда заголовок присутствует - возвращаются к обычному операторскому набору областей по умолчанию, когда заголовок отсутствует
- теряют семантику владельца только тогда, когда вызывающий явно сужает области и опускает
operator.admin
- учитывают
gateway.http.endpoints.responses.enabled.
Та же поверхность совместимости также включает:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completions
openclaw/default, сквозная передача embeddings и переопределения backend-моделей сочетаются между собой, см. в OpenAI Chat Completions и Список моделей и маршрутизация агентов.
Поведение сессии
По умолчанию конечная точка не сохраняет состояние между запросами (при каждом вызове генерируется новый ключ сессии). Если запрос включает строку OpenResponsesuser, Gateway выводит из нее стабильный ключ сессии,
чтобы повторные вызовы могли совместно использовать сессию агента.
Форма запроса (поддерживается)
Запрос следует API OpenResponses с item-based input. Текущая поддержка:input: строка или массив объектов элементов.instructions: объединяется с системным prompt.tools: определения клиентских инструментов (function tools).tool_choice:"auto","none","required"или{ "type": "function", "name": "..." }для фильтрации или обязательного использования клиентских инструментов.stream: включает потоковую передачу SSE.max_output_tokens: best-effort ограничение вывода (зависит от provider).temperature: best-effort температура сэмплирования, передаваемая provider. Игнорируется backend Codex Responses на основе ChatGPT, который использует фиксированное серверное сэмплирование.top_p: best-effort nucleus sampling, передаваемый provider. То же предупреждение Codex Responses, что и дляtemperature.user: стабильная маршрутизация сессии.
max_tool_callsreasoningmetadatastoretruncation
previous_response_id: OpenClaw повторно использует более раннюю сессию ответа, когда запрос остается в пределах той же области агента/пользователя/запрошенной сессии.
Элементы (input)
message
Роли: system, developer, user, assistant.
systemиdeveloperдобавляются к системному prompt.- Самый последний элемент
userилиfunction_call_outputстановится «текущим сообщением». - Более ранние сообщения пользователя/ассистента включаются как история для контекста.
function_call_output (инструменты на основе хода)
Отправляйте результаты инструмента обратно модели:
reasoning и item_reference
Принимаются для совместимости схемы, но игнорируются при построении prompt.
Инструменты (клиентские function tools)
Предоставляйте инструменты сtools: [{ type: "function", name, description?, parameters? }].
Если агент решает вызвать инструмент, ответ возвращает выходной элемент function_call.
Затем отправьте последующий запрос с function_call_output, чтобы продолжить ход.
Для tool_choice: "required" и закрепленного за функцией tool_choice конечная точка сужает открытый набор клиентских function-tool, инструктирует runtime вызвать клиентский инструмент перед ответом и отклоняет ход, если он не включает соответствующий структурированный вызов клиентского инструмента. Этот контракт применяется к переданному вызывающим списку HTTP tools, а не ко всем внутренним инструментам агента OpenClaw. Непотоковые запросы возвращают 502 с api_error; потоковые запросы отправляют событие response.failed. Это соответствует контракту /v1/chat/completions.
Изображения (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. - Этот путь ввода файлов намеренно опускает длинный баннер
SECURITY NOTICE:, чтобы сохранить бюджет prompt; маркеры границ и метаданные при этом остаются на месте. - PDF сначала разбираются на текст. Если текста найдено мало, первые страницы
растеризуются в изображения и передаются модели, а вставленный файловый блок использует
placeholder
[PDF content rendered to images].
document-extract, который использует
clawpdf и его упакованный runtime PDFium WebAssembly для извлечения текста и
рендеринга страниц.
Настройки URL-fetch по умолчанию:
files.allowUrl:trueimages.allowUrl:truemaxUrlParts:8(всего частей на основе URLinput_file+input_imageна запрос)- Запросы защищены (разрешение DNS, блокировка приватных IP, ограничения перенаправлений, таймауты).
- Поддерживаются необязательные списки разрешенных имен хостов для каждого типа ввода (
files.urlAllowlist,images.urlAllowlist).- Точный хост:
"cdn.example.com" - Подстановочные поддомены:
"*.assets.example.com"(не совпадает с apex) - Пустые или опущенные списки разрешений означают отсутствие ограничения по списку разрешенных хостов.
- Точный хост:
- Чтобы полностью отключить fetch на основе URL, задайте
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- Источники HEIC/HEIF
input_imageпринимаются, когда доступен системный конвертер, и нормализуются в JPEG перед доставкой provider. Поддерживаемые конвертеры: macOSsips, ImageMagick, GraphicsMagick или ffmpeg.
- Списки разрешенных URL применяются перед fetch и на шагах перенаправления.
- Внесение имени хоста в список разрешенных не обходит блокировку приватных/внутренних IP.
- Для gateway, доступных из интернета, применяйте сетевые ограничения исходящего трафика в дополнение к защитам на уровне приложения. См. Безопасность.
Потоковая передача (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 заполняется, когда базовый provider сообщает счетчики токенов.
OpenClaw нормализует распространенные псевдонимы в стиле OpenAI до того, как эти счетчики попадут
в последующие поверхности статуса/сессии, включая input_tokens / output_tokens
и prompt_tokens / completion_tokens.
Ошибки
Ошибки используют JSON-объект вида:401отсутствует/недействительна аутентификация400недействительное тело запроса405неправильный метод