ACCÈS EN BÊTA : Les fonctionnalités, tarifs et paramètres peuvent évoluer à l’avenir.
Alimenté par une architecture optimisée basée sur Blibs, notre API compatible avec OpenAI offre des inférences de modèles de langage à grande échelle hautement performantes – sans nécessiter de ressources GPU dédiées de votre part. Hébergé exclusivement dans des centres de données en UE, il garantit une intégration fluide avec vos applications tout en respectant les exigences strictes du RGPD (règlement général sur la protection des données). En exploitant l’infrastructure évolutive de Trooper.AI, cette solution élimine les contraintes matérielles et permet un déploiement économique pour les startups comme pour les grandes entreprises. Que vous construisiez des chatbots, que vous affiniez des modèles ou que vous déployez des flux de travail d’IA générative, notre API fournit des réponses à faible latence avec une fiabilité niveau entreprise.
Conçu pour la flexibilité, le service s’intègre sans effort dans vos pipelines existants grâce à des points d’accès simples et directs, prenant en charge les traitements par lots ainsi que les requêtes en temps réel. Soutenu par un stockage persistant et des protocoles de sécurité avancés – incluant pare-feu et protection contre les attaques DDoS –, la plateforme garantit une disponibilité continue pour les tâches critiques liées à l’IA. Découvrez ci-dessous nos configurations personnalisées pour répondre aux exigences spécifiques de votre projet.
Commandez l'API Blib maintenant
Nos tarifs de base sont les suivants. Des frais supplémentaires par pays peuvent s'appliquer lors d'une commande sur l'API Blib. Vous pouvez également profiter de nos promotions régulières Extra Credits !
| Itinéraire | Modèle | Contexte | Input/1M | Output/1M | +33 % de réduction promo | Points forts |
|---|---|---|---|---|---|---|
| liv | Google Gemma 4 – 2,3B (+0,15B vision) + 0,3B audio | 20,380 | €0.029 | €0.049 | Texte, Vision, Audio, Raisonnement, Outils, JSON | |
| clara | Mistral Ministral 3 – 13,5B (+0,4B vision) | 9,248 | €0.139 | €0.249 | Modèle UE, Vision, Outils, Texte, JSON | |
| nikola | NVIDIA Nemotron 3 Nano 30B MoE (128 experts, 6 actifs sur ~3,5B) | 20,480 | €0.159 | €0.319 | Texte, Raisonnement, Outils, Codage, JSON |
* Offre en cours : obtenez +33 % de crédits supplémentaires sur un paiement à partir de €150 ce mois-ci. Payez €150 et recevez €200 sur votre compte !
Avant d'utiliser notre API, vous devez commander votre API Blib sur notre site web : Commander l'API Blib
Vous pouvez choisir votre modèle et votre région, puis après déploiement de celui-ci, vous devriez voir quelque chose comme ceci dans votre tableau de bord d'administration :
Nous proposons un system prompt gratuit jusqu’à 1 024 caractères. Le system prompt gratuit n’est disponible que depuis le tableau de bord ! Les messages système dynamiques envoyés via l’API sont facturés comme d’habitude. Cliquez sur Actions et vous verrez la boîte de dialogue pour modifier le system prompt.
Allez-y, commandez votre API Blib maintenant :
Commandez l'API Blib maintenant
Si vous souhaitez comparer nos points d'accès LLM avec d'autres plateformes LLM, vous pouvez utiliser notre outil gratuit de Benchmark Qualité des LLMs. Voici à quoi il ressemble :
Testez n'importe quelle interface de modèle de langage compatible avec OpenAI grâce à 25 vérifications automatiques de qualité – raisonnement, codage, multilinguisme, sortie structurée, appel d'outils et bien plus encore.
https://eu.router.trooper.ai/v1
Points d'accès régionaux pour la résidence des données au niveau national :
| Domaine | Région |
|---|---|
eu.router.trooper.ai |
UE (tous les centres de données UE) |
de.router.trooper.ai |
Allemagne uniquement |
nl.router.trooper.ai |
Pays-Bas uniquement |
Tous les appels nécessitent un jeton Bearer. Récupérez votre clé API depuis le tableau de bord
Authorization: Bearer YOUR_TROOPER_KEY
Activez les routes sur trooper.ai/order-apiblib. Chaque route vous donne un nom de modèle à utiliser dans vos appels API.
| Itinéraire | Modèle de base | Points forts |
|---|---|---|
| liv | Google Gemma 4 | Le moins cher. Texte, images, audio et raisonnement. Adapté aux charges de travail à haut volume. |
| clara | Ministral 3 | Priorité à la vision. Débit rapide, fort soutien des langues de l'UE. |
| nikola | NVIDIA Nemotron 3 Nano | Moteur de raisonnement. Génération de code, appel de fonctions, flux de travail autonomes. |
/v1/chat/completionsPoint de terminaison compatible avec les complétions de conversation standard d'OpenAI.
/v1/modelsListe les modèles activés. Nécessite une authentification. Retourne uniquement les modèles correspondant à la région du domaine depuis lequel vous appelez.
Chaque objet modèle inclut :
| Champ | Type | Description |
|---|---|---|
id |
chaîne | Votre nom d’itinéraire (utilisé comme model (dans les requêtes). |
object |
chaîne | Toujours "model". |
owned_by |
chaîne | Identifiant du propriétaire. |
created |
entier | Horodatage Unix de création. |
base_models |
tableau de chaînes | Nom(s) du modèle sous-jacent. |
context_length |
entier | Fenêtre de contexte maximale (jetons). |
max_tokens |
entier | Nombre maximal de jetons en sortie. |
capabilities |
objet | Drapeaux fonctionnels pour ce modèle (voir ci-dessous). |
supported_parameters |
tableau de chaînes | Paramètres acceptés par ce modèle. |
Objet « capabilités » :
| Drapeau | Type | Description |
|---|---|---|
thinking |
booléen | Prend en charge reasoning_effort et le raisonnement pas à pas. |
tools |
booléen | Prise en charge des appels de fonction / outils. |
vision |
booléen | Prise en charge des entrées d'image et de fichiers PDF. |
audio |
booléen | Prise en charge des entrées audio. |
json_mode |
booléen | Prend en charge response_format (mode JSON / sorties structurées) |
token_budget |
booléen | Prise en charge du contrôle explicite du budget de jetons pour la réflexion. |
Utiliser capabilities.thinking pour déterminer si un modèle accepte les paramètres de raisonnement avant de les envoyer.
Exemple de réponse :
{
"object": "list",
"data": [
{
"id": "clara",
"object": "model",
"owned_by": "trooper_42",
"created": 1700000000,
"base_models": ["Ministral-3"],
"context_length": 131072,
"max_tokens": 131072,
"capabilities": {
"tools": true,
"vision": true,
"audio": false,
"thinking": false,
"json_mode": true,
"token_budget": false
},
"supported_parameters": [
"temperature", "top_p", "max_tokens", "stream",
"response_format", "tools", "tool_choice"
]
}
]
}
/healthRetourne la disponibilité de l'endpoint et les informations sur la région.
Commandez l'API Blib maintenant
Tous les paramètres suivent le format de l'API Chat Completions d'OpenAI.
| Paramètre | Type | Description |
|---|---|---|
model |
chaîne | Votre nom de route (ex. "clara", "nikola", "liv") |
messages |
tableau | Tableau d'objets de message (role + content) |
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
max_tokens |
entier | auto (32–4 096) | Nombre maximal de jetons en sortie. Automatiquement limité à la fenêtre de contexte du trajet. |
max_completion_tokens |
entier | — | Aliase pour max_tokens. |
stream |
booléen | false |
Activer le flux en continu (Server-Sent Events - SSE). |
temperature |
nombre | modèle par défaut | Température d'échantillonnage (0–2). |
top_p |
nombre | modèle par défaut | Échantillonnage par noyau. |
response_format |
objet | — | {"type": "json_object"} or {"type": "json_schema", "json_schema": {...}} |
tools |
tableau | — | Définitions des outils d'appel de fonction (format OpenAI) |
tool_choice |
chaîne/objet | — | Contrôle la sélection de l'outil (« "auto", "none", ou un outil spécifique). |
reasoning |
objet | — | `{"effort": "aucun"} |
reasoning_effort |
chaîne | — | Raccourci : "none", "medium", "high". |
reasoning.exclude |
booléen | false |
Exclure le contenu de raisonnement de la réponse. |
Flux standard en temps réel (Server-Sent Events), entièrement compatible avec la bibliothèque SDK d'OpenAI.
{ "stream": true }
Format de la réponse : data: {...}\n\n lignes, terminées par data: [DONE]\n\n.
Demandez une sortie structurée en format JSON. Assurez-vous non seulement de définir la requête JSON dans le texte du message, mais aussi d'indiquer au moins response_format à json_object !
Si le modèle ne produit pas un JSON valide, vous n’êtes pas facturé(e).
{ "response_format": { "type": "json_object" } }
Avec un schéma :
{
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "my_schema",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" }
},
"required": ["name", "age"]
}
}
}
}
Envoyez des images par URL ou en base64. Les PDF sont automatiquement convertis en images de pages côté serveur.
{
"messages": [{
"role": "user",
"content": [
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } },
{ "type": "text", "text": "Describe this image." }
]
}]
}
Base64:
{
"type": "image_url",
"image_url": { "url": "data:image/png;base64,iVBOR..." }
}
Envoyer des fichiers audio dans les messages multimodaux. Pris en charge sur liv.
Contrôlez si et dans quelle mesure le modèle raisonne (chaîne de réflexion) avant de répondre.
| Valeur | Effet |
|---|---|
"none" |
Désactivé – réponses les plus rapides, utilisation minimale de jetons. |
"low" |
Désactivé — identique à « aucun ». |
"medium" |
Activé — le modèle raisonne étape par étape avant de répondre. Bon équilibre entre qualité et rapidité. |
"high" |
Activé + approfondi — le modèle est invité à réfléchir très soigneusement et en grand détail. Idéal pour les calculs complexes, la logique et le code. Si max_tokens est défini, il doit être d’au moins 4 096, sinon la requête sera rejetée. |
Activer la réflexion standard :
{ "reasoning_effort": "medium" }
Activer une réflexion approfondie pour une qualité maximale :
{ "reasoning_effort": "high" }
Ou via le reasoning objet :
{ "reasoning": { "effort": "high" } }
Désactiver explicitement la réflexion :
{ "reasoning_effort": "none" }
Pour exclure le raisonnement de la réponse (le traitement a toujours lieu, mais les jetons du raisonnement ne sont pas retournés) :
{ "reasoning": { "effort": "high", "exclude": true } }
Comportement de réflexion peut également être configuré par itinéraire dans le tableau de bord de gestion. Le paramètre du tableau de bord contrôle le comportement par défaut et la manière dont les raisonnements sont retournés :
"reasoning_effort": "moyen" ou "élevé".contenu_de_raisonnement.<think> dans le contenu.Récupération de la réflexion : si le modèle entre dans une boucle de raisonnement, le routeur se rétablit automatiquement et renvoie une réponse exploitable.
Format standard des outils OpenAI. Fonctionne avec toutes les routes.
{
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": { "type": "string" }
},
"required": ["location"]
}
}
}],
"tool_choice": "auto"
}
Si votre entrée dépasse la fenêtre de contexte, le routeur compresse automatiquement la partie centrale de la conversation pour qu'elle tienne — aucune troncature manuelle nécessaire. Vous recevez toujours une réponse.
Un système de message (system prompt) gratuit peut être configuré par itinéraire dans le tableau de bord de gestion. Il est automatiquement préfixé à chaque demande et non facturé.
Enveloppe de réponse standard OpenAI :
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "clara",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you?"
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 8,
"total_tokens": 20
}
}
Avec le raisonnement activé, la réponse peut inclure reasoning_content aux côtés de content.
Chaque réponse inclut un(e) x-transaction-id en-tête pour référence de facturation et débogage.
Les erreurs suivent le format d'enveloppe d'erreur OpenAI :
{
"error": {
"message": "The model 'nonexistent' does not exist.",
"type": "invalid_request_error",
"param": "model",
"code": "model_not_found"
}
}
| Code statut HTTP | Code | Description |
|---|---|---|
| 400 | invalid_value |
Modèle manquant, clé API absente, entrée trop courte ou valeur non valide max_tokens. |
| 403 | invalid_api_key |
Clé API invalide ou budget insuffisant. |
| 404 | model_not_found |
Modèle introuvable ou non activé. |
| 404 | region_mismatch |
Le modèle n'est pas disponible dans la région demandée. |
| 500 | — | Erreur interne du routeur. |
| 503 | — | Aucun point de terminaison disponible dans la région demandée. |
Commandez l'API Blib maintenant
Consultez des exemples de code populaires pour utiliser une API compatible avec OpenAI pour l'inférence de modèles de langage (LLM). Le domaine router.trooper.ai doit être remplacé par l'URL d'extrémité indiquée dans votre commande API Blib !
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
response = client.chat.completions.create(
model="clara",
messages=[{"role": "user", "content": "Summarize this document."}],
max_tokens=1024
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://router.trooper.ai/v1",
apiKey: "YOUR_TROOPER_KEY",
});
const response = await client.chat.completions.create({
model: "nikola",
messages: [{ role: "user", content: "Write a unit test for this function." }],
max_tokens: 2048,
});
console.log(response.choices[0].message.content);
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
stream = client.chat.completions.create(
model="liv",
messages=[{"role": "user", "content": "Explain quantum computing."}],
max_tokens=2048,
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
import json
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
response = client.chat.completions.create(
model="clara",
messages=[{"role": "user", "content": "List the 3 largest EU countries as JSON with name and population."}],
max_tokens=512,
response_format={"type": "json_object"}
)
data = json.loads(response.choices[0].message.content)
print(data)
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
response = client.chat.completions.create(
model="clara",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/invoice.png"}},
{"type": "text", "text": "Extract all line items from this invoice as JSON."}
]
}],
max_tokens=2048,
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
}]
response = client.chat.completions.create(
model="nikola",
messages=[{"role": "user", "content": "What's the weather in Berlin?"}],
tools=tools,
tool_choice="auto",
max_tokens=512
)
tool_calls = response.choices[0].message.tool_calls
if tool_calls:
print(tool_calls[0].function.name, tool_calls[0].function.arguments)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY",
model="clara",
max_tokens=1024
)
response = llm.invoke("Extract all dates from the following text: ...")
print(response.content)
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
api_base="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY",
model="nikola",
max_tokens=2048
)
response = llm.complete("Explain the EU AI Act in simple terms.")
print(response.text)
curl https://router.trooper.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_TROOPER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "clara",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 512
}'
Modification en une ligne — mettez à jour l’URL de base et la clé API :
# Before (OpenAI)
client = OpenAI(api_key="sk-...")
# After (Trooper.AI)
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
Tout le reste reste identique : format de la requête, schéma de réponse, flux en continu (streaming), outils et mode JSON.