Seedance Video API
Generate videos from text or images with Seedance 2.0 or 2.5, poll the asynchronous task, and download the result.
Seedance video generation uses an asynchronous Video API. Submit a task first, then query its status with the returned task ID. This API is separate from Chat Completions.
Before you start
Create a Modelflare API key and use https://modelflare.dev/v1 as the base URL. The public model names are seedance-2.0 and seedance-2.5.
The available duration and resolution combinations can differ by model. Check the Models & Pricing page before sending a request. Resolution values use 480p, 720p, 1080p, or 4k when available.
Text-to-video request
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"prompt": "A white cat runs through a neon-lit street in the rain, cinematic tracking shot",
"duration": 4,
"resolution": "720p"
}'
Image-to-video request
Add image with a publicly reachable HTTPS image URL. The remaining fields are the same as the text-to-video request.
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"prompt": "The subject slowly turns toward the camera while the camera moves forward",
"image": "https://example.com/reference.png",
"duration": 4,
"resolution": "720p"
}'
Submission response
A successful submission returns a public task ID. id and task_id identify the same task; save either value for later requests.
{
"id": "task_example_123",
"task_id": "task_example_123",
"object": "video",
"model": "seedance-2.5",
"status": "queued"
}
Check task status
Poll the task every few seconds. Waiting states may include queued, pending, processing, or in_progress. Stop when the status becomes completed or failed.
curl https://modelflare.dev/v1/videos/task_example_123 \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY"
Example completed response:
{
"id": "task_example_123",
"task_id": "task_example_123",
"object": "video",
"model": "seedance-2.5",
"status": "completed",
"progress": 100,
"metadata": {
"url": "https://example.com/generated-video.mp4"
}
}
Download the result
After completion, download the video through the content endpoint:
curl -L https://modelflare.dev/v1/videos/task_example_123/content \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-o seedance.mp4
Main request fields
- model: required; seedance-2.0 or seedance-2.5.
- prompt: required video description.
- duration: required integer in seconds; the current minimum is 4. seconds is also accepted for compatibility.
- resolution: required output resolution supported by the selected model.
- image: optional public HTTPS image URL; adding it switches the request to image-to-video.
HTTP 400 usually indicates invalid parameters, 401 indicates an invalid API key, 429 indicates a temporary limit, and 5xx errors may be retried with backoff.