OpenAI Chat Completions (HTTP)
Exponer un endpoint HTTP /v1/chat/completions compatible con OpenAI desde el Gateway
El Gateway de OpenClaw puede servir un pequeño endpoint de Chat Completions compatible con OpenAI.
Este endpoint está deshabilitado por defecto. Habilítalo en config primero.
- ''POST /v1/chat/completions''
- Mismo puerto que el Gateway (multiplex WS + HTTP): ''http://<gateway-host>:<port>/v1/chat/completions''
Bajo el capó, las solicitudes se ejecutan como una ejecución normal de agente del Gateway (mismo código que ''openclaw agent''), así que enrutamiento/permisos/config coinciden con tu Gateway.
Autenticación
Usa la configuración de auth del Gateway. Envía un bearer token:
- ''Authorization: Bearer <token>''
Notas:
- Cuando ''gateway.auth.mode="token"'', usa ''gateway.auth.token'' (o ''OPENCLAW_GATEWAY_TOKEN'').
- Cuando ''gateway.auth.mode="password"'', usa ''gateway.auth.password'' (o ''OPENCLAW_GATEWAY_PASSWORD'').
Elegir un agente
Sin headers personalizados requeridos: codifica el id del agente en el campo ''model'' de OpenAI:
- ''model: "openclaw:<agentId>"'' (ejemplo: ''"openclaw:main"'', ''"openclaw:beta"'')
- ''model: "agent:<agentId>"''(Aliases)
O apunta a un agente OpenClaw específico por header:
- ''x-openclaw-agent-id: <agentId>''(Por defecto:''main'')
Avanzado:
- ''x-openclaw-session-key: '' para controlar completamente el enrutamiento de sesión.
Habilitar el endpoint
Establece ''gateway.http.endpoints.chatCompletions.enabled'' a ''true'':
{
gateway: {
http: {
endpoints: {
chatCompletions: { enabled: true },
},
},
},
}Deshabilitar el endpoint
Establece ''gateway.http.endpoints.chatCompletions.enabled'' a ''false'':
{
gateway: {
http: {
endpoints: {
chatCompletions: { enabled: false },
},
},
},
}Comportamiento de sesión
Por defecto el endpoint es sin estado por solicitud (se genera una nueva clave de sesión cada llamada).
Si la solicitud incluye un string ''user'' de OpenAI, el Gateway deriva una clave de sesión estable de él, así que llamadas repetidas pueden compartir una sesión de agente.
Streaming (SSE)
Establece ''stream: true'' para recibir Server-Sent Events (SSE):
- ''Content-Type: text/event-stream''
- Cada línea de evento es ''data: <json>''
- El stream termina con ''data: [DONE]''
Ejemplos
Sin streaming:
curl -sS http://127.0.0.1:18789/v1/chat/completions \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-H 'x-openclaw-agent-id: main' \
-d {
"model": "openclaw",
"messages": [{"role":"user","content":"hi"}]
}Con streaming:
curl -N http://127.0.0.1:18789/v1/chat/completions \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-H 'x-openclaw-agent-id: main' \
-d {
"model": "openclaw",
"stream": true,
"messages": [{"role":"user","content":"hi"}]
}