Référence de l'API
AIOrouter fournit une API REST compatible OpenAI. Toutes les requêtes utilisent JSON et l'authentification par jeton Bearer.
URL de base : https://api.aiorouter.ca/v1
Authentication
All nécessitent une clé API transmise sous forme de jeton Bearer :
Authorization: Bearer <votre-cle-API>
Les clés API peuvent être créées et gérées à partir du Dashboard.
Headers
| En-tête | Requis | Description |
|---|---|---|
Authorization |
Oui | Bearer <votre-cle-API> |
Content-Type |
Oui | application/json |
API-Version |
Non | Date de la version de l'API (par défaut : 2026-06-01) |
X-Request-Id |
Non | Identifiant de requête unique pour le traçage |
Endpoints
POST /v1/chat/completions
Crée une complétion de chat. Prend en charge les modes de diffusion en continu et non en continu.
Request Body :
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
model |
chaîne | Oui | ID du modèle (par exemple, deepseek-v4-pro, qwen3.7-max, qwen3.6-flash) |
messages |
tableau | Oui | Tableau d'objets message avec role et content |
temperature |
nombre | Non | Température d'échantillonnage (0–2, valeur par défaut : 1) |
max_tokens |
entier | Non | Nombre maximum de jetons à générer |
top_p |
nombre | Non | Paramètre d'échantillonnage nucleus (0–1) |
stream |
booléen | Non | Activer la diffusion en continu SSE (valeur par défaut : false) |
stop |
chaîne/tableau | Non | Séquences d'arrêt |
tools |
tableau | Non | Définitions de fonctions pour l'appel d'outils |
tool_choice |
chaîne/objet | Non | Stratégie de sélection d'outil |
response_format |
objet | Non | { "type": "json_object" } pour le mode JSON |
Example Response (non-streaming) :
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1717545600,
"model": "deepseek-v4-pro",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "Bonjour ! Comment puis-je vous aider aujourd'hui ?"
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 20,
"total_tokens": 30
}
}
Diffusion en continu (SSE) :
Définissez "stream": true pour recevoir Server-Sent Events :
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":"Bonjour"}}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"!"}]}}
data: [DONE]
Lorsqu'une requête en continu contient des données PII détectées, AIOrouter pseudonymise la requête destinée au fournisseur et restaure les deltas de texte de l'assistant avant d'émettre les événements SSE. Les flux visibles par le client ne doivent pas contenir de balises de modèle, de valeurs SURROGATE_PII(...) ou d'erreurs unsupported_streaming_privacy_mode.
Function Calling :
{
"model": "deepseek-v4-pro",
"messages": [{"role": "user", "content": "Quel est la météo à Montréal ?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Obtenir la météo actuelle",
"parameters": {
"type": "objet",
"propriétés": {
"location": {"type": "chaîne"}
},
"obligatoire": ["location"]
}
}
}]
}
GET /v1/models
Liste tous les modèles disponibles.
Réponse :
{
"object": "list",
"data": [
{
"id": "deepseek-v4-pro",
"object": "model",
"created": 1717545600,
"owned_by": "deepseek"
}
]
}
GET /v1/models/:modelId
Obtenez les détails d'un modèle spécifique.
Response Headers
| En-tête | Description |
|---|---|
X-Provider |
Le fournisseur d'IA qui a traité la demande |
X-Automated-Decision |
En-tête de transparence (Conformité à la loi 25) |
X-Request-Id |
Écho de l'identifiant de la demande |
API-Version |
Version de l'API utilisée |
Error Codes
| Status | Code | Description |
|---|---|---|
| 400 | invalid_request |
Malformed request body or parameters |
| 401 | authentication_error |
Invalid or missing API key |
| 402 | insufficient_quota |
Quota exceeded or insufficient credits |
| 429 | rate_limit_exceeded |
Too many requests |
| 500 | api_error |
Internal server error |
| 503 | service_unavailable |
All providers temporarily unavailable |
Rate Limits
| Plan | Rate Limit |
|---|---|
| Développeur | 60 requêtes/minute |
| Entreprise | 300 requêtes/minute |
| Non vérifié | 10 requêtes/minute |
Les en-têtes de limitation de débit sont inclus dans les réponses : X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Streaming Best Practices
- Définissez une valeur raisonnable de
max_tokenspour éviter les flux non bornés - Gérez le signal
[DONE]pour fermer correctement les connexions - Utilisez l'exponential backoff with jitter pour la reconnexion
- Surveillez l'en-tête
X-Providerpour assurer la transparence du routage