In a few words
- Use
POST /v1/whatsapp/messages/presenceto show typing…. - Official Meta and Gupshup connections require
messageId, the ID of an incoming message on that instance. - QR connections require
to;messageIdis optional, andrecordingremains QR only.
How to use it
Sendcomposing to start the indicator. Set from to the instance ID, the line’s E.164 phone number, or the instance name. The legacy instanceId field is also accepted; if both are present, from takes precedence. Sending pools are not accepted because presence must target one specific line. Use the external ID from the official inbound webhook (messages[].id) in messageId. GET /v1/whatsapp/messages/inbound also returns this value as externalMessageId; its id field is internal and cannot be used for official presence.
Official Meta or Gupshup connection
This example sends the indicator for the incomingwamid... message using the line’s phone number in from.
messageId must be the external messages[].id from the inbound webhook, matching externalMessageId in the inbound list. Do not use the list’s internal id. The API checks that it belongs to the instance and workspace of the API key. IDs from another line, outbound messages, and IDs not yet stored return 404 WHATSAPP_PRESENCE_MESSAGE_NOT_FOUND.
QR connection (unofficial)
For QR, pass the recipient into. You can send composing or recording.
Connection rules
Send the indicator only when the customer will notice a delay. Each official call also marks the inbound message as read, so do not call this endpoint just to renew the indicator.

