Nbility logoNbility Docs

Search documentation

Search guides and API reference content

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_1image_3, video, audio, etc.) work for both:

  • Official per-second billing models
  • seedance-2-cheap fixed-price per-task model

Only the model name and billing method differ.


Supported Models

ModelResolutionDescription
seedance-2720pDefault resolution
seedance-2-480p480pLower resolution, faster generation
seedance-2-720p720pStandard HD
seedance-2-1080p1080pFull HD
seedance-2-2k2KUltra HD
seedance-2-4k4KHighest quality
seedance-2-cheap720pPer-task billing (not multiplied by output seconds); same request fields; ratio does not support adaptive

Billing Rules

Official per-second models (seedance-2 and 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-480pseedance-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

ParameterTypeRequiredDescription
modelstringYesExample official model: seedance-2-720p; fixed-price route: seedance-2-cheap
promptstringYesText prompt for video generation
durationintegerNoDefault 5, range 4–15 seconds
ratiostringNoAspect ratio
image_1fileNoReference image 1
image_2fileNoReference image 2
image_3fileNoReference image 3
videofileNoReference video
audiofileNoReference 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

resolution parameter 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

StatusMeaning
IN_PROGRESSGeneration in progress (50%)
QUEUEDWaiting in queue (20%)
SUCCESSGeneration complete
FAILUREGeneration failed, full refund

Notes

  1. Poll every 10–30 seconds
  2. Tasks usually finish in 2–5 minutes
  3. All file fields (image_1~image_3, video, audio) are optional
  4. Pure text-only requests are supported
  5. Official per-second routes require ffprobe to read uploaded media duration
  6. If duration parsing fails, request is rejected with no charge (seedance-2-cheap does not have this validation)
  7. seedance-2-480p is faster and cheaper
  8. seedance-2-4k offers highest visual quality