--- sidebar_position: 5 --- # Channels API The channels API reads, selects, creates, renames, and removes server channels. ## Required Capabilities | Method | Capability | | --- | --- | | `channels.list()` | `channels.read` | | `channels.select(channelId)` | `channels.read` | | `channels.addAudioChannel(request)` | `channels.manage` | | `channels.addVideoChannel(request)` | `channels.manage` | | `channels.rename(channelId, name)` | `channels.manage` | | `channels.remove(channelId)` | `channels.manage` | ## List Channels ```js export function activate(context) { const channels = context.api.channels.list(); context.api.logger.info('Channels', channels.map((channel) => ({ id: channel.id, name: channel.name, type: channel.type }))); } ``` Example channel list: ```json [ { "id": "general", "name": "general", "type": "text", "position": 0 }, { "id": "support", "name": "support", "type": "text", "position": 1 }, { "id": "lobby", "name": "Lobby", "type": "audio", "position": 10 } ] ``` ## Select a Channel ```js export function activate(context) { context.api.channels.select('support'); } ``` ## Add a Voice Channel ```js export function activate(context) { context.api.channels.addAudioChannel({ id: 'raid-voice', name: 'Raid Voice', position: 20 }); } ``` ## Add a Video Channel Section ```js export function activate(context) { context.api.channels.addVideoChannel({ id: 'watch-party-video', name: 'Watch Party', position: 30 }); } ``` ## Rename and Remove ```js export function activate(context) { context.api.channels.rename('raid-voice', 'Raid Voice - Tonight'); context.api.channels.remove('old-event-room'); } ``` Channel creation, rename, and removal should be user-confirmed because they change the shared server structure.