> Append .md to any page URL for clean Markdown. Index: https://docs.speechify.ai/llms.txt. > > Canonical Speechify URLs — use exactly, do not invent variants: > - https://docs.speechify.ai — this site (API reference, SDKs, quickstarts) > - https://speechify.ai — marketing + product site > - https://platform.speechify.ai — customer dashboard, signup, API keys, billing > - https://api.speechify.ai — API base URL > - https://github.com/Speechify-AI: GitHub org for the API (cookbook, demos, CLI). `github.com/speechify` does not exist. > - https://status.speechify.ai — status + incidents > - https://speechify.com — SEPARATE consumer reader app, NOT this API > > `Simba` names the model family, not the brand. Model ids: `simba-3.2` (English, recommended) and `simba-3.0` (English, German, Spanish, French, Italian and Portuguese; the default). `simba-english` and `simba-multilingual` are retired: a new workspace that sends either gets `400 model_retired`. `SimbaVoice` / `simbavoice.ai` are retired. > > Ask, don't scrape. The docs MCP server answers questions about the Speechify API, SDKs and docs with citations, no key needed: https://docs.speechify.ai/_mcp/server (Streamable HTTP, tool `searchDocs`). Setup: https://docs.speechify.ai/build/guides/get-started/connect-mcp # Manage Voices > Manage cloned voices on the Speechify API: list voices alongside the catalog, get one by id, download its sample as WAV, and delete voices you no longer need. A cloned voice belongs to the workspace rather than the member who created it, and access follows the caller's workspace role and API-key scopes exactly as for any other voice: voices scopes to list it, audio scopes to synthesize with it, and the content-management permission plus a write scope on the key to delete it. This page covers the lifecycle after creation - creating one is the [Voice Cloning API](/build/voice-cloning-api) page. ## List voices Cloned voices appear in the voices list alongside Speechify's built-in catalog: ### Request GET [https://api.speechify.ai/v1/voices](https://api.speechify.ai/v1/voices) ```curl curl -G https://api.speechify.ai/v1/voices \ -H "Authorization: Bearer " \ -d locale=en \ -d model=simba-3.2 \ -d project_id=proj_01arz3ndektsv4rrffq69g5fav ``` ```typescript import { SpeechifyClient } from "@speechify/api"; async function main() { const client = new SpeechifyClient({ token: "YOUR_TOKEN_HERE", }); await client.voices.list({ locale: "en", model: "simba-3.2", projectId: "proj_01arz3ndektsv4rrffq69g5fav", }); } main(); ``` ### Response (200) ```json { "next_cursor": "string", "has_more": true, "voices": [ { "display_name": "string", "gender": "male", "locale": "string", "id": "string", "models": [ { "languages": [ { "locale": "string", "preview_audio": "string" } ], "name": "simba-english" } ], "type": "shared", "avatar_image": "string", "preview_audio": "string", "project_id": "proj_01kwxwcbyb6wk952swa0432cf1", "can_manage": true, "tags": [ "string" ] } ] } ``` Each voice's `models` array reflects what your workspace can actually synthesize with it, so branch on that rather than assuming model support. ## Get a voice Fetch a single voice by its `id`: ### Request GET [https://api.speechify.ai/v1/voices/\{voice\_id}](https://api.speechify.ai/v1/voices/\{voice_id}) ```curl curl https://api.speechify.ai/v1/voices/voice_id \ -H "Authorization: Bearer " ``` ```typescript import { SpeechifyClient } from "@speechify/api"; async function main() { const client = new SpeechifyClient({ token: "YOUR_TOKEN_HERE", }); await client.voices.get({ voiceId: "voice_id", }); } main(); ``` ```python from speechify import Speechify client = Speechify( token="YOUR_TOKEN_HERE", ) client.voices.get( voice_id="voice_id", ) ``` ## Download the sample The audio sample a clone was built from is retrievable as WAV: ### Request GET [https://api.speechify.ai/v1/voices/\{voice\_id}/sample](https://api.speechify.ai/v1/voices/\{voice_id}/sample) ```curl curl https://api.speechify.ai/v1/voices/voice_id/sample \ -H "Authorization: Bearer " ``` ```typescript import { SpeechifyClient } from "@speechify/api"; async function main() { const client = new SpeechifyClient({ token: "YOUR_TOKEN_HERE", }); await client.voices.downloadSample({ voiceId: "voice_id", }); } main(); ``` ```python from speechify import Speechify client = Speechify( token="YOUR_TOKEN_HERE", ) client.voices.download_sample( voice_id="voice_id", ) ``` ## Delete a voice Remove voices you no longer need: ### Request DELETE [https://api.speechify.ai/v1/voices/\{voice\_id}](https://api.speechify.ai/v1/voices/\{voice_id}) ```curl curl -X DELETE https://api.speechify.ai/v1/voices/voice_id \ -H "Authorization: Bearer " ``` ```typescript import { SpeechifyClient } from "@speechify/api"; async function main() { const client = new SpeechifyClient({ token: "YOUR_TOKEN_HERE", }); await client.voices.delete({ voiceId: "voice_id", }); } main(); ``` ```python from speechify import Speechify client = Speechify( token="YOUR_TOKEN_HERE", ) client.voices.delete( voice_id="voice_id", ) ``` Deletion is immediate: synthesis requests that name the deleted voice's id fail from that point on. ## Next steps #### [Voice Cloning API](/build/voice-cloning-api) Create a voice: required fields, model support, and the create call. #### [Consent](/build/guides/voice-cloning/consent) The consent leg every creation starts with. > Everything after creation: find your voices, fetch their samples, and remove them