UlazAI developer docs

Seedance API documentation

Seedance 1.5 Pro reference

Seedance API documentation for Seedance 1.5 Pro

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

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.

POST /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"
POST /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."
}
GET /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

  1. Upload one or two guide images with /seedance/upload/ only if you need image-to-video guidance.
  2. Call /seedance/generate/ with your prompt, output settings, and optional input_urls.
  3. Store the returned generation_id.
  4. Poll /seedance/status/{generation_id}/ until status becomes completed.
  5. Use the returned video_url to 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

Where to go next