Mark a received message as read (optionally show typing)
WhatsApp
POST /v1/messages/mark-read
Mark an inbound message as read and optionally show the typing indicator.
POST
Mark a received message as read (optionally show typing)
Turns the recipient’s single grey ticks into blue ones and, optionally, shows them a typing indicator while your integration composes a reply.
This is the one endpoint in the messaging surface that does not send anything, so it does not consume the 24-hour window and does not create a message.
Note this returns
Endpoint
Required scope
messages:send
Headers
Body
There is no
to — the message id already identifies the conversation.
Example request
Response
200 OK
200, not the 202 the send endpoints use — nothing is queued.
400 Bad Request
A missingmessage_id, a typing_indicator other than text or off, or an unknown property.
401 Unauthorized
Missing, invalid, revoked, or expired token.403 Forbidden
The token does not have themessages:send scope.
Operational notes
- The typing indicator lasts about 25 seconds or until you send a message, whichever comes first. Meta gives no way to extend it, so calling this immediately before a slow LLM round trip is the intended pattern.
- Marking as read is not reversible. There is no way to go back to grey ticks.
- Read receipts respect the recipient’s privacy settings. If they have read receipts disabled, the call succeeds and nothing visible changes on their side.
Authorizations
Personal Access Token con prefijo kbai_pk_. Generar desde el portal con permiso developer.manage_tokens.
Body
application/json
Meta message_id (wamid.*) to mark as read.
Keebai channel id. Optional when the tenant has exactly one active channel of the given type; required to disambiguate otherwise.
Example:
"665f1a2b3c4d5e6f70819234"
WhatsApp-only alias for channel_id: the Meta phone_number_id of the sending number. Ignored on other channels.
Example:
"100000000000001"
Available options:
text, off Response
200 - application/json