SonnaLabs
API ReferenceText-to-Speech ModelsHeyGen

HeyGen Voice

HeyGen Voice — studio-quality voices that each speak 39 languages. Paid plans and PAYG.

HeyGen's studio-quality voices. Natural, expressive delivery, and one voice reads your text in any of 39 languages. Requires a paid plan or PAYG credits.

EndpointPOST /api/v1/tts/synthesize
Model ID (ttsModel)heygen-voice
ProviderHeyGen (paid access)
Character Limit5,000
Cost1,000 / 1K chars

Shared conventions

Auth, the voice→provider rule, rate limits, and the full error table live on the Speech API page. Below is only what's specific to HeyGen Voice.

Model-specific notes

  • 24 voices, each speaking 39 languages. List them with GET /api/v1/tts/voices?provider=heygen; a voice is not tied to one language.
  • Pick the spoken language with language_code. When you leave it out, the language is detected from the text.
  • Output is MP3. speed, pitch and the ElevenLabs voice settings are not supported and are ignored.

Supported language_code values: ar, be, bg, ca, cs, da, de, el, en, es, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, mk, ms, nl, pl, pt, ro, ru, sk, sl, sr, sv, ta, th, tl, tr, uk, vi, zh.

Request body

ParameterTypeRequiredDescription
textstringYesText to synthesize (max 5,000 chars)
voicestringYesA HeyGen voice ID from GET /api/v1/tts/voices?provider=heygen
ttsModelstringYesMust be "heygen-voice"
language_codestringNoSpoken language, one of the codes above · Default: detected from the text
titlestringNoTitle for the saved project
{
  "text": "Welcome to SonnaLabs. Your audio is ready to download.",
  "voice": "voice-uuid-heygen",
  "ttsModel": "heygen-voice",
  "language_code": "en"
}

Response (200 OK)

{
  "url": "https://cdn.sonnalabs.app/sonna/api-ephemeral/tts/paid/user123/pqr678.mp3",
  "remainingCredits": 9850,
  "projectCreated": true
}

Errors (400 TEXT_TOO_LONG, 403 PAID_ACCESS_REQUIRED, plus 402, 409, 429, 503) follow the shared Speech API table.

On this page