Ir al contenido

Referencia de API

Campañas y plantillas

Endpoints de campañas de email, campañas de llamadas y de las campañas masivas de SMS. Para el envío de un SMS suelto o la verificación por código de un solo uso (fuera de una campaña) ve a SMS y verificación.

Todos los endpoints de esta página cuelgan de /workspaces/:workspaceId/... y se autentican con tu API key.

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.

MétodoRutaDescripción
GET/campaigns/tagsListar etiquetas de campañas de email
POST/campaigns/tagsCrear una etiqueta
PATCH/campaigns/tags/:tagIdEditar una etiqueta
DELETE/campaigns/tags/:tagIdEliminar una etiqueta
POST/campaignsCrear campaña (borrador)
GET/campaignsListar campañas
GET/campaigns/:campaignIdObtener una campaña
PATCH/campaigns/:campaignIdActualizar campaña
DELETE/campaigns/:campaignIdEliminar campaña
POST/campaigns/:campaignId/duplicateDuplicar campaña
POST/campaigns/:campaignId/apply-templateAplicar una plantilla de diseño
POST/campaigns/:campaignId/testEnviar correo de prueba
POST/campaigns/:campaignId/approveAprobar campaña
POST/campaigns/:campaignId/scheduleProgramar envío
POST/campaigns/:campaignId/unscheduleQuitar la programación
POST/campaigns/:campaignId/pausePausar envío
POST/campaigns/:campaignId/resumeReanudar envío
POST/campaigns/:campaignId/cancelCancelar campaña
GET/campaigns/:campaignId/statsEstadísticas de envío
GET/campaigns/:campaignId/preflightChecklist: qué falta para poder programar
GET/campaigns/:campaignId/audienceVer audiencia asignada (listas y contactos)
PUT/campaigns/:campaignId/audienceFijar audiencia (reemplaza la selección completa)
GET/campaigns/:campaignId/audience/previewPrevisualizar la audiencia ya guardada
POST/campaigns/:campaignId/audience/estimateEstimar alcance de una selección aún sin guardar
GET/campaigns/:campaignId/recipientsListar destinatarios ya resueltos
GET/campaigns/:campaignId/recipients/exportExportar destinatarios (CSV)
DELETE/campaigns/:campaignId/recipients/:recipientIdQuitar un destinatario
DELETE/campaigns/:campaignId/recipientsVaciar destinatarios
POST /workspaces/:workspaceId/campaigns
CampoTipoRequeridoDescripción
namestringNombre de la campaña.
descriptionstringNoDescripción interna.
subjectstringNoAsunto del correo.
previewTextstringNoTexto de vista previa (máx. 200 caracteres).
fromNamestringNoNombre del remitente.
fromEmailstringNoCorreo del remitente.
replyTostringNoCorreo de respuesta.
tagIdsstring[]NoEtiquetas a asignar.
sendImmediatelybooleanNoMarca de envío inmediato para el paso de programación.
scheduledAtstringNoFecha preferida (se recalcula con hora/zona al programar).
timezonestringNoZona horaria IANA para scheduledAt.

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étodoRutaDescripción
GET/sender-domainsListar dominios (paginado)
POST/sender-domainsAgregar un dominio
POST/sender-domains/:id/verifyReleer el estado de verificación en SES
POST/sender-domains/:id/retryReiniciar verificación de un dominio en FAILED (rota los CNAME)
PUT/sender-domains/:id/mail-fromActivar/quitar el prefijo MAIL FROM personalizado
DELETE/sender-domains/:idEliminar un dominio
POST /workspaces/:workspaceId/sender-domains
CampoTipoRequeridoDescripción
domainstringDominio desde el que se quiere enviar (ej. midominio.com).

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).

MétodoRutaDescripción
GET/email-sendersListar remitentes
POST/email-sendersCrear remitente (envía el código de verificación)
POST/email-senders/:senderId/verifyConfirmar remitente con el código recibido
POST/email-senders/:senderId/resendReenviar el código de verificación
PATCH/email-senders/:senderIdEditar el nombre del remitente
DELETE/email-senders/:senderIdEliminar remitente
POST /workspaces/:workspaceId/email-senders
CampoTipoRequeridoDescripción
namestringNombre visible en el «De» (máx. 60 caracteres).
emailstringCorreo del remitente.

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étodoRutaDescripción
GET/email-suppressionsListar la lista de supresión (paginado, con búsqueda)
DELETE/email-suppressions/:idQuitar un correo de la lista
GET /workspaces/:workspaceId/email-suppressions
ParámetroTipoRequeridoDescripción
pagenumberNoPágina (por defecto 1).
limitnumberNoTamaño de página (por defecto 25, máximo 100).
searchstringNoFiltra por correo.

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étodoRutaDescripción
GET/sms-campaigns/providersProveedores de SMS disponibles
POST/sms-campaigns/analyze-messageContar segmentos/costo de un texto sin guardar nada
GET/sms-campaigns/tagsListar etiquetas de campañas de SMS
POST/sms-campaigns/tagsCrear una etiqueta
PATCH/sms-campaigns/tags/:tagIdEditar una etiqueta
DELETE/sms-campaigns/tags/:tagIdEliminar una etiqueta
POST/sms-campaignsCrear campaña (borrador)
GET/sms-campaignsListar campañas
GET/sms-campaigns/:campaignIdObtener una campaña
PATCH/sms-campaigns/:campaignIdActualizar campaña
DELETE/sms-campaigns/:campaignIdEliminar campaña
POST/sms-campaigns/:campaignId/duplicateDuplicar campaña
GET/sms-campaigns/:campaignId/preflightChecklist: qué falta para poder programar
POST/sms-campaigns/:campaignId/testEnviar SMS de prueba
POST/sms-campaigns/:campaignId/scheduleProgramar o enviar de inmediato
POST/sms-campaigns/:campaignId/unscheduleQuitar la programación
POST/sms-campaigns/:campaignId/pausePausar envío
POST/sms-campaigns/:campaignId/resumeReanudar envío
POST/sms-campaigns/:campaignId/cancelCancelar campaña
GET/sms-campaigns/:campaignId/statsEstadísticas de envío
POST/sms-campaigns/:campaignId/retry-failedReintentar los envíos fallidos
GET/sms-campaigns/:campaignId/audienceVer audiencia asignada
PUT/sms-campaigns/:campaignId/audienceFijar audiencia (listas/contactos del CRM)
POST/sms-campaigns/audience/estimateEstimar alcance de una selección sin guardar
POST/sms-campaigns/:campaignId/recipients/previewPrevisualizar un archivo de destinatarios (multipart)
POST/sms-campaigns/:campaignId/recipients/importImportar el archivo (multipart)
GET/sms-campaigns/:campaignId/recipientsListar destinatarios
GET/sms-campaigns/:campaignId/recipients/exportExportar destinatarios (CSV)
DELETE/sms-campaigns/:campaignId/recipients/:recipientIdQuitar un destinatario
DELETE/sms-campaigns/:campaignId/recipientsVaciar destinatarios
POST /workspaces/:workspaceId/sms-campaigns/:campaignId/schedule
CampoTipoRequeridoDescripción
sendImmediatelybooleanUno de los dosEnviar ya. Excluyente con scheduledAt.
scheduledAtstringUno de los dosFecha ISO de envío (debe ser futura).
timezonestringNoZona horaria IANA en la que el usuario eligió la fecha, solo para mostrarla después.

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étodoRutaDescripción
POST/call-campaignsCrear campaña
GET/call-campaignsListar campañas
GET/call-campaigns/:idObtener una campaña
PUT / PATCH/call-campaigns/:idActualizar campaña
POST/call-campaigns/:id/duplicateDuplicar campaña
DELETE/call-campaigns/:idEliminar campaña
PUT/call-campaigns/:id/policyGuardar la política de marcado completa
POST/call-campaigns/:id/policy/validateValidar una política sin guardarla
POST/call-campaigns/:id/policy/previewPrevisualizar cómo se comportaría una política
POST/call-campaigns/:id/contacts/importImportar contactos (archivo)
POST/call-campaigns/:id/contacts/import-from-crmImportar contactos desde el CRM (por contactIds)
GET/call-campaigns/:id/contactsListar contactos de la campaña
POST/call-campaigns/:id/contacts/crm-statusEstado en la campaña de una página de contactos del CRM
GET/call-campaigns/:id/contacts/:contactId/historyHistorial de intentos de un contacto
GET/call-campaigns/:id/preflightChecklist: qué falta para poder activar
POST/call-campaigns/:id/activateActivar campaña
POST/call-campaigns/:id/pausePausar campaña
POST/call-campaigns/:id/resumeReanudar campaña
POST/call-campaigns/:id/stopDetener campaña
GET/call-campaigns/:id/metricsMétricas agregadas
GET/call-campaigns/:id/callsListar llamadas de la campaña
GET/call-campaigns/:id/exportExportar resultados (CSV)
POST/call-campaigns/:campaignId/apply-templateAplicar una plantilla de política
GET/call-campaigns/:campaignId/export-policyExportar la política como JSON
POST/call-campaigns/:campaignId/import-policyImportar una política desde JSON
POST /workspaces/:workspaceId/call-campaigns
CampoTipoRequeridoDescripción
namestringNombre de la campaña (máx. 80 caracteres).
descriptionstringNoDescripción interna (máx. 1000 caracteres).
voiceAgentIdstringNoAsistente de voz que hará las llamadas.
verifiedCallerIdIdstringNoNúmero verificado desde el que se llama.
maxConcurrentCallsnumberNoLlamadas simultáneas (1–100, por defecto 5).
timezonestringNoZona horaria IANA (por defecto America/Bogota).
crmPipelineIdstringNoPipeline del CRM a asociar.

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.

MétodoRutaDescripción
GET/campaign-templatesListar plantillas
GET/campaign-templates/:idObtener una plantilla
POST/campaign-templatesCrear plantilla
PUT/campaign-templates/:idActualizar plantilla
DELETE/campaign-templates/:idEliminar plantilla
POST /workspaces/:workspaceId/campaign-templates
CampoTipoRequeridoDescripción
namestringNombre de la plantilla (máx. 255 caracteres).
descriptionstringNoDescripción (máx. 1000 caracteres).
policyobjectPolítica de marcado completa — ver Política — reglas.

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.