CloseRouter

Видео

Генерация выполняется асинхронно: создайте задачу, дождитесь завершения и скачайте результат. Все шаги используют один API-ключ.

1. Выберите модель

Найдите нужную операцию и допустимые значения длительности, разрешения и пропорций. Ниже замените YOUR_VIDEO_MODEL_ID и параметры на значения из каталога.

curl
curl https://api.closerouter.dev/v1/videos/models \
  -H "Authorization: Bearer $CLOSEROUTER_API_KEY"

2. Проверьте стоимость

Этот запрос не запускает генерацию и не списывает деньги. Сохраните max_cost_usd из ответа. Для точного выбора используйте provider.option_id в расчёте и последующей генерации.

curl
curl https://api.closerouter.dev/v1/videos/quote \
  -H "Authorization: Bearer $CLOSEROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "YOUR_VIDEO_MODEL_ID",
  "prompt": "A slow camera move over a mountain lake",
  "duration": 5,
  "aspect_ratio": "16:9"
}'

3. Создайте задачу

Замените MAX_COST_FROM_QUOTE суммой из расчёта и передайте те же параметры. Повторный POST — новая генерация.

curl
curl https://api.closerouter.dev/v1/videos \
  -H "Authorization: Bearer $CLOSEROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "YOUR_VIDEO_MODEL_ID",
  "prompt": "A slow camera move over a mountain lake",
  "duration": 5,
  "aspect_ratio": "16:9",
  "max_cost_usd": "MAX_COST_FROM_QUOTE"
}'

Задача принята — HTTP 202

Сокращённый ответ. Сохраните id: он нужен для следующих шагов.

JSON
{
  "id": "TASK_ID",
  "status": "pending",
  "polling_url": "https://api.closerouter.dev/v1/videos/TASK_ID"
}

4. Проверьте статус

Замените TASK_ID идентификатором из ответа. Пока задача не завершена, проверяйте её статус вместо повторной отправки генерации.

curl
curl https://api.closerouter.dev/v1/videos/TASK_ID \
  -H "Authorization: Bearer $CLOSEROUTER_API_KEY"

Готовый результат

Сокращённый пример: сумма иллюстративная. usage.cost — итоговая стоимость в USD, если она уже доступна в ответе.

JSON
{
  "id": "TASK_ID",
  "status": "completed",
  "unsigned_urls": [
    "https://api.closerouter.dev/v1/videos/TASK_ID/content?index=0"
  ],
  "usage": {
    "cost": 0.15
  }
}

5. Скачайте файл

Ссылки unsigned_urls защищены: передавайте API-ключ аккаунта, которому принадлежит задача. index выбирает результат, начиная с нуля.

curl
curl https://api.closerouter.dev/v1/videos/TASK_ID/content?index=0 \
  -H "Authorization: Bearer $CLOSEROUTER_API_KEY" \
  --output video.mp4

Статусы задачи

СтатусДействие
pendingЗадача принята; продолжайте проверять статус.
in_progressОбработка продолжается; новый POST не нужен.
completedПолучите результат по защищённой ссылке.
failedПрочитайте error перед следующим действием.

Продление, повышение разрешения и редактирование

Проверьте поддержку операции и источника у выбранного провайдера. Эти действия создают новые задачи. Для каждого действия сначала запросите /videos/quote с его параметрами; затем отправьте те же параметры и полученный max_cost_usd на /videos.

Продлить видео

Тело запроса для расчёта стоимости. Используйте свою завершённую задачу и допустимые для операции параметры.

JSON
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "operation": "extend",
  "video": {
    "id": "SOURCE_TASK_ID",
    "index": 0
  },
  "prompt": "Continue the camera movement",
  "duration": 5
}

Повысить разрешение

Тело запроса для расчёта стоимости. Используйте свою завершённую задачу и допустимые для операции параметры.

JSON
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "operation": "upscale",
  "video": {
    "id": "SOURCE_TASK_ID",
    "index": 0
  },
  "resolution": "1080p"
}

Изменить видео

Тело запроса для расчёта стоимости. Используйте свою завершённую задачу и допустимые для операции параметры.

JSON
{
  "model": "YOUR_VIDEO_MODEL_ID",
  "operation": "edit",
  "video": {
    "id": "SOURCE_TASK_ID",
    "index": 0
  },
  "prompt": "Make the scene snowy"
}

Исходники и ограничения

Вместо video.id можно передать video: {"url": "https://example.com/source.mp4"}, если операция поддерживает внешний источник. Для продления duration задаёт добавляемые секунды; extend и edit требуют prompt, а upscale — resolution.

Не передавайте input, нативные поля поставщика, provider.options или callback_url. Генерация через Chat Completions не поддерживается; анализ входящего видео — отдельная возможность текстовых моделей.

Неопределённый результат

Если ответ содержит closerouter.reconciliation_pending, окончательный результат ещё уточняется. Сохраните ID задачи и проверяйте статус; повторная генерация может создать отдельную платную задачу.