OpenClawSkills
GitHub
Gateway / Operaciones • 5 min de lectura

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.

Tutorial.step

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'').

Tutorial.step

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.

Tutorial.step

Habilitar el endpoint

Establece ''gateway.http.endpoints.chatCompletions.enabled'' a ''true'':

Json5
{
  gateway: {
    http: {
      endpoints: {
        chatCompletions: { enabled: true },
      },
    },
  },
}
Tutorial.step

Deshabilitar el endpoint

Establece ''gateway.http.endpoints.chatCompletions.enabled'' a ''false'':

Json5
{
  gateway: {
    http: {
      endpoints: {
        chatCompletions: { enabled: false },
      },
    },
  },
}
Tutorial.step

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.

Tutorial.step

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]''

Tutorial.step

Ejemplos

Sin streaming:

Bash
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:

Bash
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"}]
  }