---
title: "Создать задачу генерации видео"
method: POST
path: "/v1/videos"
tags: ["Videos"]
---

# Создать задачу генерации видео

`POST /v1/videos`

## Request

- Base URL: `https://api.hubris.pw`
- URL: `https://api.hubris.pw/v1/videos`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.hubris.pw/oauth/authorize`, token URL `https://api.hubris.pw/oauth/token`, scopes: `videos:write`)

Асинхронная генерация: ответ 202 сразу приносит номер задачи и `polling_url`. Статус — `GET /v1/videos/{id}`, готовый ролик — `GET /v1/videos/{id}/content`.

Перед запуском с баланса удерживается не меньше наибольшей возможной стоимости ролика. После готовности списывается факт (`usage.cost`), разница возвращается; при сбое удержание возвращается целиком. Готовый ролик хранится 72 часа.

Нужен обычный ключ: ключ только для чтения задачу не создаст. Модели, их оси и цены — `GET /v1/videos/models`.

## Headers

- `Idempotency-Key` string: Повтор с тем же ключом от того же аккаунта вернёт уже созданную задачу без нового удержания. Ключ длиннее 255 знаков не учитывается.

## Request body

- CreateVideoRequest
  - `model` string, required
  - `prompt` string, required
  - `duration` integer
  - `resolution` string
  - `aspect_ratio` string
  - `size` string
  - `generate_audio` boolean
  - `seed` integer
  - `frame_images` VideoFrameImage[]
    - `type` 'image_url', required
    - `image_url` object, required
      - `url` string, required
    - `frame_type` 'first_frame' | 'last_frame', required
  - `input_references` VideoInputReference[]
    - union
      - object
        - `type` 'image_url', required
        - `image_url` object, required
          - `url` string, required
      - object
        - `type` 'video_url', required
        - `video_url` object, required
          - `url` string, required
  - `upscale_factor` number
  - `creativity` number
  - `provider` object
    - `options` object, required

## Response `202`

Задача создана (или найдена по `Idempotency-Key`).

- VideoJobCreated
  - `id` string, uuid, required: Номер задачи.
  - `status` 'pending', required
  - `polling_url` string, uri, required: Адрес опроса статуса — `GET /v1/videos/{id}`.
  - `created` integer, required: Время создания задачи, Unix-секунды.

## Other responses

- `400`: Невалидное тело (`invalid_request`): ось, которой нет у модели, `callback_url`, неподходящие `input_references` или `provider.options`; ключ BYOK. Отказ модели принять вход приходит с её текстом.
- `401`: Ключ не передан, невалиден, отозван или заморожен (`invalid_api_key`, `key_frozen_spike`).
- `402`: Не хватает средств на удержание под задачу (`insufficient_balance`).
- `403`: Нет права создавать задачи: ключ только для чтения (`key_read_only`). OAuth-токен без права `videos:write` (`insufficient_scope`). Ещё причины: management-ключ (`inference_key_required`), запрос не с адреса, к которому привязан ключ (`key_ip_not_allowed`), или заблокированный аккаунт (`account_blocked`).
- `404`: Модель не найдена или это не видеомодель (`model_not_found`).
- `413`: Тело запроса больше лимита (`request_too_large`).
- `429`: Достигнут лимит одновременных видеозадач аккаунта или уже готовится другой исходник (`too_many_active_jobs`); удержание не помещается в остаток лимита расхода ключа или OAuth-приложения (`daily_limit_exceeded`, `key_limit_exceeded`).
- `500`: Внутренняя ошибка (`internal_error`).
- `502`: Провайдер не принял задачу (`upstream_error`). Удержание возвращается.
- `503`: Курс ЦБ РФ временно недоступен — не посчитать удержание (`exchange_rate_unavailable`).
- `504`: Провайдер не ответил вовремя (`upstream_error`). Удержание возвращается.

---

[API](https://skmtc.dev/hubris/apis/hubris-api.md) · [All operations](https://skmtc.dev/hubris/apis/hubris-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hubris/apis/hubris-api/revisions/79ea91ed8f10?raw)
