---
title: "Produce a video from reference images and videos with Seedance 2.5"
method: POST
path: "/v2/video/generate/seedance-2-5-reference-to-video"
tags: ["video-generate"]
---

# Produce a video from reference images and videos with Seedance 2.5

`POST /v2/video/generate/seedance-2-5-reference-to-video`

Produce a video from a text prompt and reference media with
Seedance 2.5.

The prompt addresses the references by position: the first reference
image is `[Image1]`, the second
`[Image2]`, the first reference video is
`[Video1]`, and so on. Supply reference images
either as `reference_image_asset_identifiers` (images already stored
with Ideogram) or as raw `reference_images` bytes (multipart requests
only); supplying both is rejected, and uploaded bytes are used for this
request only and are not stored as an asset. Supply reference videos as
`reference_video_asset_identifiers`, which can reference uploaded or generated videos. At most 9 reference images and 10
reference videos are accepted, and reference videos are capped again on
clip length: each clip must be between 2 and 30 seconds long, and the clips must total no more than 30 seconds.
Supply up to 10 MP3/WAV `reference_audios` as multipart files, at most 15 MB each.
Each audio clip must be 2–30 seconds, with at most 30 seconds total. Reference
them as `[Audio1]`, `[Audio2]`, and so on. Audio is used for this request only.

At least one reference image or video is required: the model
conditions every generation on the media it is given, so a request
with no references is rejected.

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

- GenerateVideoSeedDance25ReferenceToVideoRequest — Request body for Seedance 2.5 reference-to-video. The prompt addresses references by position — `[Image1]`, `[Video1]`, and so on. Reference images arrive either as `reference_image_asset_identifiers` or (multipart requests only) as raw `reference_images` bytes, never both. Reference videos arrive only as `reference_video_asset_identifiers`, which may reference uploaded or generated videos. At least one reference image or video is required.
  - `prompt` string, required — A natural-language prompt describing the video to produce. Reference media is addressed by position, as in "[Image1] walks toward the camera with the motion of [Video1]".
  - `reference_image_asset_identifiers` AssetIdentifier[] — Images already stored with Ideogram to use as references, by reference, in prompt order. Cannot be combined with `reference_images`. Only image assets are accepted.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `reference_images` string[] — Images to use as references (max size 50MB each), as raw bytes, in prompt order; only common image formats such as JPEG, PNG, and WEBP are supported. Multipart requests only. Cannot be combined with `reference_image_asset_identifiers`. The bytes are used for this request only and are not stored as an asset.
  - `reference_video_asset_identifiers` AssetIdentifier[] — Uploaded or generated videos to use as references, by reference, in prompt order. Each clip must be between 2 and 30 seconds long, and the clips must total no more than 30 seconds. Upload video files first and pass their asset identifiers.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `reference_audios` string[] — MP3 or WAV audio references, in prompt order. Multipart requests only. Each file must be at most 15 MB and between 2 and 30 seconds; combined duration must not exceed 30 seconds. At least one reference image or video is required. Audio is used for this generation only and is not saved to your library.
  - `aspect_ratio` 'auto' | '21x9' | '16x9' | '4x3' | '1x1' | '3x4' | '9x16' — The aspect ratio of the generated video. `AUTO` lets the model choose the most suitable ratio from the prompt; any other value pins the ratio.
  - `resolution` '480p' | '720p' | '1080p' — 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}`.

- GenerateVideoSeedDance25Response — Acknowledgement returned by the Seedance 2.5 video generation endpoints. Video generation always runs asynchronously, so the generated video is never part of this response: poll for it with `GET /v1/generations/{generation_id}` using the returned `generation_id`, or receive it 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` — A referenced asset 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-19** `4e95197be44a` — 2 breaking, 4 info
  - removed the enum value `AUTO` of the request property `aspect_ratio` (media type: multipart/form-data)
  - removed the enum value `AUTO` of the request property `aspect_ratio` (media type: application/json)
  - the `aspect_ratio` request property default value changed from `AUTO` to `auto` (media type: multipart/form-data)
  - the `aspect_ratio` request property default value changed from `AUTO` to `auto` (media type: application/json)
  - …2 more
- **2026-09-17** `9d3ff2d98e27` — 2 info
  - added the new optional request property `reference_audios` (media type: multipart/form-data)
  - added the new optional request property `reference_audios` (media type: application/json)
- **2026-09-16** `a235a15c0235` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/changes/v2/video/generate/seedance-2-5-reference-to-video/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/4e95197be44a?raw)
