Create a broadcast
Sends an approved WhatsApp template to an audience, now or at scheduled_at. Ricky fixes the recipient list now and sends through each number’s conversation, as a template sent from the inbox; variables the template maps to contact fields in Ricky are filled per contact. Answers 201 with the broadcast queued or scheduled; follow it with GET /broadcasts/{broadcast_id}. An audience without any WhatsApp number answers 422 rule_violation.
Scope: broadcasts:write.
bearerAuthAuthorizationBearer <token>An organization API key, rky_live_…, created in Settings → API. Send it only from a server.
Idempotency-Key?stringOptional. A value you choose, unique per logical write, 8–200 characters: a UUID or an ID from your system such as order-10482-ready. Retrying with the same key and body replays the first response instead of repeating the write.
8 <= length <= 200application/json- body
Sends an approved template to many numbers, now or at a set time.
channel_id*stringWhatsApp channel to send from. See GET /channels.
uuidtemplate*An approved WhatsApp template and the values of its variables.
audience*||Who receives it. filter takes every contact matching all the filters you send (no filter: every contact); contacts and phones take the ones you list. Ricky uses each contact’s phone, or its WhatsApp number, skips contacts without one and sends once per number, up to 5,000.
mappings?array<>Fills template variables per recipient from their contact, as the broadcast composer does. Ricky saves them on the template, replacing the ones it had, so later broadcasts of the template use them too; omit it to keep the saved ones, send [] to clear them. A recipient without a contact, or without a value in the field, receives the text you sent in template.components.
items <= 100scheduled_at?stringWhen to start sending, up to 7 days ahead. Omit it to send now.
^(?:(?:\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)))$date-timeSuccess.
application/json- response
data*One approved WhatsApp template sent to many numbers.
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" }}