Manejo de Errores
Códigos de error de la API y cómo manejarlos
Cuando una solicitud API falla, Poomi devuelve una respuesta JSON de error con un código de estado HTTP apropiado.
Formato de Respuesta de Error
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Descripción del error legible."
}
}Códigos de Error
Errores del Cliente
| Estado HTTP | Código | Descripción |
|---|---|---|
| 400 | VALIDATION_ERROR | El cuerpo de la solicitud es incorrecto o faltan campos requeridos |
| 400 | MISSING_IMAGE | El endpoint requiere una imagen pero no se proporcionó |
| 400 | MISSING_TEXT | El endpoint requiere texto pero no se proporcionó |
| 400 | MISSING_INPUT | El endpoint requiere imagen y/o texto pero no se proporcionó |
| 400 | INVALID_IMAGE | El formato de imagen no es compatible o el tamaño excede el límite |
| 401 | UNAUTHORIZED | Encabezado Authorization faltante o inválido |
| 401 | INVALID_KEY | La API Key no existe |
| 402 | INSUFFICIENT_CREDITS | La cuenta no tiene suficientes créditos para esta solicitud |
| 403 | KEY_DISABLED | La API Key ha sido deshabilitada |
| 403 | KEY_REVOKED | La API Key ha sido revocada |
| 403 | KEY_EXPIRED | La API Key ha expirado |
| 404 | NOT_FOUND | El slug del endpoint no existe o no está publicado |
Errores del Servidor
| Estado HTTP | Código | Descripción |
|---|---|---|
| 502 | AI_CALL_FAILED | La llamada al modelo AI falló |
Manejo de Errores
Verifica el Código de Estado HTTP
- Errores 4xx son errores del cliente — corrige la solicitud antes de reintentar
- Errores 5xx son errores del servidor — seguro para reintentar con retroceso exponencial
Ejemplo: Manejo de Errores en Código
const response = await fetch('https://www.poomi.pet/api/v1/{endpoint-slug}', {
method: 'POST',
headers: {
'Authorization': 'Bearer pk_your_api_key_here',
'Content-Type': 'application/json',
},
body: JSON.stringify({ image: base64Data }),
});
if (!response.ok) {
const { error } = await response.json();
switch (error.code) {
case 'INSUFFICIENT_CREDITS':
// Solicitar al usuario que agregue créditos
break;
case 'INVALID_KEY':
// Verificar la configuración de la API Key
break;
case 'AI_CALL_FAILED':
// Reintentar la solicitud
break;
default:
console.error(`API error: ${error.code} - ${error.message}`);
}
}Estrategia de Reintento
Para errores 5xx, usa retroceso exponencial:
- Espera 1 segundo, reintenta
- Espera 2 segundos, reintenta
- Espera 4 segundos, reintenta
- Abandona después de 3 intentos