---
title: "Mark a message as read"
method: POST
path: "/v2/messages/{messageId}/read"
tags: ["Messages"]
---

# Mark a message as read

`POST /v2/messages/{messageId}/read`

## Request

- Base URL: `https://api.zenzap.co`
- URL: `https://api.zenzap.co/v2/messages/{messageId}/read`
- Auth: one of:
  - HTTP bearer and API key in header `X-Signature`
  - OAuth 2
    - Client credentials
    - Token URL: `https://api.zenzap.co/oauth/token` scopes: `message:write`
- TypeScript: <https://skmtc.dev/zenzap/apis/zenzap-external-integration-api/docs/v2/messages/:messageId/read/post.ts> (a function with typed inputs; its response is checked against the schema)

Mark a message as read by the current bot.

This endpoint is idempotent. If the message has not been fully persisted yet,
read status is queued and applied when it becomes available.

## Path parameters

- `messageId` string, uuid, required

## Headers

- `X-Signature` string
- `X-Timestamp` integer

## Response `200`

Message marked as read

## Other responses

- `400`: Bad request - invalid input
- `401`: Unauthorized - invalid or missing API token
- `500`: Internal server error

---

[API](https://skmtc.dev/zenzap/apis/zenzap-external-integration-api.md) - [All operations](https://skmtc.dev/zenzap/apis/zenzap-external-integration-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zenzap/apis/zenzap-external-integration-api/revisions/37faae2c2036?raw)
