Mark a message as read
Marks an inbound message as read (blue ticks) and, optionally, shows a typing indicator. It uses
the same endpoint as sending a message, distinguished by status
instead of type.
POST /v1/{phone_number_id}/messagesAuthorization: Bearer hello_live_xxxxxxxxxxxxxxxxContent-Type: application/jsonExample
Section titled “Example”curl -X POST "$HELLO_API_URL/v1/<your-phone-number-id>/messages" \ -H "Authorization: Bearer $HELLO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "messaging_product": "whatsapp", "status": "read", "message_id": "wamid.HBgMOTE5ODc2NTQzMjEwFQIAEhggQzY4RUEzNzBBOEVBNDQ1QjhBRjc5RUY4RUFCNUIwQzQA", "typing_indicator": { "type": "text" } }'Request body
Section titled “Request body”| Field | Type | Required | Description |
|---|---|---|---|
messaging_product |
string | No | Defaults to and must be whatsapp |
status |
string | Yes | Must be read |
message_id |
string | Yes | The inbound message’s wamid |
typing_indicator.type |
string | No | text shows a typing indicator until you reply or 25 seconds pass |
This request is not queued: it’s sent to WhatsApp directly, since it carries no recipient to window-check or bill.
Response 200
Section titled “Response 200”{ "success": true }Errors
Section titled “Errors”| Status | code |
Cause |
|---|---|---|
400 |
VALIDATION_ERROR |
status isn’t read, or message_id is missing |
401 |
UNAUTHORIZED |
Missing, wrong or disabled API key |
404 |
ACCOUNT_NOT_FOUND |
No number with this phone_number_id in your organization |
409 |
ACCOUNT_NOT_REGISTERED |
The number hasn’t completed phone registration |
422 |
SEND_FAILED |
WhatsApp rejected the request, for example an unknown message_id |