One model, five workflows
Seedance 2.5 produces a single native clip per request. It can generate from text, animate one image, transition between two frames, combine multimodal references, or use an earlier GenAPI video as material for reference, editing, or extension.
Required arguments by workflow
Text to video
text-to-videoRequired: model, prompt, duration_seconds. Use a fixed aspect ratio. Reference arrays must be empty.
Image to video
image-to-videoRequired: model, prompt, duration_seconds, and 1–2 image_urls. Set aspect_ratio to adaptive. The second image, when present, is the final frame.
Reference to video
reference-to-videoRequired: model, prompt, duration_seconds, plus at least one image, audio, or completed source video. Up to 50 references combined.
First & last frame
image-to-videoRequired: exactly 2 image_urls in start/end order, plus prompt and duration. Framing is adaptive.
Edit or extend
reference-to-videoRequired: source_video_ids and reference_video_operation set to edit or extend. Use adaptive framing. Edit matches the first source length; extend uses duration_seconds.
All parameters
The endpoint is POST /v1/videos. Unknown fields are rejected. Array indexes are zero-based.
modelstringRequired—Must be exactly "seedance-2.5".
promptstringRequired—1–15,000 characters. Describe subject, action, environment, camera, and sound.
modeenumOptional"text-to-video"text-to-video, image-to-video, or reference-to-video.
duration_secondsintegerRequired—4–30. For edit, the output matches the first source video even though this field remains required.
resolutionenumOptional"720p"480p, 720p, or 1080p.
aspect_ratioenumOptional"16:9"21:9, 16:9, 9:16, 1:1, 4:3, 3:4, or adaptive. Image, edit, and extend require adaptive.
audiobooleanOptionaltrueGenerate synchronized dialogue, ambience, and sound effects.
image_urlsstring[]By mode[]HTTPS URLs. 1–2 for image-to-video; up to 30 for reference-to-video.
audio_urlsstring[]By mode[]Up to 10 public HTTPS MP3 or WAV URLs in reference mode.
source_video_idsuuid[]By mode[]Up to 10 completed videos owned by the same GenAPI account; 30 input seconds combined.
reference_video_operationenumOptional—reference, edit, or extend. Requires source_video_ids; edit and extend use adaptive framing.
subject_to_image_idsobjectOptional—Reference mode only. Maps an @handle to valid zero-based indexes in image_urls, for example {"product":[0]}.
subject_to_video_idsobjectOptional—Reference mode only. Maps an @handle to valid zero-based indexes in source_video_ids.
subject_to_audio_idsobjectOptional—Reference mode only. Maps an @handle to valid zero-based indexes in audio_urls.
Copy a complete request
Text to video
curl https://api.genapi.cloud/v1/videos \
-H "Authorization: Bearer $GENAPI_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: launch-film-001" \
-d '{
"model": "seedance-2.5",
"mode": "text-to-video",
"prompt": "A macro shot of dew rolling across a silver leaf, dawn light, slow push-in",
"duration_seconds": 8,
"resolution": "720p",
"aspect_ratio": "16:9",
"audio": true
}'Image to video example
curl https://api.genapi.cloud/v1/videos \
-H "Authorization: Bearer $GENAPI_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: animate-001" \
-d '{
"model": "seedance-2.5",
"mode": "image-to-video",
"prompt": "Slow dolly-in as the fabric moves in a light breeze",
"duration_seconds": 6,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_urls": ["https://cdn.example.com/start.jpg"],
"audio": false
}'Multimodal reference example
curl https://api.genapi.cloud/v1/videos \
-H "Authorization: Bearer $GENAPI_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: campaign-003" \
-d '{
"model": "seedance-2.5",
"mode": "reference-to-video",
"prompt": "@product rotates on the pedestal while @beat sets the edit rhythm",
"duration_seconds": 10,
"resolution": "1080p",
"aspect_ratio": "9:16",
"image_urls": ["https://cdn.example.com/product.png"],
"audio_urls": ["https://cdn.example.com/beat.mp3"],
"subject_to_image_ids": {"product": [0]},
"subject_to_audio_ids": {"beat": [0]},
"audio": true
}'How references work
References are ordered within their own arrays. Use subject maps to give them names, then address those names in the prompt with @handle.
Why source_video_ids instead of video URLs?
GenAPI accepts completed, account-owned generation IDs for video references. This lets us verify duration, enforce ownership, and bill input plus output seconds exactly without trusting client-supplied metadata.
Naming references
"image_urls": ["https://cdn.example.com/shoe.png"],
"audio_urls": ["https://cdn.example.com/beat.mp3"],
"subject_to_image_ids": {"product": [0]},
"subject_to_audio_ids": {"beat": [0]},
"prompt": "@product rotates slowly; cut movement to @beat"Response lifecycle
Accepted and credits reserved.
Generation is processing.
Authenticated output URL available.
Poll GET /v1/videos/:id with exponential backoff beginning at 2 seconds. A terminal failed response automatically refunds the reservation.
{
"id": "8e2f4a7e-...",
"object": "video.generation",
"model": "seedance-2.5",
"status": "completed",
"cost_usd": 1.824,
"output": {"url": "/v1/videos/8e2f4a7e-.../content"}
}Pricing
Prices already include the GenAPI service markup. No subscription is required.
* Source-video workflows bill input plus output seconds. An 8-second 720p output with 10 input seconds costs $2.484.
Limits & file requirements
- Prompt: 1–15,000 characters.
- Images: public HTTPS JPG, PNG, or WebP; below 30 MB; 300–6,000 px per axis; aspect ratio between 2:5 and 5:2.
- Audio: public HTTPS WAV or MP3; 2–30 seconds each; up to 30 seconds combined; below 15 MB.
- Source videos: completed GenAPI video IDs only; up to 10 items and 30 seconds combined.
- Output: 4–30 seconds at 24 fps. Generated results are nondeterministic and should be reviewed before publication.