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

// There is no dedicated Freeze method: set the `frozen` field with a partial update.
// C++ only, since PartialUpdate is not exposed to Blueprint.
const TSharedRef<FJsonObject> Set = MakeShared<FJsonObject>();
Set->SetBoolField(TEXT("frozen"), true);
Channel->PartialUpdate(Set);

Unfreeze a Channel

const TSharedRef<FJsonObject> Set = MakeShared<FJsonObject>();
Set->SetBoolField(TEXT("frozen"), false);
Channel->PartialUpdate(Set);

// The channel's own flag is readable after the update lands
const bool bFrozen = Channel->Properties.bFrozen;

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.

Node.js
const { grants } = await client.getChannelType("messaging");
grants.admin.push("use-frozen-channel");
await client.updateChannelType("messaging", {
  grants: { admin: grants.admin },
});
Add Chat to my app: getstream.io/SKILL.md

The fastest way to build with Stream. Start a new project or improve an existing one. Full CLI and documentation integration out of the box.


Ask your agent:

/stream Build me a Social App with Feeds and Moderation.
/stream Any livestream calls running?
/stream Chat Unreal: <Your Question>