API pública
O Libre WebUI oferece uma API compatível com OpenAI para que SDKs, editores e scripts existentes se conectem à sua instância alterando somente a URL base.
Autenticação
Crie um token de API com escopo em Configurações → Conta → Tokens de API (os tokens usam o prefixo lwk_ e são armazenados com hash). A interface /v1 exige o escopo chat. Passe o token como uma chave bearer comum:
export OPENAI_BASE_URL="https://your-instance/v1"
export OPENAI_API_KEY="lwk_..."
As solicitações seguem o limite de taxa por token (600 solicitações por minuto) e o limite compartilhado de taxa do chat.
Endpoints
| Endpoint | Finalidade |
|---|---|
GET /v1/models | Modelos disponíveis (locais e fornecidos por plugins) |
POST /v1/chat/completions | Conclusão de chat sem estado, com ou sem streaming |
POST /v1/chat/completions aceita o corpo conhecido — model, messages (system/user/assistant; partes de texto multimodais são achatadas), stream, temperature, top_p, max_tokens/max_completion_tokens, seed e stop. Respostas em streaming são quadros SSE chat.completion.chunk encerrados por data: [DONE]; respostas sem streaming incluem as contagens de tokens em usage quando informadas pelo provedor.
curl "$OPENAI_BASE_URL/chat/completions" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2",
"messages": [{"role": "user", "content": "One sentence on herons."}]
}'
Limites deliberados
A interface /v1 oferece inferência sem estado: ela nunca cria chats, acessa sua base de conhecimento nem executa ferramentas. Conversas com estado, eventos persistentes e reproduzíveis, cancelamento por identidade, enfileiramento idempotente e o ciclo nativo de ferramentas ficam na API de eventos nativa /api/chat, que os mesmos tokens podem chamar com o escopo chat. Funções diferentes de system/user/assistant (por exemplo, tool) são rejeitadas, em vez de serem aceitas silenciosamente.
Documentação relacionada
- Autenticação — contas, sessões e tokens de API
- Ferramentas de chat — o ciclo nativo de ferramentas na API de eventos