OpenClaw’s Gateway puede servir un pequeño endpoint de Chat Completions compatible con OpenAI. Este endpoint está deshabilitado de forma predeterminada. Habilítalo primero en la configuración.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- El mismo puerto que el Gateway (multiplexación WS + HTTP):
http://<gateway-host>:<port>/v1/chat/completions
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/responses
openclaw agent), por lo que el enrutamiento, los permisos y la configuración coinciden con tu Gateway.
Autenticación
Usa la configuración de autenticación del Gateway. Rutas comunes de autenticación HTTP:- autenticación con secreto compartido (
gateway.auth.mode="token"o"password"):Authorization: Bearer <token-or-password> - autenticación HTTP confiable con identidad (
gateway.auth.mode="trusted-proxy"): enruta a través del proxy configurado con conocimiento de identidad y deja que inyecte los encabezados de identidad requeridos - autenticación abierta de ingreso privado (
gateway.auth.mode="none"): no se requiere encabezado de autenticación
- Cuando
gateway.auth.mode="token", usagateway.auth.token(oOPENCLAW_GATEWAY_TOKEN). - Cuando
gateway.auth.mode="password", usagateway.auth.password(oOPENCLAW_GATEWAY_PASSWORD). - Cuando
gateway.auth.mode="trusted-proxy", la solicitud HTTP debe provenir de una fuente de proxy confiable configurada; los proxies de loopback del mismo host requierengateway.auth.trustedProxy.allowLoopback = trueexplícito. - Si
gateway.auth.rateLimitestá configurado y ocurren demasiados fallos de autenticación, el endpoint devuelve429conRetry-After.
Límite de seguridad (importante)
Trata este endpoint como una superficie de acceso completo de operador para la instancia del gateway.- La autenticación bearer HTTP aquí no es un modelo de alcance limitado por usuario.
- Un token/contraseña válido del Gateway para este endpoint debe tratarse como una credencial de propietario/operador.
- Las solicitudes se ejecutan a través de la misma ruta de agente de plano de control que las acciones de operador confiables.
- No hay un límite de herramientas separado de no propietario/por usuario en este endpoint; una vez que un llamador supera la autenticación del Gateway aquí, OpenClaw trata a ese llamador como un operador confiable para este gateway.
- Para los modos de autenticación con secreto compartido (
tokenypassword), el endpoint restaura los valores predeterminados normales de operador completo incluso si el llamador envía un encabezadox-openclaw-scopesmás limitado. - Los modos HTTP confiables con identidad (por ejemplo, autenticación de proxy confiable o
gateway.auth.mode="none") respetanx-openclaw-scopescuando está presente y, de lo contrario, recurren al conjunto de alcances predeterminado normal del operador. - Si la política del agente de destino permite herramientas sensibles, este endpoint puede usarlas.
- Mantén este endpoint solo en loopback/tailnet/ingreso privado; no lo expongas directamente a Internet pública.
gateway.auth.mode="token"o"password"+Authorization: Bearer ...- demuestra posesión del secreto compartido de operador del gateway
- ignora
x-openclaw-scopesmás limitados - restaura el conjunto completo de alcances predeterminados de operador:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - trata los turnos de chat en este endpoint como turnos enviados por el propietario
- modos HTTP confiables con identidad (por ejemplo, autenticación de proxy confiable, o
gateway.auth.mode="none"en ingreso privado)- autentican alguna identidad externa confiable o límite de despliegue
- respetan
x-openclaw-scopescuando el encabezado está presente - recurren al conjunto de alcances predeterminado normal del operador cuando el encabezado está ausente
- solo pierden semántica de propietario cuando el llamador limita explícitamente los alcances y omite
operator.admin
Contrato de modelo centrado en agentes
OpenClaw trata el campomodel de OpenAI como un destino de agente, no como un id de modelo de proveedor sin procesar.
model: "openclaw"enruta al agente predeterminado configurado.model: "openclaw/default"también enruta al agente predeterminado configurado.model: "openclaw/<agentId>"enruta a un agente específico.
x-openclaw-model: <provider/model-or-bare-id>sobrescribe el modelo de backend para el agente seleccionado.x-openclaw-agent-id: <agentId>sigue admitiéndose como sobrescritura de compatibilidad.x-openclaw-session-key: <sessionKey>controla completamente el enrutamiento de sesión.x-openclaw-message-channel: <channel>establece el contexto sintético de canal de ingreso para prompts y políticas con conocimiento de canal.
model: "openclaw:<agentId>"model: "agent:<agentId>"
Habilitar el endpoint
Establecegateway.http.endpoints.chatCompletions.enabled en true:
Deshabilitar el endpoint
Establecegateway.http.endpoints.chatCompletions.enabled en false:
Comportamiento de sesión
De forma predeterminada, el endpoint es sin estado por solicitud (se genera una nueva clave de sesión en cada llamada). Si la solicitud incluye una cadenauser de OpenAI, el Gateway deriva una clave de sesión estable a partir de ella, por lo que las llamadas repetidas pueden compartir una sesión de agente.
Por qué importa esta superficie
Este es el conjunto de compatibilidad de mayor impacto para frontends y herramientas autoalojados:- La mayoría de las configuraciones de Open WebUI, LobeChat y LibreChat esperan
/v1/models. - Muchos sistemas RAG esperan
/v1/embeddings. - Los clientes de chat existentes de OpenAI normalmente pueden empezar con
/v1/chat/completions. - Cada vez más clientes más nativos de agentes prefieren
/v1/responses.
Lista de modelos y enrutamiento de agentes
¿Qué devuelve `/v1/models`?
¿Qué devuelve `/v1/models`?
Una lista de destinos de agente de OpenClaw.Los ids devueltos son entradas
openclaw, openclaw/default y openclaw/<agentId>.
Úsalos directamente como valores model de OpenAI.¿`/v1/models` lista agentes o subagentes?
¿`/v1/models` lista agentes o subagentes?
Lista destinos de agente de nivel superior, no modelos de proveedor de backend ni subagentes.Los subagentes siguen siendo topología de ejecución interna. No aparecen como seudomodelos.
¿Por qué se incluye `openclaw/default`?
¿Por qué se incluye `openclaw/default`?
openclaw/default es el alias estable para el agente predeterminado configurado.Eso significa que los clientes pueden seguir usando un id predecible aunque el id real del agente predeterminado cambie entre entornos.¿Cómo sobrescribo el modelo de backend?
¿Cómo sobrescribo el modelo de backend?
Usa
x-openclaw-model.Ejemplos:
x-openclaw-model: openai/gpt-5.4
x-openclaw-model: gpt-5.5Si lo omites, el agente seleccionado se ejecuta con su elección de modelo configurada normal.¿Cómo encajan los embeddings en este contrato?
¿Cómo encajan los embeddings en este contrato?
/v1/embeddings usa los mismos ids model de destino de agente.Usa model: "openclaw/default" o model: "openclaw/<agentId>".
Cuando necesites un modelo de embeddings específico, envíalo en x-openclaw-model.
Sin ese encabezado, la solicitud pasa a la configuración normal de embeddings del agente seleccionado.Streaming (SSE)
Establecestream: true para recibir eventos enviados por el servidor (SSE):
Content-Type: text/event-stream- Cada línea de evento es
data: <json> - El stream termina con
data: [DONE]
Contrato de herramientas de chat
/v1/chat/completions admite un subconjunto de herramientas de función compatible con clientes comunes de Chat de OpenAI.
Campos de solicitud admitidos
tools: array de{ "type": "function", "function": { ... } }tool_choice:"auto","none"- turnos de seguimiento
messages[*].role: "tool" messages[*].tool_call_idpara vincular resultados de herramientas a una llamada de herramienta anteriormax_completion_tokens: número; límite por llamada para el total de tokens de finalización (incluidos tokens de razonamiento). Nombre de campo actual de Chat Completions de OpenAI; se prefiere cuando se envían tantomax_completion_tokenscomomax_tokens.max_tokens: número; alias heredado aceptado por compatibilidad hacia atrás. Se ignora cuandomax_completion_tokenstambién está presente.
max_completion_tokens para endpoints de la familia OpenAI, y max_tokens para proveedores que solo aceptan el nombre heredado (como Mistral y Chutes).
Variantes no admitidas
El endpoint devuelve400 invalid_request_error para variantes de herramientas no admitidas, incluidas:
toolsque no sean arrays- entradas de herramientas que no sean función
- falta de
tool.function.name - variantes de
tool_choicecomoallowed_toolsycustom tool_choice: "required"(aún no se aplica en tiempo de ejecución; se admitirá cuando se implemente la aplicación estricta)tool_choice: { "type": "function", "function": { "name": "..." } }(misma justificación querequired)- valores de
tool_choice.function.nameque no coinciden con lastoolsproporcionadas
Forma de respuesta de herramientas sin streaming
Cuando el agente decide llamar herramientas, la respuesta usa:choices[0].finish_reason = "tool_calls"- entradas
choices[0].message.tool_calls[]con:idtype: "function"function.namefunction.arguments(cadena JSON)
choices[0].message.content (posiblemente vacío).
Forma de respuesta de herramientas con streaming
Cuandostream: true, las llamadas de herramientas se emiten como fragmentos SSE incrementales:
- delta inicial del rol de asistente
- deltas opcionales de comentario del asistente
- uno o más fragmentos
delta.tool_callsque transportan identidad de herramienta y fragmentos de argumentos - fragmento final con
finish_reason: "tool_calls" data: [DONE]
stream_options.include_usage=true, se emite un fragmento de uso final antes de [DONE].
Bucle de seguimiento de herramientas
Después de recibirtool_calls, el cliente debe ejecutar las funciones solicitadas y enviar una solicitud de seguimiento que incluya:
- mensaje de llamada de herramienta anterior del asistente
- uno o más mensajes
role: "tool"contool_call_idcoincidente
Configuración rápida de Open WebUI
Para una conexión básica de Open WebUI:- URL base:
http://127.0.0.1:18789/v1 - URL base de Docker en macOS:
http://host.docker.internal:18789/v1 - Clave de API: tu token bearer del Gateway
- Modelo:
openclaw/default
GET /v1/modelsdebe listaropenclaw/default- Open WebUI debe usar
openclaw/defaultcomo id del modelo de chat - Si quieres un proveedor/modelo de backend específico para ese agente, establece el modelo predeterminado normal del agente o envía
x-openclaw-model
openclaw/default, la mayoría de las configuraciones de Open WebUI pueden conectarse con la misma URL base y token.
Ejemplos
Sin streaming:/v1/modelsdevuelve destinos de agentes de OpenClaw, no catálogos de proveedores sin procesar.openclaw/defaultsiempre está presente para que un identificador estable funcione en todos los entornos.- Las sustituciones de proveedor/modelo del backend se definen en
x-openclaw-model, no en el campomodelde OpenAI. /v1/embeddingsadmiteinputcomo cadena o matriz de cadenas.