Skip to main content
POST
/
v1
/
videos
/
generations
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "viduq3-pro",
    "prompt": "A cat playing piano, camera slowly zooms in, cinematic quality",
    "duration": 8,
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "audio": true
  }'
{
  "id": "<string>",
  "object": "<string>",
  "model": "<string>",
  "status": "<string>",
  "created_at": 123
}
  • Async task API, returns a task ID after submission
  • Supported models: viduq3-pro, viduq3-turbo, viduq3
  • viduq3-pro: High quality model, supports audio-video sync and storyboard generation
  • viduq3-turbo: Fast model, intelligent scene switching, fastest generation, best cost-effectiveness
  • viduq3: Best multi-camera consistency, intelligent camera switching, multi-reference generation
Use publicly accessible image URLs. Do not pass base64 image data in image_urls; upload local images with the Upload Image API first.

Authorization

Authorization
string
required
All endpoints require Bearer Token authentication.
Authorization: Bearer YOUR_API_KEY

Request Parameters

model
string
required
Vidu Q3 model name.Options:
  • viduq3-pro - high quality, supports audio-video sync and storyboard generation
  • viduq3-turbo - fastest generation, intelligent scene switching
  • viduq3 - best multi-camera consistency, for multi-reference/subjects generation
prompt
string
required
Text prompt, maximum 5000 characters.Describes subject, action, scene, camera movement, and style. When using subjects, reference them via @name in the prompt.Example: "A cat playing piano, camera slowly zooms in, cinematic quality"
duration
integer
default:"5"
Video duration in seconds.
  • viduq3-pro / viduq3-turbo: 1 to 16
  • viduq3: 3 to 16
resolution
string
default:"720p"
Video resolution.Options:
  • 540p
  • 720p
  • 1080p
aspect_ratio
string
Video aspect ratio.Common values: 16:9, 9:16, 1:1Q3 models support any aspect ratio. When image_urls is provided, the output ratio is usually determined by the reference image.
image_urls
string[]
Reference image URL array.
  • viduq3-pro / viduq3-turbo
    • Omitted: text-to-video
    • 1 image: image-to-video, image as first frame
    • 2 images: first-last frame
  • viduq3
    • Required, up to 7 reference images
Example: ["https://example.com/reference.jpg"]
audio
boolean
Whether to enable audio-video output.
  • All Q3 models default to true
When true, the system generates speech and sound effects based on the prompt.
seed
integer
Random seed for more reproducible results with the same parameters.
metadata
object
Extended parameters for fields supported by the upstream API but not exposed as top-level fields.

Model Selection

ModelUse CaseImage InputResolutionDuration
viduq3-proHigh quality text/image/first-last frameOptional, up to 2 images540p / 720p / 1080p1-16s
viduq3-turboFast text/image/first-last frameOptional, up to 2 images540p / 720p / 1080p1-16s
viduq3Multi-reference/Subjects generationRequired, up to 7 images540p / 720p / 1080p3-16s

Billing Dimensions

Vidu Q3 is billed by model, resolution, and generation type:
  • viduq3-pro: high quality tier, approximately 2x the price of turbo
  • viduq3-turbo: fast tier, best cost-effectiveness
  • viduq3: multi-reference generation, billed at reference generation rate

Response

id
string
Task ID for querying task status.
object
string
Object type, usually generation.task.
model
string
Model used for the request.
status
string
Task status: queued, in_progress, completed, or failed.
created_at
integer
Task creation timestamp.

Examples

Text-to-Video

{
  "model": "viduq3-pro",
  "prompt": "A cat playing piano, camera slowly zooms in, cinematic quality",
  "duration": 8,
  "resolution": "1080p",
  "aspect_ratio": "16:9",
  "audio": true
}

Image-to-Video

{
  "model": "viduq3-turbo",
  "prompt": "The person in the image slowly turns and smiles",
  "image_urls": ["https://example.com/portrait.jpg"],
  "duration": 5,
  "resolution": "720p"
}

First-Last Frame

{
  "model": "viduq3-pro",
  "prompt": "The person naturally sits down from standing, smooth motion",
  "image_urls": [
    "https://example.com/first-frame.jpg",
    "https://example.com/last-frame.jpg"
  ],
  "duration": 8,
  "resolution": "720p"
}

Multi-Reference Image Video

{
  "model": "viduq3",
  "prompt": "Keep the character consistent from the reference images, walking through a futuristic city street",
  "image_urls": [
    "https://example.com/character-front.jpg",
    "https://example.com/character-side.jpg"
  ],
  "duration": 6,
  "resolution": "1080p"
}

Subjects Mode

{
  "model": "viduq3",
  "prompt": "@cat and @dog are running in the park, sunny day",
  "image_urls": ["https://example.com/park-bg.jpg"],
  "duration": 8,
  "resolution": "720p",
  "audio": true,
  "metadata": {
    "subjects": [
      {"name": "cat", "images": ["https://example.com/cat.jpg"]},
      {"name": "dog", "images": ["https://example.com/dog.jpg"]}
    ],
    "audio_type": "all"
  }
}
Video generation is asynchronous. Use the Get Video Task Status endpoint to query progress and results.
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "viduq3-pro",
    "prompt": "A cat playing piano, camera slowly zooms in, cinematic quality",
    "duration": 8,
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "audio": true
  }'