Aller au contenu principal

Gestion des erreurs

Bonnes pratiques pour la gestion des erreurs des API YODI.

Problèmes connus

Certains services présentent actuellement des problèmes connus. Si vous rencontrez une erreur, vérifiez le statut du service ou contactez le support pour obtenir les dernières informations.

Codes de statut HTTP​

CodeSignificationAction
200SuccèsRequête terminée avec succès
201CrééRessource créée avec succès
400Mauvaise requêteVérifier les paramètres de la requête
401Non authentifiéClé API invalide ou manquante
402Paiement requisCrédits insuffisants
403InterditAccès refusé
404IntrouvableLa ressource n'existe pas
429Trop de requêtesLimite de débit dépassée, attendre et réessayer
500Erreur serveurRéessayer plus tard

Format de réponse d'erreur​

Toutes les réponses de l'API suivent une enveloppe standard. En cas d'erreur, error est true :

{
"message": "INSUFFICIENT_CREDITS",
"error": true,
"data": null,
"status": 402
}

Erreurs courantes​

401 Non authentifié​

{
"message": "INVALID_API_KEY",
"error": true,
"data": null,
"status": 401
}

Solutions :

  • VĂ©rifier que la clĂ© API est correcte
  • VĂ©rifier que la clĂ© n'a pas Ă©tĂ© rĂ©voquĂ©e
  • VĂ©rifier le format de l'en-tĂŞte Authorization : Bearer YOUR_KEY

402 Paiement requis​

{
"message": "INSUFFICIENT_CREDITS",
"error": true,
"data": null,
"status": 402
}

Solutions :

  • Recharger vos crĂ©dits
  • Mettre Ă  niveau votre abonnement
  • VĂ©rifier le solde de crĂ©dits

429 Limite de débit atteinte​

{
"message": "RATE_LIMITED",
"error": true,
"data": null,
"status": 429
}

Solutions :

  • Attendre avant de rĂ©essayer
  • ImplĂ©menter un backoff exponentiel
  • Passer Ă  un forfait supĂ©rieur

Bonnes pratiques de gestion des erreurs​

Implémenter une logique de réessai​

import time
import requests

def retry_with_backoff(url, headers, data, max_retries=3):
for attempt in range(max_retries):
try:
response = requests.post(url, headers=headers, json=data)

if response.status_code == 429:
wait_time = 2 ** attempt
print(f"Rate limited. Waiting {wait_time}s...")
time.sleep(wait_time)
continue

return response
except Exception as e:
print(f"Error: {e}")
time.sleep(2 ** attempt)

raise Exception("Max retries exceeded")

Journaliser les erreurs​

import logging

logger = logging.getLogger(__name__)

try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
except requests.exceptions.RequestException as e:
logger.error(f"API request failed: {e}", exc_info=True)
raise

Gérer les timeouts​

import requests

try:
response = requests.post(
url,
headers=headers,
json=data,
timeout=30 # 30 second timeout
)
except requests.exceptions.Timeout:
logger.error("Request timed out")
# Retry or handle as needed

Prochaines étapes​