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

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

GET /v1/kling/o3-video/generations/{generation_id}

generation_id
string
обязательно
Уникальный идентификатор, возвращённый из запроса generate
  • pending — задача создана, ожидает в очереди
  • processing — видео генерируется
  • completed — генерация завершена, видео готово
  • failed — генерация завершилась с ошибкой (детали в webhook)
curl -X GET https://platform.runblob.io/v1/kling/o3-video/generations/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer YOUR_API_KEY"

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

{
  "generation_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "processing",
  "prompt": "Dragon flying over mountains",
  "video_url": null,
  "model": "kling-o3-video-10s-pro"
}
Опрашивайте этот эндпоинт раз в 5 секунд, пока статус не сменится на completed или failed.Ожидаемая хронология:
  • pendingprocessing: 10–30 секунд
  • processingcompleted: 2–10 минут (зависит от длительности и режима)
Время генерации:
  • 5s Standard: ~2–3 минуты
  • 10s Standard: ~3–5 минут
  • 15s Standard: ~5–7 минут
  • Pro-режим: +30–50% времени

Поля ответа

generation_id
string
Уникальный идентификатор генерации
status
string
Текущий статус: pending, processing, completed или failed
prompt
string
Исходный промпт, использованный для генерации
video_url
string | null
Прямой URL сгенерированного видео (доступен только при статусе completed)
model
string
Идентификатор модели, например kling-o3-video-5s, kling-o3-video-10s-pro, kling-o3-video-15s

Рекомендации по polling

1

Подождите перед первой проверкой

Подождите 10 секунд после запроса генерации, чтобы система успела поставить задачу в очередь
2

Используйте прогрессивные интервалы

Начните с 5-секундных интервалов, постепенно увеличивая до 10–15 секунд
const intervals = [5000, 5000, 10000, 15000, 15000]; // Progressive delay
3

Установите максимальный таймаут

Прекратите опрос после 15 минут. Если задача не завершена, считайте её неудачной и проверьте логи
4

Используйте webhooks в продакшене

В продакшене используйте webhooks вместо polling, чтобы снизить задержки и нагрузку

Реализация polling

async function pollVideoStatus(generationId) {
  const intervals = [2000, 3000, 5000, 10000, 15000]; // 2s, 3s, 5s, 10s, 15s
  const maxAttempts = 60; // 15 minutes max
  
  let attempt = 0;
  while (attempt < maxAttempts) {
    const status = await fetchStatus(generationId);
    
    if (status.status === 'completed' || status.status === 'failed') {
      return status;
    }
    
    const delay = intervals[Math.min(attempt, intervals.length - 1)];
    await sleep(delay);
    attempt++;
  }
  
  throw new Error('Generation timed out after 15 minutes');
}

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
Лимиты: максимум 60 проверок статуса в минуту на один API-ключ. Используйте webhooks, чтобы не упереться в лимит.

Именование моделей

Поле model в ответе показывает использованную конфигурацию:
  • kling-o3-video-5s — 5 секунд, 720p
  • kling-o3-video-10s — 10 секунд, 720p
  • kling-o3-video-15s — 15 секунд, 720p