Todo error tiene una forma JSON consistente:Documentation Index
Fetch the complete documentation index at: https://developers.flowestate.app/llms.txt
Use this file to discover all available pages before exploring further.
error.code siempre son consistentes. Haz switch sobre code, muestra message al usuario final.
Códigos
| HTTP | error.code | Significado |
|---|---|---|
400 | BAD_REQUEST | Error genérico del cliente. |
400 | VALIDATION_ERROR | El cuerpo o query falló validación. El message lista los campos problemáticos. |
401 | UNAUTHORIZED | Bearer ausente, mal formado, desconocido o expirado. |
403 | FORBIDDEN | Autenticado pero sin permiso: scope faltante, límite del plan alcanzado, key inactiva, o regla de negocio violada. |
404 | NOT_FOUND | El recurso no existe o pertenece a otra organización. |
429 | BAD_REQUEST | Límite de tasa excedido. Reintenta tras Retry-After segundos. Ver Límites de tasa. |
500 | INTERNAL_ERROR | Falla inesperada del servidor. Es seguro reintentar de forma idempotente tras un breve backoff. |
Errores de límite del plan
Los erroresFORBIDDEN por límite de plan llevan un mensaje localizado como “Has alcanzado el número máximo de leads de tu plan.” — muéstraselo al usuario final tal cual, ya que son ellos los que pueden actuar (subir plan o eliminar registros).
Estos vienen de los billing guards en:
POST /leads— cuando se excedemaxLeads.POST /projects— cuando se excedemaxProjects.POST /webhooks/subscriptions— cuando se excedemaxWebhookEndpoints.
Errores de validación
Los mensajesVALIDATION_ERROR listan cada campo que falló en formato path: razón, separados por ; :
Idempotencia y reintentos
5xxy429son seguros para reintentar. Usa exponential backoff topado al valor deRetry-Aftercuando esté presente.4xx(excepto429) significa que el request en sí está mal. No reintentes sin cambiarlo.POST /webhooks/subscriptionses idempotente cuando pasasexternal_id— ver Crear una suscripción.- Otras escrituras no son idempotentes. Si reintentas un
POST /leadsa ciegas, vas a crear duplicados. Usa Buscar un lead primero para deduplicar.