---
title: "Edit a video with Seedance 2.0 by regenerating from frames of it"
method: POST
path: "/v2/video/edit/seedance-2"
tags: ["video-edit"]
---

# Edit a video with Seedance 2.0 by regenerating from frames of it

`POST /v2/video/edit/seedance-2`

Edit a video you already have stored with Ideogram by replacing part of
it. Reference the source video with `video_asset_identifier` and mark the
span to replace with `start_frame_time` and `end_frame_time`, in seconds.
Seedance 2.0 generates a new clip for that span from your prompt, and the
result is the source video with the generated clip spliced in over the
span: everything before `start_frame_time`, then the generated clip, then
everything from `end_frame_time` on. That edited video is the asset the
request produces.

`is_start_frame_included` and `is_end_frame_included` anchor the generated
clip on the span's own end frames, so it joins the surrounding footage
instead of cutting to something unrelated. Anchoring the start opens the
clip on the frame already at `start_frame_time`; anchoring the end lands
it on the frame at `end_frame_time`; anchoring both joins at each seam. At
least one must be anchored.

The generated clip is used at its own length, which the model rarely makes
exactly the span's, so the edited video is usually a different length from
the source. Request a `duration` close to the span to keep them near each
other. The clip is scaled and cropped to fill the source's frame and
conformed to its frame rate, so resolution and aspect ratio follow the
source rather than being requested.

Video generation always runs asynchronously: the response returns as
soon as the request is accepted and carries only a `generation_id`.
Poll for completion and results with
`GET /v1/generations/{generation_id}` using that id, or supply a
`webhook_url` to have the finished result POSTed to your server
instead.

Video links are available for a limited period of time; download the
video if you want to keep it.

## Query parameters

- `dry_run` boolean

## Request body

- EditVideoSeedDance2Request — Request body for a Seedance 2.0 video edit. `video_asset_identifier` names the video being edited and `start_frame_time`/`end_frame_time` mark the span of it the generated clip replaces. The two `is_*_included` flags anchor the generated clip on the span's own end frames; at least one must be anchored.
  - `video_asset_identifier` AssetIdentifier, required — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `start_frame_time` number, float, required — A position within a source video, in seconds from its start. The frame shown at that position is the one selected; a position past the end of the video is rejected.
  - `is_start_frame_included` boolean — Whether the generated clip is anchored on the frame already at `start_frame_time`, so it opens on the footage it replaces. Set it to false to anchor on the end frame alone, in which case `is_end_frame_included` must be true.
  - `end_frame_time` number, float, required — A position within a source video, in seconds from its start. The frame shown at that position is the one selected; a position past the end of the video is rejected.
  - `is_end_frame_included` boolean — Whether the generated clip is anchored on the frame at `end_frame_time`, so it lands on the footage that follows the span.
  - `prompt` string, required — A natural-language prompt describing what the replaced span should show.
  - `resolution` '480p' | '720p' — The resolution tier of the generated video.
  - `duration` integer — The length of the generated video in seconds. When omitted, the model picks the best duration for the prompt ("auto").
  - `generate_audio` boolean — Whether to generate an audio track for the video. Audio roughly doubles the provider cost and is subject to stricter output moderation.
  - `webhook_url` string, uri — HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a JSON POST to this URL once all images for the request have finished generating. The body mirrors the synchronous generate response: `request_id`, `created`, and a `data` array containing every generated image (`url`, `prompt`, `resolution`, `seed`, `is_image_safe`). Each delivery is signed with Ed25519 and verifiable against the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS; private and loopback hosts and the cloud metadata service are rejected.
  - `private` boolean, nullable — When true or omitted, the output is kept private to your account. Set to false to publish the output to the public feed. Enterprise accounts always generate privately.
  - `target_collection_id` string — A collection you can write to, by its URL-safe base64 collection id. The output videos are added to it when the request completes.

## Response `200`

An acknowledgement to poll with `GET /v1/generations/{generation_id}`.

- GenerateVideoSeedDance2Response — Acknowledgement returned by the Seedance 2.0 video endpoints. Video generation always runs asynchronously, so the generated videos are never part of this response: poll for them with `GET /v1/generations/{generation_id}` using the returned `generation_id`, or receive them at the `webhook_url` you supplied.
  - `generation_id` string, required — URL-safe base64 ID of the accepted generation. Accepted by the `GET /v1/generations/{generation_id}` polling endpoint.
  - `created` string, date-time, required — The time the request was accepted.

## Other responses

- `400` — Invalid input provided.
- `401` — Unauthorized.
- `402` — Insufficient credits or quota.
- `403` — This account does not have access to this model.
- `404` — The referenced source video was not found.
- `422` — The prompt did not pass safety checks.
- `429` — Too many requests.
- `500` — Internal server error.
- `503` — The endpoint is temporarily unavailable.

## Changes

- **2026-09-16** `a235a15c0235` — 1 info
  - added the new optional `query` request parameter `dry_run`
- **2026-09-02** `1429d75daa36` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/changes/v2/video/edit/seedance-2/post.md)

---

[API](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0.md) · [All operations](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/llms.txt) · [OpenAPI document](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/revisions/987f73fc82de?raw)
