This endpoint is used to send a message to a chat
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Please provide the number of the phone you want to call with this API in the header. The number must be in country code + number format without any characters or spaces, e.g. 919876543210; Alternatively, provide the phone_id (phone-xxxxxxxxxxxx) in the header
"{{orgPhone}}"
The text body or caption. You can use basic markdown formatting supported by WhatsApp e.g. * for bold, and _ for italic, etc.
Media object containing file information and content
Note: You must specify either filedata or url
pollName - The question or title of the poll
pollOptions - Raw bytes of the file, represented in base64options - Additional options to be sent with the poll
allowMultipleAnswers - Boolean. When set to true, respondents can select multiple optionspollId - Optional unique identifier of the poll. Useful when sending it across multiple chatsTo reply to a message, add the message_id in this field
hide_url_preview - Set it to true to disable automatic link previews in the messages containing URLsText Message / Media Message / Reply Message / Poll Message
The response object confirms that your message request has been accepted and added to the processing queue for asynchronous delivery.
What you receive:
queue_id — A unique identifier for your enqueued message task. Save this value to track your message's progress, correlate it with webhook events, or reference it in support requests.queue_position — Your message's position in the processing queue at the moment it was enqueued. This is zero-based (0 = first in queue, 1 = second, etc.). Note that this position reflects the queue state at enqueue time and may change as other messages are processed.unique_id — A provisional identifier (when available) that helps correlate the queued request with downstream message objects or WhatsApp provider references.hint — A helper message that tells you the next recommended step, such as which queue endpoint to call for status updates.Understanding the queue system:
How the queue_id maps to your message:
queue_id, your message is in a "queued" statequeue_id becomes associated with a provisional sent_message_id in the message objectqueue_id maps to the final provider message IDqueue_id to track the message through its entire lifecycle: queued → processing → sent → delivered → read (or failed)Tracking your message status: You have two primary methods to monitor your message:
Fetch Queue Jobs API — Use the Fetch Queue Jobs API (/queue/jobs?queue_id=<queue_id>) to check your message's current state. The API returns job information including the status field, which can be one of:
waiting — Waiting to be processedactive — Currently being processed/sent to WhatsAppcompleted — Successfully sent to WhatsApp serversfailed — Delivery failed after all retry attempts (check error details for reason)Note: The job status reflects the queue processing state. For delivery and read status, use webhooks or check the message's ack field via the message API.
Webhook notifications — If you have webhooks configured, you'll automatically receive real-time events as your message progresses:
message.sent — Fired when the message is successfully sent to WhatsAppmessage.delivered — Fired when the message is delivered to the recipientmessage.read — Fired when the message is read (requires read receipts to be enabled)message.failed — Fired if the message fails to send or deliver after all retry attemptsqueue_id so you can correlate it with your original requestError handling and retries:
failed and you'll receive a message.failed webhook event if configuredBest practices:
queue_id immediately after receiving the responseRelated documentation: