---
title: "Stream Speech"
method: POST
path: "/generate/stream"
---

# Stream Speech

`POST /generate/stream`

## Request

- Base URL: `https://api.voicelabs.now` (the document declares no server; this is the origin it was published from)
- URL: `https://api.voicelabs.now/generate/stream`
- Auth: none declared

Generate speech and stream the WAV audio directly without saving to disk.

## Request body

- GenerationRequest: Request model for voice generation.
  - `profile_id` string, required
  - `text` string, required
  - `language` string
  - `seed` integer, nullable: Pins the RNG so a take is reproducible. Omit to inherit the voice profile's default_seed. Accepted by every engine, but only CHANGES the output of engines whose ModelConfig sets seed_changes_output — which is every engine we ship today, measured against the running weights, so a pinned seed is genuinely reproducible and a different one genuinely re-rolls the take.
  - `temperature` number, nullable: Sampling temperature. Omit to inherit the voice profile's default_temperature, then the engine's own default. Only engines whose ModelConfig sets supports_temperature (chatterbox, chatterbox_turbo) accept one; asking any other engine for a temperature is a 400 rather than a silently dropped value. The accepted temperature is stored on the generation row, so retry, regenerate and chunk re-roll re-run at the same setting.
  - `model_size` string, nullable
  - `instruct` string, nullable
  - `engine` string, nullable
  - `personality` boolean: When true and the profile has a personality prompt, the input text is rewritten in-character before TTS.
  - `max_chunk_chars` integer: Max characters per chunk for long text splitting
  - `crossfade_ms` integer: Crossfade duration in ms between chunks (0 for hard cut)
  - `normalize` boolean: Normalize output audio volume
  - `speed` number: Speaking rate multiplier. Only engines whose ModelConfig sets supports_speed (kokoro, luxtts) honor it; asking any other engine for a non-default rate is a 400. The accepted rate is stored on the generation row, so retry and regenerate re-run at the same pace.
  - `effects_chain` EffectConfig[], nullable: Effects chain to apply after generation (overrides profile default)
    - `type` string, required
    - `enabled` boolean
    - `params` object

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/voicelabs/apis/voicebox-api.md) · [All operations](https://skmtc.dev/voicelabs/apis/voicebox-api/llms.txt) · [OpenAPI document](https://skmtc.dev/voicelabs/apis/voicebox-api/revisions/a7a37d1fc02f?raw)
