Skip to main content
A scene edit changes only the scenes you name. Everything else in the video keeps its script, visuals, and pacing, so a small fix stays small: one call, a few minutes of rendering, and no re-prompting of the whole video. It works on any Video Agent session, whether you created it with "mode": "generate" or "mode": "chat" (see Interactive Sessions).

Before · the first cut, four scenes from one prompt.

After · one edit_plan call. Scene 2 became a night-time room, scene 4 dropped the pre-order line. Scenes 1 and 3 are unchanged.

Three calls

1

Read the scenes

GET /v3/videos/{video_id}/scenes on a completed video from the session. The response lists every scene in order with its id, script, background, and elements, plus one edit_version for the whole document. Wait for the video to reach completed first: while it is still rendering this call returns 409 resource_not_ready.
2

Send the edit plan

POST /v3/video-agents/{session_id} with an edit_plan array. Each item names one scene_id, the change in plain language, the scene_snapshot_video_id you read the scene from, and that snapshot’s edit_version. No message is needed. The response carries the video_id of the new working draft.
3

Poll the draft

GET /v3/videos/{video_id} with the returned video_id until status is completed. The session’s own video_id stays null while the edit runs, so poll the draft directly. GET /v3/video-agents/{session_id}/videos lists every cut the session has produced.

Example

The plan below produced the “after” video above. Two items, two scenes, one request.
Response
With the CLI, the same turn is heygen video scenes get <video_id> followed by heygen video-agent send <session_id> -d edit_plan.json.

What to expect

Edit with an agent

Ask a coding agent to make the change for you: it reads the scenes, picks the ones that match your description, and sends the plan.
Prompt for your agent