Skip to main content
POST
Encola una campaña de plantilla de WhatsApp hacia una lista de números telefónicos. Un único parámetro type discrimina si la campaña usa un header de imagen o de video. El procesamiento es asíncrono: el endpoint responde apenas encola los envíos (un job en background por cada teléfono, con rate-limit por canal de WhatsApp). Un 200 significa “encolado”, no “entregado”.
Migración: Este endpoint reemplaza al antiguo POST /campaigns/import-video-messages, que fue eliminado. Los consumidores de video deben migrar a /campaigns/import-messages enviando type: "video". Los consumidores de imagen que no envían type no se ven afectados: el valor por defecto sigue siendo image y la respuesta conserva la clave image_path.
Feature flag requerido: La empresa debe tener habilitada la feature campaigns. Si no está habilitada, el endpoint responde 403 Forbidden con el mensaje “Company does not have this feature.”

Headers

string
required
Debe ser application/json.
string
required
Debe ser application/json.

Body

string
default:"image"
Tipo de campaña. Valores permitidos: image, video. Si se omite, el valor por defecto es image.
string
required
Nombre de la plantilla de WhatsApp aprobada en Meta/Dialog360 con el header correspondiente al type. Debe pertenecer a la lista permitida según el tipo:
  • type: "image"sensibilizacion_primera_comunicacion, sensibilizacion_primera_comunicacion_v2.
  • type: "video" → configurables del lado del servidor (actualmente sensibilizacion_primera_comunicacion_video, recordatorio_pago_video_v1, promo_video_r1, pago_factura_video_push1).
La plantilla debe estar aprobada en Meta/Dialog360 con el header del tipo correcto (IMAGE o VIDEO). Un nombre no aprobado falla en Meta aunque el endpoint responda 200.
string
URL pública de la imagen para el header del template. Requerido cuando type es image (o cuando se omite). Se ignora si type es video. El backend descarga la imagen para validarla, por lo que el host debe ser accesible públicamente.
string
URL pública del MP4 para el header del template. Requerido cuando type es video. Se ignora en cualquier otro caso. El backend descarga el video para validarlo, por lo que el host debe responder al GET.
string
Variable 1 del cuerpo de la plantilla. Para el template sensibilizacion_primera_comunicacion, corresponde al nombre de la compañía que envía la campaña.
string
Variable 2 del cuerpo de la plantilla.
string
Variable 3 del cuerpo de la plantilla.
string[]
required
Lista de números telefónicos. Mínimo 1 número. Cada uno debe ser un teléfono válido (formato E.164 recomendado, ej: +573001112233) de máximo 20 caracteres.
Los valores optional_1, optional_2 y optional_3 se envían como los parámetros del cuerpo de la plantilla, en orden. Los vacíos se descartan.

Requisitos del archivo multimedia

Los límites siguen las restricciones de la WhatsApp Cloud API. El backend descarga y valida el archivo antes de encolar los envíos.
  • Peso máximo: 2 MB.
  • Formatos permitidos: JPEG o PNG.
  • Dimensiones: lado más corto ≥ 600 px, lado más largo ≤ 2048 px.
  • Relación de aspecto: 4:3, 9:16 o 2:3 (tolerancia ±1%).
  • El host debe ser accesible: el backend descarga la imagen para validarla.

Response

string
Mensaje de confirmación. Valor: Campaign queued.
string
Tipo de campaña procesada (image o video).
string
Nombre de la plantilla utilizada.
integer
Cantidad de jobs encolados (uno por cada teléfono de phones).
string
Ruta de almacenamiento de la imagen descargada. Presente cuando type es image.
string
Ruta de almacenamiento del video descargado. Presente cuando type es video.
string
Fecha y hora de encolamiento, en formato YYYY-MM-DD HH:mm:ss.