UtilitayDevelopers
Get an API key
API reference

Sends

/sends

A send is one message written for an audience — a class, one parent, or everyone linked to one student — the same send a person writes on the compose screen. It takes two calls: a draft is only written down, and nothing goes until you publish it. Through the API a send is plain text, by SMS and by email: WhatsApp only carries wording Meta has approved outside its 24-hour reply window, so plain text never goes that way. Recording an event is the other way messages are made, by your rules.

GETPreview a send

Requires sends:read. Who it would reach and what it would cost, before it goes, counted the way the send itself will be: a retired class, an inactive student and a parent who is blocked or opted out are already gone from it. messages is what is billed; sms_parts is per text.

Path parameters
send_iduuid · required
The send id.
Query parameters
limitinteger · default 50 · max 200
offsetinteger · default 0
Returns

200 with the counts and who, by name. 503 when the instance's senders cannot be read just now: no honest count can be given.

Response body

One preview: the same fields in every pack. Press Response on the sample to see one whole.

FieldTypeDescription
recipientsintegerPeople it reaches.
messagesintegerMessages it makes — what is billed. A group can be more messages than people.
copiesintegerHow many of the messages are copies to copy recipients.
sms_partsintegerSMS parts one text costs: 160 characters a part, 70 with an accent or an emoji.
sample_bodystring | nullThe text as it will go.
unfilledstring[]Placeholders nothing fills. Always empty for plain text.
unfilled_email_onlystring[]
whoobject[]Who, by name, paged with limit and offset: contact_id, contact_name, phone_e164, email, subject_id, subject_name, is_copy.
eta_secondsinteger | nullAbout how long the texts take, behind what is already queued.
planobjectThe channel each gets, counted the way the send will count it.
emailsintegerHow many also get an email.
email_eta_secondsinteger | null
no_phoneintegerHow many have no phone number.
email_modeoff | also | instead | onlyThe mode it will run in.
email_mode_askedoff | also | instead | onlyThe mode asked for. The two differ when the organisation keeps the phone message for this priority.
phone_floorboolean
email_notestring | nullWhat to know about the email lane before publishing, in sentences — no mailbox connected, people with no address.

On failure the body is { error, code } instead.