Skip to main content
POST
/
v1
/
videos
curl --request POST \
  --url https://api.getinfinityblue.com/v1/videos \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "model": "doubao-seedance-2-0-260128",
  "prompt": "A white kitten slowly walking on a clean desk, soft daylight, cinematic lens, stable shot",
  "seconds": "5",
  "resolution": "720p",
  "ratio": "16:9",
  "generate_audio": false,
  "watermark": false,
  "camera_fixed": false
}
'
{
  "id": "video_abc123",
  "object": "video",
  "model": "doubao-seedance-2-0-fast-260128",
  "status": "queued",
  "progress": 0,
  "created_at": 1764347090922,
  "seconds": "5"
}

Available models

Model IDNotes
doubao-seedance-2-0-260128Seedance 2.0 standard — higher quality
doubao-seedance-2-0-fast-260128Seedance 2.0 Fast — faster, lower cost

Call flow

  1. POST /v1/videos — submit task, get id (the task ID)
  2. GET /v1/videos/{task_id} — poll until status=completed
  3. Read the video URL from metadata.url, or download via GET /v1/videos/{task_id}/content

Parameter precedence

Use top-level parameters (seconds, resolution, ratio, etc.). Do not pass the same parameter in both the top level and metadata — if you do, behaviour is server-determined.

Multimodal inputs

For first/last frames, reference videos, or reference audio, use metadata.content to declare each asset’s type (image_url / video_url / audio_url) and role explicitly. Including a video_url asset may trigger video-input pricing.

Resolution notes

  • 480p: lowest cost, fastest — ideal for drafts and previews
  • 720p: suitable for regular production
  • 1080p: availability depends on upstream account permissions — test in your environment before using in production

Authorizations

Authorization
string
header
required

Bearer token authentication, format: Authorization: Bearer sk-xxxxxx. Get your API key in the console.

Body

application/json

Seedance 2.0 video generation request. model and prompt are required. Place common parameters at the top level; metadata is only for backwards-compatible legacy fields and complex multimodal asset inputs.

model
enum<string>
required

Model ID. The standard version produces higher quality; the Fast version is faster and cheaper.

Available options:
doubao-seedance-2-0-260128,
doubao-seedance-2-0-fast-260128
Example:

"doubao-seedance-2-0-260128"

prompt
string
required

Text prompt. Include subject, action, scene, camera style, lighting, artistic style, and any constraints. Reference multimodal assets in the prompt as "video 1", "image 1", "audio 1", etc.

Example:

"A white kitten slowly walking on a clean desk, soft daylight, cinematic lens, stable shot"

seconds
enum<string>

Recommended. Video duration in seconds — pass as a string (e.g. "5"). Seedance 2.0 supports 4 to 15 seconds. Do not combine with duration or metadata.duration.

Available options:
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15
Example:

"5"

duration
number

Legacy field. Video duration in seconds. New integrations should use the top-level seconds field instead. Do not combine with seconds or metadata.duration.

Required range: 4 <= x <= 15
Example:

5

resolution
enum<string>

Recommended. Output resolution. 480p is cheapest and fastest; 720p suits regular production; 1080p availability depends on upstream account permissions — test before using in production.

Available options:
480p,
720p,
1080p
Example:

"720p"

ratio
enum<string>

Recommended. Output aspect ratio. adaptive or auto follows the input asset ratio; specify explicitly when there is no input asset.

Available options:
adaptive,
auto,
21:9,
16:9,
4:3,
1:1,
3:4,
9:16
Example:

"16:9"

size
string

Sora-compatible field, format 1280x720. New integrations should prefer top-level resolution + ratio to avoid mismatches with upstream enumerations.

Example:

"1280x720"

image
string

Single reference image — URL or Base64. Suitable for simple image-to-video or first-frame reference. For multiple images, first/last frames, or character references, use metadata.content.

Example:

"https://example.com/image.jpg"

ref_images
string[]

Array of reference images — URLs or Base64. When you need to declare explicit roles (first frame, last frame, plain reference), use metadata.content instead.

Example:
[
"https://example.com/reference-1.jpg",
"https://example.com/reference-2.jpg"
]
generate_audio
boolean
default:false

Recommended. Whether to generate synchronised audio. Enabling this may increase generation time. For dialogue, describe lines, tone, and acoustic environment in the prompt.

Example:

false

watermark
boolean
default:false

Recommended. Whether to add a watermark. Usually disabled for external API use.

Example:

false

camera_fixed
boolean
default:false

Recommended. Whether to lock the camera. Suited to product shots, standing figures, stable compositions, and surveillance perspectives. Enabling this reduces camera drift.

Example:

false

return_last_frame
boolean
default:false

Recommended. Whether to return the last frame of the generated video. Useful for chaining clips — use the last frame as the first frame of the next segment.

Example:

false

seed
integer<int64>

Random seed. Using the same model, assets, parameters, and seed tends to produce similar results, but exact reproducibility is not guaranteed.

Example:

20231234

n
integer
default:1

Number of videos to generate. Keep at 1 for async tasks; submit multiple independent tasks if you need several clips to simplify tracking and billing.

Required range: 1 <= x <= 1
Example:

1

response_format
enum<string>
default:url

Response format. Use url.

Available options:
url
Example:

"url"

user
string

User identifier for auditing and abuse monitoring; not used in generation.

Example:

"user-1234"

metadata
object

Seedance 2.0 extended parameters. In most cases, use the top-level request fields instead of these metadata equivalents. metadata.content is still the recommended way to pass complex multimodal assets.

Response

Seedance video task created successfully

Seedance video task object, compatible with the OpenAI / Sora video task format.

id
string
required

Video task ID.

Example:

"video_abc123"

object
enum<string>
required

Object type, always video.

Available options:
video
Example:

"video"

model
enum<string>
required

The model that processed the task.

Available options:
doubao-seedance-2-0-260128,
doubao-seedance-2-0-fast-260128
Example:

"doubao-seedance-2-0-fast-260128"

status
enum<string>
required

Task status.

Available options:
queued,
in_progress,
completed,
failed
Example:

"queued"

progress
integer
required

Task progress as a percentage (0–100).

Required range: 0 <= x <= 100
Example:

0

created_at
integer<int64>
required

Task creation timestamp in milliseconds.

Example:

1764347090922

seconds
string
required

Video duration in seconds.

Example:

"5"

completed_at
integer<int64>

Task completion timestamp in milliseconds, populated when complete.

Example:

1764347170000

expires_at
integer<int64>

Expiry timestamp for the task and video file, in milliseconds.

Example:

1764433570000

size
string

Video dimensions, e.g. 1280x720.

Example:

"1280x720"

error
object

Error information for a failed Seedance video task.

metadata
object

Additional metadata. Contains url once the task is complete.