Get a message's read receipts


Returns a list containing the IDs for all users who have marked the message as read (and whose privacy settings allow sharing that information).

The list of users IDs will include any bots who have marked the message as read via the API (providing a way for bots to indicate whether they have processed a message successfully in a way that can be easily inspected in a Zulip client). Bots for which this behavior is not desired may disable the send_read_receipts setting via the API.

It will never contain the message's sender.

Changes: New in Zulip 6.0 (feature level 137).

Usage examples

#!/usr/bin/env python3

import zulip

# Pass the path to your zuliprc file here.
client = zulip.Client(config_file="~/zuliprc")

# Get read receipts for a message, given the message's ID.
result = client.call_endpoint(f"/messages/{message_id}/read_receipts", method="GET")

curl -sSX GET -G \


message_id integer required in path

Example: 43

The target message's ID.


Return values

  • user_ids: (integer)[]

    An array of IDs of users who have marked the target message as read and whose read status is available to the current user.

    The IDs of users who have disabled sending read receipts ("send_read_receipts": false) will never appear in the response, nor will the message's sender. Additionally, the IDs of any users who have been muted by the current user or who have muted the current user will not be included in the response.

    The current user's ID will appear if they have marked the target message as read.

    Changes: Prior to Zulip 6.0 (feature level 143), the IDs of users who have been muted by or have muted the current user were included in the response.

Example response(s)

Changes: As of Zulip 7.0 (feature level 167), if any parameters sent in the request are not supported by this endpoint, a successful JSON response will include an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

    "msg": "",
    "result": "success",
    "user_ids": [

A typical JSON response when attempting to access read receipts for a message ID that either does not exist or is not accessible to the current user:

    "code": "BAD_REQUEST",
    "msg": "Invalid message(s)",
    "result": "error"