Edit a message

Edit/update the content or topic of a message.

PATCH https://zulip.dioco.io/api/v1/messages/{msg_id}

{msg_id} in the above URL should be replaced with the ID of the message you wish you update.

Usage examples

#!/usr/bin/env python3

import zulip

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

# Edit a message
# (make sure that message_id below is set to the ID of the
# message you wish to update)
request = {
    "message_id": message_id,
    "content": "New content",
}
result = client.update_message(request)
print(result)

More examples and documentation can be found here.

const Zulip = require('zulip-js');

// Pass the path to your zuliprc file here.
const config = { zuliprc: 'zuliprc' };

Zulip(config).then(async (client) => {
    // Update a message with the given "message_id"
    const params = {
        message_id: message_id,
        content: "New Content",
    };

    return await client.messages.update(params);
}).then(console.log).catch(console.err);

curl -sSX PATCH https://zulip.dioco.io/api/v1/messages/42 \
    -u BOT_EMAIL_ADDRESS:BOT_API_KEY \
    -d 'topic=Castle' \
    -d 'propagate_mode=change_all' \
    -d 'send_notification_to_old_thread=true' \
    -d 'send_notification_to_new_thread=true' \
    -d 'content=Hello'

Permissions

You only have permission to edit a message if:

  1. You sent it, OR:
  2. This is a topic-only edit for a (no topic) message, OR:
  3. This is a topic-only edit and you are an admin.

Parameters

message_id required in path

Example: 42

The target message's ID.


topic optional

Example: Castle

The topic of the message. Only required for stream messages (type="stream"), ignored otherwise.

Maximum length of 60 characters.

Changes: New in Zulip 2.0. Previous Zulip releases encoded this as subject, which is currently a deprecated alias.


propagate_mode optional

Example: change_all

Which message(s) should be edited: just the one indicated in message_id, messages in the same topic that had been sent after this one, or all of them.

Must be one of: change_one, change_later, change_all. Defaults to "change_one".


send_notification_to_old_thread optional

Example: True

Whether to send breadcrumb message to the old thread to notify users where the messages were moved to.

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

Defaults to true.


send_notification_to_new_thread optional

Example: True

Whether to send a notification message to the new thread to notify users where the messages came from.

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

Defaults to true.


content optional

Example: Hello

The content of the message. Maximum message size of 10000 bytes.


stream_id optional

Example: 42

The ID of the stream to access.


Response

Example response

A typical successful JSON response may look like:

{
    "msg": "",
    "result": "success"
}

A typical JSON response for when one doesn't have the permission to edit a particular message:

{
    "code": "BAD_REQUEST",
    "msg": "You don't have permission to edit this message",
    "result": "error"
}