UlazAI developer docs
Seedance API documentation: generate, status, 1080p and pricing
Seedance 1.5 Pro reference
Seedance API docs Seedance API documentation: generate, status, 1080p and pricing
If you searched for Seedance API documentation, start here: authenticate with a Bearer key, use
POST /seedance/generate/ to create jobs, and poll
GET /seedance/status/{generation_id}/ until the video is ready.
UlazAI currently supports Seedance 1.5 Pro output in 480p, 720p, and 1080p with 4, 8, or 12 second durations.
Core endpoints
POST /seedance/upload/
POST /seedance/generate/
GET /seedance/status/{generation_id}/
Current capabilities
Text-to-video and image-to-video
Up to 2 guide images
Optional native audio
Tip
This page answers the full developer flow in the first screen: the generate endpoint, status polling, 1080p support, Bearer auth and the pricing route.
Use/seedance/upload/ only when you need image-guided video generation. For text-only runs, call
/seedance/generate/ directly and skip the upload step.
Quick integration summary
| Auth | Bearer API key from /dashboard/ -> API Keys |
|---|---|
| Model ID | bytedance/seedance-1.5-pro |
| Durations | 4s, 8s, 12s |
| Resolutions | 480p, 720p, 1080p |
| Aspect ratios | 1:1, 21:9, 4:3, 3:4, 16:9, 9:16 |
| Inputs | Prompt only, or prompt plus up to 2 image URLs |
| Polling flow | Create a job, store generation_id, then poll status until completed |
Public endpoint summary
| Method | Endpoint | When to use it |
|---|---|---|
| POST | /seedance/upload/ |
Upload an image first if you want image-to-video guidance |
| POST | /seedance/generate/ |
Create a Seedance 1.5 Pro generation job |
| GET | /seedance/status/{generation_id}/ |
Check whether the job is still processing, completed, or failed |
Authentication
All API requests require a Bearer token:
Authorization: Bearer YOUR_API_KEY
Get an API key from your dashboard under API Keys. If you still need credits, go to packages first.
/seedance/upload/
Upload input images for image-to-video guidance
Upload a guide image before generation if you want Seedance to anchor composition, character framing, or scene setup.
The response gives you a permanent URL to pass into input_urls.
Request headers
Authorization: Bearer YOUR_API_KEY
Content-Type: multipart/form-data
Form data parameters
file * (file)
JPG, PNG, or WebP, up to 10MB.
Success response (200)
{
"success": true,
"url": "https://media.ulazai.com/seedance_images/u1_abc123.jpg",
"filename": "seedance_images/u1_abc123.jpg"
}
Example usage (cURL)
curl -X POST https://api.ulazai.com/seedance/upload/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@/path/to/image.jpg"
/seedance/generate/
Create a Seedance 1.5 Pro generation task
Send either the simplified payload below or the explicit model plus input format.
Use the simplified version if you only need the public Seedance route with prompt, optional guide images, and output settings.
Request body (simple)
{
"prompt": "A cinematic close-up of a chef flipping noodles in slow motion",
"input_urls": ["https://media.ulazai.com/seedance_images/u1_abc123.jpg"],
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": "4",
"fixed_lens": true,
"generate_audio": false,
"prompt_directory_optin": true
}
Request body (model/input style)
{
"model": "bytedance/seedance-1.5-pro",
"input": {
"prompt": "A cinematic close-up of a chef flipping noodles in slow motion",
"input_urls": ["https://media.ulazai.com/seedance_images/u1_abc123.jpg"],
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": "8",
"fixed_lens": true,
"generate_audio": true
}
}
Parameters
prompt * (string)
3 to 2500 characters describing the scene, motion, framing, and audio intent.
input_urls (array)
Optional. Up to 2 image URLs for image-to-video guidance.
aspect_ratio (string)
One of: 1:1, 21:9, 4:3, 3:4, 16:9, 9:16.
resolution (string)
One of: 480p, 720p, 1080p.
duration (string)
4, 8, or 12 seconds.
fixed_lens (boolean)
Enable for a more stable camera view.
generate_audio (boolean)
Enable synchronized audio generation. This increases credit usage.
prompt_directory_optin (boolean)
Optional. Share eligible prompts to the prompt directory and apply a discount when supported.
Success response (200)
{
"success": true,
"generation_id": "abc12345-1234-1234-1234-123456789012",
"task_id": "seedance_task_xyz789",
"credits_used": 40,
"directory_discount_applied": true,
"message": "Video generation started. This may take a few minutes."
}
/seedance/status/{generation_id}/
Poll task status
Poll this endpoint until the job leaves processing. On success you get a video URL back; on failure
you should inspect the error and retry with a corrected payload.
Processing response
{
"success": true,
"status": "processing",
"message": "Video is being generated..."
}
Success response (200)
{
"success": true,
"status": "completed",
"video_url": "https://media.ulazai.com/seedance_outputs/video.mp4"
}
Usage flow
- Upload one or two guide images with
/seedance/upload/only if you need image-to-video guidance. - Call
/seedance/generate/with your prompt, output settings, and optionalinput_urls. - Store the returned
generation_id. - Poll
/seedance/status/{generation_id}/untilstatusbecomescompleted. - Use the returned
video_urlto download, embed, or pass the final asset into your own workflow.
Error codes
400 Invalid request parameters
401 Authentication failed (missing or invalid API key)
402 Insufficient credits
429 Rate limit exceeded
500 Internal server error
Pricing and rate limits
Seedance billing on UlazAI runs on credits, so cost scales with resolution and duration rather than a fixed per-second rate. Use this as a planning guide; the live credit cost is shown in packages and at request time.
| Output | Typical use | Cost driver |
|---|---|---|
480p | Drafts and quick iterations | Lowest credits per second |
720p | Social-ready clips | Mid credits per second |
1080p | Final delivery | Highest credits per second; longer durations cost more |
Rate limits and 429 handling: if you submit many jobs in parallel you may receive 429 Rate limit exceeded. Treat the API as job-based: submit, store the generation_id, and poll /seedance/status/{generation_id}/ every 5-10 seconds rather than hammering generate. On a 429, back off exponentially (for example 2s, 4s, 8s) before retrying.
Seedance 1.5 Pro vs Seedance 2.0: this reference covers bytedance/seedance-1.5-pro, the model currently wired into Video Studio. ByteDance has since introduced Seedance 2.0 as the next generation; when it is enabled here it uses the same generate-and-poll flow and the same auth, so integration code does not change β only the model identifier does.