What is Seedance 2.0? AI video generation API supporting text-to-video and first & last frame image-to-video. 4-15 second duration, pay-as-you-go pricing.
Try It Instantly
Use the demo API key to explore the API without signing up. This key can only query existing sample tasks — it cannot create new videos.
export SEEDANCE_API_KEY = "zimg_demo_readonly_d2cb4bea56fcc21a9eb106e0"
Sample task IDs you can query:
Task ID Status Description demo_task_t2v_successsuccess Completed text-to-video demo_task_i2v_successsuccess Completed image-to-video demo_task_fail_text_moderationfail Prompt flagged by content moderation demo_task_fail_face_detectedfail Face detected in uploaded image demo_task_fail_server_errorfail Server error (safe to retry)
Try it now:
curl -s "https://kinovi.ai/api/v1/jobs/recordInfo?taskId=demo_task_t2v_success" \
-H "Authorization: Bearer zimg_demo_readonly_d2cb4bea56fcc21a9eb106e0"
The demo key has 0 credits and cannot create tasks. To generate videos, sign up and get your own API key.
Before You Start
To generate videos, you’ll need:
export SEEDANCE_API_KEY = "your_api_key_here"
Generate Your First Video
Copy and run — this creates a task, polls until done, and handles errors:
# 1. Create task
TASK_ID = $( curl -s -X POST "https://kinovi.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $SEEDANCE_API_KEY " \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-20",
"inputs": {
"prompt": "A serene Japanese garden with cherry blossoms swaying in the wind",
"resolution": "1280x720",
"duration": "5s"
}
}' | python3 -c "import sys,json; print(json.load(sys.stdin)['taskId'])" )
echo "Task created: $TASK_ID "
# 2. Poll until complete
while true ; do
RESULT = $( curl -s "https://kinovi.ai/api/v1/jobs/recordInfo?taskId= $TASK_ID " \
-H "Authorization: Bearer $SEEDANCE_API_KEY " )
STATUS = $( echo " $RESULT " | python3 -c "import sys,json; print(json.load(sys.stdin)['status'])" )
if [ " $STATUS " = "success" ]; then
echo " $RESULT " | python3 -c "import sys,json; print('Video URL:', json.load(sys.stdin)['output'][0]['url'])"
break
elif [ " $STATUS " = "fail" ]; then
echo " $RESULT " | python3 -c "import sys,json; print('Failed:', json.load(sys.stdin)['error'])"
break
fi
echo "Status: $STATUS — waiting..."
sleep 5
done
Create task returns a task ID:
{ "taskId" : "task_clxxxxxx" }
A 200 response means the task was created , not completed. Poll the status endpoint to get the result.
Poll result — success:
{
"taskId" : "task_clxxxxxx" ,
"model" : "seedance-20" ,
"status" : "success" ,
"creditsUsed" : 200 ,
"output" : [{ "url" : "https://..../video.mp4" , "width" : 1280 , "height" : 720 }],
"error" : null ,
"createTime" : 1735599634000 ,
"completeTime" : 1735599754000
}
Poll result — failure:
{
"taskId" : "task_clxxxxxx" ,
"model" : "seedance-20" ,
"status" : "fail" ,
"creditsUsed" : 0 ,
"output" : null ,
"error" : "Your input text violates platform rules. Please modify and try again." ,
"createTime" : 1735599634000 ,
"completeTime" : null
}
Common task errors:
Error Meaning Your input text violates platform rules...Prompt flagged — revise your prompt Your uploaded image violates platform rules...Image flagged — use a different image Face detected in uploaded media...Human face in image — remove faces The generated video did not pass review...Output flagged — adjust prompt and retry Video generation failed. Please try again.Server error — safe to retry
See Task Error Messages for the full reference.
FAQ
How long does generation take?
Typically 1-5 minutes depending on duration and server load.
What if I get ‘Insufficient credits’?
Add credits in your Account . A 5-second video costs 200 credits ($1.00).
Next Steps
Text to Video Full text-to-video API documentation
Image to Video First & last frame video generation
Error Handling Error codes and retry logic