Quickstart
Create a Seedance video task, track its status, and retrieve the finished video.
Use the AI Video Maker API to create videos from text, images, or reference media. Generation runs asynchronously. Use https://aivideomaker.dev as the base URL for every request.
- 01POST
/v1/videos/generations - 02READ
task_id - 03GET
/v1/tasks/{task_id} - 04DONE
completed + video_url
1. Create an API key
Create a key in Settings → API keys. You can view the full secret only once. Copy it immediately and store it in a secret manager on your server.
2. Start a generation
cURL
curl https://aivideomaker.dev/v1/videos/generations \
-H "Authorization: Bearer sk_sd_example" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-fast",
"prompt": "A paper boat crossing a rain-soaked neon street, cinematic camera movement",
"duration": 5,
"quality": "720p",
"aspect_ratio": "16:9",
"generate_audio": true
}'{
"task_id": "vid_01JZK7R7KCYQ3T9F33A7K0J6XB",
"status": "pending",
"created_at": "2026-07-22T08:30:00.000Z"
}JavaScript
const response = await fetch('https://aivideomaker.dev/v1/videos/generations', {
method: 'POST',
headers: {
Authorization: 'Bearer sk_sd_example',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'seedance-2.0-fast',
prompt: 'A paper boat crossing a rain-soaked neon street',
duration: 5,
quality: '720p',
}),
});
if (!response.ok) throw new Error(await response.text());
const task = await response.json();
console.log(task.task_id);Python
import requests
response = requests.post(
"https://aivideomaker.dev/v1/videos/generations",
headers={"Authorization": "Bearer sk_sd_example"},
json={
"model": "seedance-2.0-fast",
"prompt": "A paper boat crossing a rain-soaked neon street",
"duration": 5,
"quality": "720p",
},
timeout=30,
)
response.raise_for_status()
task_id = response.json()["task_id"]
print(task_id)3. Poll the task
While the status is pending or processing, poll every 5 to 10 seconds and increase the interval with exponential backoff.
curl https://aivideomaker.dev/v1/tasks/vid_01JZK7R7KCYQ3T9F33A7K0J6XB \
-H "Authorization: Bearer sk_sd_example"When status changes to completed, read the video URL from output.video_url. Stop polling if the task changes to failed.
{
"task_id": "vid_01JZK7R7KCYQ3T9F33A7K0J6XB",
"status": "completed",
"model": "seedance-2.0-fast",
"output": {
"video_url": "https://media.aivideomaker.dev/videos/vid_01JZK7R7KCYQ3T9F33A7K0J6XB.mp4",
"duration": 5,
"quality": "720p"
},
"credits_used": 25,
"error": null,
"created_at": "2026-07-22T08:30:00.000Z",
"completed_at": "2026-07-22T08:31:12.000Z"
}4. Check available credits
curl https://aivideomaker.dev/v1/credits \
-H "Authorization: Bearer sk_sd_example"available shows how many credits a new generation can use. reserved shows the credits held for active video tasks. AI Video Maker deducts reserved credits only when a task completes successfully.