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

# Streaming TTS Guide

> Streaming text-to-speech guide: call POST /v1/audio/stream to receive audio chunks in real time, begin playback early, and handle up to 20,000 characters.

Streaming returns audio chunks as they are generated, so playback can start before the whole clip is ready. Use it for long text and any experience where a wait before speech would feel broken.

## Speech vs stream

|                 | Speech endpoint           | Stream endpoint                 |
| --------------- | ------------------------- | ------------------------------- |
| Character limit | 2,000                     | **20,000**                      |
| Response        | Base64 JSON + metadata    | Raw audio chunks                |
| Best for        | Short, pre-rendered clips | Long text, low-latency playback |

### Set your API key

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

### Install the SDK

#### Python

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

#### TypeScript

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

### Stream audio

Call `POST /v1/audio/stream`. The response is a stream of raw audio chunks:

### Request

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

```curl
curl -X POST https://api.speechify.ai/v1/audio/stream \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "input": "Streaming long-form audio with the Speechify API.",
  "voice_id": "geffen_32",
  "model": "simba-3.2"
}'
```

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

async function main() {
    const client = new SpeechifyClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.audio.stream({
        input: "Streaming long-form audio with the Speechify API.",
        voiceId: "geffen_32",
    });
}
main();

```

```python
from speechify import Speechify

client = Speechify(
    token="YOUR_TOKEN_HERE",
)

client.audio.stream(
    input="Streaming long-form audio with the Speechify API.",
    voice_id="geffen_32",
)

```

## When to stream

Reach for streaming when the first-byte wait matters: read-aloud features, in-app playback of long articles, or any interface where the user presses play and expects immediate sound. For a short, fixed clip you render once and cache, the [speech endpoint](/build/text-to-speech-api) is simpler.

Streaming pairs well with the streaming-native `simba-3.2` model. Set `model: "simba-3.2"` and a curated voice such as `geffen_32`. See [Models](/build/guides/concepts/models).

## Next steps

#### [Text-to-Speech API](/build/text-to-speech-api)

Request essentials and voice selection.

#### [Speech Marks](/build/guides/text-to-speech/speech-marks)

Word-level timing for synced captions and highlighting.