Get the list of IDs of users who have read a message.


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
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. The current user's ID will, if they have marked the read target message as read.

Example response

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.

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