Перейти к основному содержанию

Documentation Index

Fetch the complete documentation index at: https://docs.runblob.io/llms.txt

Use this file to discover all available pages before exploring further.

Base URL: https://platform.runblob.io

POST /v1/kling/o3-video/generate

Создаёт асинхронную задачу Kling 3.0-omni. Поддерживает text-to-video и image-to-video длительностью 5, 10 или 15 секунд в режимах Standard (720p) или Pro (1080p).
prompt
string
обязательно
Текстовое описание видео (1–2500 символов)
images_url
array
Массив URL изображений для image-to-video (макс. 5 изображений, нельзя совмещать с images_base64)
images_base64
array
Массив изображений в Base64 для image-to-video (макс. 5 изображений, нельзя совмещать с images_url)
duration
string
по умолчанию:"5"
Длительность видео в секундах: "5", "10" или "15"
aspect_ratio
string
по умолчанию:"16:9"
Соотношение сторон:
  • "16:9" — ландшафт (YouTube, Desktop) — по умолчанию
  • "9:16" — портрет (Stories, TikTok, Reels)
  • "1:1" — квадрат (Instagram Feed)
model
string
по умолчанию:"kling_o3"
Режим качества:
  • "kling_o3" — Standard 720p (быстрее, дешевле) — по умолчанию
  • "kling_o3_pro" — Pro 1080p (выше качество)
keep_original_sound
boolean
по умолчанию:"true"
Сохранять оригинальный звук из видео/изображений (если применимо)
callback_url
string
URL webhook для уведомлений о готовности
Ограничения на изображения:
  • Передавайте либо images_url, либо images_base64, но не оба
  • Максимум 5 изображений
  • Максимум 10 MB на изображение
  • Поддерживаемые форматы: JPEG, PNG, GIF, WEBP
curl -X POST https://platform.runblob.io/v1/kling/o3-video/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A cat walking in a garden"
  }'

Ответ

{
  "generation_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "pending",
  "price": "0.1500"
}
generation_id
string
UUID задачи генерации для проверки статуса
status
string
Начальный статус, всегда "pending"
price
string
Сумма списания в USD (зависит от длительности и режима)
Генерация обычно занимает 2–10 минут в зависимости от длительности и режима. Используйте generation_id для проверки статуса или настройте webhooks.Эндпоинт статуса: GET /v1/kling/o3-video/generations/{generation_id}

Режимы генерации

Генерация видео из текстового описания:
  • Входные изображения не нужны
  • AI создаёт видео с нуля
  • Подходит для креативных сцен, анимации, концептов
{
  "prompt": "Sunset over ocean with waves",
  "duration": "10"
}
Анимация существующих изображений:
  • Передайте 1–5 референсных изображений
  • AI оживляет изображения
  • Подходит для анимации персонажей и демо-видео продуктов
{
  "prompt": "Make the person smile and wave",
  "images_url": ["https://example.com/photo.jpg"],
  "duration": "5"
}

Параметры видео

Выбор длительности видео:
  • 5 секунд: короткие клипы, быстрая генерация (по умолчанию)
  • 10 секунд: стандартные видео, умеренное время
  • 15 секунд: более длинный контент, увеличенное время
Большая длительность дороже и дольше генерируется
Standard vs Pro:
МодельРазрешениеСкоростьПодходит для
kling_o3720pбыстреепревью, соцсети
kling_o3_pro1080pмедленнеепрофессиональное использование
Pro-режим стоит примерно в 2 раза дороже Standard
3 варианта соотношения сторон:
RatioФорматПрименение
16:9ЛандшафтYouTube, Desktop (default)
9:16ПортретStories, TikTok, Reels
1:1КвадратInstagram Feed
Сохранение оригинального звука:
  • keep_original_sound: true — сохранить звук из входных данных (по умолчанию)
  • keep_original_sound: false — сгенерировать видео без звука
Применимо только для image-to-video с аудио-данными

Ошибки в ответе

{
  "detail": "Maximum 5 images allowed, got 6"
}
Невалидные параметры запроса

Валидация запроса

function validateO3VideoRequest(request) {
  // Check prompt length
  if (request.prompt.length < 1 || request.prompt.length > 2500) {
    throw new Error("Prompt must be between 1 and 2500 characters");
  }
  
  // Check image count
  const totalImages = (request.images_url?.length || 0) + 
                     (request.images_base64?.length || 0);
  if (totalImages > 5) {
    throw new Error("Maximum 5 images allowed");
  }
  
  // Check that methods aren't mixed
  if (request.images_base64 && request.images_url) {
    throw new Error("Cannot provide both images_base64 and images_url");
  }
  
  // Validate duration
  if (request.duration && !["5", "10", "15"].includes(request.duration)) {
    throw new Error("Duration must be 5, 10, or 15 seconds");
  }
  
  // Validate model
  if (request.model && !["kling_o3", "kling_o3_pro"].includes(request.model)) {
    throw new Error("Model must be 'kling_o3' or 'kling_o3_pro'");
  }
  
  // Validate aspect ratio
  const validRatios = ["16:9", "9:16", "1:1"];
  if (request.aspect_ratio && !validRatios.includes(request.aspect_ratio)) {
    throw new Error("Invalid aspect ratio");
  }
  
  return true;
}