Error codes

Identifiez et résolvez rapidement vos incidents techniques. Cette section répertorie les codes d'erreur de l'API AlphaEdge, leurs causes et les solutions de correction.

En-têtes utiles à toutes les erreurs

  • X-Request-ID — identifiant unique présent sur toute réponse (auto-généré ou écho de la valeur envoyée par le client). À transmettre au support pour faciliter la corrélation côté serveur. Sur une erreur 500, l'identifiant est aussi dupliqué dans le corps JSON : {"detail": "...", "request_id": "..."}.
  • Retry-After — présent sur les réponses 429, 502, 503 et 504. Donne la durée recommandée d'attente (en secondes) avant un retry. Respectez cette valeur côté client (backoff).

Les messages d'erreur émis par la passerelle sont en français. Quelques messages 404 / 405 par défaut (« Not Found », « Method Not Allowed ») restent en anglais — il s'agit du fallback standard FastAPI.

List of error codes

400

Requête mal formée

Cause : Format du corps de requête invalide (rare : la passerelle privilégie la 422 pour les paramètres incorrects).

Solution : Vérifiez que le corps respecte le content-type annoncé. Pour les requêtes multipart, laissez le client (curl -F, requests, fetch+FormData) générer le boundary.

401

Authentification échouée

Cause : Clé API absente, vide ou invalide.

Message typique : {"detail": "Clé API manquante : fournissez l’en-tête X-API-Key ou Authorization: Bearer <clé>."}

Solution : Vérifiez votre clé. Deux en-têtes sont acceptés : X-API-Key: TA_CLE or Authorization: Bearer TA_CLE. Si vous n'en avez pas, créez une clé sur votre tableau de bord.

402

Solde insuffisant

Cause : Le solde du compte ne permet pas de couvrir le coût estimé de la requête.

Solution : Rechargez votre compte depuis le tableau de bord. Vous pouvez aussi consulter votre consommation via GET /account/usage.

403

Accès interdit

Cause : Hôte non autorisé : appel par IP brute, mauvais domaine, ou tentative d'accès à une route interne (ex. GET /health) depuis l'extérieur.

Message typique : {"detail": "Utiliser le nom de domaine « api-endpoints.alphaedge-ai.com » dans l’URL…"}

Solution : Toujours appeler l'API via le nom de domaine public https://api-endpoints.alphaedge-ai.com.

404

Ressource introuvable

Cause : Slug de modèle inexistant, identifiant de job inconnu, ou URL non routée.

Messages typiques :

  • {"detail": "Modèle introuvable."}
  • {"detail": "Job de transcription introuvable."}
  • {"detail": "Not Found"} (fallback FastAPI pour les URL non routées)

Solution : Vérifiez le slug du modèle (catalogue via GET /models) et la forme de l'URL (méthode, path, paramètres de chemin).

405

Méthode non autorisée

Cause : La méthode HTTP utilisée n'est pas supportée sur cette route (ex. GET sur un endpoint POST-only).

Solution : Consultez l'en-tête de réponse Allow qui liste les méthodes acceptées pour la route.

422

Paramètres invalides

Cause : Le multipart contient des champs non autorisés, le fichier requis est absent ou vide, ou une valeur booléenne ne fait pas partie des valeurs acceptées.

Exemples de messages :

  • {"detail": "Champ booléen invalide pour `enable_diarization`: 'banane'. Valeurs acceptées : 1/0, true/false, yes/no, on/off."}
  • {"detail": "Formulaire multipart invalide : champs autorisés = `audio` (fichier requis), `enable_diarization`, `enable_postcorrect`. Tout autre champ est refusé."}
  • {"detail": "Fichier audio illisible ou format non reconnu."}

Solution : Adaptez le formulaire selon le message renvoyé : nom de champ exact (audio / image), valeurs booléennes parmi 1/0, true/false, yes/no, on/off.

429

Trop de requêtes

Cause : Cas rare aujourd'hui (aucun rate-limit applicatif côté gateway). Peut être renvoyé par les couches réseau en amont si une protection est activée.

Solution : Respectez l'en-tête Retry-After renvoyé (5 s par défaut). Implémentez un backoff exponentiel avec jitter pour les retries.

500

Erreur interne du serveur

Cause : Le serveur rencontre un problème non rattrapé.

Solution : Réessayez après une brève attente. Le corps JSON inclut un champ request_id (identique au header X-Request-ID) — transmettez-le au support pour faciliter l'investigation.

502

Erreur de service en aval

Cause : Le service amont (ASR ou OCR) a renvoyé une erreur que la passerelle ne peut pas traduire en code applicatif.

Solution : Réessayez ; un en-tête Retry-After (5 s) accompagne la réponse. Si le problème persiste, contactez le support avec le X-Request-ID.

503

Service indisponible

Cause : Démarrage en cours, surcharge ou maintenance ponctuelle.

Solution : Respectez l'en-tête Retry-After (10 s par défaut). En cas de pic de trafic, implémentez un backoff exponentiel avec jitter.

504

Timeout en amont

Cause : La passerelle n'a pas pu joindre le service de vérification de clé ou un service amont à temps.

Solution : Réessayez après Retry-After (5 s). Si le problème persiste, contactez le support avec le X-Request-ID.

Best practices

To avoid errors and improve your application's robustness:

  • Error handling : Capturez tous les codes 4xx et 5xx et inspectez le champ detail du corps JSON pour un message explicite (en français).
  • Retry logic : Sur 429 / 502 / 503 / 504, respectez le header Retry-After. À défaut, utilisez un backoff exponentiel avec jitter.
  • Validation : Validez vos paramètres avant l'envoi pour éviter les 422.
  • Traçabilité : Conservez le header X-Request-ID renvoyé par chaque réponse. Pour pré-générer un identifiant client, envoyez votre propre X-Request-ID en amont : il sera repris tel quel dans la réponse.
  • Monitoring : Surveillez votre solde régulièrement via GET /account/me pour éviter les 402.