CyHUB
РусскийGet an API key

Vidu Q4 API

Vidu Q4 Preview video by ShengShu with sound, from one frame or from references: 3 to 16 seconds, up to 4K. Up to 15 pictures in references, five aspect ratios and up to three voice recordings for the characters. Preview means a trial version: Vidu may still change how it works and what it costs.

Developer: ShengShuModel key in the API: vidu

For AI assistants:Download .mdAll documentation .mdOpen as text

Connect in three steps

  1. Get a keyCreate a key in the dashboard after you confirm your email. One key opens every model.
  2. Check the pricePOST /v1/price shows the cost of a run in advance, without charging you.
  3. Run a task and collect the resultPOST /v1/tasks starts a task, GET /v1/tasks/{id} shows its status and files.

Ready-to-use code

Replace YOUR_API_KEY with your key. The code starts a task and waits for the result. In cURL, repeat the second request with the id from the first response instead of TASK_ID until status becomes succeeded.

cURL
curl -X POST "https://api.cyhub.ai/v1/tasks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "vidu",
  "settings": {
    "mode": "i2v",
    "prompt": "Космонавт машет рукой, камера плавно поднимается вверх",
    "version": "q4",
    "resolution": "1080p",
    "duration": 5,
    "image_urls": [
      "https://example.com/astronaut.jpg"
    ]
  }
}'

curl "https://api.cyhub.ai/v1/tasks/TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
import time

import requests

API = "https://api.cyhub.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

body = {
    "model": "vidu",
    "settings": {
        "mode": "i2v",
        "prompt": "Космонавт машет рукой, камера плавно поднимается вверх",
        "version": "q4",
        "resolution": "1080p",
        "duration": 5,
        "image_urls": [
            "https://example.com/astronaut.jpg",
        ],
    },
}

response = requests.post(f"{API}/tasks", json=body, headers=HEADERS, timeout=60)
response.raise_for_status()
task = response.json()
while task["status"] in ("queued", "running"):
    time.sleep(5)
    task = requests.get(f"{API}/tasks/{task['id']}", headers=HEADERS, timeout=30).json()
print(task["status"], task["result"])
Node.js
const API = "https://api.cyhub.ai/v1";
const HEADERS = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };

const body = {
  "model": "vidu",
  "settings": {
    "mode": "i2v",
    "prompt": "Космонавт машет рукой, камера плавно поднимается вверх",
    "version": "q4",
    "resolution": "1080p",
    "duration": 5,
    "image_urls": [
      "https://example.com/astronaut.jpg"
    ]
  }
};

async function main() {
  let response = await fetch(`${API}/tasks`, { method: "POST", headers: HEADERS, body: JSON.stringify(body) });
  if (!response.ok) throw new Error(await response.text());
  let task = await response.json();
  while (task.status === "queued" || task.status === "running") {
    await new Promise((resolve) => setTimeout(resolve, 5000));
    response = await fetch(`${API}/tasks/${task.id}`, { headers: HEADERS });
    task = await response.json();
  }
  console.log(task.status, task.result);
}

main();
Get a key

Price before the run

Prices as of 17.10.2026: from 20 ₽. POST /v1/price shows the exact price of your settings.

ModePrice
Animate a framefrom 20 ₽
Turbo (faster, cheaper) tier = turbofrom 20 ₽
Pro (more accurate) tier = profrom 20 ₽
From referencesfrom 20 ₽
Turbo (faster, cheaper) tier = turbofrom 20 ₽
Pro (more accurate) tier = profrom 20 ₽
Mix (best picture) tier = mixfrom 20 ₽

Send the same settings to POST /v1/price: the response shows the price of the run without charging you.

cURL
curl -X POST "https://api.cyhub.ai/v1/price" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "vidu",
  "settings": {
    "mode": "i2v",
    "prompt": "Космонавт машет рукой, камера плавно поднимается вверх",
    "version": "q4",
    "resolution": "1080p",
    "duration": 5,
    "image_urls": [
      "https://example.com/astronaut.jpg"
    ]
  }
}'
  • amount_minor: the price of the run in minor units (kopecks for rubles)
  • currency: the wallet currency
  • available_minor: how much your balance has for new tasks right now

Modes

Each mode has its own parameters and examples. The mode is set by the mode field.

Animate a frame

The model sets a picture in motion by the description, keeping what is on it. The video takes the aspect ratio of the picture.

Value of the mode field: i2v

This page is about Vidu Q4: send version = q4. Without the version field the task runs on q3.

Price in this mode from 20 ₽.

Parameters

Model parameters go inside settings. Omitted optional fields take their default values.

promptRequired

What happens in the frame, who is in it, how the camera moves, what can be heard. Lines of the characters can be written right in the description, the lips will match.

Type: StringMinimum characters: 1Maximum characters: 5000
audioOptional

With sound (speech, effects and ambience) or silent. Sound costs nothing extra.

Type: StringAllowed values: onoffDefault: "on"
What the options mean
The model generates the sound itself in the same pass: lip-synced speech, effects and ambience. It is not billed separately.

Silent: if you are going to add your own track.
versionOptional

Model version. Q3 offers a choice of speed. Q4 Preview is newer: smoother motion and effects, quality up to 4K, in references up to 15 pictures and voice recordings for the characters, the clip is at least 3 seconds, one speed. Preview means a trial version: Vidu may change how it works and what it costs.

Type: StringAllowed values: q4Default: "q3"
What the options mean
Q3: all modes and a choice of speed: Turbo, Pro and Mix.

Q4 Preview: the new Vidu version, so far only in the "Animate a frame", "From references" modes. Smoother motion and complex action (running, fights), better explosions, sparks and other effects, quality up to 4K. In references up to 15 images and voice recordings for the characters. The clip is at least 3 sec, there is one speed.

Preview means a trial version: Vidu may still change how it works and what it costs.
tierOptional

Speed: Turbo is faster and cheaper, Pro is more accurate with details, motion and faces. The price depends on it. Only for version Q3: Q4 Preview has one speed, the value is ignored.

Type: StringAllowed values: turboproDefault: "turbo"
Applies only when: version = q3
What the options mean
Turbo: faster and cheaper, good for tries and short clips.

Pro: more accurate with details, motion and faces, but more expensive. How much more depends on the mode and quality: the exact price is shown at the top, in the "Price" line.

Mix: only in the "From references" mode. The best picture and shot changes inside the clip, but noticeably pricier than Pro. Quality: 720p, 1080p.

The speed is chosen only with version Q3: Q4 Preview has one speed.
resolutionOptional

Video quality. 2K and 4K are only available with Q4 Preview. The price is per second and depends on the quality.

Type: StringAllowed values: 540p720p1080p2K4KThe set depends on tier.Default: "720p"
What the options mean
540p: the cheapest, for checking an idea.
720p: the usual choice.
1080p: maximum detail with Q3.
2K and 4K: only with Q4 Preview, the most detailed and the most expensive.

The price is per second, so quality and duration affect it together.
durationOptional

Length in seconds, 1 to 16 (from 3 with Q4 Preview). The price is per second.

Type: IntegerMinimum: 1Maximum: 16Default: 5
When version = q4: Minimum: 3
image_urlsRequired

One URL of the picture to animate.

Type: List (String, uri)Maximum items: 1

Parameters not listed here are not accepted: the response is 422 unknown_setting.

The API sets these settings itself, do not send them: files_as_is = true

Input

  • A description is needed in every mode.
  • The price is per second of the clip and depends on the mode, version, speed and quality.
  • Images are URLs of JPEG, PNG or WebP files up to 50 MB each.
  • One side of a picture cannot be more than 4 times longer than the other.
FieldAcceptsFormatsFilesFile size up to
image_urlsImagesjpeg, jpg, png, webp150 MB
How to send files

Request example

Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.

Animate a photo with Q4 Preview

JSON
{
  "model": "vidu",
  "settings": {
    "mode": "i2v",
    "prompt": "Космонавт машет рукой, камера плавно поднимается вверх",
    "version": "q4",
    "resolution": "1080p",
    "duration": 5,
    "image_urls": [
      "https://example.com/astronaut.jpg"
    ]
  }
}

The price is calculated when the task is accepted, currency RUB.

Complete generation example

Output

  • One MP4 video.
  • Generation takes 1 to 10 minutes depending on length and quality.
KindFormatsHow manyNote
videomp41

A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.

JSON
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Caption of the result: the model and its settings",
    "texts": [],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "video",
        "filename": "video.mp4",
        "size": 12582912,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
How to read the result and download files

From references

Up to seven pictures (up to 15 with Q4 Preview): characters, objects, clothes, settings, style. The model builds a scene from them and keeps them consistent through the clip. With Q4 Preview voice recordings can be added to the pictures. The length is 3 seconds or more.

Value of the mode field: r2v

This page is about Vidu Q4: send version = q4. Without the version field the task runs on q3.

Price in this mode from 20 ₽.

Parameters

Model parameters go inside settings. Omitted optional fields take their default values.

promptRequired

What happens in the frame, who is in it, how the camera moves, what can be heard. Lines of the characters can be written right in the description, the lips will match.

Type: StringMinimum characters: 1Maximum characters: 5000
audioOptional

With sound (speech, effects and ambience) or silent. Sound costs nothing extra.

Type: StringAllowed values: onoffDefault: "on"
What the options mean
The model generates the sound itself in the same pass: lip-synced speech, effects and ambience. It is not billed separately.

Silent: if you are going to add your own track.
versionOptional

Model version. Q3 offers a choice of speed. Q4 Preview is newer: smoother motion and effects, quality up to 4K, in references up to 15 pictures and voice recordings for the characters, the clip is at least 3 seconds, one speed. Preview means a trial version: Vidu may change how it works and what it costs.

Type: StringAllowed values: q4Default: "q3"
What the options mean
Q3: all modes and a choice of speed: Turbo, Pro and Mix.

Q4 Preview: the new Vidu version, so far only in the "Animate a frame", "From references" modes. Smoother motion and complex action (running, fights), better explosions, sparks and other effects, quality up to 4K. In references up to 15 images and voice recordings for the characters. The clip is at least 3 sec, there is one speed.

Preview means a trial version: Vidu may still change how it works and what it costs.
tierOptional

Speed: Turbo is faster and cheaper, Pro is more accurate with details, motion and faces. The price depends on it. Mix gives the best picture, costs more than Pro and has no 540p. Only for version Q3: Q4 Preview has one speed, the value is ignored.

Type: StringAllowed values: turbopromixDefault: "turbo"
Applies only when: version = q3
What the options mean
Turbo: faster and cheaper, good for tries and short clips.

Pro: more accurate with details, motion and faces, but more expensive. How much more depends on the mode and quality: the exact price is shown at the top, in the "Price" line.

Mix: only in the "From references" mode. The best picture and shot changes inside the clip, but noticeably pricier than Pro. Quality: 720p, 1080p.

The speed is chosen only with version Q3: Q4 Preview has one speed.
resolutionOptional

Video quality. 2K and 4K are only available with Q4 Preview. The price is per second and depends on the quality.

Type: StringAllowed values: 540p720p1080p2K4KThe set depends on tier.Default: "720p"
What the options mean
540p: the cheapest, for checking an idea.
720p: the usual choice.
1080p: maximum detail with Q3.
2K and 4K: only with Q4 Preview, the most detailed and the most expensive.

The price is per second, so quality and duration affect it together.
durationOptional

Length in seconds, 3 to 16. The price is per second.

Type: IntegerMinimum: 3Maximum: 16Default: 5
aspect_ratioOptional

Frame aspect ratio.

Type: StringAllowed values: 16:99:164:33:41:1Default: "9:16"
What the options mean
16:9: landscape video
9:16: portrait (Stories, Reels)
4:3 / 3:4: classic format
1:1: square

In the "Animate a frame", "First and last frame" modes the pictures set the format, so the field is hidden.
image_urlsRequired

One to seven URLs of pictures with what must be in the video (up to 15 with Q4 Preview).

Type: List (String, uri)Maximum items: 15
audio_urlsOptional

Q4 Preview only, optional: up to 3 URLs of MP3 voice recordings up to 50 MB, each 3 to 12 seconds. The model voices the characters' lines in similar voices, the lines themselves go in the prompt. Works only with audio=on. The recording goes in whole and is not billed separately. A trial Vidu feature: the voice is only loosely similar for now, Russian speech may sound accented.

Type: List (String, uri)Maximum items: 3
Applies only when: version = q4 and audio = on

Parameters not listed here are not accepted: the response is 422 unknown_setting.

The API sets these settings itself, do not send them: files_as_is = true

Input

  • A description is needed in every mode.
  • The price is per second of the clip and depends on the mode, version, speed and quality.
  • Images are URLs of JPEG, PNG or WebP files up to 50 MB each.
  • One side of a picture cannot be more than 4 times longer than the other.
  • Every picture is at least 128 by 128 pixels.
FieldAcceptsFormatsFilesFile size up to
image_urlsImagesjpeg, jpg, png, webp1550 MB
audio_urlsAudiomp3350 MB
How to send files

Request example

Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.

A scene with a voice in Q4 Preview

JSON
{
  "model": "vidu",
  "settings": {
    "mode": "r2v",
    "prompt": "Девушка с первой картинки садится за столик кафе со второй картинки и говорит: «Как же я ждала этого вечера!»",
    "version": "q4",
    "resolution": "1080p",
    "aspect_ratio": "4:3",
    "duration": 8,
    "image_urls": [
      "https://example.com/girl.png",
      "https://example.com/cafe.png"
    ],
    "audio_urls": [
      "https://example.com/voice.mp3"
    ]
  }
}

The price is calculated when the task is accepted, currency RUB.

Complete generation example

Output

  • One MP4 video.
  • Generation takes 1 to 10 minutes depending on length and quality.
KindFormatsHow manyNote
videomp41

A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.

JSON
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Caption of the result: the model and its settings",
    "texts": [],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "video",
        "filename": "video.mp4",
        "size": 12582912,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
How to read the result and download files

See also

Try Vidu Q4 through the API

One key opens every CyHUB model. Payment in rubles, and you see the price before the run.

Get an API key