Aller au contenu principal

Gestion des erreurs

L'API Annie Insights utilise des codes d'état HTTP standard et renvoie des réponses d'erreur JSON structurées.

Format de réponse d'erreur

{
"error": "Error Type",
"message": "Human-readable description",
"statusCode": 400
}

Codes d'état HTTP

CodeStatutDescriptionCause commune
400Mauvaise demandeCorps de la demande invalide ou paramètres requis manquantsPatientID, TimeStamp ou ImageName manquants
401Non autoriséClé API invalide ou manquanteMauvaise valeur d'en-tête x-api-key
422Entité non traitableL'image n'a pas pu être traitéeImage corrompue, format non pris en charge ou contenu non dentaire
429Trop de demandesLimite de débit dépasséeTrop de demandes dans la fenêtre actuelle
500Erreur interne du serveurPanne inattendue du serveurContacter le support si persistant

Gestion des erreurs

401 – Non autorisé

{
"error": "Unauthorized",
"message": "Invalid or missing API key",
"statusCode": 401
}

Correction : Vérifiez que votre en-tête x-api-key est présent et contient une clé valide.

429 — Tarif limité

{
"error": "Too Many Requests",
"message": "Rate limit exceeded. Retry after 60 seconds.",
"statusCode": 429
}

Correction : Implémentez un recul exponentiel. Vérifiez l’en-tête Retry-After pour connaître la durée d’attente.

422 — Entité non traitable

{
"error": "Unprocessable Entity",
"message": "The provided image could not be analyzed",
"statusCode": 422
}

Correction : Assurez-vous que l'image est une image dentaire JPEG/PNG valide avec une résolution suffisante.

Stratégie de nouvelle tentative

Pour les erreurs transitoires (429, 500), implémentez un recul exponentiel :

import time
import requests

def call_api_with_retry(url, headers, body, max_retries=3):
for attempt in range(max_retries):
response = requests.post(url, json=body, headers=headers)
if response.status_code == 200:
return response.json()
if response.status_code in [429, 500]:
wait = 2 ** attempt # 1s, 2s, 4s
time.sleep(wait)
continue
response.raise_for_status()
raise Exception("Max retries exceeded")