WhatsAble
API v1Conversations

Mark a conversation read or unread

patchhttps://api.whatsable.app/v1/conversations/{id}/unread
Build a request to copy

This page never sends a request. Fill in the fields, then copy the request and run it from your server.

Request
curl -X PATCH 'https://api.whatsable.app/v1/conversations/string/unread' \
  -H 'Content-Type: application/json' \
  -d '{
  "unread": true
}'

true marks the conversation unread in the inbox, as an operator's Mark unread does. false marks it read: its unread_count goes to 0 and marked_unread to false. Sending the state it already has is safe.

Authorization

bearerAuth
headerAuthorizationBearer <nfy_live_<32 characters>>

An API key from Settings > API keys, sent as Authorization: Bearer <key>.

Path Parameters

id*string

The conversation id.

Length1 <= length <= 64

Request Body

application/json
  1. body

Mark one conversation unread or read in the inbox.

unread*boolean

true marks it unread in the inbox, as an operator's Mark unread does. false marks it read, clearing its unread count. Reading through the API never marks it read.

Response Body

The conversation, with its unread_count and marked_unread.

application/json
  1. response

One customer on one of the business numbers. One person writing to two numbers has two conversations.

object*string
id*string
Length1 <= length <= 64
number_id*string

The business number of the conversation.

Length1 <= length <= 64
contact_id*string
Length1 <= length <= 64
contact_name*|

The contact's name. Null when nobody named them.

last_message_preview*|

The last message in one line, as the inbox list shows it. Null before the first message.

last_message_at*|

The last message in either direction. Null before the first message. A list puts such a conversation last.

last_inbound_at*|

The customer's last message. Null when they never wrote.

last_outbound_at*|

The business's last message. Null when it never wrote.

awaiting_reply*boolean

The customer wrote last: last_inbound_at is later than last_outbound_at, or nothing was sent since.

window_expires_at*|

When the 24-hour customer-service window closes. Null when it never opened.

window_open*boolean

Whether a session message (any type but template) can be sent now. Check it before a session send.

unread_count*integer

Inbound messages nobody has read in the inbox. Reading through the API does not change it.

Range0 <= value <= 9007199254740991
marked_unread*boolean

Someone marked it unread in the inbox.

figures_to_check*integer

AI messages with a figure nobody has checked yet.

Range0 <= value <= 9007199254740991
ai*|null
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
Example Request
curl -X PATCH 'https://api.whatsable.app/v1/conversations/string/unread' \  -H 'Content-Type: application/json' \  -d '{  "unread": true}'
Example Response
{  "object": "conversation",  "id": "cm2v8c1a00001qz8h4t5u6v7w",  "number_id": "cm2v8a1b20002qz8h9i0j1k2l",  "contact_id": "cm2v8k1a00001qz8h8x9y0z1a",  "contact_name": "Ana Pérez",  "last_message_preview": "Is my order ready?",  "last_message_at": "2026-10-20T19:51:21Z",  "last_inbound_at": "2026-10-20T19:51:21Z",  "last_outbound_at": "2026-10-20T18:00:00Z",  "awaiting_reply": true,  "window_expires_at": "2026-10-21T19:51:21Z",  "window_open": true,  "unread_count": 2,  "marked_unread": false,  "figures_to_check": 0,  "ai": {    "bot_id": "cm2v8b1a00001qz8h3j4k5l6m",    "status": "active"  },  "created_at": "2026-09-01T12:00:00Z",  "updated_at": "2026-10-20T19:51:21Z"}