> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toapis.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Генерация видео Vidu Q4 Preview

> Генерация видео с моделью Vidu Q4 Preview: видео из изображения и видео по нескольким референсным изображениям с референсным аудио

<Note>
  **Для пользователей из материкового Китая:** используйте `https://toapis.cn` в качестве API-эндпоинта (Base URL). Замените `https://toapis.com` на `https://toapis.cn` в примерах этого документа.
</Note>

* Асинхронный API задач, после отправки возвращает ID задачи
* Поддерживаемая модель: `viduq4-preview`
* Два режима генерации:
  * **Видео из первого кадра**: одно изображение как первый кадр
  * **Видео по референсам**: несколько референсных изображений и опциональное референсное аудио

<Warning>
  Используйте публично доступные URL изображений и аудио. Не передавайте base64-данные в `image_urls`, `reference_images` или `sounds`; сначала загрузите локальные файлы через [API загрузки изображений](../../uploads/images).
</Warning>

## Авторизация

<ParamField header="Authorization" type="string" required>
  Все эндпоинты требуют аутентификации Bearer Token.

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Параметры запроса

<ParamField body="model" type="string" required>
  Имя модели, фиксированное значение `viduq4-preview`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Текстовый промпт, описывающий объект, движение, сцену, работу камеры и стиль.
</ParamField>

<ParamField body="image_urls" type="string[]">
  Массив URL изображений. Режим определяется параметром `video_generation_mode` и количеством изображений:

  * **Режим первого кадра** (по умолчанию): передайте ровно 1 URL изображения в `image_urls`. Изображение станет первым кадром.
  * **Режим референсов**: установите `video_generation_mode` в `reference_images_to_video` и передайте референсные изображения в `image_urls` (или `reference_images`).

  Пример: `["https://example.com/first-frame.jpg"]`
</ParamField>

<ParamField body="video_generation_mode" type="string">
  Селектор режима генерации.

  Варианты:

  * `reference_images_to_video` - генерация по нескольким референсам; несколько изображений в `image_urls` обрабатываются как референсные

  Если не указано, используется режим видео из первого кадра. Запросы с несколькими изображениями, `reference_images` или `sounds` автоматически направляются в режим видео по референсам.
</ParamField>

<ParamField body="duration" type="integer" default="5">
  Длительность видео в секундах, от `3` до `16`.
</ParamField>

<ParamField body="resolution" type="string" default="720p">
  Разрешение видео.

  Варианты:

  * `540p`
  * `720p`
  * `1080p`
  * `2K`
  * `4K`
</ParamField>

<ParamField body="aspect_ratio" type="string">
  Соотношение сторон видео, используется в режиме референсов.

  Варианты: `16:9`, `9:16`, `4:3`, `3:4`, `1:1`
</ParamField>

<ParamField body="audio" type="boolean" default="true">
  Генерировать ли звук для видео.
</ParamField>

<ParamField body="watermark" type="boolean" default="false">
  Добавлять ли водяной знак на сгенерированное видео.
</ParamField>

<ParamField body="seed" type="integer">
  Сид для более воспроизводимых результатов при одинаковых параметрах.
</ParamField>

<ParamField body="metadata" type="object">
  Расширенные параметры для полей, поддерживаемых upstream API, но не вынесенных на верхний уровень.

  <Expandable title="Показать поля metadata">
    <ParamField body="is_rec" type="boolean">
      Автоматически расширять и улучшать промпт. По умолчанию на upstream — `true`, если не указано.
    </ParamField>

    <ParamField body="sounds" type="string[]">
      Массив URL референсных аудио (только режим видео по референсам). До 3 аудиофайлов.

      Пример: `["https://example.com/voice.mp3"]`
    </ParamField>

    <ParamField body="wm_position" type="integer">
      Позиция водяного знака, от `1` до `4`. Действует при `watermark` равном `true`.
    </ParamField>

    <ParamField body="wm_url" type="string">
      URL пользовательского изображения водяного знака. Действует при `watermark` равном `true`.
    </ParamField>

    <ParamField body="meta_data" type="string">
      Пользовательский идентификатор метаданных, строка в формате JSON, передаётся в результат без изменений.
    </ParamField>

    <ParamField body="callback_url" type="string">
      Финальный Task Webhook ToAPIs. Сначала настройте Token URL и секрет подписи; см. [Task Webhooks](/docs/ru/api-reference/webhooks/task-webhooks).
    </ParamField>
  </Expandable>
</ParamField>

## Выбор режима

| Режим | Как активировать | Входные изображения | Входное аудио |
| - | - | - | - |
| Видео из первого кадра | 1 изображение в `image_urls` (по умолчанию) | Ровно 1 изображение | Только флаг `audio` |
| Видео по референсам | `video_generation_mode: "reference_images_to_video"`, либо несколько изображений / `reference_images` / `sounds` | До 15 референсных изображений | До 3 `sounds` + флаг `audio` |

## Единицы тарификации

Vidu Q4 Preview тарифицируется посекундно за сгенерированное видео, цена зависит от разрешения:

* `540p` / `720p` / `1080p` / `2K` / `4K` — чем выше разрешение, тем выше цена за секунду

## Ответ

<ResponseField name="id" type="string">
  ID задачи для запроса статуса.
</ResponseField>

<ResponseField name="object" type="string">
  Тип объекта, обычно `generation.task`.
</ResponseField>

<ResponseField name="model" type="string">
  Модель, использованная в запросе.
</ResponseField>

<ResponseField name="status" type="string">
  Статус задачи: `queued`, `in_progress`, `completed` или `failed`.
</ResponseField>

<ResponseField name="created_at" type="integer">
  Временная метка создания задачи.
</ResponseField>

## Примеры

### Видео из первого кадра

```json theme={null}
{
  "model": "viduq4-preview",
  "prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
  "image_urls": ["https://example.com/portrait.jpg"],
  "duration": 5,
  "resolution": "1080p",
  "audio": true
}
```

### Видео по референсам

```json theme={null}
{
  "model": "viduq4-preview",
  "prompt": "Сохранить персонажа из референсных изображений, идёт по неоновой улице ночью",
  "video_generation_mode": "reference_images_to_video",
  "image_urls": [
    "https://example.com/character-front.jpg",
    "https://example.com/character-side.jpg"
  ],
  "duration": 5,
  "resolution": "720p",
  "aspect_ratio": "3:4",
  "audio": true
}
```

### Видео по референсам с референсным аудио

```json theme={null}
{
  "model": "viduq4-preview",
  "prompt": "Персонаж произносит реплику с синхронизацией губ",
  "video_generation_mode": "reference_images_to_video",
  "image_urls": ["https://example.com/character.jpg"],
  "duration": 5,
  "resolution": "720p",
  "aspect_ratio": "16:9",
  "metadata": {
    "sounds": ["https://example.com/voice.mp3"]
  }
}
```

### С расширением промпта и водяным знаком

```json theme={null}
{
  "model": "viduq4-preview",
  "prompt": "Кошка идёт по пляжу на закате",
  "image_urls": ["https://example.com/cat.jpg"],
  "duration": 8,
  "resolution": "2K",
  "watermark": true,
  "metadata": {
    "is_rec": true
  }
}
```

<Note>
  Генерация видео асинхронна. Используйте эндпоинт [Получение статуса видеозадачи](../../tasks/video-status) для проверки прогресса и результата.
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://toapis.com/v1/videos/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "viduq4-preview",
      "prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
      "image_urls": ["https://example.com/portrait.jpg"],
      "duration": 5,
      "resolution": "1080p",
      "audio": true
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://toapis.com/v1/videos/generations",
      headers={
          "Authorization": "Bearer <token>",
          "Content-Type": "application/json",
      },
      json={
          "model": "viduq4-preview",
          "prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
          "image_urls": ["https://example.com/portrait.jpg"],
          "duration": 5,
          "resolution": "1080p",
          "audio": True,
      },
  )

  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://toapis.com/v1/videos/generations", {
    method: "POST",
    headers: {
      Authorization: "Bearer <token>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "viduq4-preview",
      prompt: "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
      image_urls: ["https://example.com/portrait.jpg"],
      duration: 5,
      resolution: "1080p",
      audio: true
    })
  });

  console.log(await response.json());
  ```
</RequestExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.