Aller au contenu principal

API publique

Libre WebUI expose une API compatible avec OpenAI afin que les SDK, éditeurs et scripts existants puissent cibler votre instance en ne modifiant que l’URL de base.

Authentification

Créez un jeton d’API à portée limitée sous Paramètres → Compte → Jetons d’API (les jetons utilisent le préfixe lwk_ et sont stockés sous forme de hachage). La surface /v1 exige la portée chat. Transmettez le jeton comme une clé bearer ordinaire :

export OPENAI_BASE_URL="https://your-instance/v1"
export OPENAI_API_KEY="lwk_..."

Les requêtes sont soumises à la limite de débit propre au jeton (600 requêtes par minute) ainsi qu’à la limite de débit partagée du chat.

Points de terminaison

Point de terminaisonFonction
GET /v1/modelsModèles disponibles (locaux ou fournis par un plugin de fournisseur)
POST /v1/chat/completionsComplétion de chat sans état, avec ou sans diffusion en continu

POST /v1/chat/completions accepte le corps habituel : model, messages (system/user/assistant ; les parties de texte multimodales sont aplaties), stream, temperature, top_p, max_tokens/max_completion_tokens, seed et stop. Les réponses diffusées en continu sont des trames SSE chat.completion.chunk terminées par data: [DONE] ; les réponses non diffusées incluent les nombres de jetons usage lorsque le fournisseur les communique.

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 intentionnelles

La surface /v1 assure une inférence sans état : elle ne crée jamais de chats, ne touche pas à votre base de connaissances et n’exécute aucun outil. Les conversations avec état, dotées d’événements durables et rejouables, d’une annulation par identité, de mises en file idempotentes et de la boucle d’outils native, passent par l’API d’événements native /api/chat. Les mêmes jetons peuvent l’appeler avec la portée chat. Les rôles autres que system/user/assistant (par exemple tool) sont rejetés au lieu d’être acceptés silencieusement.

Documentation connexe