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}}"
"919537851844@c.us"
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.status — The initial status of the message, always queued at this point.unique_id — A provisional identifier (when available) that helps correlate the queued request with downstream message objects or WhatsApp provider references.track_by — A convenience object with ready-to-use tracking URLs. Use track_by.unique_id to poll delivery status via GET /message/{unique_id}/status, or track_by.queue_id to look up the job via the queue API.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:
Message Status API — Use GET /message/{unique_id}/status to check the delivery status of your message. The unique_id is returned in this response. The status field can be one of:
queued — Waiting to be processedsending — Currently being sent to WhatsAppsent — Successfully sent to WhatsApp serversdelivered — Delivered to the recipient's deviceread — Read by the recipientfailed — Delivery failed after all retry attempts (check status_description for reason)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: