Разделы документации
Видео (video)готовится
Планируемый асинхронный контракт: создание задачи, опрос статуса, цены
Как это устроено
Генерация видео занимает от десятков секунд до нескольких минут — это дольше, чем живёт обычный HTTP-запрос. Поэтому обмен планируется в два шага, асинхронно.
Шаг первый: вы отправляете POST /v1/videos/generations и сразу получаете идентификатор задачи. Ответ приходит быстро, самого видео в нём нет. Шаг второй: вы опрашиваете GET /v1/videos/generations/{id}, пока статус не станет succeeded или failed. Ссылка на готовый файл появляется только в финальном ответе.
Синхронного режима не планируется: даже короткий ролик не помещается в таймаут запроса. Рассчитывайте архитектуру на очередь задач и фоновой опрос, а не на ожидание внутри обработчика.
Создание задачи
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
| prompt | строка | да | Текстовое описание сцены. Планируемый предел — 2000 знаков. |
| model | строка | да | Идентификатор модели. Планируется одно значение: libra-video. |
| resolution | строка | нет | 480p или 720p. По умолчанию 480p. Влияет на цену за секунду. |
| duration | целое, секунды | нет | Длительность ролика. Планируемый диапазон 4–10 секунд, по умолчанию 6. |
| image | строка | нет | Стартовый кадр: ссылка на изображение или строка data:image/... в base64. Тарифицируется отдельно. |
| seed | целое | нет | Зерно для воспроизводимости результата. |
| metadata | объект | нет | Ваши произвольные пары ключ-значение, возвращаются в статусе задачи. |
Заголовок авторизации и ключи те же, что для текста: Authorization: Bearer sk-libra-…, до 10 ключей на аккаунт. Отдельного ключа под видео не будет.
Опрос статуса и получение результата
| Статус | Что означает | Что делать |
|---|---|---|
| queued | Задача принята и ждёт очереди | Опрашивать дальше |
| processing | Идёт генерация | Опрашивать дальше |
| succeeded | Готово, ссылка в поле data | Скачать файл до истечения expires_at |
| failed | Генерация не удалась, причина в поле error | Разобрать ошибку и повторить запрос |
| canceled | Задача отменена вами или по таймауту | Создать новую задачу |
Рекомендуемая частота опроса — раз в 5 секунд, с постепенным увеличением паузы до 15–30 секунд. Опрос статуса считается обычным запросом и учитывается в лимите 120 запросов в минуту на ключ, поэтому не опрашивайте чаще раза в секунду.
Ссылка на файл планируется временной (порядка суток). Сохраняйте видео к себе сразу после получения, не храните URL в базе как постоянный.
Цены на видео
| Что тарифицируется | Единица | Цена |
|---|---|---|
| Видео 480p | 1 секунда готового ролика | 21,60 ₽ |
| Видео 720p | 1 секунда готового ролика | 37,80 ₽ |
| Стартовая картинка на входе | 1 изображение | 2,70 ₽ |
Пример: ролик 6 секунд в 720p со стартовым кадром — 6 × 37,80 + 2,70 = 229,50 ₽. Баланс пополняется от 1 млн токенов по цене 450 ₽ за 1 млн.
Плата планируется за успешно завершённую задачу. Статусы failed и canceled списываться не должны — это нужно подтвердить при реализации.
Ошибки
| Код | Тип | Когда |
|---|---|---|
| 401 | no_api_key | Заголовок Authorization не передан |
| 401 | invalid_api_key | Ключ неизвестен или отозван |
| 402 | insufficient_balance | На балансе не хватает средств на задачу целиком |
| 429 | rate_limited | Превышен лимит 120 запросов в минуту на ключ |
| 502 | upstream_error | Сбой генерации на стороне сервиса |
Проверку баланса планируется делать на этапе создания задачи: стоимость известна заранее из разрешения и длительности, поэтому 402 приходит сразу, а не после нескольких минут ожидания.