Skip to content

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}/messages
Authorization: Bearer hello_live_xxxxxxxxxxxxxxxx
Content-Type: application/json
Terminal window
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" }
}'
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.

{ "success": true }
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