Seedance 2.0
Create asynchronous Seedance 2.0 video jobs through Volcengine Ark, query their state, wait for terminal results, and download completed videos. Use the bundled shell script instead of writing ad hoc requests.
Invocation
Resolve {baseDir} to the directory containing this SKILL.md, then run:
bash {baseDir}/scripts/seedance.sh <create|status|wait> [options]
Require Bash, curl, Python 3, and ARK_API_KEY in the environment. Never print the key or place it directly in a command line. The script accepts only an HTTPS ARK_API_BASE_URL override; otherwise it uses https://ark.cn-beijing.volces.com/api/v3.
Workflow
- Confirm the prompt and generation mode before creating a billable job.
- Confirm ambiguous model, duration, media, or output choices instead of submitting a trial job.
- Map the request to one mode:
text-to-video: prompt only.
image-to-video: prompt plus exactly 1 or 2 public image URLs. The first image is sent as first_frame; the second is sent as last_frame.
reference-to-video: prompt plus at least one public image or video URL. Audio cannot be the only reference.
- Use only public
http:// or https:// media URLs. This API does not upload local files; ask the user for hosted URLs if only local files are available.
- Run
create --wait for the normal generation flow. Polling is fixed at one status check every 10 seconds; add --download-dir when the user wants local files.
- For an existing task, use
status for a single read or wait for fixed 10-second polling.
- Return the task ID, terminal status, token usage, and downloaded path or
content.video_url. Do not fabricate completion when the task remains queued or running.
Commands
# Text to video; submit and return the accepted task JSON
bash {baseDir}/scripts/seedance.sh create \
--prompt "A cat surfing on a neon wave, cinematic lighting" \
--generation-type text-to-video \
--duration 5 \
--aspect-ratio 16:9 \
--resolution 720p
# Image to video; wait for completion and download the result
bash {baseDir}/scripts/seedance.sh create \
--prompt "The subject turns toward camera with soft studio motion" \
--generation-type image-to-video \
--image-url "https://example.com/first-frame.jpg" \
--wait \
--download-dir ./output
# Multimodal reference video with mixed media
bash {baseDir}/scripts/seedance.sh create \
--prompt "Use the product and match the reference camera movement" \
--generation-type reference-to-video \
--image-url "https://example.com/product.jpg" \
--video-url "https://example.com/camera-motion.mp4" \
--duration 8 \
--resolution 720p
# Query or wait for an existing task
bash {baseDir}/scripts/seedance.sh status --task-id TASK_ID
bash {baseDir}/scripts/seedance.sh wait --task-id TASK_ID --download-dir ./output
Run bash {baseDir}/scripts/seedance.sh --help for all flags.
Guardrails
- Treat every
create call as billable. Never auto-resubmit after a timeout, transport error, or unexpected response.
- Keep the model to
seedance-2-0, seedance-2-0-fast, seedance-2-0-mini, or the full official Ark model IDs listed in the API reference.
- Keep duration within 4-15 seconds, seed at
-1 or 0-4294967295, and use only documented aspect ratios and resolutions.
- For
reference-to-video, allow at most 9 images, 3 videos, 3 audio files, and 12 total assets. Video references and audio references each have a documented combined duration limit of 15 seconds; the CLI cannot inspect remote durations, so confirm this from the user when necessary.
- Do not pass
callback_url; this skill intentionally uses polling only.
- Poll exactly once every 10 seconds. Do not expose a configurable polling interval.
- Download completed videos promptly; Ark result URLs expire after 24 hours.
- On
429, respect Retry-After. On failed jobs, report error.code and error.message; do not retry without user approval.
- Preserve API response JSON. Summarize it for the user unless raw JSON was requested.
API Reference
Read references/api.md when handling errors or checking exact fields and limits. The source contract is the official Volcengine Ark video generation documentation:
1---2name: seedance23description: Create and retrieve Seedance 2.0 AI video jobs through the official Volcengine Ark API with fixed 10-second polling, including text-to-video, image-to-video, and multimodal reference video generation with image, video, or audio URLs. Use when the user asks to generate a Seedance 2.0 video, check or wait for a Seedance task, download its result, or integrate the Ark asynchronous video API without webhooks.4---56# Seedance 2.078Create asynchronous Seedance 2.0 video jobs through Volcengine Ark, query their state, wait for terminal results, and download completed videos. Use the bundled shell script instead of writing ad hoc requests.910## Invocation1112Resolve `{baseDir}` to the directory containing this `SKILL.md`, then run:1314```bash15bash {baseDir}/scripts/seedance.sh <create|status|wait> [options]16```1718Require Bash, curl, Python 3, and `ARK_API_KEY` in the environment. Never print the key or place it directly in a command line. The script accepts only an HTTPS `ARK_API_BASE_URL` override; otherwise it uses `https://ark.cn-beijing.volces.com/api/v3`.1920## Workflow21221. Confirm the prompt and generation mode before creating a billable job.232. Confirm ambiguous model, duration, media, or output choices instead of submitting a trial job.243. Map the request to one mode:25 - `text-to-video`: prompt only.26 - `image-to-video`: prompt plus exactly 1 or 2 public image URLs. The first image is sent as `first_frame`; the second is sent as `last_frame`.27 - `reference-to-video`: prompt plus at least one public image or video URL. Audio cannot be the only reference.284. Use only public `http://` or `https://` media URLs. This API does not upload local files; ask the user for hosted URLs if only local files are available.295. Run `create --wait` for the normal generation flow. Polling is fixed at one status check every 10 seconds; add `--download-dir` when the user wants local files.306. For an existing task, use `status` for a single read or `wait` for fixed 10-second polling.317. Return the task ID, terminal status, token usage, and downloaded path or `content.video_url`. Do not fabricate completion when the task remains `queued` or `running`.3233## Commands3435```bash36# Text to video; submit and return the accepted task JSON37bash {baseDir}/scripts/seedance.sh create \38 --prompt "A cat surfing on a neon wave, cinematic lighting" \39 --generation-type text-to-video \40 --duration 5 \41 --aspect-ratio 16:9 \42 --resolution 720p4344# Image to video; wait for completion and download the result45bash {baseDir}/scripts/seedance.sh create \46 --prompt "The subject turns toward camera with soft studio motion" \47 --generation-type image-to-video \48 --image-url "https://example.com/first-frame.jpg" \49 --wait \50 --download-dir ./output5152# Multimodal reference video with mixed media53bash {baseDir}/scripts/seedance.sh create \54 --prompt "Use the product and match the reference camera movement" \55 --generation-type reference-to-video \56 --image-url "https://example.com/product.jpg" \57 --video-url "https://example.com/camera-motion.mp4" \58 --duration 8 \59 --resolution 720p6061# Query or wait for an existing task62bash {baseDir}/scripts/seedance.sh status --task-id TASK_ID63bash {baseDir}/scripts/seedance.sh wait --task-id TASK_ID --download-dir ./output64```6566Run `bash {baseDir}/scripts/seedance.sh --help` for all flags.6768## Guardrails6970- Treat every `create` call as billable. Never auto-resubmit after a timeout, transport error, or unexpected response.71- Keep the model to `seedance-2-0`, `seedance-2-0-fast`, `seedance-2-0-mini`, or the full official Ark model IDs listed in the API reference.72- Keep duration within 4-15 seconds, seed at `-1` or `0-4294967295`, and use only documented aspect ratios and resolutions.73- For `reference-to-video`, allow at most 9 images, 3 videos, 3 audio files, and 12 total assets. Video references and audio references each have a documented combined duration limit of 15 seconds; the CLI cannot inspect remote durations, so confirm this from the user when necessary.74- Do not pass `callback_url`; this skill intentionally uses polling only.75- Poll exactly once every 10 seconds. Do not expose a configurable polling interval.76- Download completed videos promptly; Ark result URLs expire after 24 hours.77- On `429`, respect `Retry-After`. On failed jobs, report `error.code` and `error.message`; do not retry without user approval.78- Preserve API response JSON. Summarize it for the user unless raw JSON was requested.7980## API Reference8182Read [references/api.md](references/api.md) when handling errors or checking exact fields and limits. The source contract is the official Volcengine Ark video generation documentation:8384- https://www.volcengine.com/docs/82379/152075785- https://www.volcengine.com/docs/82379/152130986- https://www.volcengine.com/docs/82379/2291680