> ## 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.

# Wan 3.0 — универсальная генерация видео

> Генерация видео с помощью модели Wan 3.0 All-in-One — текст-в-видео, управление первым/последним кадром и мультимодальные референсы: изображения, видео и аудио

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

Публичное имя модели Wan 3.0 — `wan3.0-video`. Одна модель поддерживает следующие режимы генерации:

* Текст-в-видео
* Управление первым кадром или первым и последним кадрами
* Совместная генерация с референсными изображениями, видео и аудио
* Референсы в виде файлов или публичных веб-страниц

API работает асинхронно. После успешной отправки возвращается ID задачи; используйте эндпоинт [статуса видеозадачи](../../tasks/video-status) для проверки прогресса и результатов.

<Warning>
  **Режим первого/последнего кадра и режим референсных материалов несовместимы.**

  Если запрос содержит `first_frame` или `last_frame`, нельзя одновременно передавать референсные изображения, видео, аудио, файлы или веб-ссылки. Референсные изображения, видео и аудио можно комбинировать между собой.
</Warning>

## Аутентификация

<ParamField header="Authorization" type="string" required>
  Используется аутентификация Bearer Token:

  ```text theme={null}
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

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

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

<ParamField body="prompt" type="string">
  Описание содержимого видео, движения объектов, ракурсов камеры и звука. Необходимо указать хотя бы `prompt` или медиаматериалы.

  При использовании мультимодальных референсов можно указывать в промпте «изображение 1», «видео 1», «аудио 1» в порядке элементов массива.
</ParamField>

<ParamField body="duration" type="integer" default="5">
  Длительность выходного видео, от `2` до `30` секунд. Передайте `-1` для умного режима — модель сама подберёт длительность по промпту и материалам.
</ParamField>

<ParamField body="ratio" type="string" default="adaptive">
  Соотношение сторон выходного видео. Поддерживаются:

  * `adaptive` — автоматический подбор по референсным материалам
  * `16:9`
  * `9:16`
  * `1:1`
  * `4:3`
  * `3:4`

  Также можно использовать совместимое поле `aspect_ratio`. Передавать оба поля одновременно не нужно.
</ParamField>

<ParamField body="resolution" type="string" default="1080p">
  Разрешение выходного видео: `480p`, `720p` и `1080p`.
</ParamField>

<ParamField body="audio" type="boolean" default={true}>
  Генерировать ли аудиодорожку. Включено по умолчанию.
</ParamField>

<ParamField body="watermark" type="boolean" default={false}>
  Добавлять ли водяной знак. Отключено по умолчанию.
</ParamField>

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

<ParamField body="image_with_roles" type="object[]">
  Массив управления первым/последним кадром. Каждый элемент содержит:

  * `url`: публично доступный URL изображения
  * `role`: `first_frame` или `last_frame`

  Можно указать не более одного первого и одного последнего кадра. При использовании `last_frame` обязательно укажите `first_frame`.
</ParamField>

<ParamField body="reference_images" type="string[]">
  Массив URL референсных изображений, до `10` штук. Нельзя комбинировать с первым/последним кадром в `image_with_roles`.
</ParamField>

<ParamField body="video_list" type="object[]">
  Массив референсных видео, до `5` роликов общей длительностью не более `15` секунд. Каждый элемент имеет структуру:

  ```json theme={null}
  {
    "video_url": "https://example.com/reference.mp4"
  }
  ```
</ParamField>

<ParamField body="audio_with_roles" type="object[]">
  Массив референсных аудио, до `5` дорожек общей длительностью не более `15` секунд. Каждый элемент содержит:

  * `url`: публично доступный URL аудио
  * `role`: фиксированное значение `reference_audio`
</ParamField>

<ParamField body="metadata" type="object">
  Референсы файлов или веб-страниц передаются через `metadata.media`.

  <Expandable title="Показать структуру metadata.media">
    `media` — массив объектов, каждый из которых содержит `type` и `url`:

    * Файл: `{ "type": "file", "url": "https://example.com/brief.pdf" }`
    * Веб-страница: `{ "type": "link", "url": "https://example.com/article" }`

    В одном запросе можно указать не более одного файла или одной веб-страницы — их нельзя использовать вместе. Файлы и веб-страницы также нельзя комбинировать с режимом первого/последнего кадра.
  </Expandable>
</ParamField>

<Note>
  Локальные изображения и видео необходимо сначала загрузить и получить публичный URL. Не передавайте локальные пути к файлам или данные base64 напрямую в запросе на генерацию.
</Note>

## Правила комбинирования материалов

| Содержимое запроса | Поддерживается | Примечание |
| - | -: | - |
| Только промпт | Да | Текст-в-видео |
| Только первый кадр | Да | Управление первым кадром |
| Первый и последний кадры | Да | Последний кадр нельзя использовать отдельно |
| Референсные изображения и видео | Да | Можно комбинировать |
| Референсные изображения, видео и аудио | Да | Можно комбинировать |
| Первый кадр и референсное видео | Нет | Режим первого/последнего кадра и режим референсов несовместимы |
| Первый/последний кадры и референсные изображения | Нет | Режим первого/последнего кадра и режим референсов несовместимы |
| Файл и веб-ссылка | Нет | Взаимоисключающие |

Если вы получили следующую ошибку:

```text theme={null}
Wan 3.0 cannot mix first/last frames with reference assets/files/web pages in the same request.
```

Удалите первый/последний кадры и оставьте референсные материалы; либо удалите все референсные материалы и оставьте только первый/последний кадры.

## Примеры запросов

### Текст-в-видео

```bash theme={null}
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "wan3.0-video",
    "prompt": "Рыжий кот бежит по улицам Токио после дождя, кинематографическая съёмка",
    "duration": 5,
    "ratio": "16:9",
    "resolution": "1080p",
    "audio": true,
    "watermark": false
  }'
```

### Генерация видео по первому и последнему кадрам

```bash theme={null}
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "wan3.0-video",
    "prompt": "Камера плавно наезжает, человек переходит из положения стоя к улыбке и взмаху руки",
    "duration": 8,
    "ratio": "adaptive",
    "resolution": "1080p",
    "image_with_roles": [
      {
        "url": "https://example.com/first-frame.png",
        "role": "first_frame"
      },
      {
        "url": "https://example.com/last-frame.png",
        "role": "last_frame"
      }
    ]
  }'
```

### Генерация видео по референсному видео

Не передавайте `first_frame` или `last_frame` в этом запросе.

```bash theme={null}
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "wan3.0-video",
    "prompt": "Использовать операторскую работу и движения из видео 1 для создания нового видео со стрит-дансом",
    "duration": 10,
    "ratio": "adaptive",
    "resolution": "720p",
    "audio": true,
    "video_list": [
      {
        "video_url": "https://example.com/reference-video.mp4"
      }
    ]
  }'
```

### Комбинированные референсы: изображение, видео и аудио

```bash theme={null}
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "wan3.0-video",
    "prompt": "Создать видео с персонажем из изображения 1, движениями из видео 1 и ритмом аудио 1",
    "duration": 10,
    "ratio": "16:9",
    "resolution": "720p",
    "audio": true,
    "reference_images": [
      "https://example.com/character.png"
    ],
    "video_list": [
      {
        "video_url": "https://example.com/motion.mp4"
      }
    ],
    "audio_with_roles": [
      {
        "url": "https://example.com/music.mp3",
        "role": "reference_audio"
      }
    ]
  }'
```

### Референс файла

```bash theme={null}
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "wan3.0-video",
    "prompt": "Создать лаконичное видео о продукте на основе содержимого файла",
    "duration": 10,
    "ratio": "16:9",
    "resolution": "1080p",
    "metadata": {
      "media": [
        {
          "type": "file",
          "url": "https://example.com/product-brief.pdf"
        }
      ]
    }
  }'
```

## Ответ

<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="progress" type="integer">
  Прогресс задачи, от `0` до `100`.
</ResponseField>

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

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "tsk_vid_xxx",
    "object": "generation.task",
    "model": "wan3.0-video",
    "status": "in_progress",
    "progress": 10,
    "created_at": 1781577600
  }
  ```
</ResponseExample>


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