Mark an inbound message as read
Sends a read receipt for an inbound message — the blue ticks the contact sees.
Name the number the message arrived on with either connection_id
or number_id, exactly as you would for a send. Sautikit does not
retain messages, so it cannot infer the number from the wamid
alone; the wamid comes from the whatsapp.event.received webhook
that delivered the message.
API-key scope: whatsapp.messages.
Authorization
bearerAuth Long-lived ES256 JWT minted from the dashboard (https://app.sautikit.com/developers/api-keys). Signed by the
platform keyring. Carries workspace_id and scopes claims;
revoked via the platform deny-list.
In: header
Path Parameters
Meta's message id, from an inbound message.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/whatsapp/messages/string/read" \ -H "Content-Type: application/json" \ -d '{}'{}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ] }}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ] }}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ] }}Send a WhatsApp message POST
Sends a text or template message from one of your connected WhatsApp numbers. Pick the sending number with EITHER `connection_id` (the WhatsApp connection; its WhatsApp number is used) OR `number_id` (the Meta `phone_number_id` directly). Exactly one is required. Returns **202** with Meta's `wamid`. Delivery is asynchronous — subscribe to the `whatsapp.event.received` workspace webhook, which relays Meta's delivery-status payloads to you verbatim. Sautikit does not store messages. The wamid is your handle for correlating the status events that follow. WhatsApp only permits free-form text inside a 24-hour customer service window opened by the contact messaging you. Outside it, use `type: template` with a Meta-approved template. **API-key scope:** `whatsapp.messages`.
Get a contact's WhatsApp call permission GET
Returns whether a contact has granted permission for you to call them on WhatsApp. A contact with no recorded permission comes back as `no_permission` — absence is a meaningful answer here, not a 404. Pass `live=true` to additionally check with Meta and refresh the stored value. A failed live check degrades to the stored value rather than failing the request. **API-key scope:** `whatsapp.messages`.