Channels let you organize where generated audio is routed inside PeachDesk Voice Studio. A channel groups one or more audio output destinations together and can have a set of voices (avatars) assigned to it, so you control which voices play through which channel — for example when live-streaming from the Talk tab. All endpoints are exposed through the PeachDesk API under the /api/voice base path and proxied to the Voice Engine.
Every request must include your PeachDesk API key in the X-API-Key header (an interactive session token in Authorization: Bearer also works — see Authentication). Channels are scoped to your tenant — you only ever see and modify channels that belong to your workspace.

The channel object

string
Unique identifier for the channel.
string
Human-readable channel name shown in the Voice Studio UI.
boolean
Whether this is the default channel. The default channel is used when no specific channel is selected.
string[]
IDs of the audio output destinations grouped under this channel.
string (ISO 8601)
Timestamp of when the channel was created.
Example channel

List channels

GET /api/voice/channels Returns every audio channel in your workspace. Response — an array of channel objects.

Create a channel

POST /api/voice/channels Creates a new audio channel.
string
required
Display name for the channel. Must be 1–100 characters.
string[]
default:"[]"
IDs of the audio output destinations to group under this channel. Defaults to an empty list, which you can populate later.
Response — the created channel object.
A 400 Bad Request is returned if the channel name is invalid (empty or longer than 100 characters) or otherwise rejected by validation.

Get a channel

GET /api/voice/channels/{channel_id} Fetches a single channel by ID.
string
required
ID of the channel to retrieve.
Response — the requested channel object. Returns 404 Not Found if no channel matches the ID.

Update a channel

PUT /api/voice/channels/{channel_id} Updates a channel’s name and/or its grouped output devices. Both fields are optional — send only the fields you want to change.
string
required
ID of the channel to update.
string
New display name. Must be 1–100 characters when provided.
string[]
Replacement list of output destination IDs. When provided, it replaces the existing list entirely.
Response — the updated channel object. Returns 404 Not Found if the channel does not exist, or 400 Bad Request on validation failure.

Delete a channel

DELETE /api/voice/channels/{channel_id} Permanently removes a channel.
string
required
ID of the channel to delete.
Response
string
Confirmation message: "Channel deleted successfully".
Returns 404 Not Found if the channel does not exist.

Channel voices

Each channel can have a set of voice profiles (avatars from the Voices tab) assigned to it. Assigned voices are the ones available when routing audio through that channel.

List assigned voices

GET /api/voice/channels/{channel_id}/voices Returns the IDs of the voice profiles currently assigned to a channel.
string
required
ID of the channel.
Response
string[]
IDs of the voice profiles assigned to this channel.

Set assigned voices

PUT /api/voice/channels/{channel_id}/voices Replaces the full set of voices assigned to a channel. The voices you send become the channel’s complete assignment — any profiles not included are removed.
string
required
ID of the channel.
string[]
required
IDs of the voice profiles to assign. May reference either Clone from audio or Built-in voices. Send an empty array to clear all assignments.
Response
string
Confirmation message: "Channel voices updated successfully".
Voice profiles run on PeachDesk’s GPU infrastructure — selecting a profile here just references a model that is already hosted and served for you. There is nothing to download or install.
Manage channels visually under Settings in the Voice Studio dashboard at app.peachdeskai.com. For the full schema reference, see the docs at docs.peachdeskai.com.