OpenClaw’s Gateway pode servir um pequeno endpoint de Chat Completions compatível com OpenAI. Este endpoint é desabilitado por padrão. Habilite-o primeiro na configuração.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- Mesma porta que o Gateway (multiplex WS + HTTP):
http://<gateway-host>:<port>/v1/chat/completions
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/responses
openclaw agent), então roteamento/permissões/configuração correspondem ao seu Gateway.
Autenticação
Usa a configuração de autenticação do Gateway. Caminhos comuns de autenticação HTTP:- autenticação por segredo compartilhado (
gateway.auth.mode="token"ou"password"):Authorization: Bearer <token-or-password> - autenticação HTTP confiável com identidade (
gateway.auth.mode="trusted-proxy"): roteie pelo proxy configurado com reconhecimento de identidade e deixe-o injetar os cabeçalhos de identidade necessários - autenticação aberta em ingresso privado (
gateway.auth.mode="none"): nenhum cabeçalho de autenticação necessário
- Quando
gateway.auth.mode="token", usegateway.auth.token(ouOPENCLAW_GATEWAY_TOKEN). - Quando
gateway.auth.mode="password", usegateway.auth.password(ouOPENCLAW_GATEWAY_PASSWORD). - Quando
gateway.auth.mode="trusted-proxy", a requisição HTTP deve vir de uma origem de proxy confiável configurada; proxies local loopback no mesmo host exigemgateway.auth.trustedProxy.allowLoopback = trueexplícito. - Se
gateway.auth.rateLimitestiver configurado e ocorrerem falhas demais de autenticação, o endpoint retorna429comRetry-After.
Limite de segurança (importante)
Trate este endpoint como uma superfície de acesso completo de operador para a instância do Gateway.- A autenticação bearer HTTP aqui não é um modelo de escopo restrito por usuário.
- Um token/senha válido do Gateway para este endpoint deve ser tratado como uma credencial de proprietário/operador.
- As requisições passam pelo mesmo caminho de agente do plano de controle que ações de operador confiáveis.
- Não há um limite separado de ferramenta por usuário/não proprietário neste endpoint; depois que um chamador passa pela autenticação do Gateway aqui, o OpenClaw trata esse chamador como um operador confiável para este Gateway.
- Para modos de autenticação por segredo compartilhado (
tokenepassword), o endpoint restaura os padrões normais completos de operador mesmo que o chamador envie um cabeçalhox-openclaw-scopesmais restrito. - Modos HTTP confiáveis com identidade (por exemplo, autenticação por proxy confiável ou
gateway.auth.mode="none") respeitamx-openclaw-scopesquando presente e, caso contrário, recorrem ao conjunto de escopos padrão normal de operador. - Se a política do agente de destino permitir ferramentas sensíveis, este endpoint pode usá-las.
- Mantenha este endpoint apenas em loopback/tailnet/ingresso privado; não o exponha diretamente à internet pública.
gateway.auth.mode="token"ou"password"+Authorization: Bearer ...- prova posse do segredo compartilhado de operador do Gateway
- ignora
x-openclaw-scopesmais restrito - restaura o conjunto completo de escopos padrão de operador:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - trata turnos de chat neste endpoint como turnos de remetente proprietário
- modos HTTP confiáveis com identidade (por exemplo, autenticação por proxy confiável ou
gateway.auth.mode="none"em ingresso privado)- autenticam alguma identidade confiável externa ou limite de implantação
- respeitam
x-openclaw-scopesquando o cabeçalho está presente - recorrem ao conjunto de escopos padrão normal de operador quando o cabeçalho está ausente
- só perdem semântica de proprietário quando o chamador restringe escopos explicitamente e omite
operator.admin
Contrato de modelo centrado em agente
OpenClaw trata o campomodel da OpenAI como um destino de agente, não como um id bruto de modelo de provedor.
model: "openclaw"roteia para o agente padrão configurado.model: "openclaw/default"também roteia para o agente padrão configurado.model: "openclaw/<agentId>"roteia para um agente específico.
x-openclaw-model: <provider/model-or-bare-id>substitui o modelo de backend para o agente selecionado.x-openclaw-agent-id: <agentId>continua com suporte como substituição de compatibilidade.x-openclaw-session-key: <sessionKey>controla totalmente o roteamento de sessão.x-openclaw-message-channel: <channel>define o contexto sintético de canal de ingresso para prompts e políticas com reconhecimento de canal.
model: "openclaw:<agentId>"model: "agent:<agentId>"
Habilitando o endpoint
Definagateway.http.endpoints.chatCompletions.enabled como true:
Desabilitando o endpoint
Definagateway.http.endpoints.chatCompletions.enabled como false:
Comportamento de sessão
Por padrão, o endpoint é sem estado por requisição (uma nova chave de sessão é gerada em cada chamada). Se a requisição incluir uma stringuser da OpenAI, o Gateway deriva uma chave de sessão estável a partir dela, então chamadas repetidas podem compartilhar uma sessão de agente.
Por que esta superfície importa
Este é o conjunto de compatibilidade de maior impacto para frontends e ferramentas auto-hospedados:- A maioria das configurações do Open WebUI, LobeChat e LibreChat espera
/v1/models. - Muitos sistemas RAG esperam
/v1/embeddings. - Clientes de chat existentes da OpenAI geralmente podem começar com
/v1/chat/completions. - Clientes mais nativos de agente preferem cada vez mais
/v1/responses.
Lista de modelos e roteamento de agente
What does `/v1/models` return?
What does `/v1/models` return?
Uma lista de destinos de agente do OpenClaw.Os ids retornados são entradas
openclaw, openclaw/default e openclaw/<agentId>.
Use-os diretamente como valores de model da OpenAI.Does `/v1/models` list agents or sub-agents?
Does `/v1/models` list agents or sub-agents?
Ele lista destinos de agente de nível superior, não modelos de provedor de backend e nem subagentes.Subagentes permanecem como topologia interna de execução. Eles não aparecem como pseudo-modelos.
Why is `openclaw/default` included?
Why is `openclaw/default` included?
openclaw/default é o alias estável para o agente padrão configurado.Isso significa que clientes podem continuar usando um id previsível mesmo que o id real do agente padrão mude entre ambientes.How do I override the backend model?
How do I override the backend model?
Use
x-openclaw-model.Exemplos:
x-openclaw-model: openai/gpt-5.4
x-openclaw-model: gpt-5.5Se você o omitir, o agente selecionado será executado com sua escolha normal de modelo configurada.How do embeddings fit this contract?
How do embeddings fit this contract?
/v1/embeddings usa os mesmos ids de model de destino de agente.Use model: "openclaw/default" ou model: "openclaw/<agentId>".
Quando precisar de um modelo específico de embeddings, envie-o em x-openclaw-model.
Sem esse cabeçalho, a requisição passa para a configuração normal de embeddings do agente selecionado.Streaming (SSE)
Definastream: true para receber Server-Sent Events (SSE):
Content-Type: text/event-stream- Cada linha de evento é
data: <json> - O fluxo termina com
data: [DONE]
Contrato de ferramentas de chat
/v1/chat/completions oferece suporte a um subconjunto de ferramentas de função compatível com clientes comuns do OpenAI Chat.
Campos de requisição com suporte
tools: array de{ "type": "function", "function": { ... } }tool_choice:"auto","none"messages[*].role: "tool"turnos de acompanhamentomessages[*].tool_call_idpara vincular resultados de ferramenta a uma chamada de ferramenta anteriormax_completion_tokens: número; limite por chamada para o total de tokens de conclusão (incluindo tokens de raciocínio). Nome atual do campo de Chat Completions da OpenAI; preferido quandomax_completion_tokensemax_tokenssão enviados.max_tokens: número; alias legado aceito para compatibilidade retroativa. Ignorado quandomax_completion_tokenstambém está presente.
max_completion_tokens para endpoints da família OpenAI, e max_tokens para provedores que aceitam apenas o nome legado (como Mistral e Chutes).
Variantes sem suporte
O endpoint retorna400 invalid_request_error para variantes de ferramentas sem suporte, incluindo:
toolsque não seja array- entradas de ferramenta que não sejam função
tool.function.nameausente- variantes de
tool_choicecomoallowed_toolsecustom tool_choice: "required"(ainda não imposto em tempo de execução; terá suporte quando a imposição rígida for implementada)tool_choice: { "type": "function", "function": { "name": "..." } }(mesma justificativa querequired)- valores de
tool_choice.function.nameque não correspondem aostoolsfornecidos
Formato de resposta de ferramenta sem streaming
Quando o agente decide chamar ferramentas, a resposta usa:choices[0].finish_reason = "tool_calls"- entradas
choices[0].message.tool_calls[]com:idtype: "function"function.namefunction.arguments(string JSON)
choices[0].message.content (possivelmente vazio).
Formato de resposta de ferramenta com streaming
Quandostream: true, chamadas de ferramenta são emitidas como chunks SSE incrementais:
- delta inicial de função do assistente
- deltas opcionais de comentário do assistente
- um ou mais chunks
delta.tool_callscarregando identidade da ferramenta e fragmentos de argumentos - chunk final com
finish_reason: "tool_calls" data: [DONE]
stream_options.include_usage=true, um chunk final de uso é emitido antes de [DONE].
Loop de acompanhamento de ferramenta
Após recebertool_calls, o cliente deve executar as funções solicitadas e enviar uma requisição de acompanhamento que inclua:
- mensagem anterior de chamada de ferramenta do assistente
- uma ou mais mensagens
role: "tool"comtool_call_idcorrespondente
Configuração rápida do Open WebUI
Para uma conexão básica do Open WebUI:- URL base:
http://127.0.0.1:18789/v1 - URL base do Docker no macOS:
http://host.docker.internal:18789/v1 - Chave de API: seu token bearer do Gateway
- Modelo:
openclaw/default
GET /v1/modelsdeve listaropenclaw/default- O Open WebUI deve usar
openclaw/defaultcomo o id de modelo de chat - Se quiser um provedor/modelo de backend específico para esse agente, defina o modelo padrão normal do agente ou envie
x-openclaw-model
openclaw/default, a maioria das configurações do Open WebUI pode se conectar com a mesma URL base e token.
Exemplos
Sem streaming:/v1/modelsretorna destinos de agentes do OpenClaw, não catálogos brutos de provedores.openclaw/defaultestá sempre presente para que um ID estável funcione em todos os ambientes.- Substituições de provedor/modelo de back-end pertencem a
x-openclaw-model, não ao campomodelda OpenAI. /v1/embeddingsaceitainputcomo uma cadeia de caracteres ou uma matriz de cadeias de caracteres.