URL base
https://api.flowella.io/v1/messages.
La API antes vivía en el host de la aplicación en
https://app.flowella.io/api/v1/.... Las solicitudes legadas a esa ruta se redirigen permanentemente (308) a la canónica https://api.flowella.io/v1/..., conservando el método y el cuerpo — por lo que las integraciones existentes siguen funcionando. Actualiza tu URL base cuando puedas para saltarte el salto adicional.Autenticación
Cada solicitud necesita una clave de API en la cabeceraAuthorization:
Crear una clave
Necesitas el rol de Propietario o Administrador para gestionar las claves de API.- Ve a Configuración → Claves de API en la aplicación de Flowella.
- Haz clic en Crear clave y asígnale un nombre memorable.
- Copia la clave una vez — solo se muestra en el momento de la creación.
Verificar una clave
Llama al endpoint de ping para confirmar que una clave es válida:200 OK con { "ok": true, "organizationId": "…" } significa que estás autenticado.
Errores
Todos los errores devuelven una envoltura consistente:
El campo
error.code es estable y seguro para hacer switch programáticamente. El error.message es legible por humanos y puede cambiar.
Límites de velocidad
Las claves de API tienen límites de velocidad por organización. Si superas el límite, recibirás un429 con el código RATE_LIMITED y el mensaje Too many requests. Cuando esté presente, la cabecera de respuesta Retry-After te indica cuántos segundos esperar. Retrocede y reintenta con retraso exponencial.
Si estás ejecutando grandes envíos masivos, prefiere POST /v1/templates/send con el parámetro throttlePerHour — Flowella aplica el límite en el servidor, por lo que no necesitas marcar el ritmo de las solicitudes tú mismo.
Claves de idempotencia
Los envíos masivos de plantillas son asíncronos.POST /v1/templates/send valida la solicitud, la pone en cola de forma duradera y devuelve 202 Accepted inmediatamente:
Idempotency-Key (hasta 200 caracteres) que identifique cada lote de forma única:
id del trabajo original en lugar de crear un nuevo envío. Puedes reintentar una solicitud de forma segura después de un timeout o error de red sin enviar mensajes a nadie dos veces.
Si omites la cabecera, Flowella deriva una clave del cuerpo de la solicitud. Un lote idéntico enviado dos veces en rápida sucesión no se envía por duplicado. Aun así, una clave explícita es más segura, porque cualquier cambio en el cuerpo (incluso reordenar los destinatarios) produce una clave derivada nueva.
Paginación
Los endpoints de listado (/conversations, /contacts, /templates) usan paginación por cursor:
- Pasa
limit(1–100, por defecto 25) y uncursoropcional. - La respuesta contiene
itemsy, cuando hay más resultados, unnextCursor. - Pasa
nextCursorcomo el parámetrocursorpara obtener la siguiente página. - Cuando falta
nextCursor, has llegado al final.
Fecha y hora
Todas las marcas de tiempo son cadenas ISO 8601 en UTC (por ejemplo2025-01-15T14:30:00.000Z). Cuando la API acepta fechas, tanto solo fecha (2025-01-15) como ISO 8601 completo se coercionan en el servidor.
Números de teléfono
Pasa los números de teléfono en formato E.164 (+15551234567) siempre que sea posible. Flowella normaliza variaciones comunes en el servidor, pero E.164 es lo más seguro.
Canales
Muchos endpoints aceptan unwhatsappChannelId. Si tu organización tiene un solo canal y lo omites, Flowella usa tu canal por defecto. Si tienes varios canales, pasa el ID explícitamente para evitar enviar desde el remitente equivocado.
Para el patrón de URL completo y el cambio de canal, consulta Multi-canal.

