Getting started
Base URL: https://seedancecheap.com. Send your key in Authorization: Bearer sdc_.... Keep it on your server. A key is shown once when created.
All requests and responses use JSON except file downloads. There is no cross-origin browser access for API keys.
Create a video
POST /v1/videos/generations reserves the current tier price from your prepaid balance and creates a background job.
curl https://seedancecheap.com/v1/videos/generations \
-H "Authorization: Bearer sdc_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A glass city at dawn, slow camera push...",
"ratio": "16:9",
"size": "1280x720",
"request_id": "scene_001_v1"
}'request_id is required and unique per account. Save the request ID before submitting. If your connection drops, retry with the same ID and unchanged input; this returns the original job without a second charge. A changed prompt, ratio, or size needs a new ID.
| Ratio | Requested size |
|---|---|
| 16:9 | 1280×720 or 1920×1080 |
| 9:16 | 720×1280 or 1080×1920 |
| 1:1 | 1024×1024 |
| 4:3 | 1440×1080 |
| 3:4 | 1080×1440 |
Use the exact size value with an x, such as 1920x1080. Omit it for the first size listed for that ratio. All seven sizes request Seedance 2.5 at 30 seconds and share the same tier price. The provider may return a different encoded size; report a material mismatch.
Check status
GET /v1/videos/{id} returns the job status. If the create response was lost, use GET /v1/videos/by-request/{request_id} to recover its ID. GET /v1/videos lists your most recent 50 jobs. Jobs keep running when your device disconnects.
{
"id": "vid_...",
"status": "ready",
"price_cents": 230,
"duration": 30,
"expires_at": 1790676000,
"download_url": "/v1/videos/vid_.../content"
}Statuses include queued, processing, copying, ready, failed, uncertain, and expired. If a provider receipt is unavailable, the request stays uncertain and is refunded after the delivery deadline. We never silently submit a second provider task. Failed requests restore the reserved charge automatically.
Download the file
GET /v1/videos/{id}/content checks ownership and streams your MP4 from private storage. The link is usable only while signed in or with your API key, and only until 24 hours after delivery. Range requests are supported. Save the file before expires_at; the private copy is removed after 24 hours.
curl -L "https://seedancecheap.com/v1/videos/vid_YOUR_ID/content" \
-H "Authorization: Bearer sdc_YOUR_KEY" \
-o video.mp4For a visibly unusable result, POST /v1/videos/{id}/report with JSON such as {"reason":"Major visual artifact makes this unusable"}. The job returns report_status as open, credited, or resolved. A credited report restores the original generation charge once.
Errors & limits
402 means insufficient balance. 429 means your active generation slots are full. 409 means a request ID was reused with different input. Confirmed failed generations restore the original charge to your balance automatically.
Parallel jobs: 1 initially, 2 after 50 paid, non-refunded generation requests, 3 after 100. The lowest price is $1.50 after 100 successful videos. Account-level capacity can also be affected by upstream availability.