Saltar al contenido principal

Manejo de errores

La API Annie Insights utiliza códigos de estado HTTP estándar y devuelve respuestas de error JSON estructuradas.

Formato de respuesta de error

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

Códigos de estado HTTP

CódigoEstadoDescripciónCausa común
400Solicitud incorrectaCuerpo de solicitud no válido o faltan parámetros requeridosFaltan PatientID, TimeStamp o ImageName
401No autorizadoClave API no válida o faltanteValor de encabezado incorrecto x-api-key
422Entidad no procesableLa imagen no se pudo procesarImagen dañada, formato no compatible o contenido no dental
429Demasiadas solicitudesLímite de tarifa excedidoDemasiadas solicitudes en la ventana actual
500Error Interno del ServidorFallo inesperado del servidorPóngase en contacto con el soporte si persiste

Manejo de errores

401 - No autorizado

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

Solución: Verifique que su encabezado x-api-key esté presente y contenga una clave válida.

429 - Tarifa limitada

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

Solución: Implementar un retroceso exponencial. Verifique el encabezado Retry-After para conocer la duración de la espera.

422 — Entidad no procesable

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

Solución: Asegúrese de que la imagen sea una imagen dental JPEG/PNG válida con suficiente resolución.

Estrategia de reintento

Para errores transitorios (429, 500), implemente un retroceso exponencial:

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")