Vidu Q3
In this page's examples, {BASE_URL} is https://api.uniall.ai.
Updated: 2026-08-04
Overview
Use the Vidu Q3 series through two stable public model IDs. Select the output resolution with the top-level resolution parameter instead of encoding it in the model name.
| Public Model | Series | Text To Video | Single Image | First And Last Frame | Multiple References |
|---|---|---|---|---|---|
viduq3p | Q3 Pro | Supported | Supported | Supported | 1 to 4 images |
viduq3t | Q3 Turbo | Supported | Supported | Supported | 1 to 4 images |
Both models support 540p, 720p, and 1080p. These are the only public Vidu Q3 model IDs.
When To Use It
Use Vidu Q3 when you need to:
- create a video from a text prompt;
- animate one publicly accessible image;
- interpolate between a first frame and a last frame;
- guide generation with 1 to 4 reference images.
Clients only select a public model and request parameters. Do not send channel names, upstream model IDs, upstream task fields, or routing controls.
Endpoints
Use these endpoints for new integrations:
| Purpose | Method | Path |
|---|---|---|
| Create a video task | POST | /v1/videos |
| Query a video task | GET | /v1/videos/{task_id} |
| Download the video | GET | /v1/videos/{task_id}/content |
The following compatibility endpoints remain available:
| Purpose | Method | Path |
|---|---|---|
| Create a video task | POST | /v1/videos/generations |
| Query a video task | GET | /v1/videos/generations/{task_id} |
| Create a video task | POST | /v1/video/generations |
| Query a video task | GET | /v1/video/generations/{task_id} |
Prefer /v1/videos for all new integrations.
Authentication
Every request requires a UniAll Bearer token:
Authorization: Bearer sk-***
Task creation also requires:
Content-Type: application/json
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | viduq3p or viduq3t. |
prompt | string | Yes | Video generation prompt. |
duration | integer | Yes | Output duration from 1 to 16 seconds. |
aspect_ratio | string | No | 16:9, 9:16, 3:4, 4:3, or 1:1. |
image | string | Conditional | Public HTTP(S) URL for a single image or the first frame. |
last_image | string | Conditional | Public HTTP(S) URL for the last frame; requires image. |
reference_image_urls | string[] | Conditional | 1 to 4 public HTTP(S) image URLs for reference generation. |
resolution | string | Yes | 540p, 720p, or 1080p. |
audio | boolean | No | Whether to generate audio. |
bgm | boolean | No | Background music control for text-to-video generation. |
seed | integer | No | Random seed. |
Choose input fields according to the generation mode:
| Mode | Input Fields |
|---|---|
| Text to video | prompt |
| Single image | prompt + image |
| First and last frame | prompt + image + last_image |
| Multiple references | prompt + reference_image_urls |
Follow these validation rules:
- Pass top-level
resolutionon every request. - Do not combine
imagewithreference_image_urls. - Do not pass
last_imagewithoutimage. - Do not use
imagesorimage_urlsfor first-and-last-frame or reference generation. - Pass
resolution,audio,bgm, andseedat the top level, not insideextra_body. sizeis not an alias forresolution.
Request Examples
Text To Video
curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "viduq3p",
"prompt": "A cinematic aerial shot over a futuristic coastal city at sunrise, soft light, slow camera push-in.",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"audio": false,
"bgm": false,
"seed": 42
}'
Single Image To Video
curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "viduq3t",
"prompt": "The person slowly raises their head and looks at the camera while the camera gently moves forward.",
"image": "https://example.com/source.png",
"duration": 5,
"aspect_ratio": "9:16",
"resolution": "540p",
"audio": false,
"seed": 42
}'
First And Last Frame
curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "viduq3p",
"prompt": "The person turns naturally from a front view to a side view while identity and motion remain consistent.",
"image": "https://example.com/head.png",
"last_image": "https://example.com/tail.png",
"duration": 6,
"aspect_ratio": "16:9",
"resolution": "720p",
"audio": false,
"seed": 42
}'
Multiple Reference Images
curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "viduq3p",
"prompt": "A @Image1 walking through a beach in the visual style of @Image2",
"reference_image_urls": [
"https://example.com/ref-1.png",
"https://example.com/ref-2.png"
],
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "1080p",
"audio": false,
"seed": 42
}'
Both public models accept reference_image_urls. Reference prompts can use @Image1, @Image2, and subsequent markers in array order.
Response Examples
Task Created
Save id or the compatible task_id value for later queries:
{
"id": "task_xxxxxxxxxxxxx",
"task_id": "task_xxxxxxxxxxxxx",
"object": "video.generation.job",
"model": "viduq3p",
"status": "queued",
"progress": 0,
"created_at": 1785772800
}
Public responses do not include channel identifiers, upstream task IDs, credentials, or raw upstream payloads.
Task Status And Result
After creation, save id or task_id, then poll GET /v1/videos/{task_id} until the task reaches completed or failed. See Video Generation Overview for the shared polling interval, status fields, error contract, result URL, and authenticated download flow.
Billing Notes
Billing depends on the public model, requested resolution, and actual output duration. The model ID does not carry a resolution or time-based billing tier.
The current Baidu VOD/BV channel reference for normal-time text-to-video, single-image-to-video, and first-and-last-frame requests is:
| Public Model | 540p | 720p | 1080p |
|---|---|---|---|
viduq3p (Q3 Pro) | CNY 0.28125/second | CNY 0.625/second | CNY 0.75/second |
viduq3t (Q3 Turbo) | CNY 0.21875/second | CNY 0.375/second | CNY 0.40625/second |
Total channel consumption is the rate multiplied by the actual output duration. Reference-image requests may use a different eligible route. Treat these values as the current channel reference, and use the UniAll model page and consumption log as the source of the final user-facing price and settlement.
Common Errors
Requests are rejected before task creation when they:
- use a model ID other than
viduq3porviduq3t; - omit
resolutionor pass a value other than540p,720p, or1080p; - use
sizeinstead ofresolution; - omit
durationor pass a value outside1to16; - use an unsupported aspect ratio such as
21:9or1920x1080; - pass an empty
reference_image_urlsarray or more than 4 references; - combine
imagewithreference_image_urls, or passlast_imagealone; - use an image URL that the service cannot access publicly;
- place supported top-level controls inside
extra_body.