Skip to main content
These APIs are in private preview and require an ACTIVE professional voice clone, a paid feature backed by purchased voice clone slots.
The HeyGen Voice model synthesizes speech two ways from the same request body:
  • POST /v3/models/audio/tts waits for generation and returns one audio URL.
  • POST /v3/models/audio/tts/stream returns ordered audio parts as Server-Sent Events (SSE).
For stock, designed, or instant-cloned voices, use Third Party Speech. Synthesis costs 0.6 API credits per generated minute. Each endpoint allows 30 requests per minute per workspace member.

Request fields

Unknown fields return 400 invalid_parameter. For <break> pauses, use Third Party Speech.

Generate completed speech

Response
The request stays open until the file is assembled, so no polling is needed. audio_url is one mono PCM16 WAV at 44.1 kHz; duration is in seconds.

Stream speech

The stream is text/event-stream. Disable response buffering and handle each event as it arrives.
Audio events carry base64-encoded standalone WAV parts. Play them in ascending part_index order; each part is a complete WAV container, so decode them individually rather than concatenating the bytes.
Alignment events appear when with_timestamps is true. Each word carries text, start_time and end_time in seconds, and a confidence from 0 to 1.
A clean stream ends with data: [DONE]. If synthesis fails mid-stream, the stream ends with an error event instead and no [DONE]:
Errors before the first event use the standard JSON error envelope.

Errors