Skip to main content
POST

Authorizations

Authorization
string
header
required

API token in the sk_live_… format.

Body

Free-text channel (web_whatsapp, web_whatsapp_premium): send body.

Official WhatsApp channel (whatsapp_business_account): send template, because the first contact requires an approved template. The API checks the name and parameters against the channel's templates when the schedule is created, so a template error shows up right away, before the send date.

Media: on unofficial WhatsApp channels (web_whatsapp, web_whatsapp_premium), the file can be sent along with the request, as multipart/form-data in the file field. On these channels the file is the message itself and body becomes the caption. With an attachment, the text is no longer required.

On an official channel, an attachment is only accepted when the template has a media header. Otherwise the response is 400 ERR_API_TEMPLATE_MEDIA_NOT_ALLOWED, because Meta does not accept standalone attachments.

sendAt
string<date-time>
required

Date and time of the send, in ISO 8601. It must be a future date.

Without a time zone, your company's time zone applies. 2026-09-15T09:00:00 sends at nine in the morning in the time zone set on the company. With an explicit offset (2026-09-15T09:00:00-03:00) or in UTC (Z), the value is respected as it is.

Example:

"2026-09-15T09:00:00-03:00"

contactId
integer
required

Contact this record belongs to.

Example:

1042

channelId
integer
required

Channel where the conversation takes place. See the available channels at GET /channels.

Example:

4

body
string

Message text. Use on free-text channels.

Example:

"Lembrete: sua consulta é amanhã às 14h."

template
object

Use on official WhatsApp channels, instead of body.

Example:
userId
integer

User id in this company, the same one GET /users returns. The same person has a different id in each company they work in.

Example:

3

queueId
integer

Service queue.

Example:

7

Response

Created

data
object
Example: