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

# Text-to-Speech API

> The SpeechifyAI text-to-speech API: authenticate, call POST /v1/audio/speech with the Python, TypeScript, or HTTP SDK, and get natural audio back fast.

The text-to-speech API turns text into natural-sounding audio from a single request. This page takes you from an API key to saved audio in a few minutes, then points to the streaming, voice, and SSML guides once you have the basics working.

### Get your API key

Create and copy an API key in the console at [https://platform.speechify.ai/api-keys](https://platform.speechify.ai/api-keys). Key creation is console-only; there is no public key-management endpoint, so this step cannot be scripted.

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

API keys are sensitive. Never expose them in client-side code or public repositories. See the [Authentication guide](/build/guides/get-started/authentication) for security best practices.

### Install the SDK

#### Python

```bash
pip install speechify-api
```

#### TypeScript

```bash
npm install @speechify/api
```

Prefer raw HTTP? No install needed. Use the cURL tab in the examples below.

### Generate speech

Send text to `POST /v1/audio/speech`. These examples come straight from the SDKs and the live spec:

### 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",
)

```

A successful call returns the audio payload:

### 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"
  }
}
```

The SDKs return decoded audio bytes. The raw HTTP response base64-encodes the audio in the `audio_data` field, so decode it before saving.

## Request essentials

The speech endpoint takes a small, predictable set of fields.

| Field          | Required | Notes                                                                       |
| -------------- | -------- | --------------------------------------------------------------------------- |
| `input`        | Yes      | The text (or SSML) to speak. Up to 2,000 characters on the speech endpoint. |
| `voice_id`     | Yes      | A built-in, curated, or cloned voice ID.                                    |
| `model`        | No       | Defaults to `simba-english`. Use `simba-3.2` for new English integrations.  |
| `audio_format` | No       | Output format such as `mp3` or `wav`.                                       |

For new integrations, set `model: "simba-3.2"` and pass one of its curated voices (`beatrice_32`, `dominic_32`, `edmund_32`, `geffen_32`, `harper_32`, `hugh_32`, `imogen_32`, `wyatt_32`) as the `voice_id`. See [Models](/build/guides/concepts/models).

## Choose a voice

List the built-in voices and pass an `id` as the `voice_id`:

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

Popular built-in voices: `george`, `henry`, `carly`, `sabrina`. You can also [clone a voice](/build/voice-cloning-api) from a short sample.

## Next steps

#### [Stream long text](/build/streaming-tts-guide)

Start playback before the full audio is ready, up to 20,000 characters.

#### [Clone a voice](/build/voice-cloning-api)

Create a custom voice from a 10-30 second sample, with consent.

#### [Control delivery](/build/guides/text-to-speech/ssml)

Use SSML for pitch, rate, pauses, and emphasis.

#### [API Reference](/build/api-reference)

Full request and response schemas for every endpoint.