Das Gateway von OpenClaw kann einen kleinen OpenAI-kompatiblen Chat-Completions-Endpunkt bereitstellen. Dieser Endpunkt ist standardmäßig deaktiviert. Aktivieren Sie ihn zuerst in der Konfiguration.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
POST /v1/chat/completions- Derselbe Port wie das Gateway (WS + HTTP-Multiplex):
http://<gateway-host>:<port>/v1/chat/completions
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/responses
openclaw agent), sodass Routing/Berechtigungen/Konfiguration Ihrem Gateway entsprechen.
Authentifizierung
Verwendet die Authentifizierungskonfiguration des Gateways. Übliche HTTP-Authentifizierungspfade:- Shared-Secret-Authentifizierung (
gateway.auth.mode="token"oder"password"):Authorization: Bearer <token-or-password> - vertrauenswürdige identitätstragende HTTP-Authentifizierung (
gateway.auth.mode="trusted-proxy"): Leiten Sie über den konfigurierten identitätsbewussten Proxy weiter und lassen Sie ihn die erforderlichen Identitäts-Header einfügen - offene Authentifizierung für privaten Ingress (
gateway.auth.mode="none"): kein Authentifizierungs-Header erforderlich
- Wenn
gateway.auth.mode="token"ist, verwenden Siegateway.auth.token(oderOPENCLAW_GATEWAY_TOKEN). - Wenn
gateway.auth.mode="password"ist, verwenden Siegateway.auth.password(oderOPENCLAW_GATEWAY_PASSWORD). - Wenn
gateway.auth.mode="trusted-proxy"ist, muss die HTTP-Anfrage von einer konfigurierten vertrauenswürdigen Proxy-Quelle kommen; local loopback-Proxys auf demselben Host erfordern explizitgateway.auth.trustedProxy.allowLoopback = true. - Wenn
gateway.auth.rateLimitkonfiguriert ist und zu viele Authentifizierungsfehler auftreten, gibt der Endpunkt429mitRetry-Afterzurück.
Sicherheitsgrenze (wichtig)
Behandeln Sie diesen Endpunkt als Oberfläche mit vollständigem Operator-Zugriff für die Gateway-Instanz.- HTTP-Bearer-Authentifizierung ist hier kein enges Scope-Modell pro Benutzer.
- Ein gültiges Gateway-Token/Passwort für diesen Endpunkt sollte wie Owner-/Operator-Anmeldedaten behandelt werden.
- Anfragen laufen über denselben Control-Plane-Agentenpfad wie vertrauenswürdige Operator-Aktionen.
- Für diesen Endpunkt gibt es keine separate Nicht-Owner-/Pro-Benutzer-Tool-Grenze; sobald ein Aufrufer hier die Gateway-Authentifizierung besteht, behandelt OpenClaw diesen Aufrufer als vertrauenswürdigen Operator für dieses Gateway.
- Für Shared-Secret-Authentifizierungsmodi (
tokenundpassword) stellt der Endpunkt die normalen vollständigen Operator-Standardwerte wieder her, selbst wenn der Aufrufer einen engerenx-openclaw-scopes-Header sendet. - Vertrauenswürdige identitätstragende HTTP-Modi (zum Beispiel vertrauenswürdige Proxy-Authentifizierung oder
gateway.auth.mode="none") berücksichtigenx-openclaw-scopes, wenn vorhanden, und fallen andernfalls auf die normale Standard-Scope-Menge für Operatoren zurück. - Wenn die Richtlinie des Ziel-Agenten sensible Tools erlaubt, kann dieser Endpunkt sie verwenden.
- Halten Sie diesen Endpunkt ausschließlich auf Loopback/Tailnet/privatem Ingress; setzen Sie ihn nicht direkt dem öffentlichen Internet aus.
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 Standard-Scope-Menge für Operatoren wieder her:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - behandelt Chat-Turns auf diesem Endpunkt als Owner-Sender-Turns
- vertrauenswürdige identitätstragende HTTP-Modi (zum Beispiel vertrauenswürdige Proxy-Authentifizierung oder
gateway.auth.mode="none"auf privatem Ingress)- authentifizieren eine äußere vertrauenswürdige Identität oder Deployment-Grenze
- berücksichtigen
x-openclaw-scopes, wenn der Header vorhanden ist - fallen auf die normale Standard-Scope-Menge für Operatoren zurück, wenn der Header fehlt
- verlieren Owner-Semantik nur, wenn der Aufrufer Scopes explizit einschränkt und
operator.adminauslässt
Agent-First-Modellvertrag
OpenClaw behandelt das OpenAI-Feldmodel als Agentenziel, nicht als rohe Provider-Modell-ID.
model: "openclaw"leitet an den konfigurierten Standard-Agenten weiter.model: "openclaw/default"leitet ebenfalls an den konfigurierten Standard-Agenten weiter.model: "openclaw/<agentId>"leitet an einen bestimmten Agenten weiter.
x-openclaw-model: <provider/model-or-bare-id>überschreibt das Backend-Modell für den ausgewählten Agenten.x-openclaw-agent-id: <agentId>bleibt als Kompatibilitätsüberschreibung unterstützt.x-openclaw-session-key: <sessionKey>steuert das Sitzungsrouting vollständig.x-openclaw-message-channel: <channel>legt den synthetischen Ingress-Channel-Kontext für Channel-bewusste Prompts und Richtlinien fest.
model: "openclaw:<agentId>"model: "agent:<agentId>"
Aktivieren des Endpunkts
Setzen Siegateway.http.endpoints.chatCompletions.enabled auf true:
Deaktivieren des Endpunkts
Setzen Siegateway.http.endpoints.chatCompletions.enabled auf false:
Sitzungsverhalten
Standardmäßig ist der Endpunkt pro Anfrage zustandslos (bei jedem Aufruf wird ein neuer Sitzungsschlüssel generiert). Wenn die Anfrage eine OpenAI-user-Zeichenfolge enthält, leitet das Gateway daraus einen stabilen Sitzungsschlüssel ab, sodass wiederholte Aufrufe eine Agentensitzung gemeinsam nutzen können.
Warum diese Oberfläche wichtig ist
Dies ist das wirkungsvollste Kompatibilitätsset für selbst gehostete Frontends und Tooling:- Die meisten Setups von Open WebUI, LobeChat und LibreChat erwarten
/v1/models. - Viele RAG-Systeme erwarten
/v1/embeddings. - Bestehende OpenAI-Chat-Clients können in der Regel mit
/v1/chat/completionsstarten. - Stärker agentennative Clients bevorzugen zunehmend
/v1/responses.
Modellliste und Agentenrouting
Was gibt `/v1/models` zurück?
Was gibt `/v1/models` zurück?
Eine OpenClaw-Agentenziel-Liste.Die zurückgegebenen IDs sind Einträge für
openclaw, openclaw/default und openclaw/<agentId>.
Verwenden Sie sie direkt als OpenAI-model-Werte.Listet `/v1/models` Agenten oder Sub-Agenten auf?
Listet `/v1/models` Agenten oder Sub-Agenten auf?
Es listet Top-Level-Agentenziele auf, keine Backend-Provider-Modelle und keine Sub-Agenten.Sub-Agenten bleiben interne Ausführungstopologie. Sie erscheinen nicht als Pseudo-Modelle.
Warum ist `openclaw/default` enthalten?
Warum ist `openclaw/default` enthalten?
openclaw/default ist der stabile Alias für den konfigurierten Standard-Agenten.Das bedeutet, dass Clients weiterhin eine vorhersehbare ID verwenden können, selbst wenn sich die echte Standard-Agenten-ID zwischen Umgebungen ändert.Wie überschreibe ich das Backend-Modell?
Wie überschreibe ich das Backend-Modell?
Verwenden Sie
x-openclaw-model.Beispiele:
x-openclaw-model: openai/gpt-5.4
x-openclaw-model: gpt-5.5Wenn Sie ihn weglassen, läuft der ausgewählte Agent mit seiner normal konfigurierten Modellauswahl.Wie passen Embeddings in diesen Vertrag?
Wie passen Embeddings in diesen Vertrag?
/v1/embeddings verwendet dieselben Agentenziel-model-IDs.Verwenden Sie model: "openclaw/default" oder model: "openclaw/<agentId>".
Wenn Sie ein bestimmtes Embedding-Modell benötigen, senden Sie es in x-openclaw-model.
Ohne diesen Header wird die Anfrage an das normale Embedding-Setup des ausgewählten Agenten weitergereicht.Streaming (SSE)
Setzen Siestream: true, um Server-Sent Events (SSE) zu empfangen:
Content-Type: text/event-stream- Jede Ereigniszeile ist
data: <json> - Der Stream endet mit
data: [DONE]
Chat-Tool-Vertrag
/v1/chat/completions unterstützt eine Function-Tool-Teilmenge, die mit gängigen OpenAI-Chat-Clients kompatibel ist.
Unterstützte Anfragefelder
tools: Array von{ "type": "function", "function": { ... } }tool_choice:"auto","none"messages[*].role: "tool"-Folge-Turnsmessages[*].tool_call_idzum Binden von Tool-Ergebnissen an einen vorherigen Tool-Aufrufmax_completion_tokens: Zahl; Obergrenze pro Aufruf für die gesamten Completion-Tokens (Reasoning-Tokens eingeschlossen). Aktueller OpenAI-Chat-Completions-Feldname; bevorzugt, wenn sowohlmax_completion_tokensals auchmax_tokensgesendet werden.max_tokens: Zahl; Legacy-Alias, der aus Gründen der Abwärtskompatibilität akzeptiert wird. Wird ignoriert, wennmax_completion_tokensebenfalls vorhanden ist.
max_completion_tokens für Endpunkte der OpenAI-Familie und max_tokens für Provider, die nur den Legacy-Namen akzeptieren (wie Mistral und Chutes).
Nicht unterstützte Varianten
Der Endpunkt gibt400 invalid_request_error für nicht unterstützte Tool-Varianten zurück, darunter:
- Nicht-Array-
tools - Nicht-Function-Tool-Einträge
- fehlendes
tool.function.name tool_choice-Varianten wieallowed_toolsundcustomtool_choice: "required"(zur Laufzeit noch nicht erzwungen; wird unterstützt, sobald harte Erzwingung implementiert ist)tool_choice: { "type": "function", "function": { "name": "..." } }(gleiche Begründung wie beirequired)tool_choice.function.name-Werte, die nicht zu den bereitgestelltentoolspassen
Antwortform bei nicht streamenden Tools
Wenn der Agent entscheidet, Tools aufzurufen, verwendet die Antwort:choices[0].finish_reason = "tool_calls"choices[0].message.tool_calls[]-Einträge mit:idtype: "function"function.namefunction.arguments(JSON-Zeichenfolge)
choices[0].message.content zurückgegeben (möglicherweise leer).
Antwortform bei streamenden Tools
Wennstream: true, werden Tool-Aufrufe als inkrementelle SSE-Chunks ausgegeben:
- initiales Assistant-Rollen-Delta
- optionale Assistant-Kommentar-Deltas
- ein oder mehrere
delta.tool_calls-Chunks mit Tool-Identität und Argumentfragmenten - finaler Chunk mit
finish_reason: "tool_calls" data: [DONE]
stream_options.include_usage=true, wird vor [DONE] ein abschließender Nutzungs-Chunk ausgegeben.
Tool-Follow-up-Schleife
Nach dem Empfang vontool_calls sollte der Client die angeforderte(n) Funktion(en) ausführen und eine Folgeanfrage senden, die Folgendes enthält:
- vorherige Assistant-Tool-Call-Nachricht
- eine oder mehrere
role: "tool"-Nachrichten mit passendertool_call_id
Open WebUI-Schnelleinrichtung
Für eine einfache Open WebUI-Verbindung:- Basis-URL:
http://127.0.0.1:18789/v1 - Docker-auf-macOS-Basis-URL:
http://host.docker.internal:18789/v1 - API-Schlüssel: Ihr Gateway-Bearer-Token
- Modell:
openclaw/default
GET /v1/modelssollteopenclaw/defaultauflisten- Open WebUI sollte
openclaw/defaultals Chat-Modell-ID verwenden - Wenn Sie einen bestimmten Backend-Provider/ein bestimmtes Backend-Modell für diesen Agenten wünschen, setzen Sie das normale Standardmodell des Agenten oder senden Sie
x-openclaw-model
openclaw/default zurückgibt, können die meisten Open WebUI-Setups mit derselben Basis-URL und demselben Token verbinden.
Beispiele
Nicht streamend:/v1/modelsgibt OpenClaw-Agent-Ziele zurück, nicht rohe Provider-Kataloge.openclaw/defaultist immer vorhanden, sodass eine stabile ID über Umgebungen hinweg funktioniert.- Backend-Provider-/Modellüberschreibungen gehören in
x-openclaw-model, nicht in das OpenAI-Feldmodel. /v1/embeddingsunterstütztinputals Zeichenfolge oder als Array von Zeichenfolgen.