Ricky logorickyDocs

Crear una campaña

POST
/broadcasts

Envía una plantilla aprobada de WhatsApp a una audiencia, ahora o en scheduled_at. Ricky fija la lista de destinatarios en este momento y envía por la conversación de cada número, como una plantilla enviada desde la bandeja; las variables que la plantilla asocia a campos del contacto en Ricky se llenan por contacto. Responde 201 con la campaña queued o scheduled; síguela con GET /broadcasts/{broadcast_id}. Una audiencia sin ningún número de WhatsApp responde 422 rule_violation.

Permiso: broadcasts:write.

Autorización

bearerAuth
headerAuthorizationBearer <clave>

Una clave de API de la organización, rky_live_…, creada en Configuración → API. Envíala solo desde un servidor.

Idempotency-Key?string

Opcional. Un valor que eliges, único por escritura lógica, de 8 a 200 caracteres: un UUID o un ID de tu sistema, como order-10482-ready. Reintentar con la misma clave y el mismo cuerpo repite la primera respuesta en lugar de repetir la escritura.

Longitud8 <= length <= 200
application/json
  1. body

Envía una plantilla aprobada a muchos números, ahora o a una hora fija.

channel_id*string

Canal de WhatsApp desde el que se envía. Consulta GET /channels.

Formatouuid
template*

Una plantilla aprobada de WhatsApp y los valores de sus variables.

audience*||

Quién la recibe. filter toma cada contacto que cumple todos los filtros que envías (sin filtros: todos los contactos); contacts y phones toman los que listas. Ricky usa el teléfono de cada contacto, o su número de WhatsApp, omite los contactos sin uno y envía una vez por número, hasta 5.000.

mappings?array<>

Llena variables de la plantilla por destinatario con datos de su contacto, como lo hace el editor de campañas. Ricky las guarda en la plantilla y reemplaza las que tenía, así que las próximas campañas de la plantilla también las usan; omítelo para mantener las guardadas y envía [] para borrarlas. Un destinatario sin contacto, o sin valor en el campo, recibe el texto que enviaste en template.components.

Elementositems <= 100
scheduled_at?string

Cuándo empezar a enviar, hasta 7 días adelante. Omítelo para enviar ya.

Patrón^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
Formatodate-time

Cuerpo de la respuesta

Éxito.

application/json
  1. response
data*

Una plantilla aprobada de WhatsApp enviada a muchos números.

curl -X POST 'https://getricky.ai/api/v1/broadcasts' \  -H 'Idempotency-Key: order-10482-ready' \  -H 'Content-Type: application/json' \  -d '{  "channel_id": "8f3c2a5e-6b1d-4c7a-9e2f-1a2b3c4d5e6f",  "template": {    "id": "1234567890123456",    "components": [      {        "type": "body",        "parameters": [          {            "type": "text",            "text": "20%"          }        ]      }    ]  },  "audience": {    "type": "filter",    "tag_id": "5c6d7e8f-9a0b-4c1d-8e2f-3a4b5c6d7e8f"  },  "scheduled_at": "2026-10-20T14:00:00Z"}'
{  "data": {    "id": "0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",    "channel_id": "8f3c2a5e-6b1d-4c7a-9e2f-1a2b3c4d5e6f",    "template": {      "id": "1234567890123456",      "name": "promo_octubre",      "language": "es"    },    "audience": {      "type": "filter",      "tag_id": "5c6d7e8f-9a0b-4c1d-8e2f-3a4b5c6d7e8f",      "lifecycle_stage": null,      "query": null    },    "status": "completed",    "counts": {      "recipients": 120,      "pending": 0,      "sent": 14,      "delivered": 61,      "read": 41,      "failed": 4    },    "scheduled_at": "2026-10-14T14:00:00.000Z",    "canceled_at": null,    "completed_at": "2026-10-14T14:03:12.000Z",    "created_by_user_id": "2d4f6a8c-1b3d-4e5f-8a7b-9c0d1e2f3a4b",    "created_at": "2026-10-14T15:30:00.000Z"  }}