Video
A catalog of video models and one API workflow for creating, polling and downloading clips.
A catalog of video models and one API workflow for creating, polling and downloading clips.
Create video tasks through POST /v1/videos. The Seedance guide covers model settings, reference media, results and recovery on this same route.
| Family | Models | Page |
|---|---|---|
| Seedance | 2.0, 2.5, 2.0 Mini, 2.0 Fast | Models, parameters and examples |
The model catalog and capabilities can depend on the key and plan. Request the current catalog from your connection and use the canonical ID it returns before creating a task.
POST /v1/videos and save the returned id.GET /v1/videos/{id} until a terminal status.completed, download through GET /v1/videos/{id}/content with the API key, or use the signed content.video_url from the response without the API key.Task GET uses queued, in_progress, completed and failed. An unknown status requires stopping automation and preserving the ID. See all statuses and errors.
For Seedance, use the OpenAI Videos fields model, prompt, seconds and size, as in the generation examples.
For connections with reference support, extension fields use image_urls, video_urls, audio_urls arrays of HTTPS URLs. Image roles can use image_with_roles: [{"url":"RESULT_URL","role":"first_frame"}]; roles and limits follow Seedance references. Set aspect ratio with aspect_ratio. Prefer JSON and file URLs: multipart file uploads are unsupported.
{
"model": "seedance-2.5",
"prompt": "A paper boat glides across a quiet lake.",
"seconds": 5,
"resolution": "720p",
"generate_audio": false
}
Send this JSON to POST /v1/videos with Authorization: Bearer <API_KEY> and Content-Type: application/json. Example create response:
{
"id": "task_example",
"object": "video",
"status": "queued",
"progress": 0,
"created_at": 1790000000,
"model": "seedance-2.5"
}
GET /v1/videos/{id} with the same API key returns the current status. Example after completion:
{
"id": "task_example",
"object": "video",
"status": "completed",
"progress": 100,
"created_at": 1790000000,
"completed_at": 1790000120,
"model": "seedance-2.5",
"content": {
"video_url": "RESULT_URL"
}
}
content is optional; use the authenticated content route when it is absent. completed_at appears after success. Stop polling and preserve the ID on failed, even when error is absent.
GET /v1/videos/{id}/content accepts API Bearer and may return HTTP 307 with a Location URL. Read it without following the redirect automatically, then download the exact HTTPS URL separately without the API key. Signed URLs in content follow the same download rules.