Codes d'Erreur

Comprendre les réponses d'erreur de l'API et comment les gérer.

Aperçu

L'API renvoie des réponses d'erreur standardisées avec des codes d'erreur spécifiques pour vous aider à identifier et résoudre rapidement les problèmes.

Format de la Réponse d'Erreur

Toutes les réponses d'erreur suivent cette structure :

{
  "status": "error",
  "error": {
    "code": "AUTH_1001",
    "message": "Identifiants d'authentification manquants",
    "details": "Les champs 'username' et 'password' sont tous deux requis",
    "timestamp": "2025-12-22T10:30:00Z"
  }
}
ChampTypeDescription
statusstringToujours "error" pour les réponses d'erreur
error.codestringIdentifiant unique de l'erreur
error.messagestringMessage d'erreur lisible
error.detailsstringContexte supplémentaire (optionnel)
error.timestampstringHorodatage ISO 8601

Erreurs d'Authentification (1000-1099)

Erreurs liées aux identifiants et à l'authentification.

CodeHTTPMessageSolution
AUTH_1001 401 Identifiants d'authentification manquants Incluez le nom d'utilisateur et le mot de passe dans la requête
AUTH_1002 401 Nom d'utilisateur ou mot de passe invalide Vérifiez que les identifiants sont corrects
AUTH_1003 403 Compte temporairement verrouillé Attendez avant de réessayer ou contactez le support

Erreurs de Quota (1100-1199)

Erreurs liées au quota API et aux limites d'utilisation.

CodeHTTPMessageSolution
QUOTA_1101 403 Quota API insuffisant Achetez plus de crédits ou vérifiez le quota
QUOTA_1102 429 Quota API dépassé Attendez le renouvellement du quota ou mettez à niveau votre plan

Erreurs de Validation (2000-2099)

Erreurs liées à la validation de la requête et aux données d'entrée.

CodeHTTPMessageSolution
VAL_2001 400 Aucun fichier téléchargé Incluez un fichier dans la requête
VAL_2002 400 Format de fichier invalide Utilisez les formats supportés : PDF, PNG, JPG, WEBP
VAL_2003 400 Plusieurs fichiers PDF non autorisés Téléchargez un seul PDF ou plusieurs images
VAL_2004 400 PDF et images ne peuvent pas être mélangés Téléchargez soit un PDF soit des images, pas les deux
VAL_2005 400 Code de langue non supporté Utilisez un code de langue supporté

Erreurs de Traitement (3000-3099)

Erreurs lors du traitement du document et de l'analyse IA.

CodeHTTPMessageSolution
PROC_3001 500 Échec du traitement du document Vérifiez la qualité de l'image, réessayez la requête
PROC_3002 500 Échec de l'extraction des métadonnées Assurez-vous que le document contient du texte lisible
PROC_3003 500 Échec de l'extraction des paramètres Vérifiez que le format de l'analyse sanguine est reconnaissable
PROC_3004 500 Échec de la génération de l'interprétation Réessayez la requête
PROC_3006 504 Délai de traitement dépassé Réduisez la taille du fichier ou divisez en plusieurs requêtes
PROC_3007 500 Analyse échouée après plusieurs tentatives Attendez et réessayez, ou contactez le support

Erreurs Serveur (5000-5099)

Erreurs internes du serveur et problèmes de disponibilité du service.

CodeHTTPMessageSolution
SRV_5001 500 Erreur interne du serveur Réessayez la requête, contactez le support si le problème persiste
SRV_5002 503 Service temporairement indisponible Attendez et réessayez avec un backoff exponentiel

Bonnes Pratiques de Gestion des Erreurs

Recommandations
  1. Vérifiez toujours le champ status - Les réponses réussies ont "status": "success"
  2. Implémentez une logique de réessai pour les erreurs transitoires (5xx) avec backoff exponentiel
  3. Enregistrez les codes d'erreur pour le débogage et la surveillance
  4. Affichez des messages conviviaux basés sur les codes d'erreur
  5. Utilisez les points d'accès sandbox pour tester la gestion des erreurs

Exemple de Gestion des Erreurs (JavaScript)

async function analyzeBloodTest(file) {
  try {
    const response = await fetch(API_URL, {
      method: 'POST',
      body: formData
    });

    const data = await response.json();

    if (data.status === 'error') {
      const errorCode = data.error.code;

      switch (true) {
        case errorCode.startsWith('AUTH_'):
          throw new Error('Échec de l\'authentification. Vérifiez vos identifiants.');
        case errorCode.startsWith('QUOTA_'):
          throw new Error('Quota dépassé. Veuillez mettre à niveau votre plan.');
        case errorCode.startsWith('VAL_'):
          throw new Error('Requête invalide : ' + data.error.message);
        case errorCode.startsWith('PROC_'):
          // Réessayer pour les erreurs de traitement
          return retryRequest(file);
        default:
          throw new Error('Une erreur s\'est produite. Veuillez réessayer.');
      }
    }

    return data.data;
  } catch (error) {
    console.error('Erreur API :', error);
    throw error;
  }
}