Send a message (SMS or WhatsApp)
Sends an SMS or free-form WhatsApp message. Returns 201 with the
Message object; you track delivery via the message.* webhooks you
already receive.
The status field reflects how the send was handled:
sent— handed to the carrier/provider synchronously (default).queued— accepted onto the carrier-safe priority lane (the platform paces sends within per-carrier limits) and sent as soon as there is headroom. SMS uses this paced path; WhatsApp free-form sends are always synchronous. The returnedmessage_idis the id the message is sent under, but aqueuedmessage is briefly un-queryable viaGET /v1/messages/{message_id}until it dispatches (sub-second), and itsconversation_idis assigned then.
Authentication
AuthorizationBearer
Bearer authentication of the form Bearer <token>, where token is your auth token.
Request
This endpoint expects an object.
agent_id
channel
Allowed values:
from_number
to_number
body
phone_number_id
WhatsApp business phone number ID (required for WhatsApp channel)
message_type
Message type. Defaults to text for SMS.
media_url
URL to media file (required for non-text message_type)
media_caption
Optional caption for images and videos
Response
Message accepted. status is sent (synchronous) or queued
(accepted onto the paced priority lane — delivery via message.*
webhooks).
message_id
conversation_id
agent_id
channel
Allowed values:
direction
Allowed values:
from_number
to_number
body
status
Allowed values:
segments
Number of SMS segments the message was split into. Populated for SMS channel only; null for WhatsApp.
created_at
is_sandbox
True when the message was created with a pk_test_ (sandbox) API key. Omitted when false.