Voices
List, inspect, and delete the voices available for speech synthesis.
List, inspect, and delete the voices available for speech synthesis.
Primary agent path
Use the Universal Skill with the MCP tool beatra.voices.list. It is a
non-billable, read-only call that returns preset and in your account cloned
voices.
- Filter by
category(preset/cloned),language(BCP-47),gender(male/female/neutral),age_group(child/youth/adult/senior),use_case(one ofaudiobook,narration,news,ads,conversational,business,character,ivr,course,podcast,gaming,shorts,education,support,social),model(a compatible model id),query(text in the display name),search(text in the display name or the persona), orvoice_id(one exact voice).statuspicks which voices are listed:ready(the default: voices usable for speech),pending_activation(cloned previews waiting for a paid activation),expired, orany. - The list is paged:
limit(1–500, default 50) andcursor(thenext_cursorof the previous page).total_countis the number of voices that match the filters;next_cursorisnullon the last page. - Use the returned
voice_iddirectly as thevoicefield in text to speech.personadescribes the voice in one sentence, andpreview_url(a general sample) andpreview_url_scene(a sample in the voice's main use case) let the user listen before choosing; both samples are free.
AI guide
MCP integration guide for AI
For custom API integrations, copy this guide into Claude, Codex, or another coding assistant.
Tool arguments
A voice entry looks like:
A voice cloned with a model that needs a separate activation (see
voice clone) also carries
clone_model, and while it waits for activation, its preview (url,
text, language, version) and expires_at. Every other voice is
unchanged. When the default (ready) list leaves out voices that wait for
activation, its text summary says how many.
compatible_models lists the speech models that can speak the voice. Each
voice belongs to one engine, so leave model as auto (it picks from this
list) or pass one of these models; another model is rejected before billing
with voice_model_incompatible.
The response also carries next_cursor and total_count. Over REST,
GET /v1/voices takes the same filters as query parameters, with q in place
of query.
Default voice and renaming
beatra.voices.list returns a default_voice_id next to voices: the account's default voice, or null when none is set. Each voice entry is unchanged.
When the user asks for it, beatra.voices.update renames one of the account's cloned voices or makes any voice (cloned or preset) the default. It is non-billable and cannot delete a voice. A voice waiting for activation can be renamed, but only a ready voice can become the default.
Deleting a cloned voice
Deletion is REST-only:
Returns 204. Only voices you cloned yourself can be deleted; preset voices
cannot.
Deleting a voice cloned with a model that needs activation is final. A voice
waiting for activation (or expired) is removed with its preview. For an
activated voice, the activation charge is not refunded, and speech tasks
already submitted for it still finish. While an activation is running, the
delete returns 409 conflict with details.reason: voice_operation_in_progress; try again once that task ends.
REST API
Direct protocol integrations may use the voice endpoints directly: List · Retrieve · Delete. Skill + MCP is the recommended integration; use REST for custom, non-agent applications.
Last updated