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

# Pixverse v6 Генерация видео

>  - Унифицированная модель генерации видео Pixverse v6
- Поддерживает «текст в видео», «изображение в видео», переход между первым и последним кадрами, объединение нескольких опорных изображений и продолжение видео
- Разрешения 360p/540p/720p/1080p, длительность 1–15 секунд
- Асинхронный API: после отправки результат запрашивается по ID задачи 

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.apimart.ai/v1/videos/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "pixverse-v6",
      "prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
      "size": "16:9",
      "resolution": "540p",
      "duration": 5
    }'
  ```

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

  url = "https://api.apimart.ai/v1/videos/generations"

  payload = {
      "model": "pixverse-v6",
      "prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
      "size": "16:9",
      "resolution": "540p",
      "duration": 5
  }

  headers = {
      "Authorization": "Bearer <token>",
      "Content-Type": "application/json"
  }

  response = requests.post(url, json=payload, headers=headers)

  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const url = "https://api.apimart.ai/v1/videos/generations";

  const payload = {
    model: "pixverse-v6",
    prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
    size: "16:9",
    resolution: "540p",
    duration: 5
  };

  const headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
  };

  fetch(url, {
    method: "POST",
    headers: headers,
    body: JSON.stringify(payload)
  })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error("Error:", error));
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01JWXXXXXXXXXXXX"
      }
    ]
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "type": "invalid_request_error",
      "message": "invalid duration 20, allowed range: 1-15 seconds"
    }
  }
  ```

  ```json 401 theme={null}
  {
    "error": {
      "code": 401,
      "message": "Ошибка аутентификации. Проверьте ваш API-ключ",
      "type": "authentication_error"
    }
  }
  ```

  ```json 403 theme={null}
  {
    "error": {
      "code": 403,
      "message": "insufficient quota: balance=0, required=0.25",
      "type": "quota_not_enough"
    }
  }
  ```

  ```json 429 theme={null}
  {
    "error": {
      "code": 429,
      "message": "Слишком много запросов, попробуйте позже",
      "type": "rate_limit_error"
    }
  }
  ```
</ResponseExample>

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

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

  Получение API Key:

  Перейдите на [страницу управления API Key](https://apimart.ai/keys), чтобы получить ваш API Key.

  Добавьте следующий заголовок в запрос:

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

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

<ParamField body="model" type="string" required>
  Название модели генерации видео. Фиксировано: `pixverse-v6`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Описание содержимого видео, до 5000 символов. Обязателен во всех режимах.
</ParamField>

<ParamField body="resolution" type="string" default="540p">
  Разрешение видео. Влияет на стоимость.

  * `360p`: SD
  * `540p`: Стандарт (по умолчанию)
  * `720p`: HD
  * `1080p`: Full HD

  <Warning>
    Другие значения разрешения возвращают ошибку параметра.
  </Warning>
</ParamField>

<ParamField body="duration" type="integer" default="5">
  Длительность видео в секундах, диапазон `1–15`.

  <Warning>
    Режим перехода между первым и последним кадрами поддерживает только `5` или `8` секунд.
  </Warning>
</ParamField>

<ParamField body="size" type="string" default="16:9">
  Соотношение сторон видео. Действует только в режимах «текст в видео» и объединения нескольких опорных изображений.

  * `16:9`: Горизонтальный широкий (по умолчанию)
  * `4:3`: Горизонтальный 4:3
  * `1:1`: Квадрат
  * `3:4`: Вертикальный 3:4
  * `9:16`: Вертикальный
  * `2:3`: Вертикальный 2:3
  * `3:2`: Горизонтальный 3:2
  * `21:9`: Кинематографический широкий
</ParamField>

<ParamField body="seed" type="integer" default="0">
  Случайное зерно. Диапазон `0–2147483647`. Один и тот же prompt и seed дают похожий результат.
</ParamField>

<ParamField body="negative_prompt" type="string">
  Негативный промпт для исключения нежелательного содержимого. До 2048 символов.
</ParamField>

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

  * `true`: Генерировать аудио (повышает цену)
  * `false`: Без аудио (по умолчанию)
</ParamField>

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

  * `true`: Добавить водяной знак
  * `false`: Без водяного знака (по умолчанию)
</ParamField>

<ParamField body="motion_mode" type="string">
  Режим движения.

  * `normal`: Стандартный режим (`pixverse-v6` поддерживает только это значение)

  <Warning>
    `fast` доступен только для устаревших моделей и будет отклонён сервером для `pixverse-v6`.
  </Warning>
</ParamField>

<ParamField body="generate_multi_clip_switch" type="boolean" default="false">
  Генерировать ли непрерывное видео из нескольких клипов. Поддерживается только в режимах «текст в видео» и «изображение в видео».

  * `true`: Генерировать непрерывное многоклиповое видео
  * `false`: Один клип (по умолчанию)
</ParamField>

<ParamField body="image_urls" type="array<url>">
  Массив URL входных изображений для режима «изображение в видео». Используется только первое изображение.

  Изображения должны быть публично доступными HTTP/HTTPS URL.
</ParamField>

<ParamField body="first_frame_image" type="url">
  URL первого кадра в режиме перехода. Должен передаваться вместе с `last_frame_image`.
</ParamField>

<ParamField body="last_frame_image" type="url">
  URL последнего кадра в режиме перехода. Должен передаваться вместе с `first_frame_image`.
</ParamField>

<ParamField body="img_references" type="array<url>">
  Массив URL опорных изображений для режима объединения. Поддерживает 1–7 изображений.

  Передача этого поля активирует режим объединения нескольких опорных изображений.
</ParamField>

<ParamField body="extend_from_task_id" type="string">
  ID исходной задачи для продолжения видео. Передача этого поля активирует режим продолжения.

  Исходная задача должна принадлежать текущему пользователю, иметь модель `pixverse-v6` и статус `completed`.
</ParamField>

## Режимы генерации

Адаптер автоматически выбирает режим генерации по полям запроса. Сопоставление выполняется по приоритету: побеждает первый совпавший режим.

| Режим                                      | Условие активации                                   | Описание                                        |
| ------------------------------------------ | --------------------------------------------------- | ----------------------------------------------- |
| Текст в видео                              | Поля изображения и продолжения отсутствуют          | Генерация видео по `prompt`                     |
| Изображение в видео                        | `image_urls` с одним изображением                   | Используется первое изображение                 |
| Переход между первым и последним кадрами   | Указаны и `first_frame_image`, и `last_frame_image` | Генерация плавного перехода между двумя кадрами |
| Объединение нескольких опорных изображений | Указан массив `img_references`                      | Объединение 1–7 изображений в видео             |
| Продолжение видео                          | Указан `extend_from_task_id`                        | Продолжение из завершённой задачи Pixverse      |

<Warning>
  Все входы изображений принимают только публично доступные HTTP/HTTPS URL. base64 и Data URI не поддерживаются. Если у вас есть только локальные изображения, сначала загрузите их в объектное хранилище и передайте URL.
</Warning>

## Правила параметров

| Ограничение                     | Описание                                                                                                       |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| Длительность                    | `1 ≤ duration ≤ 15` секунд; режим перехода поддерживает только `5` или `8` секунд                              |
| Разрешение                      | Поддерживаются только `360p`, `540p`, `720p`, `1080p`                                                          |
| Соотношение сторон              | `size` действует только в режимах «текст в видео» и объединения опорных изображений                            |
| Длина промпта                   | `prompt` до 5000 символов, `negative_prompt` до 2048 символов                                                  |
| Изображение в видео             | `image_urls` использует только первое изображение                                                              |
| Переход                         | `first_frame_image` и `last_frame_image` передаются парой                                                      |
| Режим движения                  | `pixverse-v6` поддерживает только `normal`                                                                     |
| Объединение опорных изображений | `img_references` поддерживает 1–7 изображений                                                                  |
| Продолжение видео               | `extend_from_task_id` должен указывать на завершённую (`completed`) задачу `pixverse-v6` текущего пользователя |

## Ответ

<ResponseField name="code" type="integer">
  Код состояния ответа. При успехе — `200`.
</ResponseField>

<ResponseField name="data" type="array">
  Возвращаемый массив задач.

  <Expandable title="Элемент массива">
    <ResponseField name="status" type="string">
      Начальный статус задачи. При успешной отправке — `submitted`.
    </ResponseField>

    <ResponseField name="task_id" type="string">
      Уникальный идентификатор задачи для запроса статуса и результата.
    </ResponseField>
  </Expandable>
</ResponseField>

## Получение результата задачи

Генерация видео — асинхронная задача. После отправки возвращается `task_id`. Используйте эндпоинт [Получение статуса задачи](/ru/api-reference/tasks/status) для запроса прогресса и результата.

```bash cURL theme={null}
curl --request GET \
  --url https://api.apimart.ai/v1/tasks/task_01JWXXXXXXXXXXXX \
  --header 'Authorization: Bearer <token>'
```

Рекомендуется опрашивать каждые 5 секунд, пока статус не станет `completed` или `failed`.

### Пример успешного результата

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
    "status": "completed",
    "progress": 100,
    "cost": 0.2,
    "credits_cost": 2,
    "created": 1779958948,
    "completed": 1779958999,
    "estimated_time": 100,
    "actual_time": 51,
    "result": {
      "videos": [
        {
          "url": ["https://upload.apimart.ai/f/video/xxxx.mp4"],
          "expires_at": 1780045399
        }
      ]
    }
  }
}
```

URL видео находится по пути `data.result.videos[0].url[0]`. Поле `url` само является массивом. Ссылки обычно действуют 24 часа — заранее скачайте или перенесите файл.

### Пример неудачного результата

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
    "status": "failed",
    "progress": 100,
    "cost": 0,
    "credits_cost": 0,
    "created": 1779958948,
    "completed": 1779958960,
    "error": {
      "code": "task_failed",
      "message": "pixverse error 400063: moderation failed",
      "type": "task_failed"
    }
  }
}
```

При неудаче `cost` обычно равен `0`. Причина ошибки — в `data.error.message`.

## Сценарии использования

### Сценарий 1: Текст в видео

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "A neon-lit alley in Tokyo at night, light rain, anamorphic lens flare",
  "size": "21:9",
  "resolution": "720p",
  "duration": 8,
  "seed": 42,
  "audio": true
}
```

### Сценарий 2: Изображение в видео

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "Camera slowly zooms in, gentle wind moves the leaves",
  "image_urls": ["https://example.com/first-frame.jpg"],
  "resolution": "540p",
  "duration": 5
}
```

### Сценарий 3: Переход между первым и последним кадрами

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "transform smoothly from a puppy to a cat",
  "first_frame_image": "https://example.com/puppy.jpg",
  "last_frame_image": "https://example.com/cat.jpg",
  "resolution": "540p",
  "duration": 5,
  "motion_mode": "normal"
}
```

### Сценарий 4: Объединение нескольких опорных изображений

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "A girl wearing the outfit from image 2, holding the cat from image 3",
  "img_references": [
    "https://example.com/character.jpg",
    "https://example.com/outfit.jpg",
    "https://example.com/cat.jpg"
  ],
  "size": "9:16",
  "resolution": "720p",
  "duration": 5
}
```

### Сценарий 5: Продолжение видео

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "the character now walks into a forest",
  "extend_from_task_id": "task_01JWXXXXXXXXXXXX",
  "resolution": "540p",
  "duration": 5
}
```
