POST /v1/responses-eindpunt aanbieden.
Dit eindpunt is standaard uitgeschakeld. Schakel het eerst in de configuratie in.
POST /v1/responses- Dezelfde poort als de Gateway (WS + HTTP-multiplex):
http://<gateway-host>:<port>/v1/responses
openclaw agent), dus routing/machtigingen/configuratie komen overeen met je Gateway.
Authenticatie, beveiliging en routing
Operationeel gedrag komt overeen met OpenAI Chat Completions:- gebruik het overeenkomende Gateway HTTP-authenticatiepad:
- shared-secret-authenticatie (
gateway.auth.mode="token"of"password"):Authorization: Bearer <token-or-password> - trusted-proxy-authenticatie (
gateway.auth.mode="trusted-proxy"): identiteitsbewuste proxyheaders van een geconfigureerde vertrouwde proxybron; same-host loopback-proxy’s vereisen explicietgateway.auth.trustedProxy.allowLoopback = true - trusted-proxy lokale directe fallback: same-host aanroepers zonder
Forwarded-,X-Forwarded-*- ofX-Real-IP-headers kunnengateway.auth.password/OPENCLAW_GATEWAY_PASSWORDgebruiken - private-ingress open authenticatie (
gateway.auth.mode="none"): geen auth-header
- shared-secret-authenticatie (
- behandel het eindpunt als volledige operatortoegang voor de gateway-instantie
- negeer voor shared-secret-authenticatiemodi (
tokenenpassword) smallere bearer-gedeclareerdex-openclaw-scopes-waarden en herstel de normale volledige operatorstandaarden - respecteer voor vertrouwde identiteitsdragende HTTP-modi (bijvoorbeeld trusted-proxy-authenticatie of
gateway.auth.mode="none")x-openclaw-scopeswanneer aanwezig en val anders terug op de normale standaardset operatorscopes - selecteer agents met
model: "openclaw",model: "openclaw/default",model: "openclaw/<agentId>"ofx-openclaw-agent-id - gebruik
x-openclaw-modelwanneer je het backendmodel van de geselecteerde agent wilt overschrijven - gebruik
x-openclaw-session-keyvoor expliciete sessierouting - gebruik
x-openclaw-message-channelwanneer je een niet-standaard synthetische ingress-kanaalcontext wilt
gateway.auth.mode="token"of"password"+Authorization: Bearer ...- bewijst bezit van het gedeelde operatorgeheim van de gateway
- negeert smallere
x-openclaw-scopes - herstelt de volledige standaardset operatorscopes:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - behandelt chatbeurten op dit eindpunt als beurten van de eigenaar-afzender
- vertrouwde identiteitsdragende HTTP-modi (bijvoorbeeld trusted-proxy-authenticatie, of
gateway.auth.mode="none"op private ingress)- respecteren
x-openclaw-scopeswanneer de header aanwezig is - vallen terug op de normale standaardset operatorscopes wanneer de header ontbreekt
- verliezen alleen eigenaarssemantiek wanneer de aanroeper scopes expliciet vernauwt en
operator.adminweglaat
- respecteren
gateway.http.endpoints.responses.enabled.
Hetzelfde compatibiliteitsoppervlak bevat ook:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completions
openclaw/default, embeddings-pass-through en backendmodeloverschrijvingen samenhangen OpenAI Chat Completions en Modellijst en agentrouting.
Sessgedrag
Standaard is het eindpunt stateless per verzoek (bij elke aanroep wordt een nieuwe sessiesleutel gegenereerd). Als het verzoek een OpenResponses-user-tekenreeks bevat, leidt de Gateway daaruit een stabiele sessiesleutel af,
zodat herhaalde aanroepen een agentsessie kunnen delen.
Verzoekvorm (ondersteund)
Het verzoek volgt de OpenResponses-API met itemgebaseerde invoer. Huidige ondersteuning:input: tekenreeks of array van itemobjecten.instructions: samengevoegd in de systeemprompt.tools: clienttooldefinities (functietools).tool_choice:"auto","none","required"of{ "type": "function", "name": "..." }om clienttools te filteren of te vereisen.stream: schakelt SSE-streaming in.max_output_tokens: best-effort uitvoerlimiet (providerafhankelijk).temperature: best-effort samplingtemperatuur doorgestuurd naar de provider. Genegeerd door de op ChatGPT gebaseerde Codex Responses-backend, die vaste server-side sampling gebruikt.top_p: best-effort nucleus-sampling doorgestuurd naar de provider. Dezelfde Codex Responses-kanttekening als bijtemperature.user: stabiele sessierouting.
max_tool_callsreasoningmetadatastoretruncation
previous_response_id: OpenClaw hergebruikt de eerdere responsesessie wanneer het verzoek binnen dezelfde agent-/gebruiker-/aangevraagde-sessiescope blijft.
Items (invoer)
message
Rollen: system, developer, user, assistant.
systemendeveloperworden toegevoegd aan de systeemprompt.- Het meest recente
user- offunction_call_output-item wordt het “huidige bericht.” - Eerdere gebruikers-/assistentberichten worden als geschiedenis opgenomen voor context.
function_call_output (turn-based tools)
Stuur toolresultaten terug naar het model:
reasoning en item_reference
Geaccepteerd voor schemacompatibiliteit maar genegeerd bij het opbouwen van de prompt.
Tools (client-side functietools)
Lever tools aan mettools: [{ type: "function", name, description?, parameters? }].
Als de agent besluit een tool aan te roepen, retourneert de response een function_call-uitvoeritem.
Je stuurt daarna een vervolgverzoek met function_call_output om de beurt voort te zetten.
Voor tool_choice: "required" en functie-vastgezette tool_choice vernauwt het eindpunt de blootgestelde set clientfunctietools, instrueert het de runtime om een clienttool aan te roepen voordat er wordt geantwoord, en wijst het de beurt af als deze geen overeenkomende gestructureerde clienttoolaanroep bevat. Dit contract geldt voor de door de aanroeper aangeleverde HTTP-tools-lijst, niet voor elke interne OpenClaw-agenttool. Niet-streaming verzoeken retourneren 502 met een api_error; streamingverzoeken zenden een response.failed-event uit. Dit komt overeen met het /v1/chat/completions-contract.
Afbeeldingen (input_image)
Ondersteunt base64- of URL-bronnen:
image/jpeg, image/png, image/gif, image/webp, image/heic, image/heif.
Maximale grootte (huidig): 10MB.
Bestanden (input_file)
Ondersteunt base64- of URL-bronnen:
text/plain, text/markdown, text/html, text/csv,
application/json, application/pdf.
Maximale grootte (huidig): 5MB.
Huidig gedrag:
- Bestandsinhoud wordt gedecodeerd en toegevoegd aan de systeemprompt, niet aan het gebruikersbericht, zodat deze vluchtig blijft (niet persistent in de sessiegeschiedenis).
- Gedecodeerde bestandstekst wordt verpakt als niet-vertrouwde externe inhoud voordat deze wordt toegevoegd, zodat bestandsbytes als data worden behandeld, niet als vertrouwde instructies.
- Het geïnjecteerde blok gebruikt expliciete grensmarkeringen zoals
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>en bevat eenSource: External-metadataregel. - Dit bestandsinvoerpad laat bewust de lange
SECURITY NOTICE:-banner weg om promptbudget te behouden; de grensmarkeringen en metadata blijven wel aanwezig. - PDF’s worden eerst op tekst geparsed. Als er weinig tekst wordt gevonden, worden de eerste pagina’s
gerasterd naar afbeeldingen en aan het model doorgegeven, en gebruikt het geïnjecteerde bestandsblok
de placeholder
[PDF content rendered to images].
document-extract-Plugin, die
clawpdf en de meegeleverde PDFium WebAssembly-runtime gebruikt voor tekstextractie en
paginaweergave.
Standaarden voor URL-ophalen:
files.allowUrl:trueimages.allowUrl:truemaxUrlParts:8(totaal aantal URL-gebaseerdeinput_file+input_image-onderdelen per verzoek)- Verzoeken worden bewaakt (DNS-resolutie, blokkering van private IP’s, redirectlimieten, time-outs).
- Optionele hostnaam-allowlists worden per invoertype ondersteund (
files.urlAllowlist,images.urlAllowlist).- Exacte host:
"cdn.example.com" - Wildcard-subdomeinen:
"*.assets.example.com"(matcht de apex niet) - Lege of weggelaten allowlists betekenen geen hostnaam-allowlistbeperking.
- Exacte host:
- Stel
files.allowUrl: falseen/ofimages.allowUrl: falsein om URL-gebaseerd ophalen volledig uit te schakelen.
Limieten voor bestanden + afbeeldingen (configuratie)
Standaarden kunnen worden aangepast ondergateway.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-bronnen worden geaccepteerd wanneer een systeemconverter beschikbaar is en worden genormaliseerd naar JPEG voordat ze aan de provider worden geleverd. Ondersteunde converters zijn macOSsips, ImageMagick, GraphicsMagick of ffmpeg.
- URL-allowlists worden afgedwongen vóór het ophalen en bij redirect-hops.
- Het allowlisten van een hostnaam omzeilt blokkering van private/interne IP’s niet.
- Pas voor internetblootgestelde gateways netwerk-egresscontroles toe naast app-niveau bewaking. Zie Beveiliging.
Streaming (SSE)
Stelstream: true in om Server-Sent Events (SSE) te ontvangen:
Content-Type: text/event-stream- Elke eventregel is
event: <type>endata: <json> - Stream eindigt met
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(bij fout)
Gebruik
usage wordt gevuld wanneer de onderliggende provider tokenaantallen rapporteert.
OpenClaw normaliseert veelvoorkomende OpenAI-achtige aliassen voordat die tellers
downstream status-/sessieoppervlakken bereiken, waaronder input_tokens / output_tokens
en prompt_tokens / completion_tokens.
Fouten
Fouten gebruiken een JSON-object zoals:401ontbrekende/ongeldige authenticatie400ongeldige request body405verkeerde methode