Kling 4.0
Генеруйте відео за допомогою Kling 4.0, використовуючи текст, перший та останній кадри або мультимодальні референси. На цій сторінці описано повний робочий процес від запиту до результату для цієї моделі.
ID моделі в API: kling-4-0
Генерація виконується асинхронно. Збережіть taskId, отриманий під час створення завдання, а потім перевіряйте його статус або налаштуйте отримання вебхуку.
Можливості
| Функція | Допустимі значення |
|---|---|
| Роздільна здатність відео | 720p · 1080p |
| Тривалість відео | 3–30 s |
| Співвідношення сторін | auto, 16:9, 9:16, 1:1, 21:9 |
| Референсні зображення | До 10 зображень |
| Референсні відео | До 5 відео |
| Референсні аудіофайли | До 3 аудіофайлів |
| Усі референси разом | Загалом до 15 допоміжних файлів |
| Референсні відео (Σ) | 30 секунд |
| seed | Не підтримується |
Тарифи та кредити
Оплата за генерацію відео здійснюється в кредитах відповідно до тарифікованої тривалості в секундах. Якщо вихідне відео не завантажувалося, тарифікується лише тривалість створеного відео. Якщо вихідне відео використовувалося, до тарифікованого часу також додається тривалість референсного відео.
У таблиці нижче наведено тарифи в кредитах за секунду, а не повну вартість завдання. Тариф залежить від моделі, роздільної здатності створеного відео, а також використання референсних відео в режимі «відео за референсом». Формули та приклади розрахунку повної вартості наведено під таблицею.
| Роздільна здатність відео | Без референсного відео | З референсним відео |
|---|---|---|
720p | 13 кред./с | 8 кред./с |
1080p | 20 кред./с | 13 кред./с |
- Без референсного відео: тривалість готового відео в секундах × тариф без відео.
- За наявності вхідного відео T — сумарна тривалість відеозразків у секундах, виміряна сервером. Підсумкову кількість кредитів округлюють угору.
ceil((duration + max(duration, T)) × rate) - Використання лише зображень або аудіо як референсів тарифікується за тарифом без відео. Тариф із відео застосовується лише в режимі генерації за референсом, якщо вхідні дані містять референсні відео.
Приклади розрахунку вартості
Текст у відео (5 секунд, 720p): 5 × 13 = 65 кредитів.
Готове відео 5 секунд (720p) із референсним відео тривалістю 5 секунд: (5 + 5) × 8 = 80 кредитів.
Кредити резервуються під час надсилання запиту і списуються у разі успіху. Завдання, що завершилися помилкою або скасовані через таймаут, повертають кредити на баланс. Статус billing_status зі значенням refund_failed означає, що повернення не завершилося; перевірте логи API або зверніться до підтримки.
Автентифікація
Створіть ключ API у панелі керування. Повний ключ відображається лише один раз. Зберігайте його на своєму сервері та надсилайте як Bearer-токен у кожному запиті.
Базовий URL
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonЗадайте змінну середовища SEEVIO_API_KEY перед запуском цих прикладів. Приклади на JavaScript виконуються на вашому сервері за допомогою Node.js; приклади на Python використовують бібліотеку requests.
Швидкий старт
Надішліть цей мінімальний запит, збережіть отриманий taskId, а потім використайте приклад запиту статусу, наведений нижче. Значення credits у відповіді на створення — це зарезервована сума кредитів.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "kling-4-0",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video"
}
}'Приклад відповіді на запит створення завдання
Після успішного прийняття запиту API повертає таку відповідь у форматі JSON. Параметр taskId — це унікальний ідентифікатор завдання, який використовується для подальшої перевірки статусу; credits — це кількість кредитів, зарезервованих для виконання цього завдання. Ця відповідь лише підтверджує створення завдання, але не означає, що відео вже готове. Щоб отримати готовий відеоролик, потрібно періодично опитувати статус завдання або налаштувати Webhook.
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 65
}Створення завдання
POST https://api.seevio.ai/v1/videos/generationsНадішліть об'єкт JSON, що містить model та input, а також необов'язкове поле callback_url. Завжди вказуйте ID моделі, зазначений на цій сторінці; якщо модель не вказано, автоматично вибирається seedance-2-0.
Тіло запиту
| Поле | Тип | Обов’язково | Опис та обмеження |
|---|---|---|---|
model | string | Так | Ідентифікатор моделі. Щоб використовувати Kling 4.0, установіть для цього поля значення kling-4-0. |
callback_url | string | Ні | Публічна адреса HTTPS для отримання POST-запитів про завершення роботи або помилку. Приватні мережі та localhost не підтримуються. Приклад: https://example.com/webhooks/seevio |
input | object | Так | Вхідні параметри |
Вхідні параметри
| Поле | Тип | За замовчуванням | Опис та обмеження |
|---|---|---|---|
input.generation_type | string | text-to-video | text-to-video | image-to-video | reference-to-video |
input.prompt | string | — | До 8000 символів. Опис необов’язковий лише для генерації із зображення. Посилання нумеруються за типом у порядку масиву від @Image1, @Video1 і @Audio1. |
input.duration | integer | 5 | 3–30 s |
input.resolution | string | 720p | 720p | 1080p |
input.aspect_ratio | string | Залежить від режиму | Допустимі значення auto16:99:161:121:9Фіксоване співвідношення визначає формат результату. Якщо поле пропущено або задано auto, для тексту використовується 16:9, а для зображення — пропорції першого кадру. У режимі зразків пропорції визначаються за зображеннями чи відео. |
input.image_urls | string[] | [] | Для генерації із зображення передайте перший кадр і за потреби останній. У режимі зразків можна передати до 10 зображень. |
input.keyframe_urls | string[] | [] | Проміжні кадри в порядку відтворення для генерації із зображення. До 9 без останнього кадру або 8 із ним. |
input.video_urls | string[] | [] | Лише для режиму зразків. Передайте HTTPS-посилання на відео, що слугуватимуть зразком рухів або роботи камери. До 5 відео тривалістю 2–30 секунд кожне, загалом не більше 30 секунд. |
input.audio_urls | string[] | [] | Лише для режиму зразків. Передайте HTTPS-посилання на аудіозаписи, які слугуватимуть зразком голосу чи звуку. До 3 записів тривалістю 5–30 секунд кожен. |
input.keep_original_sound | boolean | false | Якщо video_urls містить відеозразок, true зберігає його початковий звук, а false (типово) створює новий. За відсутності відеозразка параметр ігнорується. |
Відповідь на створення
HTTP 200 повертає taskId (рядок) та credits (число). Це підтверджує створення завдання, але не його завершення. Значення нижче відповідає 5-секундному відео 720p зі швидкого старту.
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 65
}Режими генерації та приклади
Текст у відео
Генерація з текстової підказки. Посилання на медіафайли в цьому режимі не обробляються.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "kling-4-0",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video"
}
}'Перший кадр
Передайте одне зображення як перший кадр, а потім опишіть рух у текстовому prompt.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "kling-4-0",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first.jpg"
]
}
}'Перший та останній кадри
Для генерації із зображення передайте перший кадр і за потреби останній. У режимі зразків можна передати до 10 зображень.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "kling-4-0",
"input": {
"prompt": "",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first.jpg",
"https://example.com/last.jpg"
]
}
}'Приклад із ключовими кадрами: розквіт троянди
Створіть восьмисекундний таймлапс із чотирьох фото з одного ракурсу. В image_urls передайте закритий бутон і розквітлу троянду як перший та останній кадри. У keyframe_urls спочатку вкажіть фото пелюсток, що почали розкриватися, а потім напіврозкритої квітки. Відео пройде від бутона через ці дві стадії до повного цвітіння. Масив задає порядок кадрів, а модель визначає час їхньої появи.
Замініть адреси медіафайлів example.com на власні загальнодоступні HTTPS-файли. Приклади URL-адрес наведено лише для ілюстрації структури запиту, вони не є тестовими файлами для завантаження.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "kling-4-0",
"input": {
"prompt": "A time-lapse of a rose opening. Keep the camera still and the light soft as the petals unfold.",
"duration": 8,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/rose-bud.jpg",
"https://example.com/rose-full-bloom.jpg"
],
"keyframe_urls": [
"https://example.com/rose-opening.jpg",
"https://example.com/rose-half-open.jpg"
]
}
}'Мультимодальні референси
Комбінуйте зображення, відео та аудіореференси. Текстовий prompt залишається обов’язковим. Вхідне референсне відео змінює формулу розрахунку вартості.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "kling-4-0",
"input": {
"prompt": "Animate @Image1 with the movement of @Video1 and ambience from @Audio1.",
"duration": 5,
"resolution": "720p",
"generation_type": "reference-to-video",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/motion.mp4"
],
"audio_urls": [
"https://example.com/surf.mp3"
],
"keep_original_sound": false
}
}'Запит статусу завдання
GET https://api.seevio.ai/v1/tasks/{taskId}Замініть ID з прикладу на taskId, отриманий під час створення. Запити повертають лише ті завдання, які належать користувачеві ключа API; до невідомих або недоступних ID повертається помилка HTTP 404.
Для початку опитуйте статус кожні 10–20 секунд, за умов помилки HTTP 429 збільшуйте інтервал і зупиняйтеся, коли статус зміниться на completed або failed. Для продакшену краще використовувати вебхуки. Кожен приклад коду нижче виконує один запит.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| Статус | Опис та обмеження |
|---|---|
queued | Прийнято й очікує на запуск. |
generating | Генерація триває. |
completed | Успішно завершено. Завантажте файли з data.results до закінчення терміну дії. |
failed | Помилка виконання. Перевірте failed_reason та billing_status. |
| Поле | Тип | Опис та обмеження |
|---|---|---|
id | string | Ідентифікатор завдання. Це taskId з відповіді на створення. |
created_at | number | Час створення завдання в секундах Unix. |
model | string | Публічний ID моделі, використаний для цього завдання. |
billing_status | string | Статус оплати: reserved, charged, refunded або refund_failed. |
credits | number | Кредити, зарезервовані для цього завдання. Це значення зберігається після повернення коштів; перевіряйте billing_status для визначення остаточного статусу розрахунку. |
failed_reason | string | null | Причина помилки для неуспішних завдань; в інших випадках — null. Відповіді на запити для неуспішних завдань не містять об’єкта data. |
data | object | Міститься у запитах успішних завдань. Передає результат та деталі обробки. |
data.results | string[] | Масив URL-адрес готових відео. Порожній до завершення або після закінчення терміну зберігання відео. |
data.video_expires_at | string | null | Термін дії посилання на відео у форматі ISO 8601 або null, якщо воно ще не готове. Збережіть результат до настання цього часу. |
data.last_frame_url | string | null | URL-адреса останнього кадру, якщо він був запрошений і готовий; в іншому випадку — null. |
data.processing_time | number | null | Тривалість обробки завдання в секундах, якщо доступно; в іншому випадку — null. |
Завершене завдання: відповідь на запит із результатами відео
Коли запит повертає статус status=completed, це означає, що генерацію відео завершено. Отримайте URL-адреси відео з масиву data.results і завантажте їх до настання часу, вказаного у data.video_expires_at. Значення billing_status=charged вказує на те, що зарезервовані кредити було списано.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "kling-4-0",
"is_draft": false,
"draft_task_id": null,
"status": "completed",
"billing_status": "charged",
"credits": 65,
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Помилка виконання завдання: відповідь на запит із деталями збою та оплати
Коли запит повертає статус status=failed, це означає, що генерація завершилася помилкою. Причину збою вказано в полі failed_reason, а результат повернення коштів — у billing_status. У цьому прикладі статус refunded означає, що кредити було повернено. У полі credits залишається початкова зарезервована сума, а об'єкт data у відповіді відсутній.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "kling-4-0",
"is_draft": false,
"draft_task_id": null,
"status": "failed",
"billing_status": "refunded",
"credits": 65,
"failed_reason": "provider_failed"
}Вебхуки
Вкажіть callback_url у запиті на створення, щоб отримувати POST-запит JSON після успішного виконання або помилки завдання. Поверніть відповідь 2xx протягом 15 секунд. У разі невдалої доставки запити повторюються; налаштуйте ідемпотентну обробку повторних запитів за ID завдання.
Ваша кінцева точка зворотного виклику (callback endpoint) має приймати запити POST із тілом запиту у форматі JSON (Content-Type: application/json).
Створення завдання з вебхуком
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "kling-4-0",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video"
},
"callback_url": "https://example.com/webhooks/seevio"
}'Завдання виконано: дані успішного зворотного виклику
У разі успішної генерації зворотний виклик містить status=completed. Використовуйте id для ідентифікації завдання, а дані з data.results — для отримання посилань на відео. Завантажте та збережіть результати до настання часу, вказаного в data.video_expires_at.
created_at — час створення події, task_created_at — час створення завдання, у секундах Unix. Приклади показують рекомендовані поля; відповідь може містити додаткові поля.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652848,
"model": "kling-4-0",
"status": "completed",
"task_created_at": 1788652800,
"billing_status": "charged",
"credits": 65,
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Помилка завдання: дані зворотного виклику про збій
Якщо генерація завершилася збоєм, зворотний виклик містить status=failed. Використовуйте id для ідентифікації завдання, failed_reason для отримання причини збою та credits_refunded для перевірки кількості повернених кредитів.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652848,
"model": "kling-4-0",
"status": "failed",
"task_created_at": 1788652800,
"billing_status": "refunded",
"credits": 65,
"failed_reason": "provider_failed",
"credits_refunded": 65
}Приклад обробника
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrls = callbackData.data.results;
// Save the video URLs and mark this task as completed in your application.
console.log(callbackData.id, videoUrls);
}
if (callbackData.status === "failed") {
const { failed_reason, credits_refunded } = callbackData;
// Record the failure reason and refunded credits for this task.
console.error(callbackData.id, failed_reason, credits_refunded);
}
return new Response(null, { status: 200 });
}Цей приклад для Next.js зчитує тіло зворотного виклику в JSON та безпосередньо обробляє успішно виконані й невдалі завдання. Додайте у свій додаток збереження даних та дедуплікацію за ID завдань; додавайте тривалі процеси в чергу, перш ніж підтверджувати отримання зворотного виклику.
Вимоги до медіафайлів та обмеження
- Усі URL-адреси медіа та вебхуків мають бути публічними HTTPS-посиланнями. Уникайте localhost, приватних IP-адрес та файлів, що потребують файлів cookie чи авторизації. Посилання на референсні відео/аудіо мають вести безпосередньо на файли.
- Розмір кожного відео не повинен перевищувати 100 МБ.
- Розмір кожного аудіофайлу не повинен перевищувати 15 МБ.
- Загалом до 15 допоміжних файлів