error.code siempre son consistentes. Haz switch sobre code, muestra message al usuario final.
Códigos
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.