Crear y despachar una campaña de mensajería masiva

Crea una campaña de mensajería masiva usando una plantilla aprobada por Meta y la encola para envío inmediato o programado.

Los destinatarios se especifican con recipients.type:

  • phones: lista de números de teléfono con código de país. Los que no se resuelvan a un contacto existente se reportan en recipients.skipped.
  • contact_ids: lista de IDs enteros de contactos de la cuenta.
  • labels: IDs enteros de etiquetas; se envía a todos los contactos que tengan alguna.
  • all: todos los contactos activos de la cuenta (values se ignora).

Si se omite scheduled_at, el envío comienza de inmediato. Si se especifica, usa el formato AAAA-MM-DD HH:mm (ej. 2026-12-01 09:00) en la zona horaria del usuario dueño del token, y debe ser una fecha futura (se retorna 422 si ya pasó).

Nota: el objeto data de la respuesta no incluye template_id porque ese dato no se persiste en la campaña.

Guía de integración

Para crear una campaña siga esta secuencia típica.

Pasos 1-7 — Preparación (endpoints auxiliares): reúnen los datos que necesita para armar el envío (línea, plantilla, variables, multimedia y destinatarios). No envían nada todavía.

  1. GET /whatsapp-numbers — obtenga el id de la línea de WhatsApp (phone_id).
  2. GET /whatsapp-templates — liste las plantillas aprobadas y tome el uuid de la plantilla deseada (template_uuid).
  3. GET /whatsapp-templates/{template_uuid}/variables — obtenga las variables (body/header/buttons) que requiere la plantilla para saber qué valores pasar en variables.body, variables.header y variables.buttons.
  4. POST /whatsapp-messages/attachment (solo si la plantilla usa header multimedia) — suba el archivo y use la URL resultante en media.url.
  5. GET /labels (si usa recipients.type: labels) — obtenga los IDs de etiquetas para recipients.values.
  6. GET /contacts (si usa recipients.type: contact_ids o phones) — obtenga los IDs o teléfonos de los destinatarios.
  7. GET /custom-fields (opcional) — obtenga los tokens de campos personalizados disponibles como variables dinámicas.

Pasos 8-10 — Envío y seguimiento (post-envío): el paso 8 crea y encola la campaña; los pasos 9-10 sirven para revisar y monitorear la entrega después del envío (no son necesarios para enviar).

  1. POST /campaigns (este endpoint) — cree la campaña. La respuesta incluye el uuid para el monitoreo posterior.
  2. GET /campaigns/{campaign_uuid}/stats(post-envío) consulte los conteos de entrega por estado.
  3. GET /campaigns/{campaign_uuid}/logs(post-envío) obtenga el detalle de entrega por contacto.
Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
string
required
length ≤ 255

Nombre descriptivo de la campaña

string | null

Descripción opcional de la campaña

uuid
required

UUID de la plantilla, de GET /v1/whatsapp-templates

integer
required

ID de la línea de WhatsApp desde la que se envía (obtenible en GET /whatsapp-numbers)

recipients
object
required

Configuración de destinatarios

variables
object

Variables de sustitución para los componentes de la plantilla

media
object

Archivo multimedia para el encabezado de la plantilla. Obtenga la URL con POST /whatsapp-messages/attachment.

string | null

Fecha y hora de envío en formato AAAA-MM-DD HH:mm (año-mes-día horas:minutos), interpretada en la zona horaria del usuario dueño del token. Si se omite, el envío comienza de inmediato. Debe ser una fecha futura (se retorna 422 si ya pasó o si el formato no coincide).

string
enum
Defaults to closed

Estado que se aplicará a la conversación de cada contacto DESPUÉS del envío. Por defecto closed. Valores:

  • unchanged - No modifica el estado actual de la conversación.
  • open - Deja la conversación abierta.
  • closed - Cierra la conversación (si el contacto responde, pasa a hold).
  • hold - Deja la conversación en espera.
Allowed:
boolean
Defaults to false

Controla el chatbot del/los contacto(s) tras el envío de la campaña.

  • true - Desactiva el chatbot por 24 horas (si ya estaba desactivado de
    forma permanente, se respeta ese bloqueo).
  • false (por defecto) - No modifica el chatbot: lo deja en el estado en que
    esté (si ya estaba desactivado, sigue desactivado; si estaba activo, sigue
    activo). La campaña nunca reactiva un chatbot.
Responses

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json