Skip to main content
Base URL: https://api.reallyquickemails.com

Como enviar correos masivos

Hay dos formas de enviar correos masivos: Ver más en POST /v1/send-batch.

POST /v1/campaigns

Crea una campaña de envío masivo.

Parámetros del body

Request example

Requiere Bearer token (Authorization: Bearer sk_proj_...). Ver más en Autenticacion.
Respuesta 200 OK
La campaña se devuelve de inmediato en estado initializing. Los registros de destinatarios se crean en segundo plano (2-30 segundos según el tamaño de la audiencia) y la campaña pasa a pending. El envío comienza automáticamente. El objeto campaign incluye la fila completa (también created_at, next_batch_at, select_all_recipients, send_over_hours, variable_config, scheduled_for, etc.). Ver más en Estados de una campana.

Detección de duplicados (409)

Para evitar envíos duplicados, la API responde 409 en dos casos:
  • subject_match_60min — ya existe una campaña con el mismo asunto creada en los últimos 60 minutos.
  • name_template_24h — ya existe una campaña con el mismo nombre y template en las últimas 24 horas en estado no completado (pending, paused, processing, initializing).
Para crear la campaña de todos modos, reenvía el request con "confirmDuplicate": true.

Códigos de error


GET /v1/campaigns

Lista las campañas del proyecto.

Query params

Respuesta 200 OK
status toma los valores de Estados de una campana: initializing, pending, processing, rate_limited, paused, completed, failed, cancelled.

GET /v1/campaigns/:id

Devuelve el detalle de una campaña con sus métricas. Respuesta 200 OK
El objeto campaign trae los mismos campos que la lista de GET /v1/campaigns.

POST /v1/campaigns/:id/cancel

Cancela una campaña programada o en curso.
Respuesta 200 OK
La cancelación es de corte suave: una campaña en pleno envío se detiene en el siguiente ciclo del motor, y un puñado de emails ya materializados en la cola puede alcanzar a salir en esa ventana. Una campaña programada que aún no arrancó no envía nada.

Campanas desde el Dashboard

El Dashboard ofrece un asistente de 5 pasos para crear y enviar campañas sin código.

Flujo completo

Paso 1: Crear un template

Desde Templates → Nuevo Template, diseña tu email en el editor visual. Los templates soportan variables dinámicas con sintaxis Handlebars:
Sintaxis de variables: Helpers disponibles: Variables integradas: cada destinatario recibe automáticamente {{name}}, {{email}} y {{unsubscribe_url}}, además de los campos del contacto. Las claves de primer nivel también funcionan en minúsculas: si tus datos traen NOMBRE, el template puede usar {{nombre}}. Si el template no incluye {{unsubscribe_url}}, se agrega un footer de cancelación automáticamente y los emails incluyen headers List-Unsubscribe.

Paso 2: Crear la campana

Desde Campañas → Nueva Campaña, el asistente te guía en 5 pasos:
  1. Destinatarios — Selecciona manualmente, usa “Seleccionar todos” o filtra por segmento.
  2. Template y Remitente — Elige el template creado y el perfil de remitente (dominio verificado).
  3. Variables (opcional) — Configura valores por defecto, mapea campos del destinatario a variables del template, o sube un CSV con valores personalizados por email.
  4. Configuración de envío — Activa modo por lotes, define tamaño de lote e intervalo, o distribuye el envío en N horas.
  5. Revisar y Enviar — Confirma todo y lanza la campaña.

Paso 3: Procesamiento automatico

Una vez creada la campaña:
  1. Se crean los registros de destinatarios (estado: pending)
  2. La campaña pasa de initializing a pending
  3. Los destinatarios se procesan de forma asíncrona en segundo plano: se preparan las variables de cada uno, se encolan para envío y pasan a estado queued
  4. Cada email se renderiza con Handlebars, se envía a través de nuestra infraestructura de envío y pasa a estado sent
  5. Los eventos de delivery/bounce/complaint actualizan el estado final y disparan tus webhooks
Ver más en Webhooks.

Configuracion avanzada

Modo por lotes

Divide el envío en lotes con intervalos usando batchMode, batchSize y batchIntervalHours. Útil para warming de dominio o para no saturar a tus destinatarios. Ejemplo: 50,000 destinatarios con lotes de 10,000 cada 24 horas = 5 días de envío gradual. Ver más en POST /v1/campaigns.

Distribucion horaria

Distribuye el envío uniformemente en un período con sendOverHours. Ejemplo: 3,000 emails distribuidos en 6 horas = ~500 emails por hora.

Variables por destinatario (CSV)

Personaliza cada email subiendo un CSV con columnas:
Las variables del CSV tienen prioridad sobre los valores por defecto.

Warming de dominio

Desde un dominio nuevo o con poco historial, sube el volumen de a poco. Escala de referencia: De ahí en adelante, alrededor de 1,4x por día hasta tu volumen objetivo. Para decenas de miles diarios, calcula cuatro a seis semanas de ramp. Usa el modo por lotes para automatizar esto. Enviar todo de golpe desde un dominio frío puede marcarte como spam en Gmail, Outlook y otros proveedores. Ver más en Deliverability y autenticación.

Estados de una campaña