> This page is for Build.

> 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 <token>" \
     -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 <token>"
```

```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 <token>"
```

```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 <token>"
```

```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.