ByteDance
Seedance 2.5
seedance-2.5/image-to-video
ByteDance Seed's joint audio-video generation model, supporting continuous clips up to 30 seconds and up to 4K, with precise visual control via multimodal references and timestamp-level editing
Try seedance-2.5/image-to-video
Input
Showcases
View all showcasesOutput
videoPricing
seedance-2.5/image-to-video per second
| Specifications | Unit Price |
|---|---|
| 720P | $0.204 |
| 1080P | $0.516 |
Overview
The Seedance 2.5 image-to-video pipeline is aimed at developers who need precise control over the visuals: it starts from a first-frame image, optionally constrains the ending with a last-frame image, and uses a prompt to describe motion, camera work, and scene, producing a coherent video of 4 to 30 seconds. While generating the visuals, the model also produces synchronized dialogue, sound effects, and ambient audio, and it supports 720p and 1080p output in both mp4 and mov containers. It is suited to teams that already have still-image assets and need to extend them into short videos — product showcases, previsualization of ad shots, and serialized content production.
Key Highlights
- Two-way shot constraint via first and last frames — supply a first frame and optionally specify a last frame, so both the start and end of the generated video land on existing assets, reducing repeated regeneration.
- Visuals and audio generated in one pass — dialogue, sound effects, and background audio are produced in sync by default, with no separate dubbing and alignment step.
- Prompts supported in eleven languages — motion, camera, scene, and audio instructions can be written in multiple languages, making collaboration across multilingual teams easier.
- Selectable resolution and container — 720p and 1080p, mp4 and mov are supported; mov makes it easy to move into professional post-production workflows.
Capabilities
First-frame-driven video generation: generates video starting from a first-frame image in formats such as jpeg, png, and webp; the aspect ratio follows the first frame automatically, making it well suited to extending finalized stills.
Last-frame endpoint control: a last-frame image can be added to constrain the video's ending frame; when aspect ratios differ, it is center-cropped to match the first frame, which helps with shots that need to converge on a fixed endpoint.
Synchronized audio generation: by default, dialogue, sound effects, and background audio synchronized with the visuals are generated; this can be turned off to obtain clean visual footage for post-processing.
Duration and quality parameters: duration is set as an integer from 4 to 30 seconds and billed by the requested duration; resolution is chosen between 720p and 1080p, and output is mp4 or mov.
Web-grounded information completion: web retrieval can be enabled so that time-sensitive information referenced in the prompt is taken into account during generation.
Use Cases
- E-commerce and product teams: product hero stills — generate a short showcase video from a product still as the first frame, with visuals and audio produced in sync and ready for product pages or ad placements.
- Advertising creative teams: storyboard key frames — expand key frames from a storyboard into clips with camera movement and sound effects, for pitch presentations and pre-shoot previsualization.
- Brand content operations: finalized character and scene images — extend finalized character or scene images into a series of short videos, keeping the look consistent and producing social content at scale.
- Post-production: first/last-frame shot completion — generate the in-between motion from given start and end frames, for bridging footage or filling in transition shots.
Limitations and Selection Advice
A single generated clip is capped at 30 seconds; longer content must be split into multiple segments generated separately. Physical plausibility of complex actions and the stability of multi-subject interactions remain known weaknesses; for shots with large motion ranges or many characters, validate with a small sample first. When both a first frame and a last frame are supplied, reference images or reference audio cannot be added; if multiple reference constraints are needed, switch to the reference-to-video pipeline. For lightweight, single-shot needs with low controllability requirements, a simpler text-to-video pipeline may be the better choice.
Frequently asked questions
View all FAQs →-
Does Seedance 2.5 image-to-video require both a first and last frame?
No. In endpoint-frame mode, first_frame_url alone extends the source into a complete shot; add last_frame_url when the ending state must be controlled. A last frame cannot be used by itself. You can instead use reference_image_urls or reference_audio_urls as a separate reference mode without endpoint frames.
-
Can first/last frames be mixed with multimodal references in one request?
The current HiAPI Playground treats them as separate input modes: use first/last frames, or use reference_image_urls and reference_audio_urls. Keep one mode to avoid conflicting guidance. Use seedance-2.5/reference-to-video when a reference video must guide motion or camera movement.
-
Which durations and resolutions does Seedance 2.5 image-to-video support?
The current request contract accepts integer durations from 4 to 30 seconds at 720p or 1080p. aspect_ratio is adaptive and follows the first frame. The four cases on this page cover 720p at four and five seconds; 30 seconds is a supported contract value with no page example yet.
-
How is Seedance 2.5 image-to-video priced?
Billing scales with output duration and resolution, with separate per-second tiers for 720p and 1080p. Check the live model price and task record for the final charge.
Create a generation task
https://api.hiapi.ai/v1/tasks Headers
AuthorizationstringRequiredAccount API key. Required on every request. Example: Bearer YOUR_HIAPI_API_KEY. Get your API key
Content-TypestringOptionalThe request body is always parsed as JSON; when sent, only application/json (optionally with charset) is accepted — any other value returns 415. Example: application/json.
Idempotency-KeystringOptionalIdempotency key, up to 255 bytes. Retries with the same key from the same account create the task only once; replays return the original taskId.
On network timeouts or client retries, the same key creates the task only once — no double charges (scope: the API key's account). Use a business-unique identifier as the key (e.g. "order-42"); replays return the original taskId, and keys expire 24 hours after the first request. See the Unified Async API overview for the full scenario matrix.
Body
modelstringRequiredCurrent fixed value: seedance-2.5/image-to-video
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for seedance-2.5/image-to-video and route default — see the parameter table below.
promptstringRequiredminLength 1maxLength 10000Provide generation instructions for motion, camera, scene, and audio, supporting multiple prompt languages.
durationintegerOptionalDefault: 5min 4max 30Output video duration in seconds; must be an integer from 4 to 30, default 5. HiAPI bills by the requested duration.
watermarkbooleanOptionalDefault: falseWhether to add an AI-generated watermark in the bottom-right corner of the frame, default false.
resolutionstringOptionalDefault: "720p"Output video resolution, supporting 720p and 1080p, default 720p.
720p1080pweb_searchbooleanOptionalDefault: falseWhether to allow the model to retrieve real-time information mentioned in the prompt from the internet, default false.
aspect_ratiostringOptionalDefault: "adaptive"Output frame aspect ratio; image-to-video uses adaptive so the video follows the first frame, default adaptive.
adaptiveoutput_formatstringOptionalDefault: "mp4"File format of the output video; mp4 is the default for better compatibility, mov is aimed at professional post-production, default mp4.
mp4movgenerate_audiobooleanOptionalDefault: trueWhether to generate synchronized dialogue, sound effects, and background audio, default true.
last_frame_urlstringOptionalOptional, specifies the last frame image; accepts an image URL, data URL, or asset ID. File constraints are the same as the first frame; if the aspect ratio differs from the first frame, it will be center-cropped to align with the first frame.
first_frame_urlstringOptionalFirst frame image; accepts an image URL, data URL, or asset ID. Supports multiple common image formats, size no more than 30 MB, 300–6000 pixels per side, aspect ratio 0.4–2.5. Required when last_frame_url is provided.
reference_audio_urlsarrayOptionalmaxItems 10Array of reference audio URLs, up to 10; supports wav, mp3, each no more than 15 MB, duration 2–30 seconds, total duration no more than 30 seconds.
Array [ string ]
reference_image_urlsarrayOptionalmaxItems 30Array of reference image URLs, up to 30; supports multiple common image formats, each no more than 30 MB, 300–6000 pixels per side, aspect ratio 0.4–2.5.
Array [ string ]
callbackobjectOptional
Terminal-state notification config. When omitted, no callback is delivered — poll the task yourself. See the callback note below.
Provide callback.url when creating a task and HiAPI POSTs to your service once the task reaches a terminal state — no polling needed. The callback payload mirrors the task detail structure; signature verification, delivery retries and idempotency are documented on the Unified Async API overview page.
urlstringRequiredRequired when callback is present. A POST is sent to this URL once the task reaches a terminal state; must be a valid http(s) URL.
whenstringOptionalDefault: "final"Only final is supported today — notified on both success and fail.
finalstoragestringOptionalDefault: "temp"Artifact storage tier: temp (default, retained about 7 days) or persistent (long-term, billed by size). Insufficient balance or exceeding the storage cap silently downgrades to temp; the effective tier is shown in the task detail response.
temppersistentRequest examples
# Submit an async task; returns a taskId immediately (no waiting for generation)
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5/image-to-video",
"input": {
"prompt": "…",
"duration": 5,
"watermark": false,
"resolution": "720p",
"web_search": false,
"aspect_ratio": "adaptive",
"output_format": "mp4",
"generate_audio": true
}
}' const res = await fetch("https://api.hiapi.ai/v1/tasks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HIAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "seedance-2.5/image-to-video",
input: {
"prompt": "…",
"duration": 5,
"watermark": false,
"resolution": "720p",
"web_search": false,
"aspect_ratio": "adaptive",
"output_format": "mp4",
"generate_audio": true
}
}),
});
const task = await res.json();
// { code: 200, message: "success", data: { taskId } } import os, requests
res = requests.post(
"https://api.hiapi.ai/v1/tasks",
headers={"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"},
json={
"model": "seedance-2.5/image-to-video",
"input": {
"prompt": "…",
"duration": 5,
"watermark": False,
"resolution": "720p",
"web_search": False,
"aspect_ratio": "adaptive",
"output_format": "mp4",
"generate_audio": True
}
},
)
print(res.json()) # { code, message, data: { taskId } } 200 OK
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR"
}
} 400 Bad Request
{
"code": 400,
"message": "invalid request",
"data": null,
"error_code": "INVALID_REQUEST"
} Get task detail
https://api.hiapi.ai/v1/tasks/:id Response fields
taskIdstringRequiredTask ID, always prefixed with tk-hiapi-.
modelstringRequiredResolved full model name. Tasks submitted with the route parameter return base@route (e.g. gpt-image-2/text-to-image@ext); otherwise identical to the name passed at creation.
routestringOptionalPresent only when the task was submitted with an explicit route parameter; echoes the submitted value.
statusstringRequiredTask status.
queued Queued, not started yet.
handling Being processed.
archiving Processing finished, artifacts being prepared.
success Terminal: completed, artifacts available (output returned).
fail Terminal: failed (error returned).
After submission, check status: success and fail are terminal, everything else is non-terminal. Poll every 1–3 seconds until terminal. On success, download artifacts from output[].url and transfer them before expireAt; pass storage: "persistent" at creation time when long-term retention is needed.
creatednumberRequiredTask creation time (Unix seconds).
completednumberRequiredUnix seconds when the task reached a terminal state; fixed to 0 while not terminal.
outputarrayOptional
Present only when status == success. Artifact list — always an array; a single task may return multiple types at once (e.g. video + first_frame).
Array [ object ]
Array items
urlstringRequiredArtifact URL, directly downloadable.
typestringRequiredCurrent possible values: video, image, audio, first_frame, last_frame, thumbnail; more may be added later.
expireAtnumberRequiredUnix seconds until which the artifact remains accessible; download or transfer before it expires.
errorobjectOptional
Present only when status == fail.
codestringRequiredBusiness error code.
messagestringRequiredError description.
Response examples
Success
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR",
"model": "happyhorse-1-0",
"status": "success",
"created": 1777282033,
"completed": 1777282099,
"output": [
{
"url": "https://cdn.hiapi.ai/tasks/.../video.mp4",
"type": "video",
"expireAt": 1777886899
}
]
}
} Processing (non-terminal)
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "archiving",
"created": 1777282033,
"completed": 0
}
} Failed
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "fail",
"created": 1777282033,
"completed": 1777282099,
"error": {
"code": "TASK_FAILED",
"message": "task failed"
}
}
} Articles
View all articles →Related Models
View all models →Same Type
-
HeyGen Avatar IV HeyGen $0.150 /second -
Kling 3.0 Kuaishou $0.100 /second -
Veo 3.1 Lite Google $0.060 /second -
Wan 3.0 Video Alibaba $0.040 /second -
Runway Gen 4.5 Runway $0.172 /second -
FLUX 3 Max Black Forest Labs $0.061 /second -
Grok Imagine 1.5 Lite xAI $0.029 /second -
Kandinsky 6.0 Pro $1.93 /video -
Seedance 2.0 ByteDance $0.017 /second -
Kling 4.0 Kuaishou $0.330 /second -
FLUX 3 Video Black Forest Labs $0.090 /second -
Creatify Boreal Creatify $0.015 /second

