Skip to Content

Mark Message as Read

Send a read receipt for an inbound message — the customer sees the blue ticks. Same endpoint as Send Messages, different envelope.

POST /api/v25.0/{PHONE_NUMBER_ID}/messages Authorization: Bearer pk_live_<your-key> Content-Type: application/json

Request body — mark as read

{ "messaging_product": "whatsapp", "status": "read", "message_id": "wamid.HBgMOTE5OTk5OTk5OTk5FQIAERgSNzg5MTIzNDU2Nzg5MEFCQ0RFAA==" }
FieldNotes
statusAlways read for this envelope
message_idThe wamid from the inbound webhook you’re acknowledging

Response — 200

{ "success": true }

Request body — with typing indicator

While the read receipt is pending, you can also show a ”…” typing indicator. Same envelope plus typing_indicator:

{ "messaging_product": "whatsapp", "status": "read", "message_id": "wamid.…", "typing_indicator": { "type": "text" } }

The indicator auto-dismisses after ~25 seconds or when you send a real reply via Send Messages, whichever comes first.

Errors

BodyWhen
(#131009) Parameter value not valid — message_idThe wamid is unknown, older than 7 days, or belongs to a different phone number
(#100) Invalid parameter — statusAnything other than read

cURL

curl -X POST \ "https://api.splashifypro.com/api/v25.0/$PHONE_NUMBER_ID/messages" \ -H "Authorization: Bearer $SPLASHIFY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "messaging_product": "whatsapp", "status": "read", "message_id": "wamid.…", "typing_indicator": { "type": "text" } }'

Notes

  • Idempotent. Calling read on the same message_id twice is a no-op; the second call returns 200.
  • Read receipts are visible to the customer. Don’t enable them for accounts where you’d rather not signal that a message has been seen yet.
  • Typing indicator without read. Not supported — the typing envelope must accompany a read receipt.