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/jsonRequest body — mark as read
{
"messaging_product": "whatsapp",
"status": "read",
"message_id": "wamid.HBgMOTE5OTk5OTk5OTk5FQIAERgSNzg5MTIzNDU2Nzg5MEFCQ0RFAA=="
}| Field | Notes |
|---|---|
status | Always read for this envelope |
message_id | The 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
| Body | When |
|---|---|
(#131009) Parameter value not valid — message_id | The wamid is unknown, older than 7 days, or belongs to a different phone number |
(#100) Invalid parameter — status | Anything 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_idtwice 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.