Skip to content
English

Seedance 2.5 Image to Video API

POST /v1/tasks

Image, video, and audio models are called through the Unified Async API POST /v1/tasks endpoint; only the input fields differ (see input parameters below).

Model summary

Model seedance-2.5/image-to-video
Capability First-frame / first-last-frame image-to-video
Resolution 480p / 720p
Duration 4-30 seconds

Generate up to 30 seconds from a first frame or a first/last-frame pair, with the output ratio following the first frame and optional synchronized audio.

Production guidance

Calling the API
  • Use first_frame_url together with last_frame_url.
  • Use callback.url for terminal notifications and GET /v1/tasks/:id as a fallback query.
  • Artifact URLs expire; copy files you need to keep into persistent storage.

Best suited for

Animate a still

Add natural motion and camera movement to a poster, product image, illustration, or scene.

first_frame_url
Controlled transitions

Specify both endpoints to create a coherent transition between two images.

first_frame_urllast_frame_url
Audio clips from images

Generate synchronized dialogue, effects, and background music for an image-driven shot.

generate_audio

Request parameters

model string required

Model ID.

example seedance-2.5/image-to-video
input object required

First-frame and first/last-frame image-to-video parameters.

prompt string required

Motion, camera, scene, and audio instructions. Eleven prompt languages are supported.

first_frame_url string optional

First-frame image URL, data URL, or asset ID. Supports jpeg, png, webp, bmp, tiff, gif, heic, and heif; under 30 MB; each side 300-6000 px; aspect ratio 0.4-2.5. SVG is not supported.

last_frame_url string optional

Last-frame image URL used with first_frame_url. If the aspect ratios differ, the last frame is center-cropped to match the first.

reference_image_urls string[] optional

Array of up to 30 reference image URLs for subject, style, or composition guidance. SVG is not supported.

reference_audio_urls string[] optional

Array of up to 10 reference audio clips. Supports wav and mp3; each clip is 2-30 seconds and under 15 MB; combined duration is limited to 30 seconds.

resolution enum optional

Output video resolution. Defaults to 480p.

default 480p enum: 480p720p
duration integer optional

Output duration in seconds. Accepts integers from 4 to 30 and defaults to 5 seconds.

default 5
aspect_ratio enum optional

Output aspect ratio, derived from the first frame.

default adaptive enum: adaptive
generate_audio boolean optional

Generate synchronized dialogue, effects, and background audio.

default true
output_format enum optional

Output format. mp4 has broad compatibility; mov is intended for professional post-production.

default mp4 enum: mp4mov
watermark boolean optional

Add an AI-generated watermark to the bottom-right corner.

default false
web_search boolean optional

Allow the model to search for current information mentioned in the prompt.

default false
callback object optional

Sends the task object when the task reaches a terminal state; the polling endpoint wraps the same object in data.

url string required

HTTPS URL that receives terminal notifications.

example https://your-domain.com/hiapi/callback
when enum optional

Triggers when the task reaches a terminal state.

default final enum: final

Example requests

First-frame generation

Pass only the first frame and let the model create motion.

Request body
{
  "model": "seedance-2.5/image-to-video",
  "input": {
    "prompt": "Move from a static view into a slow orbit",
    "first_frame_url": "https://example.com/first-frame.jpg",
    "resolution": "720p",
    "duration": 6,
    "aspect_ratio": "adaptive"
  }
}
First/last-frame transition

Generate a coherent transition between two images.

Request body
{
  "model": "seedance-2.5/image-to-video",
  "input": {
    "prompt": "A natural time-lapse transition from day to night",
    "first_frame_url": "https://example.com/day.jpg",
    "last_frame_url": "https://example.com/night.jpg",
    "resolution": "480p",
    "duration": 8,
    "aspect_ratio": "adaptive",
    "generate_audio": false
  }
}

Getting the result

  1. Read data.taskId from the create-task response.
  2. Wait for the callback or query GET /v1/tasks/:id; polling puts the task under data.
  3. When status=success, read the video URL from output type=video; a callback reads output directly.

FAQ

How do callback and polling responses differ?

They contain the same task fields but use different HTTP envelopes: polling puts the task under data, while the callback body is the task object itself.

Can I pass only first_frame_url?

Yes. last_frame_url is optional; without it, the model creates the rest of the shot from the first frame.

When should I use the reference-to-video model?

Use seedance-2.5/reference-to-video when a video should guide motion or camera movement. This model supports first/last frames, reference images, and reference audio.

Next steps