Перейти к основному содержанию
OrcaRouter нативно поддерживает Kling для генерации видео. Вы отправляете задачу, опрашиваете её ID для получения статуса и забираете готовый MP4 после завершения работы апстрима (обычно 30 - 90 секунд). Этот асинхронный паттерн «отправить, затем опрашивать» уникален для видео. Чат / изображения / TTS используют синхронный запрос-ответ; видео Kling — нет.
Эндпоинт отправки POST /v1/video/generations общий для всех провайдеров видео — форма тела запроса выбирается по префиксу model. Эта страница описывает model: kling/.... Для моделей ByteDance Seedance используйте model: byteplus/... и обратитесь к разделу Seedance Video. Эндпоинт получения результата GET /v1/video/generations/{task_id} идентичен для обоих случаев.

Модели

Все модели поддерживают текст в видео и изображение в видео. Расширенные возможности различаются:
МодельМультиисточник¹4KНативный звук²Мультикадр
kling/kling-v2-master
kling/kling-v2-1-master
kling/kling-v2-5-turbo
kling/kling-v2-6режим pro
kling/kling-v3
kling/kling-video-o1✓ (ограниченно)
kling/kling-v3-omni✓ (полностью)
¹ Мультиисточник = поля метаданных image_list / video_list. Маршрутизирует на апстрим-эндпоинт Kling Omni-Video, когда они присутствуют. kling/kling-video-o1 представляет ограниченное подмножество (только 5с/10с, без мультикадра, без звука); выбирайте kling/kling-v3-omni для полного функционала Omni. ² Нативный звук = Kling автоматически генерирует звуковую дорожку, соответствующую видео. Тарифицируется дополнительно апстримом. Включается через metadata.sound: "on". Эндпоинт отправки одинаков для всех моделей — POST /v1/video/generations. Меняется лишь то, какие поля metadata учитываются апстримом согласно таблице выше.

Отправка задачи

Отправьте POST на /v1/video/generations с model, prompt и любыми специфичными для апстрима параметрами в metadata:
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling/kling-v3-omni",
    "prompt": "cat playing piano in a sunny room",
    "metadata": {
      "mode": "std",
      "aspect_ratio": "16:9",
      "duration": "5"
    }
  }'
Ответ содержит ID задачи:
{
  "id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
  "task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
  "object": "video",
  "model": "kling/kling-v3-omni",
  "status": "queued",
  "progress": 0,
  "created_at": 1777975188
}
POST возвращает status в нижнем регистре status: "queued". GET возвращает обёрнутый конверт со статусом в верхнем регистре (SUBMITTED / IN_PROGRESS / SUCCESS / FAILURE) — см. раздел «Опрос результатов» ниже.

Общие поля metadata

Эти три применимы к любому варианту эндпоинта:
ПолеТипПримечания
modestringstd (720P) / pro (1080P) / 4k. 4k только на kling/kling-v3 и kling/kling-v3-omni. По умолчанию std для text/image-to-video, pro для Omni-Video.
aspect_ratiostring16:9 / 9:16 / 1:1. Обязательно для Omni-Video, если не передан опорный первый кадр или video_list (в этих случаях выводится из входных данных).
durationstringДлительность в секундах. По умолчанию "5". kling/kling-v3-omni и kling/kling-v3 принимают от "3" до "15". Семейство v2 (v2-master, v2-1-master, v2-5-turbo, v2-6) и kling/kling-video-o1 принимают "5" или "10". См. Kling Capability Map для авторитетного диапазона по каждой модели.
Эти два работают только для text-to-video и image-to-video (не для Omni-Video):
ПолеТипПримечания
negative_promptstringЧто следует избегать. Максимум 2500 символов.
cfg_scalefloatДиапазон [0, 1], по умолчанию 0.5. Выше = строже следование промпту. Не поддерживается моделями v2.x (kling-v2-master / v2-1-master / v2-5-turbo / v2-6).

Опрос результатов

Используйте ID задачи, возвращённый при отправке:
curl https://api.orcarouter.ai/v1/video/generations/task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw \
  -H "Authorization: Bearer sk-orca-..."
Форма ответа обёрнутая:
{
  "code": "success",
  "message": "",
  "data": {
    "task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
    "status": "SUCCESS",
    "progress": "100%",
    "result_url": "https://v16-kling-fdl.klingai.com/.../video.mp4?...",
    "action": "omniVideo",
    "submit_time": 1777975188,
    "start_time": 1777975241,
    "finish_time": 1777975277,
    "fail_reason": ""
  }
}
Значения статуса (верхний регистр, сырое состояние задачи):
СтатусЗначение
NOT_STARTЗапись задачи создана, ещё не отправлена в обработку (переходное, обычно менее 2с)
SUBMITTEDОтправлено в апстрим Kling, ожидает в их очереди
IN_PROGRESSKling выполняет рендеринг
SUCCESSГотово. data.result_url содержит MP4
FAILUREНеудача. data.fail_reason содержит причину
Прогресс возвращается как процентная строка ("30%", "100%"), не как целое число. Опрашивайте каждые 5 - 10 секунд. Типичный 5-секундный клип в режиме std завершается за 30 - 60 секунд; задачи 4K, 15-секундные и мультикадровые занимают 2 - 5 минут. data.result_url — это URL с подписью Kling (обратите внимание на query-параметры ksTime / ksSecret). Скачайте или перезалейте быстро, если нужно долгое хранение — у подписи задан апстримом срок действия.

Варианты эндпоинта

Все три варианта используют общий POST /v1/video/generations. Какой именно эндпоинт Kling будет обслуживать запрос, определяется тем, какие поля вы передаёте.

Text-to-video

Только model + prompt (+ опциональные метаданные выше). Отсутствие входного изображения означает text-to-video:
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling/kling-v2-6",
    "prompt": "ocean waves at sunset, cinematic",
    "metadata": {"mode": "pro", "duration": "5"}
  }'

Image-to-video

Добавьте верхнеуровневое поле image (первый кадр) и / или metadata.image_tail (последний кадр) для i2v по первому / последнему кадру:
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling/kling-v2-master",
    "prompt": "the cat starts dancing",
    "image": "https://example.com/cat.png",
    "metadata": {"mode": "std", "duration": "5"}
  }'

Multi-source reference (Omni-Video)

image_list и video_list маршрутизируют запрос на эндпоинт Kling Omni-Video. Доступно только на kling/kling-video-o1 и kling/kling-v3-omni. image_list — мультиизображенная опора:
{ "image_list": [{ "image_url": "...", "type": "first_frame" }] }
  • image_url (обязательно): URL или сырая base64-строка (без префикса data:).
  • type (опционально): first_frame / end_frame. Пропускайте, если изображение не предназначено как опорный кадр. Только конечный кадр без начального не поддерживается (всегда сочетайте с изображением первого кадра).
video_list — видеоопора (максимум 1 видео, MP4/MOV, ≤200МБ):
{ "video_list": [{ "video_url": "...", "refer_type": "base", "keep_original_sound": "yes" }] }
  • refer_type: base (редактирование видео — входное видео редактируется; по умолчанию) или feature (стилевая/композиционная опора — генерация следующего/предыдущего кадра).
  • keep_original_sound: yes / no.
  • На kling/kling-v3-omni видеоопора поддерживается только при длительности 3-10с, режимах std/pro (не 4K).
Когда задан video_list, metadata.sound должен быть "off" — Kling отклоняет такую комбинацию иначе.
Ссылайтесь на опорные изображения / видео / элементы внутри промпта с помощью синтаксиса <<<>>>: <<<image_1>>>, <<<video_1>>>, <<<element_1>>>. Только для Omni. Индекс соответствует порядку в массиве (с 1).
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling/kling-v3-omni",
    "prompt": "<<<image_1>>> waves at the camera, then walks toward the ocean",
    "metadata": {
      "image_list": [{"image_url": "https://example.com/person.jpg"}],
      "mode": "pro",
      "aspect_ratio": "16:9",
      "duration": "5",
      "sound": "on"
    }
  }'

Расширенные возможности

Эти возможности работают для text-to-video, image-to-video и Omni-Video — поддержка моделей различается. Передавайте их через metadata.

Мультикадр

Генерирует видео, состоящее из нескольких последовательных кадров, каждый со своим промптом и длительностью. Доступно на kling/kling-v3 и kling/kling-v3-omni.
ПолеТипНазначение
multi_shotboolУстановите true для включения. Верхнеуровневые prompt и входные данные первого/последнего кадра тогда игнорируются.
shot_typestringcustomize (использовать multi_prompt буквально) или intelligence (Kling автоматически сегментирует). Обязательно при multi_shot=true.
multi_promptarray[{index, prompt, duration}]. От 1 до 6 раскадровок. duration каждого кадра ≥ 1с; сумма должна равняться общей duration задачи. Каждый prompt ≤ 512 символов.

Нативный звук

Kling автоматически генерирует звуковую дорожку под видео. Тарифицируется дополнительно апстримом. Включается через metadata.sound: "on" (по умолчанию "off"). Поддержка моделей:
  • kling/kling-v3 и kling/kling-v3-omni: любой режим (std / pro / 4K)
  • kling/kling-v2-6: только режим pro
  • Все остальные модели: не поддерживается

Водяной знак

Передайте metadata.watermark_info: {enabled: true}, чтобы нанести водяной знак Kling на отрендеренное видео. По умолчанию — без водяного знака.

Тарификация

Видео Kling тарифицируется по задаче. OrcaRouter взимает ровно столько, сколько взимает Kling — апстримовое final_unit_deduction становится списанием с кошелька без наценки. Итоговая стоимость соответствует опубликованному прайс-листу Kling. Небольшой предварительный холд резервируется при отправке для покрытия максимально вероятной стоимости вашего запроса (например, 4K + звук); разница возвращается, как только задача завершается успешно. Просматривайте историю кошелька в консоли для фактических затрат по задачам.

Использование Kling SDK напрямую

Если у вас уже есть код, написанный под официальный Kling SDK, OrcaRouter также понимает нативный формат Kling на /kling/v1/videos/.... Поля тела остаются плоскими (model_name, mode и т.д.) — меняются лишь базовый URL, заголовок Authorization и значение model_name:
curl https://api.orcarouter.ai/kling/v1/videos/omni-video \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model_name": "kling/kling-v3-omni",
    "prompt": "cat playing piano",
    "mode": "pro",
    "aspect_ratio": "16:9",
    "duration": "5",
    "sound": "on"
  }'
model_name должен использовать идентификатор модели на стороне OrcaRouter (то же имя, что и на /v1/video/generations), а не голое имя модели Kling. OrcaRouter преобразует его через mapping моделей канала перед пересылкой в Kling.
Соответствующий путь для получения результата — GET /kling/v1/videos/omni-video/{task_id} (или text2video, image2video). Выбирайте тот формат, который соответствует вашему существующему коду. Тарификация одинакова в обоих случаях.

См. также