POST /video/v1/generations uses a unified request structure. See each driver page for supported parameters.
Unified request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | Model name, e.g. doubao-seedance-1-0-pro-250528, wan2.1-t2v-turbo |
prompt | string | Yes | Text prompt |
image | string | string[] | VideoURL | VideoURL[] | No | Reference image(s); string = image URL |
video | string | string[] | VideoURL | VideoURL[] | No | Reference video(s); Seedance billing checks this field to determine the modality_tokens price tier |
audio | string | string[] | VideoURL | VideoURL[] | No | Reference audio |
ratio | string | No | Aspect ratio: 16:9, 9:16, 1:1 |
resolution | string | No | Output resolution: 480p, 720p, 1080p, 4k |
upstream_options | object | No | Provider-specific parameters |
headers | object | No | Custom HTTP headers |
VideoURL structure
{
"type": "reference_video",
"url": "https://example.com/reference.mp4"
}
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Media type or role. Semantics vary by driver (see driver pages) |
url | string | Yes | Media URL |
headers structure
{
"headers": {
"x-trace-id": "trace-9c1ab",
"x-user-id": "u_42",
"x-agent-name": "video-agent"
}
}
These fields are recorded in task and usage logs for diagnostics and attribution.
Body size limit
The request body is capped at 50 MB.
Multi-modal input
When you pass an array for image, video, or audio, each entry is expanded into the upstream format individually. When you pass a string, it is treated as a URL. When you pass a VideoURL object, the type field determines the media role (e.g. first_frame, reference_video, reference_audio).
See the Seedance and Bailian pages for driver-specific media mappings.