Codigos de Error

La API de ZUI GEN usa codigos de estado HTTP estandar junto con codigos de error especificos para indicar el resultado de las peticiones.

Formato de Error

Todas las respuestas de error siguen el mismo formato:

Respuesta de errorjson
{
"error": "Mensaje descriptivo del error",
"code": "ERROR_CODE"
}

Codigos HTTP

CodigoSignificadoDescripcion
200OKPeticion exitosa
400Bad RequestParametros invalidos o faltantes
401UnauthorizedAPI Key invalida o faltante
402Payment RequiredCreditos insuficientes
403ForbiddenNo tienes permiso para esta accion
404Not FoundRecurso no encontrado
429Too Many RequestsRate limit excedido
500Internal ErrorError interno del servidor

Errores de Autenticacion

CodigoHTTPDescripcionSolucion
MISSING_API_KEY401No se envio API KeyIncluir header Authorization
INVALID_API_KEY_FORMAT401Formato de key incorrectoLa key debe empezar con zui_
INVALID_API_KEY401Key no existe o revocadaVerificar key en el panel
SUBSCRIPTION_REQUIRED403No hay suscripcion activaActivar un plan de suscripcion

Errores de Generacion

CodigoHTTPDescripcionSolucion
MISSING_MODEL400Falta el parametro modelIncluir model en el body
INVALID_MODEL400El modelo no existeConsultar GET /models
MISSING_PROMPT400Falta el prompt de textoIncluir prompt en el body
MISSING_IMAGE400El modelo requiere imagenIncluir image_url
INVALID_IMAGE_URL400URL de imagen invalidaVerificar que la URL es accesible
INSUFFICIENT_CREDITS402No hay creditos suficientesRecargar creditos o cambiar plan
CONTENT_MODERATION400Contenido rechazado por moderacionModificar el prompt
GENERATION_ERROR500Error al procesarReintentar la peticion

Errores de Tareas

CodigoHTTPDescripcionSolucion
TASK_NOT_FOUND404Tarea no encontradaVerificar task_id y permisos

Errores de Rate Limit

CodigoHTTPDescripcionSolucion
RATE_LIMIT_EXCEEDED429Demasiadas peticionesEsperar y usar backoff exponencial

Manejo de Errores

Ejemplo de como manejar errores correctamente:

Error handlingtypescript
interface ApiError {
error: string;
code: string;
}
async function generateWithErrorHandling(
model: string,
prompt: string
) {
try {
const response = await fetch('https://gen.zui.es/api/v1/generate', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ model, prompt }),
});
if (!response.ok) {
const error: ApiError = await response.json();
switch (error.code) {
case 'INSUFFICIENT_CREDITS':
// Notificar al usuario que necesita mas creditos
throw new Error('No tienes suficientes creditos');
case 'INVALID_MODEL':
// Modelo no disponible
throw new Error('El modelo seleccionado no esta disponible');
case 'RATE_LIMIT_EXCEEDED':
// Implementar retry con backoff
await new Promise(r => setTimeout(r, 5000));
return generateWithErrorHandling(model, prompt);
case 'CONTENT_MODERATION':
throw new Error('El contenido fue rechazado por moderacion');
default:
throw new Error(error.error || 'Error desconocido');
}
}
return await response.json();
} catch (error) {
if (error instanceof TypeError) {
// Error de red
throw new Error('Error de conexion. Verifica tu internet.');
}
throw error;
}
}

Mejores Practicas

  • Siempre verifica el codigo HTTP antes de procesar la respuesta.
  • Implementa retry con backoff exponencial para errores 429 y 5xx.
  • Guarda logs de errores para debugging.
  • Muestra mensajes de error amigables al usuario final.
  • No expongas detalles tecnicos de errores en interfaces publicas.