API LLM
L’API LLM permet à votre code d’appeler directement un modèle avec une clé API endue, dans le même format de requête que les API d’OpenAI et d’Anthropic, et règle chaque appel avec vos crédits.
Quand l’utiliser
Section intitulée « Quand l’utiliser »Quand vous voulez un modèle plutôt qu’un agent : une complétion dans votre propre application, du code qui communique déjà avec l’API OpenAI ou Anthropic, ou Claude Code. Vous changez l’URL de base et la clé ; le reste de votre code ne bouge pas.
Si vous voulez qu’un agent fasse le travail, avec son prompt, sa mémoire, ses outils et ses connecteurs, appelez-le plutôt via l’API d’agent.
Faire un premier appel
Section intitulée « Faire un premier appel »-
Créez une clé valable pour tout le compte dans Paramètres → Compte → Clés API. Copiez-la au moment où elle s’affiche : elle ne s’affiche qu’une fois. Une clé créée depuis la section API d’un agent est limitée à cet agent et ne peut pas appeler de modèles directement.
-
Gardez la clé hors de votre code. Placez-la dans une variable d’environnement, par exemple
ENDUE_API_KEY. -
Pointez votre SDK vers endue avec cette URL de base, et appelez un modèle de la liste des modèles :
https://platform.endue.ai/api/v1/llm
import osfrom openai import OpenAI
client = OpenAI(base_url="https://platform.endue.ai/api/v1/llm", api_key=os.environ["ENDUE_API_KEY"])res = client.chat.completions.create( model="openai/gpt-5.4", messages=[{"role": "user", "content": "Hello"}],)print(res.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://platform.endue.ai/api/v1/llm', apiKey: process.env.ENDUE_API_KEY });const res = await client.chat.completions.create({ model: 'openai/gpt-5.4', messages: [{ role: 'user', content: 'Hello' }],});console.log(res.choices[0].message.content);curl https://platform.endue.ai/api/v1/llm/chat/completions \ -H "Authorization: Bearer $ENDUE_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"openai/gpt-5.4","messages":[{"role":"user","content":"Hello"}]}'import osimport anthropic
client = anthropic.Anthropic(base_url="https://platform.endue.ai/api/v1/llm", api_key=os.environ["ENDUE_API_KEY"])msg = client.messages.create( model="claude-sonnet-4-5", max_tokens=1024, messages=[{"role": "user", "content": "Hello"}],)print(msg.content[0].text)export ANTHROPIC_BASE_URL=https://platform.endue.ai/api/v1/llmexport ANTHROPIC_API_KEY=$ENDUE_API_KEYclaudeParamètres → Compte → API LLM affiche la même URL de base et les mêmes exemples, prêts à copier.
Modèles et tarifs
Section intitulée « Modèles et tarifs »GET https://platform.endue.ai/api/v1/llm/models liste tous les modèles que vous pouvez appeler, avec leur longueur de contexte et leur prix. Cette liste se consulte sans clé.
- Les identifiants de modèle ont la forme
openai/gpt-5.4oux-ai/grok-4.6: le fournisseur, puis le modèle. - Les prix sont exprimés en crédits par jeton, sous forme de chaînes décimales :
promptpour l’entrée,completionpour la sortie, etinput_cache_readlorsque le modèle applique une remise sur les entrées en cache. Un crédit vaut un dollar américain. - Certains modèles facturent davantage les prompts très longs. Ces prix figurent sous
overrides, avec la longueur de prompt à partir de laquelle ils s’appliquent.
Vous pouvez parcourir les mêmes modèles sur la page des modèles.
Streaming
Section intitulée « Streaming »Ajoutez "stream": true. Vous recevez la réponse sous forme d’événements envoyés par le serveur (SSE), en fragments au format OpenAI, qui se terminent par data: [DONE]. Le dernier fragment avant [DONE] contient usage, qui inclut le coût de l’appel.
Comment un appel est facturé
Section intitulée « Comment un appel est facturé »-
Avant que le modèle ne s’exécute, endue met de côté assez de crédits pour couvrir le coût maximal possible de l’appel : votre prompt plus
max_tokensen sortie. Si votre solde est inférieur à ce montant, le modèle n’est pas appelé et vous recevez une erreur402. -
À la fin de l’appel, seul son coût réel est débité, et le reste de la somme mise de côté revient sur votre solde.
-
La réponse vous indique le montant débité.
usage.costcorrespond aux crédits prélevés pour cet appel, et l’en-têteX-Endue-Request-Ididentifie l’appel si vous avez une question à son sujet.
Si vous omettez max_tokens et que votre solde ne couvre pas la longueur de sortie maximale du modèle, l’appel a quand même lieu, avec max_tokens abaissé à ce que couvre votre solde, à condition que cela représente au moins 1 024 jetons. En dessous, vous recevez une erreur 402.
Les appels à l’API LLM sont payés uniquement avec les crédits achetés et promotionnels. Le quota inclus dans votre offre est réservé aux agents et n’est pas utilisé ici. Les appels apparaissent dans le tableau de bord d’utilisation, onglet Sources, sous la mention API LLM.
Format Anthropic et Claude Code
Section intitulée « Format Anthropic et Claude Code »La même URL de base accepte aussi le format Anthropic Messages. Le SDK Anthropic et Claude Code ajoutent eux-mêmes /v1/messages à l’URL de base : la configuration se résume donc aux deux lignes des onglets ci-dessus.
- Envoyez la clé dans
x-api-keyou dansAuthorization: Bearer. - Les noms de modèles Claude s’écrivent comme chez Anthropic (
claude-sonnet-4-5, ou avec une date commeclaude-sonnet-4-5-20250929), à condition que le modèle figure dans la liste des modèles. Tout identifiant de la liste fonctionne aussi, y compris pour des modèles autres que Claude. - Le streaming utilise le format d’événements d’Anthropic, et les erreurs suivent la structure d’erreur d’Anthropic.
/v1/messages/count_tokensrenvoie une estimation du nombre de jetons d’entrée. Cet appel n’est pas facturé, et le résultat est une approximation, pas un décompte exact par le tokeniseur.
Les erreurs suivent la structure du format appelé : {"error": {…}} pour OpenAI, ou {"type": "error", "error": {…}} pour Anthropic.
| Statut | Ce qui s’est passé | Que faire |
|---|---|---|
400 | La requête est mal formée, n est supérieur à 1, ou le modèle a rejeté l’entrée | Corrigez la requête ; le message indique ce qui ne va pas |
401 | La clé est absente, révoquée ou erronée | Vérifiez la clé et la façon dont vous l’envoyez |
402 | Votre solde de crédits ne couvre pas l’appel (insufficient_credits, ou billing_error au format Anthropic) | Achetez des crédits, ou réduisez max_tokens |
403 | La clé est limitée à un seul agent | Créez une clé valable pour tout le compte |
404 | Le modèle ne figure pas dans la liste des modèles | Choisissez un identifiant dans /models |
429 | Trop de requêtes | Attendez le nombre de secondes indiqué dans Retry-After |
502 | Le fournisseur du modèle a échoué | Réessayez |
503 | La facturation ou la liste des modèles est brièvement indisponible. Le modèle n’a pas été appelé et rien n’a été débité | Réessayez un peu plus tard |
- Seuls les modèles de la liste des modèles peuvent être appelés.
- Deux formats sont pris en charge : OpenAI Chat Completions et Anthropic Messages. Il n’y a pas de points de terminaison pour les embeddings, les images, l’audio ou Responses.
ndoit valoir 1.- Les champs qui sortent de la requête standard sont ignorés, par exemple une liste d’autres modèles de secours, le routage entre fournisseurs ou les plugins. Au format Anthropic, les outils côté serveur comme la recherche web sont refusés, et
top_kest ignoré. - Le quota de l’offre n’est pas utilisé ; les appels nécessitent des crédits achetés ou promotionnels.
- Une clé limitée à un seul agent ne peut pas appeler de modèles.
- Jusqu’à 100 appels par minute, comptés par clé et par compte. Le corps d’une requête peut atteindre 8 Mo.
count_tokensfournit une estimation.