Creează o cheie, apelează API-ul cu autentificare Bearer și verifică statusul sarcinii până când rezultatul tău este gata. Funcționează cu Claude Code, Codex și orice client HTTP.
Generează o cheie API în dashboard-ul tău. Se afișează o singură dată, așa că păstreaz-o într-un loc sigur.
Trimite o cerere POST cu cheia ta Bearer și un antet Idempotency-Key.
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"
}'Interoghează endpoint-ul stării sarcinii până când starea este finalizată sau eșuată, apoi citește rezultatul.
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
doneFiecare cerere este autentificată cu o cheie API Bearer în antetul Authorization.
https://www.seedance2ai.io/api/v1Authorization: Bearer sk_live_your_api_key
Content-Type: application/json
Idempotency-Key: a-unique-id-per-requestText, imagine sau media în video.
/api/v1/video/seedance2modestringOpționalImplicit text-to-videoGeneration mode.
text-to-videoimage-to-videomedia-to-videoquality_tierstringOpționalImplicit standardQuality tier.
ministandardprochannelstringOpționalImplicit standardRendering channel.
standardrealwildpromptstringObligatoriuText prompt.
3–10000 charsaspect_ratiostringOpționalImplicit 16:9Aspect ratio.
1:121:94:33:416:99:16adaptivedurationstringOpționalImplicit 5Clip duration.
4–15 (seconds)resolutionstringOpționalImplicit 720pOutput resolution. 1080p-plus and 4k are available on pro only.
720p1080p1080p-plus4kimage_urlstring (URL)OpționalStart frame — required for image-to-video.
public https URL, ≤ 30 MBend_image_urlstring (URL)OpționalOptional end frame.
public https URL, ≤ 30 MBmedia_urlsstring[] (URL)OpționalRequired for media-to-video. Images are limited to 30 MB; video URLs must support duration probing.
≤ 12 public https image/video URLsgenerate_audiobooleanOpționalImplicit trueGenerate an audio track.
truefalsefixed_lensbooleanOpționalImplicit falseLock the camera lens.
truefalseseedintegerOpționalOptional 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
}Valorile credits_used afișate în aceste exemple sunt orientative. Consumul real este calculat la trimitere și returnat de 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)"
}
}| Cod | HTTP | Semnificație |
|---|---|---|
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.
Folosește Copy for AI pentru a exporta întregul API ca Markdown curat, lipește-l în Claude Code sau Codex și lasă agentul să conecteze integrarea. Sau direcționează agentul direct către endpoint-ul de text brut.
Instalează skill-ul Seedance în Claude Code, Codex, sau orice agent — scrie prompt-uri cinematice și le redă prin API pentru tine.
# 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