Listar leads
leads:read
Query parameters
Response 200
Crear un lead
leads:write
Al menos uno de email o phone es requerido. Las cadenas vacías cuentan como ausentes.
Request body
Semántica del campo
source. FlowEstate acepta cualquier string como source. Los valores conocidos de LeadSource se guardan tal cual. Los desconocidos se guardan como other en la columna enum, con la cadena original preservada en sourceMetadata.providedSource. Esto te permite mantener tu propio mapeo de UTM/campaña sin perder datos.Distribución por round robin
POST /leads ejecuta el round robin de punta a punta en una sola llamada: crea el lead, lo asigna a través de la rotación de un pool y emite lead.assigned para que tu automatización downstream (por ejemplo, una notificación de WhatsApp al agente) se dispare. No hace falta el webhook universal de leads ni un bridge intermedio.
Cuando el lead no tiene responsable, la asignación se resuelve en este orden:
assignedToId— se asigna directamente a ese miembro.roundRobinId— se asigna a través de ese pool. Como el destino es explícito, se respeta aunque el pool no tenga conexiones, y se omiten los flagsassignInboundLeads/assignManualLeadsdel pool.- Ninguno — asignación automática genérica: el lead se enruta a un pool activo con
assignInboundLeadshabilitado. Un pool sin conexiones funciona como el pool “inbound genérico” comodín, así que puedes distribuir leads de la API sin configurar ninguna conexión de webhook.
Response 201
assignedToId es el miembro asignado (o null si el lead quedó sin asignar). roundRobinId es el pool a través del cual se asignó el lead (null para un assignedToId explícito o cuando no hubo asignación).
Errores comunes
400 VALIDATION_ERROR— email inválido, falta tanto email como teléfono, oassignedToIdno es miembro de esta organización (se valida antes de crear el lead).403 FORBIDDEN— límite del plan alcanzado. El mensaje identifica el límite.
Efectos secundarios de webhooks
- Siempre:
lead.created(conX-FlowEstate-Source: api). - Si el lead queda asignado (vía
assignedToId,roundRobinId, o asignación automática genérica):lead.assigned. Su flagautoAssignedestruecuando el round robin eligió al participante, yfalsepara unassignedToIdexplícito — para distinguir ambos casos downstream.
Obtener un lead
leads:read. Devuelve la misma forma que un item de la lista. 404 NOT_FOUND si el lead no existe o pertenece a otra organización.
Actualizar un lead
leads:write. Mismo body que crear, todos los campos opcionales. Debes proveer al menos un campo. La regla de identidad de contacto (email o teléfono) sigue aplicando tras el merge.
Pasa null para limpiar un campo; omítelo para dejarlo intacto.
Efectos secundarios de webhooks
- Siempre:
lead.updated. - Si cambió
stageId:lead.stage_changed. - Si cambió
statusawon:lead.won. Alost:lead.lost. - Si cambió
assignedToId:lead.assigned(cuando se setea) olead.unassigned(cuando se limpia).
Eliminar un lead
leads:write.
Response 200
Efectos secundarios de webhooks
Se dispara un eventolead.deleted.
Buscar un lead
leads:read. Diseñado para los pasos “Find Lead” de Zapier / Make.
Query parameters
Al menos uno de estos es requerido:Response 200
Listar actividades
leads:read. Lista actividades del timeline (notas, llamadas, correos, reuniones, eventos del sistema).
Query parameters
Response 200
Agregar una nota
leads:write.
Request body
content es requerido, 1..5000 caracteres.
Response 201
Efectos secundarios de webhooks
Se dispara un eventolead.note_added.
Registrar una comunicación
leads:write. Registra una llamada, correo, reunión o mensaje de redes sociales en el timeline del lead.
Request body
Response 201
Efectos secundarios de webhooks
Se dispara un eventolead.communication_logged.