> 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/SpeechifyInc — GitHub org. `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 (1.6 multilingual, 3.0 streaming), not the brand. `SimbaVoice` / `simbavoice.ai` are retired.

# Voice Cloning Quickstart

> Voice cloning quickstart: record a short sample, capture consent, POST to /v1/voices, and synthesize speech in the cloned voice. Consent is required.

The fastest path to a working cloned voice: a short sample, a consent record, one create call, and you are synthesizing in the new voice.

Cloning requires the speaker's consent. You will pass a consent record with a full name and email on the create call.

### Set your API key

```bash
export SPEECHIFY_API_KEY="your-api-key-here"
```

### Record a sample

Capture 10-30 seconds of clean speech, under a minute and under 5MB. Avoid background noise.

### Create the voice

### Request

POST [https://api.speechify.ai/v1/voices](https://api.speechify.ai/v1/voices)

```curl
curl -X POST https://api.speechify.ai/v1/voices \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: multipart/form-data" \
     -F avatar=@<file1> \
     -F consent="string" \
     -F gender="male" \
     -F name="string" \
     -F sample=@string
```

```typescript
import { SpeechifyClient } from "@speechify/api";

async function main() {
    const client = new SpeechifyClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.voices.create({});
}
main();

```

```python
from speechify import Speechify

client = Speechify(
    token="YOUR_TOKEN_HERE",
)

client.voices.create(
    sample="example_sample",
    avatar="example_avatar",
)

```

Keep the `voice_id` from the response.

### Synthesize

Pass the `voice_id` to the speech endpoint:

### Request

POST [https://api.speechify.ai/v1/audio/speech](https://api.speechify.ai/v1/audio/speech)

```curl
curl -X POST https://api.speechify.ai/v1/audio/speech \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "input": "Hello! This is the Speechify text-to-speech API.",
  "voice_id": "geffen_32",
  "audio_format": "mp3",
  "model": "simba-3.2"
}'
```

```typescript
import { SpeechifyClient } from "@speechify/api";

async function main() {
    const client = new SpeechifyClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.audio.speech({
        input: "Hello! This is the Speechify text-to-speech API.",
        voiceId: "geffen_32",
        audioFormat: "mp3",
    });
}
main();

```

```python
from speechify import Speechify

client = Speechify(
    token="YOUR_TOKEN_HERE",
)

client.audio.speech(
    input="Hello! This is the Speechify text-to-speech API.",
    voice_id="geffen_32",
    audio_format="mp3",
)

```

### Response (200)

```json
{
  "audio_data": "example",
  "audio_format": "wav",
  "billable_characters_count": 10,
  "speech_marks": {
    "chunks": [
      {}
    ],
    "end": 1,
    "end_time": 1,
    "start": 1,
    "start_time": 1,
    "type": "example",
    "value": "example"
  }
}
```

Use `simba-english` or `simba-multilingual` for cloned voices. The curated `simba-3.2` set does not play cloned voices.

## Next steps

#### [Voice Cloning API](/build/voice-cloning-api)

Required fields, model support, and voice management.

#### [Overview](/build/guides/voice-cloning/overview)

Concepts and quality tiers for voice cloning.