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) — см. раздел «Опрос результатов» ниже.
Эти три применимы к любому варианту эндпоинта:
| Поле | Тип | Примечания |
|---|
mode | string | std (720P) / pro (1080P) / 4k. 4k только на kling/kling-v3 и kling/kling-v3-omni. По умолчанию std для text/image-to-video, pro для Omni-Video. |
aspect_ratio | string | 16:9 / 9:16 / 1:1. Обязательно для Omni-Video, если не передан опорный первый кадр или video_list (в этих случаях выводится из входных данных). |
duration | string | Длительность в секундах. По умолчанию "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_prompt | string | Что следует избегать. Максимум 2500 символов. |
cfg_scale | float | Диапазон [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_PROGRESS | Kling выполняет рендеринг |
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_shot | bool | Установите true для включения. Верхнеуровневые prompt и входные данные первого/последнего кадра тогда игнорируются. |
shot_type | string | customize (использовать multi_prompt буквально) или intelligence (Kling автоматически сегментирует). Обязательно при multi_shot=true. |
multi_prompt | array | [{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).
Выбирайте тот формат, который соответствует вашему существующему коду. Тарификация
одинакова в обоих случаях.
См. также