Cuelgan de /workspaces/:workspaceId/campaigns. Una campaña nace como DRAFT con solo el nombre y se completa por pasos (remitente, audiencia, asunto, diseño); preflight es la validación centralizada que decide si ya se puede programar.
Cuelgan de /workspaces/:workspaceId/sender-domains. Verificar un dominio propio crea una identidad en la cuenta de AWS SES de la plataforma (registros DKIM por CNAME); mientras no verifica, los correos salen con el dominio de respaldo de Waiify.
Método
Ruta
Descripción
GET
/sender-domains
Listar dominios (paginado)
POST
/sender-domains
Agregar un dominio
POST
/sender-domains/:id/verify
Releer el estado de verificación en SES
POST
/sender-domains/:id/retry
Reiniciar verificación de un dominio en FAILED (rota los CNAME)
Cuelgan de /workspaces/:workspaceId/email-senders. Un remitente es una dirección nombre@dominio.com desde la que se puede enviar; se verifica con un código de 6 dígitos enviado a esa dirección (no requiere DNS, a diferencia de un dominio de envío).
Cuelgan de /workspaces/:workspaceId/email-suppressions. Es la lista de correos a los que el workspace no puede volver a escribirle (se desuscribieron, rebotaron o marcaron como spam). Se alimenta sola con los eventos de SES; solo se puede leer y quitar entradas.
Método
Ruta
Descripción
GET
/email-suppressions
Listar la lista de supresión (paginado, con búsqueda)
Cuelgan de /workspaces/:workspaceId/sms-campaigns. Son campañas masivas a listas/contactos del CRM — distinto del envío suelto y del OTP de SMS y verificación. Igual que en email, nace en DRAFT y se completa por pasos.
Método
Ruta
Descripción
GET
/sms-campaigns/providers
Proveedores de SMS disponibles
POST
/sms-campaigns/analyze-message
Contar segmentos/costo de un texto sin guardar nada
GET
/sms-campaigns/tags
Listar etiquetas de campañas de SMS
POST
/sms-campaigns/tags
Crear una etiqueta
PATCH
/sms-campaigns/tags/:tagId
Editar una etiqueta
DELETE
/sms-campaigns/tags/:tagId
Eliminar una etiqueta
POST
/sms-campaigns
Crear campaña (borrador)
GET
/sms-campaigns
Listar campañas
GET
/sms-campaigns/:campaignId
Obtener una campaña
PATCH
/sms-campaigns/:campaignId
Actualizar campaña
DELETE
/sms-campaigns/:campaignId
Eliminar campaña
POST
/sms-campaigns/:campaignId/duplicate
Duplicar campaña
GET
/sms-campaigns/:campaignId/preflight
Checklist: qué falta para poder programar
POST
/sms-campaigns/:campaignId/test
Enviar SMS de prueba
POST
/sms-campaigns/:campaignId/schedule
Programar o enviar de inmediato
POST
/sms-campaigns/:campaignId/unschedule
Quitar la programación
POST
/sms-campaigns/:campaignId/pause
Pausar envío
POST
/sms-campaigns/:campaignId/resume
Reanudar envío
POST
/sms-campaigns/:campaignId/cancel
Cancelar campaña
GET
/sms-campaigns/:campaignId/stats
Estadísticas de envío
POST
/sms-campaigns/:campaignId/retry-failed
Reintentar los envíos fallidos
GET
/sms-campaigns/:campaignId/audience
Ver audiencia asignada
PUT
/sms-campaigns/:campaignId/audience
Fijar audiencia (listas/contactos del CRM)
POST
/sms-campaigns/audience/estimate
Estimar alcance de una selección sin guardar
POST
/sms-campaigns/:campaignId/recipients/preview
Previsualizar un archivo de destinatarios (multipart)
Cuelgan de /workspaces/:workspaceId/call-campaigns. La política de marcado (horarios, reglas de reintento, etapas) es un objeto grande y se documenta a fondo en la guía de campañas de llamadas y en Política — reglas; aquí solo se listan los endpoints.
Método
Ruta
Descripción
POST
/call-campaigns
Crear campaña
GET
/call-campaigns
Listar campañas
GET
/call-campaigns/:id
Obtener una campaña
PUT / PATCH
/call-campaigns/:id
Actualizar campaña
POST
/call-campaigns/:id/duplicate
Duplicar campaña
DELETE
/call-campaigns/:id
Eliminar campaña
PUT
/call-campaigns/:id/policy
Guardar la política de marcado completa
POST
/call-campaigns/:id/policy/validate
Validar una política sin guardarla
POST
/call-campaigns/:id/policy/preview
Previsualizar cómo se comportaría una política
POST
/call-campaigns/:id/contacts/import
Importar contactos (archivo)
POST
/call-campaigns/:id/contacts/import-from-crm
Importar contactos desde el CRM (por contactIds)
GET
/call-campaigns/:id/contacts
Listar contactos de la campaña
POST
/call-campaigns/:id/contacts/crm-status
Estado en la campaña de una página de contactos del CRM
Cuelgan de /workspaces/:workspaceId/campaign-templates. Una plantilla guarda una política de marcado reutilizable para aplicarla a varias campañas con POST /call-campaigns/:campaignId/apply-template. Ver también plantillas de campañas de llamadas.
Plantillas de email (/workspaces/:workspaceId/templates) y plantillas de WhatsApp (/workspaces/:workspaceId/whatsapp-templates) no están aquí porque son endpoints internos: se montan solo con authMiddleware (sesión del dashboard), no con workspaceAuthMiddleware, así que una API key recibe 401. Lo mismo aplica a /campaign-notifications y /whatsapp-numbers.