Vidu Q3 Pro Text To Video API Documentation

Vidu Q3 Pro Text To Video API Documentation

Playground

Try it on WaveSpeedAI!

Vidu Q3 Pro Text to Video is a fast AI video generation model that creates high-quality, audio-capable videos from text prompts with support for 1–16 second outputs. Ready-to-use REST inference API for cinematic clips, advertising creatives, social media videos, product visuals, storytelling, and professional text-to-video workflows with simple integration, no coldstarts, and affordable pricing.

Features

Vidu Q3 Pro Text-to-Video is a fast, versatile text-to-video model that generates high-quality videos from natural-language prompts. It supports multiple resolutions, style presets, motion intensity control, and optional audio generation with background music, making it well suited for rapid creative iteration, content production, and concept visualization.


API Reference


Why Choose This?

  • Fast generation Pro architecture delivers quick results for rapid prototyping and iteration.

  • Text-driven video creation Turn scene descriptions into dynamic video clips with controllable motion and style.

  • Multiple resolutions Choose from 540p, 720p, or 1080p to balance quality and cost.

  • Style presets Select a visual style preset to better match your creative direction.

  • Motion control Adjust movement_amplitude to control the intensity of motion in the video.

  • Optional audio generation Generate synchronized audio and background music for more complete video output.


Parameters

ParameterRequiredDescription
promptYesText description of the desired video scene.
styleNoVisual style preset. Default: general.
resolutionNoOutput resolution: 540p, 720p, or 1080p. Default: 720p.
durationNoVideo length in seconds. Supports 1–16 seconds for Q3 Pro. Default: 5.
movement_amplitudeNoControls motion intensity. Default: auto.
generate_audioNoWhether to generate synchronized audio. Default: enabled.
bgmNoWhether to include background music. Default: enabled.
seedNoRandom seed for reproducible results. Use -1 for a random seed.

How to Use

  1. Write your prompt — describe the scene, action, camera feel, and visual style you want.
  2. Choose a style — select a preset that matches your creative direction.
  3. Set resolution — use 540p for speed, 720p for balance, or 1080p for higher quality.
  4. Set duration — choose the desired video length.
  5. Adjust motion (optional) — control movement intensity with movement_amplitude.
  6. Configure audio (optional) — toggle generate_audio and bgm if you want sound in the output.
  7. Set a seed (optional) — use a fixed seed for more reproducible generations.
  8. Submit — run the model and download the generated video.

Example Prompt

A cinematic night drive through a neon-lit city, light rain reflecting on the road, smooth forward camera motion, moody atmosphere, realistic lighting, subtle environmental motion


Pricing

Pricing is based on duration and resolution.

ResolutionCost per Second
540p$0.05
720p$0.125
1080p$0.15

Example Costs

Resolution1s5s10s16s
540p$0.05$0.25$0.50$0.80
720p$0.125$0.625$1.25$2.00
1080p$0.15$0.75$1.50$2.40

Billing Rules

  • Pricing scales linearly with duration
  • 540p costs $0.25 per 5 seconds
  • 720p costs 2.5× the 540p base rate
  • 1080p costs the 540p base rate
  • style, movement_amplitude, generate_audio, bgm, and seed do not affect pricing
  • Off-peak pricing may be available separately through the provider

Best Use Cases

  • Social media content — Create engaging short-form videos for Reels, Shorts, and similar formats.
  • Rapid prototyping — Quickly visualize creative concepts before committing to production.
  • Marketing and ads — Generate promotional clips with synchronized audio and motion.
  • Storytelling — Bring narrative scenes to life with motion, mood, and background music.
  • Game and app assets — Create animated content for interactive experiences and presentations.

Pro Tips

  • Be specific in your prompt about scene, action, lighting, and camera movement.
  • Start with 540p for rapid iteration, then switch to 720p or 1080p for final-quality output.
  • Use a fixed seed when you want more consistent variations.
  • Enable bgm for atmospheric content, and disable it when you plan to add custom audio later.
  • Lower movement_amplitude for calmer scenes, and raise it for more energetic or dramatic motion.

Notes

  • prompt is the only required field.
  • duration supports 1–16 seconds for Q3 Pro.
  • Higher resolution increases both output quality and total cost.
  • Native Vidu documentation uses the audio flag, while this WaveSpeed schema exposes generate_audio and bgm.
  • seed = -1 means a random seed will be used.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed",
  "style": "general",
  "resolution": "720p",
  "duration": 5,
  "movement_amplitude": "auto",
  "generate_audio": true,
  "bgm": true
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/vidu/q3-pro/text-to-video" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The positive prompt for the generation.
stylestringNogeneralgeneral, animeThe style of output video.
resolutionstringNo720p540p, 720p, 1080pThe resolution of the generated media.
durationnumberNo51 ~ 16The duration of the generated media in seconds.
movement_amplitudestringNoautoauto, small, medium, largeThe movement amplitude of objects in the frame. Defaults to auto, accepted value: auto small medium large.
generate_audiobooleanNotrue-Whether to generate audio.
bgmbooleanNotrue-The background music for generating the output.
seedintegerNo--The random seed to use for the generation. -1 means a random seed will be used.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.