1) Crear campaña
Envía tu lista de items. Controla el throughput con rateLimitPerMinute (default 600) y parallelism (default 5). Usa dryRun para validar sin enviar.
POST /api/bulk
Content-Type: application/json
Idempotency-Key: camp-julio-001
{
"instanceId": 123,
"token": "TOKEN",
"items": [
{ "to": "573001112233", "type": "text", "message": "¡Promo de julio! 🎉" },
{ "to": "573009998877", "type": "text", "message": "Envío gratis hoy 🚚" }
],
"rateLimitPerMinute": 900,
"parallelism": 8,
"skipOptOut": false,
"dryRun": false
}
2) Estado del job y control
Consultar estado
GET /api/bulk/BULK_JOB_ID
Respuesta incluye status, counts (total, sent, failed, pending).
Pausar / Reanudar / Cancelar
POST /api/bulk/BULK_JOB_ID/pause POST /api/bulk/BULK_JOB_ID/resume POST /api/bulk/BULK_JOB_ID/cancel
3) Opt-out
Si el número existe en la tabla optouts, el ítem se marcará skipped. Puedes forzar envío con skipOptOut: true (no recomendado).