Skip to content

Video Generation ​

Video generation is asynchronous: create a task to get a task ID, then poll for the result. All video models share the same POST /v1/videos endpoint — just change the model parameter.

Supported Models ​

Model FamilyNotesDocs
Seedance_supByteDance video model, 720p/1080p/4K, /v1/assets librarySeedance_sup · Asset Library
Seedance V3 (Native)Volcengine-native protocol /v3/video/tasks, /v3/assets librarySeedance V3 · Asset Library V3
KlingKuaishou video modelKling
ViduShengshu Vidu Q3 series (viduq3-pro / viduq3-turbo), 1–16 s, audio-video co-generation by defaultVidu
Grok ImaginexAI grok-imagine-video series, 1–15 s (default 8 s), native audio and 1080p on 1.5Grok Imagine

Endpoint Overview ​

OperationMethod & PathApplies to
Create video task (unified)POST $URL/v1/videosSeedance_sup / Kling
Query task statusGET $URL/v1/videos/{task_id}Seedance_sup / Kling
Create task (native)POST $URL/v3/video/tasksSeedance V3 (Native)
Query/Cancel task (native)GET / DELETE $URL/v3/video/tasks/{task_id}Seedance V3 (Native)
Asset library (Seedance_sup)POST/GET $URL/v1/assets*Seedance_sup
Asset library (Native V3)POST/GET $URL/v3/assets*Seedance V3 (Native)

Two interface styles

  • Unified /v1/videos: shared by all models, OpenAI Video style responses (id / status / video_url) — described on this page;
  • Native passthrough: native Seedance V3 uses the Volcengine-native protocol /v3/video/tasks and the asset library /v3/assets* — see Asset Library V3.

1. Create Task ​

bash
curl $URL/v1/videos \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0",
    "prompt": "A cat wearing sunglasses walking on a neon street",
    "seconds": "5",
    "size": "720p"
  }'

Response:

json
{ "id": "task_xxxxxxxx", "model": "seedance-2-0", "status": "in_progress", "created_at": 1785000000 }

2. Query Task ​

Poll with the id from step 1 (every 5-10 seconds):

bash
curl $URL/v1/videos/task_xxxxxxxx \
  -H "Authorization: Bearer $YOUR_API_KEY"

When finished:

json
{ "id": "task_xxxxxxxx", "model": "seedance-2-0", "status": "completed", "video_url": "https://..." }

Task Status ​

StatusMeaningAction
queuedQueuedKeep polling
in_progressGeneratingKeep polling
completedSuccessGet the video URL from the response; download it soon
failedFailedCheck error.message

Idempotency

If you send a custom client_request_id (idempotency key), use a fresh unique value for each new task (e.g. UUID). Reusing an old value hits the upstream idempotency cache and returns the historical result.

Timeout ​

  • Tasks stuck over 20 minutes are auto-failed and won't be retried indefinitely; poll to get the final status.

New Models ​

We keep onboarding new video models. Each new model gets its own doc page; the calling convention stays the same — only model and a few parameters differ.

© 2026 Euno AI. All rights reserved.