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

# Проверка материалов в задаче генерации видео

> Используйте private_asset_review для проверки материалов с учетом выбранного канала и генерации видео в одной задаче

Установите `private_asset_review: true` в запросе генерации видео. Платформа выберет канал по обычным правилам маршрутизации. Каналы с приватной библиотекой материалов сначала подготовят и проверят материалы; остальные пропустят этот этап и используют прежний процесс обработки медиа и генерации видео. Не нужно самостоятельно определять возможности канала, дублировать список материалов, заранее создавать группы или отдельно опрашивать API проверки.

<Note>
  Этот способ предназначен для асинхронной генерации видео с медиа на входе и не ограничен Seedance. Функция должна быть включена на платформе. Запросы только с текстом, синхронные API, операции remix и extend не поддерживаются. Требования моделей и правила доступности каналов не меняются. Пропуск проверки приватных материалов не отменяет собственную модерацию провайдера. В материковом Китае можно заменить `https://toapis.com` на `https://toapis.cn`.
</Note>

## Отправка запроса

Используйте `POST /v1/videos/generations`. Изображения, видео и аудио остаются в прежних входных полях; добавьте булев переключатель.

В примере ниже используется Seedance 2. Для других моделей укажите поля медиа и параметры генерации из документации соответствующей модели, затем добавьте `private_asset_review: true`.

```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": "seedance-2",
    "client_business_id": "avatar-demo-001",
    "prompt": "Animate the character in image 1 using the movement in video 1.",
    "duration": 5,
    "aspect_ratio": "16:9",
    "image_with_roles": [
      {"url": "https://files.example.com/avatar.jpg", "role": "reference_image"}
    ],
    "video_with_roles": [
      {"url": "https://files.example.com/motion.mp4", "role": "reference_video"}
    ],
    "private_asset_review": true
  }'
```

Замените адреса в примере своими публичными URL. Если проверка требуется, ее должны пройти все выбранные материалы из перечисленных ниже полей проверки; выбрать только часть нельзя. Ограничения моделей на количество и проверка ролей не меняются.

| Поле                   | Тип     | Описание                                                                                                                                          |
| ---------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `private_asset_review` | boolean | Необязательное, по умолчанию `false`. Значение `true` включает проверку по запросу. При отсутствии поля или `false` сохраняется прежнее поведение |

Для проверки приватных материалов используются поля ниже. Каналы без этого этапа сохраняют прежние поля медиа и ограничения модели:

Для изображений выбирается первое непустое поле: `image_with_roles[].url` > `reference_images` > `image_urls` > `images` > `image`. Поля не объединяются. Модели, запрещающие их совместное использование, по-прежнему возвращают ошибку. Промпт и metadata не сканируются, а игнорируемые поля не начинают использоваться.

| Тип материала | Поле входных данных      | Роль                                              |
| ------------- | ------------------------ | ------------------------------------------------- |
| `image`       | `image_with_roles[].url` | `first_frame`, `last_frame` или `reference_image` |
| `video`       | `video_with_roles[].url` | `reference_video`                                 |
| `audio`       | `audio_with_roles[].url` | `reference_audio`                                 |

Если модель уже поддерживает `video_list`, поле можно использовать и дальше, в том числе как единственный источник медиа. Это относится, например, к запросам с референсным видео для Kling Omni и Gemini Omni 1.1. Поле не входит в описанную выше проверку приватных материалов и обрабатывается по правилам модели. Переключатель не добавляет поддержку новых полей или форматов.

HTTP(S) URL в перечисленных выше полях проверки сравниваются после удаления пробелов по краям, ограничены 2048 байтами UTF-8 и не должны содержать учетные данные. Одинаковые URL одного типа переиспользуются; конфликт типов вызывает ошибку. Изображения также принимаются в чистом Base64 или `data:image/...;base64,...`. Если проверка требуется, они сначала декодируются, проверяются на корректность и сохраняются. Каналы без этого этапа обрабатывают URL или Base64 по прежним правилам модели, без добавления поддержки форматов. Указанные выше поля видео и аудио требуют HTTP(S). Локальные пути не поддерживаются. Можно предварительно [загрузить изображение](../uploads/images) и получить URL.

Файл не должен быть пустым. Для сохранения по запросу предел составляет 20 MiB для изображений и 100 MiB для видео и аудио. Модель или сервис проверки могут устанавливать более строгие ограничения на формат, длительность и размер. Ссылка загрузки выше предназначена для изображений; для других типов используйте [загрузку видео](../uploads/videos) или [загрузку аудио](../uploads/audios).

## Ожидание результата

1. После приема запроса возвращается задача видео. HTTP-соединение не остается открытым на все время проверки. Прием задачи не означает, что проверка пройдена или генерация уже началась.
2. Для каналов с библиотекой материалов платформа ищет запись, которую можно использовать повторно. Если записи нет, она сохраняет материал, автоматически создает отдельную группу для этого материала на выбранном канале и отправляет его на проверку. Одновременные запросы одного пользователя с одинаковым источником и каналом используют общую подготовку, без создания лишних групп и повторных проверок.
3. До отправки видео должны пройти проверку все материалы, которым она требуется в этом раунде. Первая подготовка может занять несколько минут; пригодная запись позволяет пропустить повторную проверку. Каналы без библиотеки материалов используют прежнюю обработку медиа и генерацию, не создавая для этой функции копии материалов или группы. Генерация остается асинхронной.

Запрашивайте ту же задачу по возвращенному ID или своему `client_business_id`:

```bash theme={null}
curl --request GET \
  --url https://toapis.com/v1/videos/generations/avatar-demo-001 \
  --header 'Authorization: Bearer YOUR_API_KEY'
```

Используйте существующий API [статуса видеозадачи](../tasks/video-status) или [Webhook задач](../webhooks/task-webhooks). Во время проверки статус может оставаться `queued`. Опрос старого API материалов не нужен. `completed` означает готовность видео. При `failed` смотрите `error.message`.

По умолчанию на один раунд подготовки отводится 20 минут с начала этого раунда. Срок общий для всех материалов, а не по 20 минут на каждый. Последующая генерация видео в него не входит. Срок может меняться настройками платформы; при смене канала начинается новый раунд подготовки. Отказ в проверке или тайм-аут подготовки завершает задачу без отправки видео на генерацию.

Если первоначальная проверка не пройдена, плата за генерацию видео не взимается. После подготовки материалов действуют обычные резервирование средств и окончательный расчет. Повторное использование записей или пропуск проверки приватных материалов не меняет тарифы модели и параметры по умолчанию.

## Повторное использование, повторы и хранение

* В следующих запросах снова передавайте материалы и `private_asset_review: true`; ID материала не нужен. Для каналов с проверкой URL сравниваются целиком в пределах одного пользователя и канала, а изображения Base64 по хешу декодированного содержимого. Чистый Base64 и data URI с одинаковыми байтами используют одну запись. Между пользователями или каналами записи не разделяются.
* Другой URL считается новым источником. Изменение содержимого по прежнему URL не определяется по файлу, поэтому для обновленного материала используйте URL с новой версией.
* Когда проверка требуется, платформа хранит отдельную копию для каждого канала. Текущий порог очистки по умолчанию составляет 60 дней без использования; фактический срок зависит от настроек. Автоматически созданные группы удаляются вместе с копиями материалов. Материалы старого API и общие группы этот процесс не затрагивает. Использование учитывается при приеме отправленного видео, до завершения генерации. После очистки материалы готовятся заново, поэтому исходные URL должны оставаться доступными.
* При сетевом повторе одного бизнес-запроса используйте тот же `client_business_id`: вернется существующая задача, новая не создается. Для другого видео или новой попытки после ошибки используйте новый бизнес-ID. Не создавайте повторные задачи только из-за длительной проверки.
* Если отправка видео еще не подтверждена, продолжайте проверять исходную задачу или обратитесь в поддержку. Не отправляйте запрос сразу заново с другим бизнес-ID.

## Совместимость с прежними API материалов

При отсутствии переключателя или значении `false` прежний [API приватных аватаров](./seedance-2/private-avatar) и ссылки `asset://` работают как раньше. При `true` любая ссылка `asset://` в полях медиа вызывает HTTP 400. Старые записи не ищутся, не копируются и не переносятся.

Переключатель не меняет возможности модели и требования к содержимому и не заменяет отдельную [проверку реального человека](./seedance-2/real-avatar). Прежнее поле `private_assets` больше не принимается; используйте булево поле `private_asset_review`.

При ошибке валидации проверьте булев тип, ссылки asset:// и формат URL или Base64. При ошибке скачивания проверьте доступность и срок действия URL. Если функция отключена, нет доступного канала генерации или возникла ошибка настройки проверки, обратитесь к платформе. Ошибка настройки канала с проверкой не приводит к автоматическому пропуску проверки.
