Codes d'erreur

L'API GenesisAI utilise des codes HTTP standards et retourne des messages d'erreur détaillés pour vous aider à diagnostiquer les problèmes.

Format des erreurs

Toutes les erreurs suivent un format JSON cohérent :

Structure d'erreur

400
{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Description lisible de l'erreur",
    "details": {
      // Informations supplémentaires (optionnel)
    }
  },
  "request_id": "req_abc123xyz"
}

Request ID

Conservez le request_id pour tout contact avec le support. Il nous permet de tracer rapidement votre requête.

Catégories

4xx

Erreurs client

Problèmes avec la requête envoyée

5xx

Erreurs serveur

Problèmes de notre côté

Référence complète

MISSING_API_KEY401Aucune clé API fournie

Le header Authorization est absent de la requête.

Solution :Ajoutez le header 'Authorization: Bearer YOUR_API_KEY'
INVALID_API_KEY401Clé API invalide

La clé fournie n'existe pas ou a été révoquée.

Solution :Vérifiez votre clé ou générez-en une nouvelle.
EXPIRED_API_KEY401Clé API expirée

La clé a dépassé sa date d'expiration.

Solution :Générez une nouvelle clé depuis votre dashboard.
INVALID_REQUEST400Requête invalide

La requête est malformée ou contient des paramètres invalides.

Solution :Vérifiez le format JSON et les paramètres requis.
MISSING_PARAMETER400Paramètre manquant

Un paramètre requis est absent.

Solution :Consultez la documentation pour les paramètres requis.
INVALID_PARAMETER400Paramètre invalide

Un paramètre a une valeur non autorisée.

Solution :Vérifiez le type et les valeurs acceptées.
FILE_TOO_LARGE413Fichier trop volumineux

Le fichier dépasse la limite de taille.

Solution :Réduisez la taille du fichier ou divisez-le.
UNSUPPORTED_FORMAT415Format non supporté

Le format du fichier n'est pas pris en charge.

Solution :Convertissez vers un format supporté (MP3, WAV, etc.).
CORRUPTED_FILE422Fichier corrompu

Le fichier est endommagé ou illisible.

Solution :Vérifiez l'intégrité du fichier source.
INSUFFICIENT_CREDITS402Crédits insuffisants

Votre solde de crédits est insuffisant.

Solution :Rechargez votre compte ou passez à un plan supérieur.
RATE_LIMIT_EXCEEDED429Limite de requêtes dépassée

Trop de requêtes envoyées en peu de temps.

Solution :Attendez avant de réessayer (voir header Retry-After).
INTERNAL_ERROR500Erreur interne

Une erreur inattendue s'est produite.

Solution :Réessayez. Si l'erreur persiste, contactez le support.
SERVICE_UNAVAILABLE503Service indisponible

Le service est temporairement indisponible.

Solution :Réessayez dans quelques minutes.
PROCESSING_TIMEOUT504Timeout de traitement

Le traitement a pris trop de temps.

Solution :Réduisez la taille du fichier ou réessayez.

Gérer les erreurs

Bonnes pratiques

  • Toujours vérifier le champ success
  • Implémenter des retries avec backoff exponentiel pour les 5xx
  • Logger les request_id pour le debugging
  • Ne pas retry les erreurs 4xx (sauf 429)

JavaScript

async function callAPI(endpoint, data) {
  try {
    const response = await fetch(endpoint, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(data)
    });

    const result = await response.json();

    if (!result.success) {
      // Gérer l'erreur
      console.error(`Error: ${result.error.code}`);
      throw new Error(result.error.message);
    }

    return result.data;
  } catch (error) {
    // Gérer les erreurs réseau
    console.error('Network error:', error);
    throw error;
  }
}

Python

import requests
from time import sleep

def call_api(endpoint, data, max_retries=3):
    for attempt in range(max_retries):
        try:
            response = requests.post(
                endpoint,
                headers={"Authorization": f"Bearer {API_KEY}"},
                json=data
            )
            result = response.json()

            if not result.get("success"):
                error = result.get("error", {})
                code = error.get("code")

                # Ne pas retry les erreurs client
                if response.status_code < 500:
                    raise Exception(error.get("message"))

            return result.get("data")

        except requests.RequestException as e:
            if attempt < max_retries - 1:
                sleep(2 ** attempt)  # Backoff
            else:
                raise e
Codes d'erreur | Docs - GenesisAI