Skip to content
Live Audio Room

Speak requests and moderation

Approve speakers, manage admins, and mute, kick or ban users in a voice room.

The kit's built-in UI covers all of this: a request queue with a badge, a member list, and a moderation sheet on each seat. Use these calls if you're building your own UI or adding your own triggers. controller comes from onControllerReady.

Speak requests

// Audience
await controller.requestToSpeak();
await controller.cancelSpeakerRequest();
 
// Host or admin
await controller.approveSpeakerRequest(requestId);
await controller.rejectSpeakerRequest(requestId);
await controller.inviteToSpeak(targetId, seatIndex: 3);

Pending requests are in controller.seatController.pendingRequests.

Admins

Admins are saved on the room, so the owner can assign someone who's offline or has never joined. These calls are owner-only:

await controller.assignAdmin(targetIdentity: targetId, name: 'Moderator');
final everyone = await controller.listAdmins();
final offline = await controller.listAdmins(presence: 'offline');
await controller.revokeAdmin(targetId);

Assignments belong to the current room. If a room closes and is created again with the same name, it doesn't keep the old admins.

Bans and roles

await controller.banUser(targetId, reason: 'Spam');
await controller.unbanUser(targetId);
await controller.changeRole(targetIdentity: targetId, role: 'admin');

Voxera checks these on the server, so a user without the right role is refused. A banned user who requests a token gets 403 User is banned.

Lock chat

await controller.lockComments();
await controller.unlockComments();

While chat is locked, only hosts and admins can post. Gifts and likes keep working.

From your backend

To moderate without being in the room, use the server-to-server API.