## Mark a chat read

**post** `/v1/chats/{chat}/read`

Marks the latest unread inbound message that can be marked read as read,
optionally showing the typing indicator. An unread message of a type this
API does not support (its only part is `unsupported`) cannot be marked
read and is never the target; a newer one is skipped in favour of the
latest supported unread message, and the `chat.read` event names the
message actually targeted. The upstream command targets that one message;
this API does not promise that the channel also marks earlier inbound
messages, and an unsupported one is known not to be marked. Omit the
body, or send `{}`, for read-only; the two forms are identical.
`typing: false` is identical too.

If the chat is not available to this account, the request is refused
with `404 chat_not_found`. If it has no unread inbound message, it is
refused with `409 nothing_unread`; if it has unread inbound messages but
every one is unsupported, it is refused with `409 nothing_readable`. This
route does not act as a standalone typing refresh.

`202` means the command and its `chat.read` journal event are durable;
the upstream action is asynchronous. Read receipts and typing are
outbound-only: this API never reports customer typing.

### Path Parameters

- `chat: string`

### Body Parameters

- `typing: optional boolean`

  Also show the customer the typing indicator, which auto-dismisses after
  a short time or when your next message arrives. Read receipts and typing
  are outbound-only: the API never reports customer typing.

### Example

```http
curl https://whatsapp.messages.api.linqapp.com/v1/chats/$CHAT/read \
    -X POST \
    -H "Authorization: Bearer $LINQ_WHATSAPP_API_KEY"
```
