Skip to main content
El lead es el recurso central de FlowEstate. Cada endpoint en esta página opera dentro del tenant de la organización que llama — no puedes leer ni escribir leads de otra organización con la misma key.

Listar leads

Scope: leads:read

Query parameters

Response 200


Crear un lead

Scope: 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:
  1. assignedToId — se asigna directamente a ese miembro.
  2. 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 flags assignInboundLeads / assignManualLeads del pool.
  3. Ninguno — asignación automática genérica: el lead se enruta a un pool activo con assignInboundLeads habilitado. 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.
Si ningún pool coincide —o el pool encontrado no tiene participante elegible— el lead se crea sin asignar. La asignación es best-effort: nunca falla la creación del lead.

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, o assignedToId no 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 (con X-FlowEstate-Source: api).
  • Si el lead queda asignado (vía assignedToId, roundRobinId, o asignación automática genérica): lead.assigned. Su flag autoAssigned es true cuando el round robin eligió al participante, y false para un assignedToId explícito — para distinguir ambos casos downstream.

Obtener un lead

Scope: 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

Scope: 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ó status a won: lead.won. A lost: lead.lost.
  • Si cambió assignedToId: lead.assigned (cuando se setea) o lead.unassigned (cuando se limpia).

Eliminar un lead

Scope: leads:write.

Response 200

Efectos secundarios de webhooks

Se dispara un evento lead.deleted.

Buscar un lead

Scope: 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

Scope: leads:read. Lista actividades del timeline (notas, llamadas, correos, reuniones, eventos del sistema).

Query parameters

Response 200


Agregar una nota

Scope: leads:write.

Request body

content es requerido, 1..5000 caracteres.

Response 201

Efectos secundarios de webhooks

Se dispara un evento lead.note_added.

Registrar una comunicación

Scope: 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 evento lead.communication_logged.