OpenResponses API (HTTP)
Das Gateway von OpenClaw kann einen OpenResponses-kompatiblen EndpunktPOST /v1/responses bereitstellen.
Dieser Endpunkt ist standardmäßig deaktiviert. Aktivieren Sie ihn zuerst in der Konfiguration.
POST /v1/responses- Derselbe Port wie das Gateway (WS + HTTP-Multiplexing):
http://<gateway-host>:<port>/v1/responses
openclaw agent), daher entsprechen Routing/Berechtigungen/Konfiguration Ihrem Gateway.
Authentifizierung, Sicherheit und Routing
Das Betriebsverhalten entspricht OpenAI Chat Completions:- Verwenden Sie den passenden Gateway-HTTP-Authentifizierungspfad:
- Shared-Secret-Authentifizierung (
gateway.auth.mode="token"oder"password"):Authorization: Bearer <token-or-password> - Trusted-Proxy-Authentifizierung (
gateway.auth.mode="trusted-proxy"): identitätsbewusste Proxy-Header aus einer konfigurierten nicht-loopback Trusted-Proxy-Quelle - offene Authentifizierung für privaten Ingress (
gateway.auth.mode="none"): kein Auth-Header
- Shared-Secret-Authentifizierung (
- Behandeln Sie den Endpunkt als vollständigen Operatorzugriff für die Gateway-Instanz
- Ignorieren Sie für Shared-Secret-Authentifizierungsmodi (
tokenundpassword) engere per Bearer deklarierte Werte inx-openclaw-scopesund stellen Sie die normalen vollständigen Operator-Standards wieder her - Beachten Sie für vertrauenswürdige identitätstragende HTTP-Modi (zum Beispiel Trusted-Proxy-Authentifizierung oder
gateway.auth.mode="none")x-openclaw-scopes, wenn der Header vorhanden ist, und greifen Sie andernfalls auf die normale Standardmenge der Operator-Scopes zurück - Wählen Sie Agenten mit
model: "openclaw",model: "openclaw/default",model: "openclaw/<agentId>"oderx-openclaw-agent-id - Verwenden Sie
x-openclaw-model, wenn Sie das Backend-Modell des ausgewählten Agenten überschreiben möchten - Verwenden Sie
x-openclaw-session-keyfür explizites Sitzungsrouting - Verwenden Sie
x-openclaw-message-channel, wenn Sie einen nicht standardmäßigen synthetischen Ingress-Kanalkontext möchten
gateway.auth.mode="token"oder"password"+Authorization: Bearer ...- weist den Besitz des gemeinsamen Gateway-Operator-Secrets nach
- ignoriert engere
x-openclaw-scopes - stellt die vollständige Standardmenge der Operator-Scopes wieder her:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - behandelt Chat-Turns an diesem Endpunkt als Owner-Sender-Turns
- vertrauenswürdige identitätstragende HTTP-Modi (zum Beispiel Trusted-Proxy-Authentifizierung oder
gateway.auth.mode="none"bei privatem Ingress)- beachten
x-openclaw-scopes, wenn der Header vorhanden ist - greifen auf die normale Standardmenge der Operator-Scopes zurück, wenn der Header fehlt
- verlieren die Owner-Semantik nur dann, wenn der Aufrufer die Scopes explizit einschränkt und
operator.adminweglässt
- beachten
gateway.http.endpoints.responses.enabled.
Dieselbe Kompatibilitätsoberfläche umfasst außerdem:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completions
openclaw/default, das Durchreichen von Embeddings und Überschreibungen von Backend-Modellen zusammenpassen, siehe OpenAI Chat Completions und Modellliste und Agent-Routing.
Sitzungsverhalten
Standardmäßig ist der Endpunkt zustandslos pro Anfrage (bei jedem Aufruf wird ein neuer Sitzungsschlüssel erzeugt). Wenn die Anfrage einen OpenResponses-Stringuser enthält, leitet das Gateway daraus einen stabilen Sitzungsschlüssel ab,
sodass wiederholte Aufrufe dieselbe Agentensitzung teilen können.
Anfrageform (unterstützt)
Die Anfrage folgt der OpenResponses API mit elementbasierter Eingabe. Aktueller Unterstützungsumfang:input: String oder Array von Elementobjekten.instructions: wird in den System-Prompt zusammengeführt.tools: Client-Tool-Definitionen (Function Tools).tool_choice: filtert Client-Tools oder verlangt sie.stream: aktiviert SSE-Streaming.max_output_tokens: Best-Effort-Ausgabelimit (providerabhängig).user: stabiles Sitzungsrouting.
max_tool_callsreasoningmetadatastoretruncation
previous_response_id: OpenClaw verwendet die frühere Antwortsitzung erneut, wenn die Anfrage innerhalb desselben Agenten-/Benutzer-/angeforderten Sitzungsbereichs bleibt.
Elemente (input)
message
Rollen: system, developer, user, assistant.
systemunddeveloperwerden an den System-Prompt angehängt.- Das neueste Element
useroderfunction_call_outputwird zur „aktuellen Nachricht“. - Frühere Benutzer-/Assistant-Nachrichten werden als Verlauf für den Kontext einbezogen.
function_call_output (turn-basierte Tools)
Senden Sie Tool-Ergebnisse an das Modell zurück:
reasoning und item_reference
Werden aus Kompatibilitätsgründen für das Schema akzeptiert, aber beim Erstellen des Prompts ignoriert.
Tools (Client-seitige Function Tools)
Stellen Sie Tools mittools: [{ type: "function", function: { name, description?, parameters? } }] bereit.
Wenn der Agent entscheidet, ein Tool aufzurufen, gibt die Antwort ein Ausgabeelement function_call zurück.
Sie senden dann eine Folgeanfrage mit function_call_output, um den Turn fortzusetzen.
Bilder (input_image)
Unterstützt base64- oder URL-Quellen:
image/jpeg, image/png, image/gif, image/webp, image/heic, image/heif.
Maximale Größe (aktuell): 10MB.
Dateien (input_file)
Unterstützt base64- oder URL-Quellen:
text/plain, text/markdown, text/html, text/csv,
application/json, application/pdf.
Maximale Größe (aktuell): 5MB.
Aktuelles Verhalten:
- Der Dateiinhalt wird dekodiert und dem System-Prompt hinzugefügt, nicht der Benutzernachricht, sodass er flüchtig bleibt (nicht im Sitzungsverlauf gespeichert).
- Dekodierter Dateitext wird als nicht vertrauenswürdiger externer Inhalt verpackt, bevor er hinzugefügt wird, sodass Dateibytes als Daten und nicht als vertrauenswürdige Anweisungen behandelt werden.
- Der eingefügte Block verwendet explizite Begrenzungsmarkierungen wie
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>und enthält eine MetadatenzeileSource: External. - Dieser Pfad für Dateieingaben lässt absichtlich das lange Banner
SECURITY NOTICE:weg, um Prompt-Budget zu sparen; die Begrenzungsmarkierungen und Metadaten bleiben dennoch erhalten. - PDFs werden zuerst auf Text geparst. Wenn wenig Text gefunden wird, werden die ersten Seiten
zu Bildern gerastert und an das Modell übergeben, und der eingefügte Dateiblock verwendet
den Platzhalter
[PDF content rendered to images].
pdfjs-dist-Legacy-Build (ohne Worker). Der moderne
PDF.js-Build erwartet Browser-Worker/DOM-Globals und wird daher im Gateway nicht verwendet.
Standardeinstellungen für URL-Fetch:
files.allowUrl:trueimages.allowUrl:truemaxUrlParts:8(Gesamtzahl URL-basierter Teileinput_file+input_imagepro Anfrage)- Anfragen werden geschützt (DNS-Auflösung, Blockierung privater IPs, Redirect-Limits, Timeouts).
- Optionale Hostname-Allowlists werden pro Eingabetyp unterstützt (
files.urlAllowlist,images.urlAllowlist).- Exakter Host:
"cdn.example.com" - Wildcard-Subdomains:
"*.assets.example.com"(entspricht nicht der Apex-Domain) - Leere oder fehlende Allowlists bedeuten keine Hostname-Allowlist-Einschränkung.
- Exakter Host:
- Um URL-basierte Fetches vollständig zu deaktivieren, setzen Sie
files.allowUrl: falseund/oderimages.allowUrl: false.
Datei- + Bildlimits (Konfiguration)
Standardeinstellungen können untergateway.http.endpoints.responses angepasst werden:
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-Quellen für
input_imagewerden akzeptiert und vor der Übergabe an den Provider zu JPEG normalisiert.
- URL-Allowlists werden vor dem Fetch und bei Redirect-Hops durchgesetzt.
- Das Zulassen eines Hostnamens umgeht nicht die Blockierung privater/interner IPs.
- Für Gateways mit Internetzugang sollten Sie zusätzlich zu den Schutzmechanismen auf Anwendungsebene Network-Egress-Kontrollen anwenden. Siehe Security.
Streaming (SSE)
Setzen Siestream: true, um Server-Sent Events (SSE) zu erhalten:
Content-Type: text/event-stream- Jede Ereigniszeile ist
event: <type>unddata: <json> - Der Stream endet mit
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(bei Fehlern)
Nutzung
usage wird ausgefüllt, wenn der zugrunde liegende Provider Token-Zähler meldet.
OpenClaw normalisiert gängige OpenAI-ähnliche Aliase, bevor diese Zähler in
nachgelagerte Status-/Sitzungsoberflächen gelangen, einschließlich input_tokens / output_tokens
und prompt_tokens / completion_tokens.
Fehler
Fehler verwenden ein JSON-Objekt wie:401fehlende/ungültige Authentifizierung400ungültiger Anfrage-Body405falsche Methode