docs
Aide

Erreurs et limites

Markdown

Codes de réponse, signification et actions à effectuer. Toutes les erreurs sont au format JSON et comportent un Request ID.

Guide complet

Format des erreurs

L’erreur utilise le format de l’API appelée : l’objet error pour OpenAI, {"type": "error", "error": {...}} pour Anthropic et error avec les champs status et details pour Gemini. Les SDK les reconnaissent donc comme des erreurs API ordinaires.

  • error.code et error.reason — classe d’erreur figurant dans le tableau ci-dessous ; les deux champs ont la même valeur. error.type — valeur standard du format (par exemple, invalid_request_error ou server_error).
  • error.request_id (pour Anthropic, request_id au premier niveau), l’en-tête X-Request-ID et la fin du message contiennent l’identifiant de la requête.
  • Pour Gemini, la classe se trouve dans error.details : ErrorInfo.reason — le même code en majuscules (par exemple, MODEL_OVERLOADED), domain — ailoot.ai ; l’identifiant de la requête se trouve dans RequestInfo.requestId.
  • Au format Gemini, une erreur 5xx qui ne doit pas être relancée automatiquement et result_pending_check sont renvoyés avec le statut 409 et status ABORTED : les SDK et CLI Gemini ne les relancent donc pas eux-mêmes. La classe d’erreur se trouve dans ErrorInfo.reason (par exemple, MODEL_TIMEOUT ou RESULT_PENDING_CHECK).
  • La réponse au format OpenAI contient également les champs de premier niveau code et message — pour les anciens clients.
{
  "code": "API_KEY_REQUIRED",
  "error": {
    "code": "invalid_api_key",
    "message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
    "param": null,
    "reason": "invalid_api_key",
    "request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
    "type": "invalid_request_error"
  },
  "message": "No API key was sent with the request. Nothing was charged. …"
}

Codes d’erreur

HTTPClasse (reason)Ce qui s’est passéQue faire
400invalid_requestLa requête est incorrecte : corps ou paramètre invalide ; le modèle ne prend pas en charge un champ, une pièce jointe ou un outil demandé ; la clé est fournie dans l’adresse Corrigez la requête selon le message d’erreur : retirez le champ, la pièce jointe ou l’outil non pris en charge et transmettez la clé dans un en-tête. Un refus pour un champ, une pièce jointe ou un outil non pris en charge intervient avant la réservation : aucun montant n’est débité
400context_length_exceededLa requête dépasse le contexte du modèleRéduisez l’historique ou choisissez un modèle avec un contexte plus grand
400content_policy_violationLa requête a été refusée par les règles du modèleReformulez la requête
401invalid_api_keyClé absente ou incorrecteVérifiez que la clé est transmise intégralement
401api_key_disabledLa clé est désactivéeActivez la clé ou créez-en une nouvelle
402insufficient_balance, insufficient_quotaLe solde disponible ne couvre même pas la réservation minimale (insufficient_quota — le même cas, présenté sous une forme familière au SDK OpenAI)Rechargez le solde ou réduisez max_tokens
402api_key_quota_exhaustedLe plafond global de dépenses de la clé est atteintAugmentez le plafond de la clé dans votre espace client
402payment_disputedLe compte présente une dette liée à un paiement contestéLes nouvelles requêtes sont suspendues jusqu’au règlement : contactez l’assistance
403api_key_expiredLa clé a expiréCréez une nouvelle clé
403account_inactiveVotre compte est désactivéContactez l’assistance
403permission_deniedCette requête est interdite à la clé, par exemple selon l’IPVérifiez les restrictions de la clé
404model_not_foundCe modèle n’existe pasVérifiez l’ID dans /v1/models
404unsupported_endpointLe modèle ne fonctionne pas dans ce formatChoisissez un autre format ou modèle
404not_foundCe chemin ou cet objet, comme une tâche, n’existe pasVérifiez l’adresse et l’identifiant
409duplicate_requestL’opération utilisant la même clé d’idempotence a déjà été acceptée et est peut-être déjà terminéeVérifiez le résultat de la première opération ; n’en envoyez pas une nouvelle
409not_ready, video_not_readyLa vidéo ou l’autre tâche n’est pas encore prêteConsultez le statut plus tard
409, 503result_pending_checkLe résultat de la requête est en cours de vérification. Pour une tâche vidéo, cela correspond au marqueur result_pending_check: true dans la réponse de statut ; la tâche reste in_progressNe renvoyez pas la requête : son statut apparaîtra dans l’historique (GET https://ailoot.ai/api/v1/usage). Ne recréez pas la tâche vidéo : vérifiez-la plus tard via GET /v1/videos/{id}
410model_retiredLe modèle a été retiré du serviceChoisissez une nouvelle version dans GET /v1/models
413request_too_largeLe corps de la requête est trop volumineuxRéduisez les fichiers ou l’historique
429rate_limit_exceeded, gateway_concurrency_limit, gateway_queue_fullTrop de requêtes ou de requêtes simultanées depuis votre comptePatientez (en-tête Retry-After, généralement 10 s), puis réessayez
429usage_limit_reachedLe plafond de dépenses de la clé pour la période est atteint (5 heures, 1 jour ou 7 jours)Attendez le renouvellement de la fenêtre ou augmentez le plafond de la clé
500internal_errorErreur AilootContactez l’assistance en indiquant le Request ID
502invalid_model_response, empty_response, incomplete_responseLe modèle a renvoyé une réponse invalide, vide ou incomplèteRecherchez le Request ID dans l’historique de votre espace personnel. S’il contient un résultat ou un débit, un nouvel envoi créera une deuxième requête payante. L’absence d’entrée ne confirme ni que la requête n’a pas été envoyée, ni qu’elle n’a pas été exécutée : ne répétez pas un envoi dont l’issue est inconnue ; contactez le support en indiquant le Request ID.
502result_not_deliveredLe résultat n’a pas été livré par la faute d’Ailoot ; le montant réservé a été libéré ou le débit rembourséVous pouvez renvoyer la requête
503model_overloadedLe modèle est temporairement surchargéSi X-Should-Retry : true, réessayez après le nombre de secondes indiqué dans Retry-After ; si false, vérifiez d’abord le Request ID dans l’historique
503model_unavailableLe modèle est temporairement indisponibleChoisissez un autre modèle. Si X-Should-Retry : true, réessayez après le nombre de secondes indiqué par Retry-After ; si false, vérifiez d’abord le Request ID dans l’historique
503service_unavailableDéfaillance temporaire du côté d’AilootSi X-Should-Retry : true, réessayez après le nombre de secondes indiqué dans Retry-After ; si false, vérifiez d’abord le Request ID dans l’historique
503charge_not_confirmedLa réponse n’a pas été fournie : le débit n’a pas pu être confirmé ; la réservation a été libérée et aucun montant n’a été débitéSi X-Should-Retry : true, réessayez après le nombre de secondes indiqué dans Retry-After ; si false, vérifiez d’abord le Request ID dans l’historique
504model_timeoutLe modèle n’a pas répondu à temps ; le résultat peut encore arriverNe renvoyez pas la requête avant d’avoir vérifié le Request ID dans l’historique

Les codes relatifs aux réponses du modèle et à la vérification du résultat (502, 503 et 504) désignent désormais le modèle ou la requête : model_unavailable, model_timeout, invalid_model_response, incomplete_response, charge_not_confirmed et result_pending_check. Si votre code compare error.code aux anciennes valeurs, remplacez-les par les codes du tableau ; pour connaître la correspondance entre anciens et nouveaux codes, contactez l’assistance.

Quand relancer une requête

  • Vérifiez d’abord X-Should-Retry : en cas de false, result_pending_check ou model_timeout , ne relancez pas automatiquement la requête. Recherchez le Request ID dans l’historique de votre espace client : vous y trouverez le résultat et le débit.
  • Une nouvelle tentative est sûre lorsque vous recevez X-Should-Retry : true : attendez Retry-After secondes. Un code 5xx ne suffit pas : le résultat peut déjà exister. Vérifiez d’abord l’historique dans votre espace client ou contactez l’assistance en indiquant le Request ID. C’est particulièrement important pour les images, les vidéos, la musique et les longues étapes d’agents.
  • Une nouvelle tentative ne résoudra rien : 400, 401, 402, 403, 404 : corrigez d’abord la requête, la clé ou le solde.

Limites

La fréquence et le nombre de requêtes simultanées sont limités pour votre compte dans son ensemble, et non pour chaque clé. Un dépassement entraîne une réponse 429 rate_limit_exceeded avec l’en-tête Retry-After: 10. Si le modèle lui-même est surchargé, une réponse 503 est renvoyée avec model_overloaded avec Retry-After: 30. Pour un volume plus élevé, contactez l’assistance.

Les plafonds de dépenses se définissent pour chaque clé : plafond global, erreur 402 api_key_quota_exhausted ; fenêtres de 5 heures, 1 jour et 7 jours, erreur 429 usage_limit_reached. En savoir plus : Clés et URL de l’API.

Modèles NVIDIA : file d’attente

Vous pouvez consulter la liste des modèles même avec un solde nul ; pour générer, le solde doit couvrir la réservation. Les modèles NVIDIA, Nemotron et d’autres, passent par une file d’attente commune : en cas de forte charge, la réponse peut arriver plus tard ou une erreur « modèle temporairement surchargé » est renvoyée avec l’en-tête Retry-After. Réessayez après le délai indiqué. Les prix figurent dans le catalogue et la facturation suit les mêmes règles que pour les autres modèles.

Le modèle fixe les limites de taille : le contexte, soit le nombre de tokens que vous pouvez envoyer, et la longueur maximale de réponse. Elles figurent dans le catalogue.

Historique et dépenses

Historique et dépenses · GET https://ailoot.ai/api/v1/usage · JWT · Authorization: Bearer $TOKEN

JWT ≠ sk-… · Connexion et sessions

Des questions ? Envoyez-nous le Request ID et une description : nous vous aiderons à y voir plus clair.Contacter l’assistance