HeyGen Studio video scene voiceover: freeze, loop or fit_to_scene
HeyGen's Studio API lets a video scene carry voiceover with playback freeze, loop or fit_to_scene. Sume uses silence beats and a timeline instead.

In HeyGen's Studio API, a video scene can take an optional voiceover, and playback.mode decides how the clip fills that voiceover: freeze, loop or fit_to_scene. Sume has no per-scene playback mode; you control timing with a silence beat in avatar video or with Timeline 1.0 slots.
What the HeyGen changelog says
From the HeyGen API changelog, read 2026-10-02:
- Voiceover and clip audio compose together.
- Studio scenes can be
avatar_video,imageorvideo, 1 to 50 per request, per the same changelog.
| playback.mode | Behaviour as stated |
|---|---|
| freeze | Hold the last frame (the default) |
| loop | Repeat the clip |
| fit_to_scene | Adjust speed to match the voiceover |
The Sume equivalent for talking scenes
In an avatar video with video_inputs, each scene has a voice object. A spoken scene uses type: "text" with a duration; a non-speaking beat uses type: "silence" with a required duration. Total planned length must stay in 4 to 60 seconds.
That gives you a held beat, which is similar to freeze, but only inside an avatar clip with one avatar and one shared scene. There is no looping or speed-fitting of an existing clip in that request.
For existing footage
For B-roll that must match narration length, use Timeline 1.0. You give it an audio spine and ordered video[] slots, and the compiler pads or loops short sources, with warnings it cannot predict in the unbilled plan step. Use the plan call first to see duration and segment count.
- Want a freeze: put a silence beat, or let a short source hold.
- Want a loop: choose slot lengths so the source repeats, and read the warnings.
- Want speed-fit: Sume's avatar request does not retime an existing clip; pick or trim the source length yourself.
Summary
HeyGen exposes the fill behaviour as a field on the scene. Sume splits it into separate documented steps. If you need the one-field version for a clip under a voiceover, HeyGen's is simpler; if you want to keep each stage inspectable, Sume's separate jobs are easier to reason about.
Sources
Related posts
More in Developers
- Higgsfield 403 insufficient credits vs Sume 402: handle both
Higgsfield returns 403 when credits run out; Sume returns 402 insufficient_credits. A status-code map for 401, 403, 404, 422 and 402 when porting a client.
- Higgsfield 423 and 503 model errors vs Sume provider capacity
Higgsfield returns 404, 423 or 503 for a model you cannot use now. Sume uses provider_not_configured and provider_capacity_exceeded. What to retry.
- Higgsfield cancel queued request: 202 or 400, and the Sume match
Higgsfield cancels only queued requests (202, else 400). Sume cancels a job before generation starts, or returns 409 job_generation_already_started.
- Higgsfield concurrency limit returns 400, not 429: Sume's answer
Higgsfield answers 400 at your concurrency cap and sends no Retry-After. Sume queues valid jobs and returns 429 queue_full only when the queue is full.
Written by Sume