---
title: "Mark a conversation read"
method: POST
path: "/v1/inbox/conversations/{conversationId}/read"
tags: ["Inbox"]
---

# Mark a conversation read

`POST /v1/inbox/conversations/{conversationId}/read`

## Request

- Base URL: `https://api.postzen.dev`
- URL: `https://api.postzen.dev/v1/inbox/conversations/{conversationId}/read`
- Auth: HTTP bearer

Moves the thread’s local read watermark to its newest synced message and returns how many incoming messages crossed from unread to read. Nothing is sent to the platform, and reading messages never does this implicitly. Requires a read-write API key.

## Request body

- InboxConversationReadRequest
  - `accountId` string, required: PostZen account id that owns the conversation.

## Response `200`

Conversation marked read.

- InboxConversationReadResponse
  - `success` true, required
  - `markedCount` integer, required: Incoming messages that crossed from unread to read on this call. Marking an already-read thread returns 0 rather than failing.

## Other responses

- `400`: A parameter is missing or malformed — a plain `{ error }` body — or the account is not on a platform direct messages support (`platformUnsupported`).
- `401`: Missing or invalid API key.
- `403`: The account is outside the API key's profile access (`forbidden`), or the connection is missing the messaging scope this call needs (`platformCapabilityMissing`). Reconnect the account to grant it.
- `404`: No such account (`accountNotFound`) or no such conversation for that account (`conversationNotFound`).
- `424`: The connection needs to be reauthorized before its messages can be read (`connectionDead`).
- `429`: Rate limit exceeded. Retry after the interval indicated by the `Retry-After` header.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/postzen/apis/postzen-public-api.md) · [All operations](https://skmtc.dev/postzen/apis/postzen-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/postzen/apis/postzen-public-api/revisions/40863e3710ec?raw)
