Freezing Channels

Freezing a channel prevents users from sending new messages and adding or deleting reactions.

Sending a message to a frozen channel returns an error message. Attempting to add or delete reactions returns a 403 Not Allowed error.

User roles with the UseFrozenChannel permission can still use frozen channels normally. By default, no user role has this permission.

Freeze a Channel

from getstream.models import ChannelInputRequest

# Get a channel
channel = client.chat.channel("messaging", "general")

channel.update(data=ChannelInputRequest(frozen=True))

Unfreeze a Channel

from getstream.models import ChannelInputRequest

channel.update(data=ChannelInputRequest(frozen=False))

Granting the Frozen Channel Permission

Permissions are typically managed in the Stream Dashboard under your app's Roles & Permissions settings. This is the recommended approach for most use cases.

To grant permissions programmatically, update the channel type using a server-side API call. See user permissions for more details.

resp = client.chat.get_channel_type("messaging")

admin_grants = resp.data.grants["admin"] + ["use-frozen-channel"]

client.chat.update_channel_type(
    "messaging",
    automod=resp.data.automod,
    automod_behavior=resp.data.automod_behavior,
    max_message_length=resp.data.max_message_length,
    grants={"admin": admin_grants},
)