HeyGen avatar voice id: default_voice_id vs Sume avatar_handle

HeyGen's PATCH /v3/avatars/{group_id} stores a default_voice_id. On Sume, TTS can take an avatar_handle and resolve that avatar's ready voice.

4 min readSume
All posts

HeyGen's PATCH /v3/avatars/{group_id} sets default_voice_id on an avatar you own, so the voice is bound once. On Sume you can skip the binding step for speech: the TTS tool accepts avatar_id or avatar_handle in place of voice.id, and Sume resolves that avatar's ready TTS voice.

HeyGen facts are from its September 2026 changelog; Sume facts are from Generate avatar video and Models plus the TTS tool description in the Sume codebase, read 2026-09-30.

What does default_voice_id change on HeyGen?

It stores a voice on the avatar group so later requests need not pass one. The changelog says it applies to an avatar you own.

How does Sume tie a voice to an avatar?

In a TTS request, you give exactly one transcript source plus a voice selector: voice.id, or avatar_id / avatar_handle. If you pass both a voice and an avatar, both must resolve to one voice id. Talking videos reference a ready avatar with top-level avatar_handle, so the avatar is the main handle through the flow.

Voice binding as documented, read 2026-09-30.
TaskHeyGenSume
Bind a voice to an avatarPATCH with default_voice_idNot a separate call in the docs quoted here
Speak as the avatarPass or rely on the saved voiceavatar_handle in the TTS payload
Talking videoAvatar plus voiceTop-level avatar_handle with a script

What about the Fabric image-to-video route?

There the visual source is either image_url or avatar_handle, and they are mutually exclusive. The docs say to prefer image_url of the generated, inspected posed still, and to use avatar_handle only when the user named that avatar.

What should I do when porting?

Replace the one-time voice binding with an avatar_handle in each TTS or talking-video request. For HeyGen-side ids, see HeyGen API avatar id and voice id.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume