POST /v1/video/generations — Multimodal Reference Input AI Video Generation
Overview
Seedance 2.0 is an AI video generation model that supports up to:
- 3 reference images
- 1 reference video
- 1 reference audio clip
(All optional)
It generates creative videos from text prompts combined with multimodal reference inputs, and supports multiple resolutions and aspect ratios.
Use the unified video generation endpoint and set model to one of the supported model names below.
The same request fields (image_1–image_3, video, audio, etc.) work for both:
- Official per-second billing models
seedance-2-cheapfixed-price per-task model
Only the model name and billing method differ.
Supported Models
| Model | Resolution | Description |
|---|---|---|
seedance-2 | 720p | Default resolution |
seedance-2-480p | 480p | Lower resolution, faster generation |
seedance-2-720p | 720p | Standard HD |
seedance-2-1080p | 1080p | Full HD |
seedance-2-2k | 2K | Ultra HD |
seedance-2-4k | 4K | Highest quality |
seedance-2-cheap | 720p | Per-task billing (not multiplied by output seconds); same request fields; ratio does not support adaptive |
Billing Rules
Official per-second models (
seedance-2and resolution suffix variants): If a reference video or audio is uploaded:
Billable Duration =
Reference Video Duration
+ Reference Audio Duration
+ duration parameter
Official Per-Second Models
(seedance-2, seedance-2-480p … seedance-2-4k)
- Billed per second
- Price is determined by model pricing configuration
- Without reference files:
Billable duration = duration
(Default: 5 seconds)
- With reference video and/or audio:
Billable duration =
video duration + audio duration + duration
- Full refund on failed tasks
- If gateway cannot read reference media duration using
ffprobe, the request is rejected and no charge occurs.
seedance-2-cheap (Per-Task Route)
- Billed per task
- Fixed price per generation
- Not multiplied by output duration
Failed tasks are refunded according to platform policy.
Uses the same POST / GET APIs and response structure.
Reference input fields remain:
image_1 ~ image_3
video
audio
Create Task
POST /v1/video/generations
Authorization: Bearer YOUR_API_KEY
Content-Type: multipart/form-data
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| model | string | Yes | Example official model: seedance-2-720p; fixed-price route: seedance-2-cheap |
| prompt | string | Yes | Text prompt for video generation |
| duration | integer | No | Default 5, range 4–15 seconds |
| ratio | string | No | Aspect ratio |
| image_1 | file | No | Reference image 1 |
| image_2 | file | No | Reference image 2 |
| image_3 | file | No | Reference image 3 |
| video | file | No | Reference video |
| audio | file | No | Reference audio |
Supported Aspect Ratios
Official models:
- adaptive
- 16:9
- 4:3
- 1:1
- 3:4
- 9:16
- 21:9
seedance-2-cheap
- Does not support
adaptive - Supports the other six ratios only
resolutionparameter is not supported
Resolution is determined by model suffix:
seedance-2-720p
seedance-2-1080p
seedance-2-4k
For seedance-2-cheap, resolution is determined by route configuration.
Example 1: Text-to-Video
curl https://api.nbility.dev/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-F 'model="seedance-2-720p"' \
-F 'prompt="Sunrise over mountain peaks with cinematic camera movement"' \
-F 'duration="5"' \
-F 'ratio="16:9"'
Example 2: Reference Images
curl https://api.nbility.dev/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-F 'model="seedance-2-1080p"' \
-F 'prompt="Blend character from Image 1 into the scene from Image 2 using lighting style from Image 3"' \
-F 'duration="8"' \
-F 'ratio="16:9"' \
-F 'image_1=@"/path/to/character.png"' \
-F 'image_2=@"/path/to/scene.jpg"' \
-F 'image_3=@"/path/to/lighting.jpg"'
Example 3: Reference Video + Audio
Billable duration:
reference video
+ reference audio
+ duration
Example:
10s video
+30s audio
+5s output
=45 billable seconds
curl https://api.nbility.dev/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-F 'model="seedance-2-720p"' \
-F 'prompt="Generate a new video using the camera motion from the reference video and voice tone from the reference audio"' \
-F 'duration="10"' \
-F 'ratio="16:9"' \
-F 'video=@"/path/to/reference.mp4"' \
-F 'audio=@"/path/to/music.mp3"'
Task Creation Response
{
"id":"task_1a2b3c4d5e6f",
"status":"IN_PROGRESS"
}
Query Task Status
GET /v1/video/generations/{task_id}
Response:
{
"code":"success",
"data":{
"task_id":"task_1a2b3c4d5e6f",
"status":"SUCCESS",
"progress":"100%",
"result_url":"https://cdn.example.com/output/result.mp4",
"data":{
"video_url":"https://cdn.example.com/output/result.mp4"
}
}
}
Status Values
| Status | Meaning |
|---|---|
IN_PROGRESS | Generation in progress (50%) |
QUEUED | Waiting in queue (20%) |
SUCCESS | Generation complete |
FAILURE | Generation failed, full refund |
Notes
- Poll every 10–30 seconds
- Tasks usually finish in 2–5 minutes
- All file fields (
image_1~image_3,video,audio) are optional - Pure text-only requests are supported
- Official per-second routes require
ffprobeto read uploaded media duration - If duration parsing fails, request is rejected with no charge (
seedance-2-cheapdoes not have this validation) seedance-2-480pis faster and cheaperseedance-2-4koffers highest visual quality