Voices
Host voices belonging to a podcast
List voices for a podcast
The network is resolved from the parent podcast and the caller must hold the read_only role on it. Returns a cursor-paginated page; pass the returned cursor back as ?cursor and size it with ?limit.
Create a voice
Requires the administrator role on the parent podcast's network. Creates an empty voice record only; upload audio samples in a follow-up call to make it usable. Responds 201 with the new voice and a Location header. Any cloning needed for speech synthesis happens internally on first use, not here.
Get a single voice
The network is resolved from the parent podcast and the caller must hold the read_only role on it (403 otherwise, 404 if the podcast or voice does not exist).
Delete a voice
Requires the administrator role on the parent podcast's network. Permanently removes the voice and responds 204. The delete is optimistic-locked, so a concurrent modification returns 409.
Update a voice
Requires the administrator role on the parent podcast's network. Partial update: only the supplied fields change, and supplied info keys are merged onto the existing info map so keys set by other writers survive. Optimistic-locked, so a concurrent modification returns 409.
Synthesize a short preview of the cloned voice (returns MP3 audio)
Requires the administrator role on the parent podcast's network. Synthesizes the supplied text (or a default sentence) using the voice, cloning on demand if needed, and streams back MP3 audio synchronously. An upstream cloning or synthesis failure surfaces as 502.
Upload one or more audio samples for a voice (replaces the current set)
Requires the administrator role on the parent podcast's network. Send the samples as multipart/form-data file parts; the uploaded set fully replaces any existing samples. Once samples are present the voice is ready to use, and cloning is performed internally on first use. Returns the voice with its updated sample set.