建立金鑰,透過 Bearer 驗證呼叫 API,並持續輪詢任務狀態,直到取得結果。支援 Claude Code、Codex 及任何 HTTP 客戶端。
使用您的 Bearer 金鑰與 Idempotency-Key 標頭發送 POST 請求。
curl -X POST https://www.seedance2ai.io/api/v1/video/seedance2 \
-H "Authorization: Bearer $SEEDANCE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: demo-video-001" \
-d '{
"mode": "text-to-video",
"quality_tier": "standard",
"prompt": "A cinematic shot of a glass train crossing a snowy mountain bridge",
"aspect_ratio": "16:9",
"duration": "5",
"resolution": "720p"
}'輪詢任務狀態端點,直到狀態為完成或失敗,然後讀取輸出結果。
while true; do
TASK=$(curl -s https://www.seedance2ai.io/api/v1/tasks/sd2_xxxxx \
-H "Authorization: Bearer $SEEDANCE_API_KEY")
STATUS=$(echo "$TASK" | jq -r '.status')
if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then
echo "$TASK" | jq
break
fi
sleep 10
done每個請求皆透過 Authorization 標頭中的 Bearer API 金鑰進行認證。
https://www.seedance2ai.io/api/v1Authorization: Bearer sk_live_your_api_key
Content-Type: application/json
Idempotency-Key: a-unique-id-per-request文字、圖片或媒體轉換為影片。
/api/v1/video/seedance2modestring選填預設 text-to-videoGeneration mode.
text-to-videoimage-to-videomedia-to-videoquality_tierstring選填預設 standardQuality tier.
ministandardprochannelstring選填預設 standardRendering channel.
standardrealwildpromptstring必填Text prompt.
3–10000 charsaspect_ratiostring選填預設 16:9Aspect ratio.
1:121:94:33:416:99:16adaptivedurationstring選填預設 5Clip duration.
4–15 (seconds)resolutionstring選填預設 720pOutput resolution. 1080p-plus and 4k are available on pro only.
720p1080p1080p-plus4kimage_urlstring (URL)選填Start frame — required for image-to-video.
public https URL, ≤ 30 MBend_image_urlstring (URL)選填Optional end frame.
public https URL, ≤ 30 MBmedia_urlsstring[] (URL)選填Required for media-to-video. Images are limited to 30 MB; video URLs must support duration probing.
≤ 12 public https image/video URLsgenerate_audioboolean選填預設 trueGenerate an audio track.
truefalsefixed_lensboolean選填預設 falseLock the camera lens.
truefalseseedinteger選填Optional deterministic seed.
-1 – 4294967295Seedance prompts work best as concrete director instructions. Describe the subject, action, scene, camera motion, visual style, and constraints, then map every reference asset to the right API parameter.
curl -X POST https://www.seedance2ai.io/api/v1/video/seedance2 \
-H "Authorization: Bearer $SEEDANCE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: demo-video-001" \
-d '{
"mode": "text-to-video",
"quality_tier": "standard",
"prompt": "A cinematic shot of a glass train crossing a snowy mountain bridge",
"aspect_ratio": "16:9",
"duration": "5",
"resolution": "720p"
}'{
"id": "sd2_xxxxx",
"status": "processing",
"model": "seedance2",
"quality_tier": "standard",
"channel": "standard",
"credits_used": 30
}示例中的 credits_used 數值僅供說明。實際消耗會在提交時結算,並由 API 回傳。
/api/v1/tasks/{id}processingcompletedfailedPoll every 10 seconds or so and stop at completed or failed. Status reads have their own rate limit, so polling never uses up your submit budget.
curl https://www.seedance2ai.io/api/v1/tasks/sd2_xxxxx \
-H "Authorization: Bearer $SEEDANCE_API_KEY"{
"id": "sd2_xxxxx",
"type": "video",
"status": "completed",
"model": "seedance2",
"quality_tier": "standard",
"channel": "standard",
"resolution": "720p",
"credits_used": 30,
"credits_refunded": 0,
"output": {
"video_url": "https://...",
"last_frame_url": "https://...",
"seed": 123
},
"result_urls": ["https://..."],
"error": null,
"created_at": "2026-06-03T10:00:00.000Z",
"updated_at": "2026-06-03T10:03:12.000Z"
}while true; do
TASK=$(curl -s https://www.seedance2ai.io/api/v1/tasks/sd2_xxxxx \
-H "Authorization: Bearer $SEEDANCE_API_KEY")
STATUS=$(echo "$TASK" | jq -r '.status')
if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then
echo "$TASK" | jq
break
fi
sleep 10
doneRead endpoints for building a task history, showing remaining credits, or discovering models at runtime. They share the read rate limit.
/api/v1/tasksReturns the tasks this account created through the API in the last 30 days, newest first. Each item has the same shape as a single task. Use limit (1 to 50, default 20) and pass next_cursor as before to fetch the next page.
curl "https://www.seedance2ai.io/api/v1/tasks?limit=20" \
-H "Authorization: Bearer $SEEDANCE_API_KEY"{
"data": [
{
"id": "sd2_xxxxx",
"type": "video",
"status": "completed",
"model": "seedance2",
"credits_used": 30,
"result_urls": ["https://..."]
}
],
"has_more": false,
"next_cursor": null
}/api/v1/balanceReturns the credits the key owner can spend through the API. subscription_credits is the part that came from a plan and expires at subscription_credits_expire_at.
curl "https://www.seedance2ai.io/api/v1/balance" \
-H "Authorization: Bearer $SEEDANCE_API_KEY"{
"credits": 1200,
"subscription_credits": 1000,
"subscription_credits_expire_at": "2026-07-01T00:00:00.000Z"
}/api/v1/modelsReturns every model the API serves with its endpoint, accepted modes and task ID prefix. Useful for building a model picker without hard-coding this page.
curl "https://www.seedance2ai.io/api/v1/models" \
-H "Authorization: Bearer $SEEDANCE_API_KEY"{
"data": [
{
"id": "seedance2",
"name": "Seedance 2.0",
"type": "video",
"method": "POST",
"endpoint": "/api/v1/video/seedance2",
"modes": ["text-to-video", "image-to-video", "media-to-video"],
"task_id_prefix": "sd2_"
}
]
}Every error has the same shape. Branch on code, and show message to a person. A task that was accepted can still fail later, so also check status when you poll.
{
"error": {
"code": "invalid_request",
"message": "Invalid request body: prompt: String must contain at least 3 character(s)"
}
}| 代碼 | HTTP | 含義 |
|---|---|---|
unauthorized | 401 | Missing, invalid, or revoked API key. |
invalid_request | 400 | Bad input or unsupported field. The message names the first field that failed; details lists them all. |
purchase_required | 403 | Seedance 2.5 requires a successful credits or plan purchase; free promotional credits alone do not unlock it. The GPT Image 2.5 economy channel has the same requirement. |
insufficient_credits | 402 | Not enough credits. Seedance 2.5 always returns HTTP 402 with insufficient_credits; when an authoritative quote is available, it may also include required_credits, available_credits, pricing_version, and promotion_applied. |
rate_limited | 429 | Too many requests for this account. See Rate limits below. Seedance requests that validate reference media are limited to 3 per 60 seconds per account and source IP, with a project-wide safety cap. Retry after the Retry-After response header (in seconds). |
idempotency_conflict | 409 | Same Idempotency-Key reused with a different body, or still running. |
service_busy | 503 | Temporary upstream or credit-concurrency issue. Retry. |
not_found | 404 | Task does not exist or does not belong to this key owner. |
internal_error | 500 | Unexpected server-side failure. |
A request over the limit returns HTTP 429 with a Retry-After header in seconds, plus X-RateLimit-Limit and X-RateLimit-Reset. Wait that long, then retry with the same Idempotency-Key.
使用 Copy for AI 將完整 API 匯出為乾淨的 Markdown,貼到 Claude Code 或 Codex,讓代理程式自動完成整合串接。或直接將代理程式指向純文字端點。
在 Claude Code、Codex 或任何代理程式中安裝 Seedance 技能 — 它會自動撰寫電影級提示詞,並透過 API 為你生成影片。
# Download the one-file skill from Seedance 2.0 AI
mkdir -p ~/.claude/skills/seedance
curl --fail --location -H "Authorization: Bearer $SEEDANCE_API_KEY" https://www.seedance2ai.io/downloads/seedance-skill.md -o ~/.claude/skills/seedance/SKILL.md.tmp &&
mv ~/.claude/skills/seedance/SKILL.md.tmp ~/.claude/skills/seedance/SKILL.md