DocumentationRéférenceGestion des erreurs

Gestion des erreurs

Format de réponse d'erreur, codes de statut et dépannage

3 min de lecture

Sur cette page

Format de réponse d'erreur

Toutes les erreurs API suivent une structure JSON cohérente :

{
  "statusCode": 422,
  "message": "La validation a échoué",
  "error": "Unprocessable Entity",
  "details": [
    {
      "field": "price",
      "message": "Le prix doit être un nombre positif"
    },
    {
      "field": "sku",
      "message": "Le SKU existe déjà"
    }
  ]
}
ChampTypeDescription
statusCodenumberCode de statut HTTP
messagestringDescription d'erreur lisible
errorstringTexte de statut HTTP
detailsarray (optionnel)Erreurs de validation par champ

Codes de statut HTTP

Erreurs client (4xx)

CodeNomQuand cela se produit
400Bad RequestJSON mal formé, paramètres de requête invalides ou champs obligatoires manquants
401UnauthorizedClé API ou token JWT manquant ou invalide
403ForbiddenIdentifiants valides mais permissions insuffisantes (mauvais scope)
404Not FoundLa ressource n'existe pas ou a été supprimée
409ConflictRessource en double (ex : SKU déjà existant)
422Unprocessable EntityErreurs de validation dans le corps de la requête
429Too Many RequestsLimite de débit dépassée — voir Limites de débit

Erreurs serveur (5xx)

CodeNomQuand cela se produit
500Internal Server ErrorErreur serveur inattendue — contactez le support si persistant
502Bad GatewayProblème temporaire en amont — réessayez après un court délai
503Service UnavailableMaintenance planifiée ou surcharge — vérifiez la page de statut

Erreurs courantes et solutions

401 — Clé API invalide

{
  "statusCode": 401,
  "message": "Clé API invalide",
  "error": "Unauthorized"
}

Solutions :

  • Vérifiez que la clé API est correcte et n'a pas été révoquée
  • Vérifiez que le nom de l'en-tête est X-API-Key (sensible à la casse)
  • Assurez-vous que la clé est pour le bon environnement (live vs test)

403 — Scope insuffisant

{
  "statusCode": 403,
  "message": "La clé API n'a pas le scope requis : products:write",
  "error": "Forbidden"
}

Solution : Générez une nouvelle clé API avec les scopes requis depuis Paramètres → Intégrations.

422 — Erreurs de validation

{
  "statusCode": 422,
  "message": "La validation a échoué",
  "error": "Unprocessable Entity",
  "details": [
    { "field": "name", "message": "Le nom est obligatoire" },
    { "field": "price", "message": "Le prix doit être >= 0" }
  ]
}

Solution : Vérifiez le tableau details pour les erreurs spécifiques par champ et corrigez votre corps de requête.

429 — Limite de débit dépassée

Solution : Attendez la durée indiquée par l'en-tête Retry-After, puis réessayez. Voir Limites de débit pour les bonnes pratiques.

Bonnes pratiques de gestion des erreurs

  • Vérifiez toujours le code de statut avant d'analyser le corps de la réponse
  • Journalisez les réponses d'erreur avec l'URL de la requête et les en-têtes (en excluant les clés API) pour le débogage
  • Implémentez une logique de nouvelle tentative pour les erreurs 429 et 5xx avec un backoff exponentiel
  • N'exposez jamais les erreurs API brutes aux utilisateurs finaux — mappez-les vers des messages conviviaux
  • Utilisez le tableau details pour les erreurs 422 pour afficher des messages de validation par champ
Besoin d'aide ? Si vous rencontrez des erreurs 500 persistantes, contactez-nous à support@kataio.com avec l'URL de la requête, l'horodatage et la réponse d'erreur.