Référence API
L’API Kloria reprend les formats OpenAI et Anthropic. Les paramètres, le format des réponses et le streaming suivent leurs documentations respectives : cette page décrit ce qui est propre à Kloria et ce que tu dois savoir pour l’utiliser.
Adresse et authentification
Section intitulée « Adresse et authentification »| Valeur | |
|---|---|
| Adresse de base | https://api.kloria.dev |
| Préfixe des endpoints | /v1 |
| Authentification | Authorization: Bearer sk-… sur tous les endpoints |
| Variante format Anthropic | x-api-key: sk-… sur /v1/messages et /v1/models |
Seul HTTPS est accepté. La clé est celle créée dans la console, sous Clés API.
Endpoints
Section intitulée « Endpoints »| Méthode | Chemin | Format | Usage |
|---|---|---|---|
POST |
/v1/chat/completions |
OpenAI | Conversation, tous les modèles |
POST |
/v1/messages |
Anthropic | Conversation, modèles Claude |
POST |
/v1/responses |
OpenAI Responses | Utilisé par Codex, modèles GPT |
GET |
/v1/models |
OpenAI ou Anthropic | Modèles accessibles avec ta clé |
Chat Completions (format OpenAI)
Section intitulée « Chat Completions (format OpenAI) »POST /v1/chat/completions accepte le corps standard de l’API OpenAI : model, messages, stream, max_tokens ou max_completion_tokens, temperature, tools, tool_choice, response_format…
curl https://api.kloria.dev/v1/chat/completions \ -H "Authorization: Bearer $KLORIA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-5", "max_tokens": 300, "messages": [ {"role": "system", "content": "Tu réponds en une phrase."}, {"role": "user", "content": "À quoi sert un index en base de données ?"} ] }'Réponse (raccourcie) :
{ "id": "chatcmpl-…", "object": "chat.completion", "model": "claude-sonnet-5", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Un index permet de retrouver des lignes…" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 31, "completion_tokens": 24, "total_tokens": 55 }}Les modèles Claude appelés dans ce format sont convertis automatiquement : tu peux passer d’un modèle GPT à un modèle Claude en ne changeant que model.
Messages (format Anthropic)
Section intitulée « Messages (format Anthropic) »POST /v1/messages accepte le corps de l’API Messages d’Anthropic. max_tokens y est obligatoire, et le prompt système se passe dans le champ system, pas dans messages.
curl https://api.kloria.dev/v1/messages \ -H "x-api-key: $KLORIA_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-5", "max_tokens": 300, "system": "Tu réponds en une phrase.", "messages": [{"role": "user", "content": "À quoi sert un index en base de données ?"}] }'Réponse (raccourcie) :
{ "id": "msg_…", "type": "message", "role": "assistant", "model": "claude-sonnet-5", "content": [{ "type": "text", "text": "Un index permet de retrouver des lignes…" }], "stop_reason": "end_turn", "usage": { "input_tokens": 27, "output_tokens": 24 }}Le format Anthropic est le bon choix pour les fonctions propres à Claude : blocs de contenu, cache de prompt (cache_control), réflexion étendue. C’est aussi celui qu’utilise Claude Code.
GET /v1/models renvoie la liste des modèles accessibles avec ta clé. Avec les en-têtes x-api-key et anthropic-version, la réponse suit le format Anthropic ; sinon le format OpenAI :
{ "object": "list", "data": [ { "id": "claude-sonnet-5", "object": "model", "owned_by": "…" }, { "id": "gpt-6.1-sol", "object": "model", "owned_by": "…" } ]}Cet appel ne consomme pas de crédits.
Streaming
Section intitulée « Streaming »Passe "stream": true dans le corps de la requête. La réponse arrive en Server-Sent Events (text/event-stream) :
- Format OpenAI : une suite de lignes
data: {…}contenant desdelta, terminée pardata: [DONE]. Pour recevoir le décompte de tokens dans le flux, ajoute"stream_options": {"include_usage": true}: le dernier événement contient alorsusage. - Format Anthropic : les événements
message_start,content_block_delta,message_delta(qui porteusage) puismessage_stop.
Les SDK officiels gèrent ces formats pour toi (voir SDK Python et SDK Node.js).
Suivre sa consommation
Section intitulée « Suivre sa consommation »- Chaque réponse contient un objet
usageavec les tokens d’entrée et de sortie facturés. - La console affiche, sous Journaux d’utilisation, chaque requête avec son modèle, ses tokens, sa durée et son coût en crédits.
- Ton solde est visible sous Portefeuille.
Le calcul du coût est détaillé sur la page Modèles et tarifs.
Les erreurs suivent le format du protocole appelé : un objet error avec un message. Le code HTTP indique la catégorie :
| Code | Signification | Que faire |
|---|---|---|
400 |
Requête invalide : JSON mal formé, paramètre manquant (max_tokens en format Anthropic), modèle inconnu |
Lis le message, corrige la requête |
401 |
Clé absente, invalide, désactivée ou expirée | Vérifie l’en-tête et la clé dans la console |
403 |
Solde épuisé, quota de la clé atteint, ou modèle non autorisé pour cette clé | Recharge, augmente le quota de la clé ou ses limites de modèles |
429 |
Trop de requêtes en peu de temps | Réessaie après une pause, avec un délai croissant |
500, 502, 503 |
Erreur ou indisponibilité temporaire du modèle | Réessaie ; si ça persiste, signale-le avec l’heure de la requête |
Les messages les plus fréquents et leur cause sont sur la page Dépannage.