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.
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.
| Task | HeyGen | Sume |
|---|---|---|
| Bind a voice to an avatar | PATCH with default_voice_id | Not a separate call in the docs quoted here |
| Speak as the avatar | Pass or rely on the saved voice | avatar_handle in the TTS payload |
| Talking video | Avatar plus voice | Top-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
- HeyGen API idempotency key vs Sume: two different 409s
HeyGen returns 409 request_in_progress for an in-flight retry. Sume returns 409 idempotency_conflict only when a key is reused for a different payload.
- HeyGen Video Agent edit_plan vs Sume preview regenerate
HeyGen's edit_plan revises named scenes in one turn, up to 50 items. Sume has no in-place scene edit: regenerate preview stills, then render.
- HeyGen video scenes API vs Sume job result previews
HeyGen's GET /v3/videos/{video_id}/scenes returns each scene's visuals and script. Sume job results return media.sume.com artifacts and scene previews.
- Hookdeck 15-minute timeout and Sume's 10-second webhook attempt
Hookdeck's longer destination timeout does not change Sume's fixed 10-second attempt. Ack fast at the relay URL and give your handler its own time budget.
Written by Sume