# Generate speech from text

Text to speech on the Paxa API is one POST /v1/tts request: Thai, English, or Mandarin Chinese text in, MP3, Opus, WAV, or raw PCM audio out, billed per character in credits. Voices, models, options, and limits.

[POST /v1/tts](https://paxalabs.com/docs/api/text-to-speech) takes text and a voice, and answers with audio (MP3 by default, Opus, WAV, or raw PCM). Thai, English, Mandarin Chinese, and mixed text all work in the same request. Every request costs 10 credits per 1,000 characters, billed per character and rounded up to the next hundredth of a credit (minimum 0.1 credit), charged [before synthesis](https://paxalabs.com/docs/credits).

## Choose a voice

The `voice` field takes a voice id from the roster of the model you send, and both rosters below are live from the catalog. The field accepts the id alone. Case is ignored. `"bualoi"` and `"BuaLoi"` select the same voice. Display names are for people. A name can change; an id never does. [GET /v1/voices](https://paxalabs.com/docs/api/voices) serves both rosters as JSON, listing a voice once for each model that serves it. The [text to speech page](https://paxalabs.com/text-to-speech) plays every voice in longer showcase scripts.

### Paxa TTS Flash v2 voices (paxa-tts-flash-v2)

Send `"model": "paxa-tts-flash-v2"` for Paxa TTS Flash v2. Each of its 50 voices speaks Thai, English, and Mandarin Chinese, and every one reads [direction tags](https://paxalabs.com/docs/directions) written into `text`. 26 share their ids with Paxa TTS Flash.

| Voice | id | Gender | Language | Description |
| --- | --- | --- | --- | --- |
| Khanom Krok | khanomkrok | Male | Thai, English, and Mandarin Chinese | Calm, unhurried elder voice and the roster's male lead: documentary, heritage storytelling, and narration. |
| Nom Yen | nomyen | Female | Thai, English, and Mandarin Chinese | Bright, energetic voice and the roster's female lead: promos, social clips, and everyday product speech. |
| Foi Thong | foithong | Female | Thai, English, and Mandarin Chinese | Captivating narrator for long reads and explainers. |
| Massaman | massaman | Male | Thai, English, and Mandarin Chinese | Deep, steady leading-man voice for trailers, drama, and announcements. |
| Thong Ek | thongek | Male | Thai, English, and Mandarin Chinese | Crisp, authoritative read for news bulletins and corporate updates. |
| Panang | panang | Male | Thai, English, and Mandarin Chinese | Polished, theatrical delivery with a stage actor's gravitas. |
| Oliang | oliang | Male | Thai, English, and Mandarin Chinese | Relaxed low drawl for chill content and late-night radio. |
| Sanae Chan | sanaechan | Female | Thai, English, and Mandarin Chinese | Warm, magnetic voice with a late-night glow. |
| Tub Tim Krob | tubtimkrob | Female | Thai, English, and Mandarin Chinese | Low, intimate delivery for late-night reads. |
| Moo Ping | mooping | Male | Thai, English, and Mandarin Chinese | Confident, streetwise voice for ads and shorts. |
| Bua Loi | bualoi | Female | Thai, English, and Mandarin Chinese | Sweet, youthful voice for characters and light stories. |
| Luk Chup | lukchup | Female | Thai, English, and Mandarin Chinese | Light, childlike voice for characters and playful spots. |
| Lod Chong | lodchong | Female | Thai, English, and Mandarin Chinese | Slow, close-mic delivery for mindfulness sessions and sleep audio. |
| Woon | woon | Female | Thai, English, and Mandarin Chinese | Hushed, breathy read for wind-downs and bedtime. |
| Sangkaya | sangkaya | Male | Thai, English, and Mandarin Chinese | Quiet male voice for sleep tracks and slow narration. |
| Khao Niao | khaoniao | Male | Thai, English, and Mandarin Chinese | Low, unhurried male voice for guided breathing, wellbeing narration, and slow documentary. |
| Tom Yum | tomyum | Female | Thai, English, and Mandarin Chinese | Fast, hot, chatty best-friend voice for drama recaps, entertainment news, and social clips. |
| Khanom Chan | khanomchan | Female | Thai, English, and Mandarin Chinese | Sunny, lively chat voice for social clips and companion apps. |
| Kaprao | kaprao | Male | Thai, English, and Mandarin Chinese | Relaxed male voice for dialogue, voice assistants, and everyday explainers. |
| Cookie | cookie | Female | Thai, English, and Mandarin Chinese | Kind, attentive English voice for support lines and onboarding. |
| Latte | latte | Male | Thai, English, and Mandarin Chinese | Polished English voice for brand films. |
| Espresso | espresso | Male | Thai, English, and Mandarin Chinese | Deep, dark, unhurried English reader for long fiction, documentaries, and trailers. |
| Mocha | mocha | Female | Thai, English, and Mandarin Chinese | Close, gentle, low-volume English voice for bedtime, wellness, and companion speech. |
| Tao Huay | taohuay | Female | Thai, English, and Mandarin Chinese | Tender, melancholy Mandarin voice for drama recaps, audio novels, and companion speech. |
| Oolong | oolong | Male | Thai, English, and Mandarin Chinese | Low, rich Mandarin narrator for audio novels, brand reads, and late-night stories. |
| Saku | saku | Female | Thai, English, and Mandarin Chinese | Crisp, composed voice for AI assistants, smart devices, and in-app guidance. |
| Satay | satay | Male | Thai, English, and Mandarin Chinese | Bold, youthful lead for anime dubs, games, and TV series. |
| Thong Yod | thongyod | Female | Thai, English, and Mandarin Chinese | Bright, spirited lead for anime dubs, games, and TV series. |
| Bai Toey | baitoey | Female | Thai, English, and Mandarin Chinese | Patient, reassuring voice for coaching, wellbeing lessons, and step-by-step explanations. |
| Kluay Tod | kluaytod | Male | Thai, English, and Mandarin Chinese | Goofy, good-natured sidekick for cartoons, kids' content, and playful ads. |
| Matum | matum | Female | Thai, English, and Mandarin Chinese | Unhurried, precise voice-over for documentaries, travel films, and museum guides. |
| Hor Mok | hormok | Male | Thai, English, and Mandarin Chinese | Noble, resonant voice for fantasy heroes, epic audio drama, and games. |
| Nam Manao | nammanao | Female | Thai, English, and Mandarin Chinese | Motivating, high-tempo voice for workouts, fitness apps, and training videos. |
| Khao Tom | khaotom | Male | Thai, English, and Mandarin Chinese | Good-humored fatherly voice for family brands, how-to clips, and everyday stories. |
| Salim | salim | Female | Thai, English, and Mandarin Chinese | Easy, chatty everyday voice for vlogs, reviews, and lifestyle clips. |
| Krayasat | krayasat | Male | Thai, English, and Mandarin Chinese | Unhurried, kindly grandfather voice for bedtime stories, folk tales, and life lessons. |
| Miang Kham | miangkham | Female | Thai, English, and Mandarin Chinese | Stern, commanding elder voice for grandmother roles, folk tales, and ghost stories. |
| Tod Mun | todmun | Female | Thai, English, and Mandarin Chinese | Room-lifting host voice for events, shows, and live announcements. |
| Nam Prik | namprik | Female | Thai, English, and Mandarin Chinese | Husky, low alto for brand stories, drama, and late-night talk. |
| Khai Jiao | khaijiao | Male | Thai, English, and Mandarin Chinese | High-energy commentator for esports, match highlights, and launch trailers. |
| Chu Chi | chuchi | Male | Thai, English, and Mandarin Chinese | Clear, knowledgeable lecturer for classes, e-learning, and explainers. |
| Krong Kraeng | krongkraeng | Male | Thai, English, and Mandarin Chinese | Machine-like voice for sci-fi characters, games, and system announcements. |
| Chor Muang | chormuang | Female | Thai, English, and Mandarin Chinese | Hesitant, heartfelt voice for love stories, visual novels, and tender scenes. |
| Khao Lam | khaolam | Male | Thai, English, and Mandarin Chinese | Low, gentle male voice for love stories, audio drama, and sleep tracks. |
| Pla Thu | plathu | Male | Thai, English, and Mandarin Chinese | Laid-back student voice for campus content, study vlogs, and everyday chat. |
| Kaeng Phet | kaengphet | Male | Thai, English, and Mandarin Chinese | Big, dramatic voice for movie trailers, game reveals, and launch films. |
| Kaeng Pa | kaengpa | Male | Thai, English, and Mandarin Chinese | Rough, menacing villain voice for games, audio drama, and animation. |
| Makham | makham | Female | Thai, English, and Mandarin Chinese | Cold, cutting voice for villainesses, sorceresses, and dark fantasy. |
| Pui Fai | puifai | Female | Thai, English, and Mandarin Chinese | Sweet, cheerful idol voice for VTubers, virtual hosts, and fan content. |
| Tako | tako | Female | Thai, English, and Mandarin Chinese | Easygoing reader for audiobooks, recaps, and explainers. |

### Paxa TTS Flash voices (paxa-tts-flash-v1)

Send `"model": "paxa-tts-flash-v1"` for Paxa TTS Flash. Every Paxa TTS Flash voice is designed around one language, Thai, English, or Mandarin Chinese, and reads the other two with a foreign accent. Of its Thai voices, 4 carry a regional accent (Isan, Northern, or Southern).

| Voice | id | Gender | Language | Description |
| --- | --- | --- | --- | --- |
| Khanom Krok | khanomkrok | Male | Thai | Calm, unhurried elder voice and the roster's male lead: documentary, heritage storytelling, and narration. |
| Nom Yen | nomyen | Female | Thai | Bright, energetic voice and the roster's female lead: promos, social clips, and everyday product speech. |
| Foi Thong | foithong | Female | Thai | Captivating narrator for long reads and explainers. |
| Massaman | massaman | Male | Thai | Deep, steady leading-man voice for trailers, drama, and announcements. |
| Thong Ek | thongek | Male | Thai | Crisp, authoritative read for news bulletins and corporate updates. |
| Panang | panang | Male | Thai | Polished, theatrical delivery with a stage actor's gravitas. |
| Oliang | oliang | Male | Thai | Relaxed low drawl for chill content and late-night radio. |
| Sanae Chan | sanaechan | Female | Thai | Warm, magnetic voice with a late-night glow. |
| Tub Tim Krob | tubtimkrob | Female | Thai | Low, intimate delivery for late-night reads. |
| Moo Ping | mooping | Male | Thai | Confident, streetwise voice for ads and shorts. |
| Bua Loi | bualoi | Female | Thai | Sweet, youthful voice for characters and light stories. |
| Luk Chup | lukchup | Female | Thai | Light, childlike voice for characters and playful spots. |
| Lod Chong | lodchong | Female | Thai | Slow, close-mic delivery for mindfulness sessions and sleep audio. |
| Woon | woon | Female | Thai | Hushed, breathy read for wind-downs and bedtime. |
| Sangkaya | sangkaya | Male | Thai | Quiet male voice for sleep tracks and slow narration. |
| Pad Thai | padthai | Female | Thai | Thai-English code-switching MC for events and lifestyle content. |
| Khao Niao | khaoniao | Male | Thai | Low, unhurried male voice for guided breathing, wellbeing narration, and slow documentary. |
| Tom Yum | tomyum | Female | Thai | Fast, hot, chatty best-friend voice for drama recaps, entertainment news, and social clips. |
| Som Tam | somtam | Female | Isan Thai | Isan-accented voice with local warmth. |
| Larb | larb | Male | Isan Thai | Isan-accented male voice for regional content. |
| Khao Soi | khaosoi | Female | Northern Thai | Northern-accented voice with a soft Lanna cadence. |
| Roti | roti | Male | Southern Thai | Southern-accented voice with a quick coastal cadence. |
| Donut | donut | Female | English | Cheerful English voice for promos and demos. |
| Cookie | cookie | Female | English | Kind, attentive English voice for support lines and onboarding. |
| Toast | toast | Male | English | Plain-spoken everyday English voice for tutorials. |
| Latte | latte | Male | English | Polished English voice for brand films. |
| Espresso | espresso | Male | English | Deep, dark, unhurried English reader for long fiction, documentaries, and trailers. |
| Mocha | mocha | Female | English | Close, gentle, low-volume English voice for bedtime, wellness, and companion speech. |
| Tao Huay | taohuay | Female | Mandarin Chinese | Tender, melancholy Mandarin voice for drama recaps, audio novels, and companion speech. |
| Oolong | oolong | Male | Mandarin Chinese | Low, rich Mandarin narrator for audio novels, brand reads, and late-night stories. |
| Tako | tako | Female | Thai | Easygoing reader for audiobooks, recaps, and explainers. |

Experimental: **Khanom Chan** (`khanomchan`, Female, Thai). Natural conversational voice that changes mood with emotion tags written into the text: happy, sad, angry, or afraid.

Experimental: **Kaprao** (`kaprao`, Male, Thai). Easygoing male voice that changes mood with emotion tags written into the text: happy, sad, angry, or afraid.

Special: **Yoyo** (`yoyo`, Male, Thai). One of Paxa Labs' co-founders: a conversational podcast host with an easy live-mic feel.

The experimental voices in the Paxa TTS Flash roster read [emotion tags](https://paxalabs.com/docs/emotion-tags), bracketed words such as `[happy]` or `[sad:0.5]` written into `text`, and change their delivery where each tag stands. Every other Paxa TTS Flash voice skips the tags.

## Choose a model

The required `model` field names the serving model, `paxa-tts-flash-v2` or `paxa-tts-flash-v1`. [GET /v1/models](https://paxalabs.com/docs/api/models) lists every model with its voice ids, per-request character ceiling, and price, and [GET /health](https://paxalabs.com/docs/api/health) reports which are served right now.

curl:

```bash
curl https://api.paxalabs.com/v1/models
```

Response:

```json
{
  "models": [
    {
      "id": "paxa-tts-flash-v1",
      "name": "Paxa TTS Flash",
      "product": "tts",
      "max_chars": 5000,
      "max_request_chars": null,
      "credits_per_1k_chars": 10,
      "reference_credits_per_1k_chars": null,
      "credits_per_page": null,
      "large_schema_credits_per_page": null,
      "large_schema_min_leaves": null,
      "max_leaves": null,
      "credits_per_hour": null,
      "max_pages": null,
      "max_duration_seconds": null,
      "diarization_limit_seconds": null,
      "max_session_seconds": null,
      "encodings": null,
      "max_bytes": null,
      "formats": null,
      "min_request_credits": 0.1,
      "voices": [
        "khanomkrok",
        "nomyen",
        "foithong",
        "massaman",
        "thongek",
        "panang",
        "oliang",
        "sanaechan",
        "tubtimkrob",
        "mooping",
        "bualoi",
        "lukchup",
        "lodchong",
        "woon",
        "sangkaya",
        "padthai",
        "khaoniao",
        "tomyum",
        "khanomchan",
        "kaprao",
        "yoyo",
        "somtam",
        "larb",
        "khaosoi",
        "roti",
        "donut",
        "cookie",
        "toast",
        "latte",
        "espresso",
        "mocha",
        "taohuay",
        "oolong",
        "tako"
      ],
      "sources": null,
      "target": null
    },
    {
      "id": "paxa-tts-flash-v2",
      "name": "Paxa TTS Flash v2",
      "product": "tts",
      "max_chars": 5000,
      "max_request_chars": null,
      "credits_per_1k_chars": 10,
      "reference_credits_per_1k_chars": null,
      "credits_per_page": null,
      "large_schema_credits_per_page": null,
      "large_schema_min_leaves": null,
      "max_leaves": null,
      "credits_per_hour": null,
      "max_pages": null,
      "max_duration_seconds": null,
      "diarization_limit_seconds": null,
      "max_session_seconds": null,
      "encodings": null,
      "max_bytes": null,
      "formats": null,
      "min_request_credits": 0.1,
      "voices": [
        "khanomkrok",
        "nomyen",
        "foithong",
        "massaman",
        "thongek",
        "panang",
        "oliang",
        "sanaechan",
        "tubtimkrob",
        "mooping",
        "bualoi",
        "lukchup",
        "lodchong",
        "woon",
        "sangkaya",
        "khaoniao",
        "tomyum",
        "khanomchan",
        "kaprao",
        "cookie",
        "latte",
        "espresso",
        "mocha",
        "taohuay",
        "oolong",
        "saku",
        "satay",
        "thongyod",
        "baitoey",
        "kluaytod",
        "matum",
        "hormok",
        "nammanao",
        "khaotom",
        "salim",
        "krayasat",
        "miangkham",
        "todmun",
        "namprik",
        "khaijiao",
        "chuchi",
        "krongkraeng",
        "chormuang",
        "khaolam",
        "plathu",
        "kaengphet",
        "kaengpa",
        "makham",
        "puifai",
        "tako"
      ],
      "sources": null,
      "target": null
    },
    {
      "id": "paxa-stt-lite-v1-preview",
      "name": "Paxa STT Lite",
      "product": "stt",
      "max_chars": null,
      "max_request_chars": null,
      "credits_per_1k_chars": null,
      "reference_credits_per_1k_chars": null,
      "credits_per_page": null,
      "large_schema_credits_per_page": null,
      "large_schema_min_leaves": null,
      "max_leaves": null,
      "credits_per_hour": 500,
      "max_pages": null,
      "max_duration_seconds": 3600,
      "diarization_limit_seconds": 540,
      "max_session_seconds": null,
      "encodings": null,
      "max_bytes": 26214400,
      "formats": [
        "mp3",
        "wav",
        "flac",
        "ogg",
        "m4a",
        "aac",
        "webm"
      ],
      "min_request_credits": 0.1,
      "voices": [],
      "sources": null,
      "target": null
    },
    {
      "id": "paxa-stt-lite-realtime-v1-preview",
      "name": "Paxa STT Lite Realtime",
      "product": "stt",
      "max_chars": null,
      "max_request_chars": null,
      "credits_per_1k_chars": null,
      "reference_credits_per_1k_chars": null,
      "credits_per_page": null,
      "large_schema_credits_per_page": null,
      "large_schema_min_leaves": null,
      "max_leaves": null,
      "credits_per_hour": 750,
      "max_pages": null,
      "max_duration_seconds": null,
      "diarization_limit_seconds": null,
      "max_session_seconds": 14400,
      "encodings": [
        {
          "encoding": "pcm_s16le",
          "sample_rates": [
            16000,
            48000
          ]
        },
        {
          "encoding": "mulaw",
          "sample_rates": [
            8000
          ]
        }
      ],
      "max_bytes": null,
      "formats": null,
      "min_request_credits": 0.1,
      "voices": [],
      "sources": null,
      "target": null
    },
    {
      "id": "paxa-ocr-lite-v1",
      "name": "Paxa OCR Lite",
      "product": "ocr",
      "max_chars": null,
      "max_request_chars": null,
      "credits_per_1k_chars": null,
      "reference_credits_per_1k_chars": null,
      "credits_per_page": 6.5,
      "large_schema_credits_per_page": null,
      "large_schema_min_leaves": null,
      "max_leaves": null,
      "credits_per_hour": null,
      "max_pages": 50,
      "max_duration_seconds": null,
      "diarization_limit_seconds": null,
      "max_session_seconds": null,
      "encodings": null,
      "max_bytes": 10485760,
      "formats": [
        "pdf",
        "png",
        "jpeg",
        "webp"
      ],
      "min_request_credits": 6.5,
      "voices": [],
      "sources": null,
      "target": null
    },
    {
      "id": "paxa-doc-extract-v1",
      "name": "Paxa Document Extraction",
      "product": "extraction",
      "max_chars": null,
      "max_request_chars": null,
      "credits_per_1k_chars": null,
      "reference_credits_per_1k_chars": null,
      "credits_per_page": 13,
      "large_schema_credits_per_page": 19.5,
      "large_schema_min_leaves": 51,
      "max_leaves": 100,
      "credits_per_hour": null,
      "max_pages": 20,
      "max_duration_seconds": null,
      "diarization_limit_seconds": null,
      "max_session_seconds": null,
      "encodings": null,
      "max_bytes": 10485760,
      "formats": [
        "pdf",
        "png",
        "jpeg",
        "webp"
      ],
      "min_request_credits": 13,
      "voices": [],
      "sources": null,
      "target": null
    },
    {
      "id": "paxa-translation-lite-v1",
      "name": "Paxa Translate Lite",
      "product": "translation",
      "max_chars": 20000,
      "max_request_chars": 200000,
      "credits_per_1k_chars": 25,
      "reference_credits_per_1k_chars": 8,
      "credits_per_page": null,
      "large_schema_credits_per_page": null,
      "large_schema_min_leaves": null,
      "max_leaves": null,
      "credits_per_hour": null,
      "max_pages": null,
      "max_duration_seconds": null,
      "diarization_limit_seconds": null,
      "max_session_seconds": null,
      "encodings": null,
      "max_bytes": null,
      "formats": null,
      "min_request_credits": 2,
      "voices": [],
      "sources": [
        "en",
        "zh",
        "ja",
        "ko",
        "ar",
        "fr",
        "de",
        "hi",
        "id",
        "ms",
        "pt",
        "ru",
        "es",
        "vi"
      ],
      "target": "th"
    }
  ],
  "object": "list",
  "data": [
    {
      "id": "paxa-tts-flash-v1",
      "object": "model",
      "created": 1785715200,
      "owned_by": "paxalabs"
    },
    {
      "id": "paxa-tts-flash-v2",
      "object": "model",
      "created": 1792108800,
      "owned_by": "paxalabs"
    },
    {
      "id": "paxa-stt-lite-v1-preview",
      "object": "model",
      "created": 1788912000,
      "owned_by": "paxalabs"
    },
    {
      "id": "paxa-stt-lite-realtime-v1-preview",
      "object": "model",
      "created": 1790121600,
      "owned_by": "paxalabs"
    },
    {
      "id": "paxa-ocr-lite-v1",
      "object": "model",
      "created": 1787529600,
      "owned_by": "paxalabs"
    },
    {
      "id": "paxa-doc-extract-v1",
      "object": "model",
      "created": 1789171200,
      "owned_by": "paxalabs"
    },
    {
      "id": "paxa-translation-lite-v1",
      "object": "model",
      "created": 1786320000,
      "owned_by": "paxalabs"
    }
  ]
}
```

## Request options

A request carries `text`, `voice`, and `model`. The other fields are optional:

- `format` chooses the container. The default `mp3` is compressed. `opus` is Ogg Opus, 48 kbps on Paxa TTS Flash and 64 on Paxa TTS Flash v2, the smallest, for streaming and web playback. `wav` carries uncompressed 16-bit PCM, the largest, for audio that feeds further processing. `pcm` carries those samples with no header, 16-bit little-endian mono, for voice agents that take raw samples. Both run at 24 kHz unless `sample_rate` names another rate, and Paxa TTS Flash v2 serves 8000, 16000, 22050, 24000, 32000, 44100, 48000 Hz. `mulaw` and `alaw` carry G.711 mu-law and A-law at 8 kHz with no header, for phone lines, on Paxa TTS Flash v2. Every format and rate costs the same.
- `stream` switches delivery from a complete body to chunks.
- [`timestamps`](https://paxalabs.com/docs/timestamps) requests word, sentence, or utterance timing. It changes both the response shape and the rate.
- `speed` sets the speaking rate, from 0.5 to 1.5 times the voice's design speed. The charge is the same at every rate.
- [`temperature`](https://paxalabs.com/docs/temperature) sets how much the reading varies from one request to the next, from 0 to 2, on Paxa TTS Flash v2. The charge is the same at every value.
- `language` sets how codes, digits, and symbols are read. Words keep the language of their script, and a number inside Thai or Chinese text keeps that text's language. Elsewhere, `th` reads them in Thai and `en` in English. Under `th`, `AB2039` gets Thai letter names and digits. `zh` reads codes in English, a number next to Chinese characters in Mandarin, and other digits and symbols in Thai. The default, `auto`, follows the language most of the text is written in, counting English only in words of three or more letters, and takes Thai on a tie. Under `auto`, a bare number, `AB2039`, or `250 ml` reads as Thai, and `ISO9001` or `100 USD` as English. Text with no Thai, Chinese, digits, or counted English word reads as English when a two-letter word has a lowercase letter, such as `Hi` or `I'm OK`. Pin `th` or `en` to choose how a short number or code reads. The charge is the same in every language.

The [API reference](https://paxalabs.com/docs/api/text-to-speech) documents every field. The example below requests Paxa TTS Flash v2. For Paxa TTS Flash, send `"model": "paxa-tts-flash-v1"` with one of its voice ids.

curl:

```bash
curl -X POST https://api.paxalabs.com/v1/tts \
  -H "Authorization: Bearer $PAXA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "สวัสดีครับ ยินดีต้อนรับสู่ Paxa Labs",
    "voice": "khanomkrok",
    "model": "paxa-tts-flash-v2",
    "format": "mp3",
    "stream": false
  }' \
  --output speech.mp3
```

Buffered delivery (the default) answers with a complete body and a `content-length`. Set `stream: true` to receive audio while it is synthesized; [Streaming](https://paxalabs.com/docs/streaming) covers the trade-offs.

## Limits

A request accepts at most 5,000 characters on Paxa TTS Flash v2 and 5,000 on Paxa TTS Flash. Longer text answers [400 text_too_long](https://paxalabs.com/docs/errors#text_too_long) and nothing is charged. Split long documents into paragraph-sized requests. Requests per minute depend on the plan. See [Rate limits](https://paxalabs.com/docs/rate-limits).
