Опрос и список задач
Получайте отдельную задачу, список последних задач или обновляйте все активные; узнайте, как статус меняется от очереди до завершения.
Жизненный цикл задачи
Задача проходит через следующие статусы:
| Статус | Значение |
|---|---|
queued | Принята; ожидает свободного места для генерации. |
processing | Генерируется; progress растёт от 0 до 100. |
completed | Завершена. Установлены resultUrl и thumbnailUrl. |
failed | Произошла ошибка, причина указана в errorMessage. |
cancelled | Задача отменена до завершения. |
Получите одну задачу
GET /api/ai-video/jobs/{id}curl 'https://kling-4.ai/api/ai-video/jobs/0b6c2f6e-6d5f-4a4e-9d3e-7c9a1f2b8d41' \
-H 'x-api-key: YOUR_API_KEY'Возвращает { "job": … } с той же структурой, что и при создании задачи. Этот метод при каждом вызове обновляет задачу из процесса генерации, поэтому для опроса нужно использовать именно его. Подходит интервал 10–15 секунд; генерация обычно занимает несколько минут.
Неизвестный или чужой ID задачи возвращает 404 JOB_NOT_FOUND.
Получите список своих задач
GET /api/ai-video/jobscurl 'https://kling-4.ai/api/ai-video/jobs' \
-H 'x-api-key: YOUR_API_KEY'Возвращает { "jobs": [...] } — 50 последних задач, начиная с самой новой. Метод читает базу данных без обращения к процессу генерации, поэтому запрос лёгкий, но для ещё создаваемых видео статус может отставать на одно обновление.
Синхронизируйте все активные задачи
POST /api/ai-video/jobs/synccurl -X POST 'https://kling-4.ai/api/ai-video/jobs/sync' \
-H 'x-api-key: YOUR_API_KEY'Одним вызовом обновляет из процесса генерации все ваши задачи в очереди и обработке, затем возвращает обновлённый список. Это удобно, когда приложение возвращается из офлайн-режима и не хочется опрашивать каждую задачу отдельно.
Срок действия ссылок на результат
resultUrl ведёт на нашу CDN, но срок действия ссылки ограничен. Время истечения указано в resultExpiresAt. Рассматривайте URL как временную возможность забрать файл, а не постоянное хранилище:
if (job.status === 'completed' && job.resultUrl) {
const video = await fetch(job.resultUrl);
await fs.promises.writeFile(`out/${job.id}.mp4`, Buffer.from(await video.arrayBuffer()));
}Скачайте файл в своё хранилище сразу после завершения задачи. Сама запись — промпт, параметры и история статусов — остаётся в истории независимо от скачивания.