Get a message's edit history

GET https://refl.zulipchat.com/api/v1/messages/{message_id}/history

Fetch the message edit history of a previously edited message.

Note that edit history may be disabled in some organizations; see the Zulip Help Center documentation on editing messages.

Usage examples

#!/usr/bin/env python3

import zulip

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

# Get the edit history for a message, given the message's ID.
result = client.get_message_history(message_id)
print(result)

curl -sSX GET -G https://refl.zulipchat.com/api/v1/messages/43/history \
    -u BOT_EMAIL_ADDRESS:BOT_API_KEY

Parameters

message_id integer required in path

Example: 43

The target message's ID.


Response

Return values

  • message_history: (object)[]

    A chronologically sorted, oldest to newest, array of snapshot objects, each one with the values of the message after the edit.

    • topic: string

      The topic of the message immediately after this edit event.

    • prev_topic: string

      Only present if message's topic was edited.

      The topic of the message immediately prior to this edit event.

    • stream: integer

      Only present if message's channel was edited.

      The ID of the channel containing the message immediately after this edit event.

      Changes: New in Zulip 5.0 (feature level 118).

    • prev_stream: integer

      Only present if message's channel was edited.

      The ID of the channel containing the message immediately prior to this edit event.

      Changes: New in Zulip 3.0 (feature level 1).

    • content: string

      The raw Markdown content of the message immediately after this edit event.

    • rendered_content: string

      The rendered HTML representation of content.

    • prev_content: string

      Only present if message's content was edited.

      The raw Markdown content of the message immediately prior to this edit event.

    • prev_rendered_content: string

      Only present if message's content was edited.

      The rendered HTML representation of prev_content.

    • user_id: integer | null

      The ID of the user that made the edit.

      Will be null only for edit history events predating March 2017.

      Clients can display edit history events where this is null as modified by either the sender (for content edits) or an unknown user (for topic edits).

    • content_html_diff: string

      Only present if message's content was edited.

      An HTML diff between this version of the message and the previous one.

    • timestamp: integer

      The UNIX timestamp for this edit.

Please note that the original message's snapshot only contains the fields topic, content, rendered_content, timestamp and user_id. This snapshot will be the only one present if the message has never been edited.

Also note that each snapshot object will only contain additional data for the modified fields for that particular edit (e.g. if only the topic or channel was edited, prev_content, prev_rendered_content, and content_html_diff will not appear).

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:

{
    "message_history": [
        {
            "content": "Hello!",
            "rendered_content": "<p>Hello!</p>",
            "timestamp": 1530129122,
            "topic": "party at my houz",
            "user_id": 5
        },
        {
            "content": "Howdy!",
            "content_html_diff": "<div><p><span class=\"highlight_text_inserted\">Howdy!</span></p> <p><span class=\"highlight_text_deleted\">Hello!</span></p></div>",
            "prev_content": "Hello!",
            "prev_rendered_content": "<p>Hello!</p>",
            "prev_topic": "party at my houz",
            "rendered_content": "<p>Howdy!</p>",
            "timestamp": 1530129134,
            "topic": "party at my house",
            "user_id": 5
        }
    ],
    "msg": "",
    "result": "success"
}

An example JSON response for when the specified message does not exist:

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