Kling API

Одной моделью делает видео по описанию и по референсам — изображениям и видео. Разрешение 720p, 1080p, соотношение сторон 16:9, 9:16, 1:1, 21:9, на вход до 10 изображений, описание до 8 000 символов. Модель Kuaishou, выпущена 15 октября 2026 года.

Одной моделью делает видео по описанию и по ключевым кадрам — первому, промежуточным и последнему. Разрешение 720p, 1080p, соотношение сторон 16:9, 9:16, 1:1, 21:9, описание до 8 000 символов. Модель Kuaishou, выпущена 15 октября 2026 года.

Kling 4.0 API работает в России без VPN: один API ключ GEN202, оплата рублями с российской карты.

Цена: за секунду, 720p — 48.8 кр. (24,4 ₽ · $0.2218), 1080p — 73 кр. (36,5 ₽ · $0.3318).

Цена: за секунду, 720p — 48.8 кр. (24,4 ₽ · $0.2218), 1080p — 73 кр. (36,5 ₽ · $0.3318).

кр. — кредиты, покупаются за рубли.

Model

Статус

работает

Статус

работает

Песочница

Input

Чтобы создать видео — войдите и получите 50 кредитов на тесты и любое использование сервиса.

{
  "model": "kling/4-0-reference-to-video",
  "input": {
    "prompt": "The ginger cat from @image_1, in a white spacesuit, floats in zero gravity above Earth. It slowly turns its head toward the camera, front paws drifting; sunlight glints across the helmet visor, the blue planet reflected in the glass. The camera eases backwards, revealing a solar panel at the edge of frame. Cinematic, soft rim light, shallow depth of field.",
    "aspect_ratio": "1:1",
    "resolution": "720p",
    "duration": 3,
    "image_urls": [
      "https://gen202.com/assets/sample-nano-banana-pro.jpg"
    ]
  }
}
Output
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "cm8r4t0vk0001s60p2xq7f9ab",
    "model": "kling/4-0-reference-to-video",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://file.example/result.mp4\"]}",
    "failCode": "",
    "failMsg": "",
    "creditsConsumed": 146.4
  }
}
Input

Чтобы создать видео — войдите и получите 50 кредитов на тесты и любое использование сервиса.

{
  "model": "kling/4-0-keyframe-to-video",
  "input": {
    "prompt": "Ginger cat in a white spacesuit floats in zero gravity above Earth. It slowly turns its head toward the camera, front paws drifting; sunlight glints across the helmet visor, the blue planet reflected in the glass. The camera eases backwards, revealing a solar panel at the edge of frame. Cinematic, soft rim light, shallow depth of field.",
    "aspect_ratio": "auto",
    "resolution": "720p",
    "duration": 3,
    "first_frame_url": "https://gen202.com/assets/sample-nano-banana-pro.jpg"
  }
}
Output
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "cm8r4t0vk0001s60p2xq7f9ab",
    "model": "kling/4-0-keyframe-to-video",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://file.example/result.mp4\"]}",
    "failCode": "",
    "failMsg": "",
    "creditsConsumed": 146.4
  }
}

Цена Kling 4.0

Цена за секунду. Списывается фактический расход, о котором сообщил поставщик.

Вариант Наша цена
720P with video input 29.2 кр. $0.132714,6 ₽
1080P with video input 43.8 кр. $0.199121,9 ₽
720P no video input 48.8 кр. $0.221824,4 ₽
1080P no video input 73 кр. $0.331836,5 ₽

кр. — кредиты, покупаются за рубли.

Цена за секунду. Списывается фактический расход, о котором сообщил поставщик.

Вариант Наша цена
720P 48.8 кр. $0.221824,4 ₽
1080P 73 кр. $0.331836,5 ₽

кр. — кредиты, покупаются за рубли.

Вызов через API

POST https://api.gen202.com/api/v1/jobs/createTask
GET https://api.gen202.com/api/v1/jobs/recordInfo?taskId=…

Ролик делается минуты, поэтому файл не приходит в ответ на запрос. Первый вызов ставит задачу и сразу отвечает её номером, второй по этому номеру отдаёт состояние задачи, а когда она готова — ссылку на результат. Ключ передаётся в обоих запросах заголовком Authorization: Bearer sk-… и выпускается в кабинете. На один ключ шлюз пропускает 30 постановок задачи и 300 запросов состояния в минуту.

Поля запроса

Значения проверяются до обращения к поставщику: поле не из списка модели или значение вне перечисления возвращают 422 и кредитов не тратят.

ПолеТипОбяз.Допустимые значения
model текст обязательное kling/4-0-reference-to-video
input объект обязательное Параметры генерации — поля из таблицы ниже

Поля input

ПолеТипОбяз.Допустимые значения
prompt текст обязательное от 1 до 8 000 символов
duration целое число опц. целое от 3 до 30
resolution значение из списка опц. 720p · 1080p
aspect_ratio значение из списка опц. auto · 16:9 · 9:16 · 1:1 · 21:9
image_urls список ссылок опц. до 10 ссылок на изображение
video_urls список ссылок опц. до 5 ссылок на видео
keep_original_sound да или нет опц. true или false

Поле image_urls. Изображения-референсы: до 10. На них показывают персонажа, лист персонажа или раскадровку; стороны от 300 точек, пропорции от 2:5 до 5:2. В промпте на изображение ссылаются @image_1, @image_2 — по порядку в списке.

Поле video_urls. Видео-референсы: до 5, все вместе — до 30 секунд. Модель берёт с них игру персонажа, действие, движение камеры и темп. В промпте — @video_1, @video_2 по порядку.

Ссылка на исходный файл принимается только полным адресом на http или https: не длиннее 2048 символов, на общедоступном сайте, без имени и пароля перед адресом и без порта, кроме 80 и 443. Относительный путь, а также адреса внутри сети — localhost, 127.0.0.1, 10.0.0.5, 192.168.1.2 — и имена без точки шлюз отклоняет ответом 422, к поставщику не обращаясь.

Ответ

Оба запроса отвечают одним конвертом: {"code":…,"msg":…,"data":…}, где code повторяет HTTP-статус, а полезное лежит в data. Тот же конверт приходит и при отказе — разбирать две формы ответа не нужно.

/api/v1/jobs/createTask

ПолеТипЧто в нём
data.taskId строка Номер задачи. Больше в ответе ничего нет и быть не может — работа только началась.

/api/v1/jobs/recordInfo

ПолеТипЧто в нём
data.taskId строка Номер задачи — тот же, что вернул createTask.
data.model строка Имя модели в том виде, в каком его прислал клиент.
data.state строка Состояние задачи: waiting, queuing, generating, success или fail.
data.param строка Параметры, с которыми задача создана, — строкой JSON внутри JSON.
data.resultJson строка Результат строкой JSON внутри JSON: {"resultUrls":["https://…"]} — разбирается вторым разбором. До завершения задачи — пустая строка.
data.failCode строка Код неудачи из таблицы ниже. У остальных задач — пустая строка.
data.failMsg строка Причина неудачи словами модели. Иначе пустая строка.
data.failComment строка Наш комментарий к словам модели, по-русски: что произошло. Есть не у всякой неудачи; иначе пустая строка.
data.costTime число Сколько задача заняла, миллисекунды. Пока не завершилась — null.
data.completeTime число Когда завершилась, миллисекунды эпохи Unix. Пока не завершилась — null.
data.createTime число Когда создана, миллисекунды эпохи Unix.
data.updateTime число Когда состояние менялось в последний раз, миллисекунды эпохи Unix.
data.creditsConsumed число Сколько кредитов списано. Ноль, пока задача не завершилась, и ноль у неудачной.

Состояния задачи

Состояние лежит в поле state ответа /api/v1/jobs/recordInfo. Первые три означают, что работа идёт: запрос надо повторить примерно через 3 секунды — чаще спрашивать нечего, столько же ждёт между опросами сам шлюз. Два последних состояния окончательные: после них задача не меняется.

stateЧто происходит
waiting Задача принята и стоит в очереди шлюза; поставщику она ещё не отправлена.
queuing Поставщик задачу принял и поставил в свою очередь.
generating Генерация идёт.
success Готово: ссылки на результат лежат в resultJson, в creditsConsumed — сколько списано.
fail Задача не удалась: причина в failCode и failMsg, удержанные кредиты возвращены целиком.

Задача идёт, пока модель не пришлёт результат или отказ. Причина неудачи приходит двумя полями: failCode из таблицы ниже и failMsg словами.

failCodeЧто произошло
501 Поставщик вернул отказ: генерация не удалась.
408 Модель не приняла задачу за 60 минут или не отвечала сутки.
404 Поставщик не знает такой задачи.
429 Поставщик отбил создание задачи по своему лимиту.
500 Поломка на нашей стороне; подробности остаются в журнале шлюза.

Слова модели в failMsg бывают непонятны, поэтому к части неудач шлюз добавляет поле failComment — наш комментарий по-русски о том, что произошло. У остальных неудач это поле пустое.

failMsg, примерfailComment
Image fetch failed. Модель не смогла скачать файл из нашего хранилища. Вероятно, это разовый сбой, повторите запрос. Если ошибка повторится — напишите в поддержку: hi@gen202.com
File type not supported По ссылке открывается страница сайта, а не файл. Загрузите сам файл или дайте прямую ссылку на него.
image #2: width and height must be between 300px and 6000px (got 262x377) (invalid_asset_material) Одна из картинок слишком маленькая. Seedance принимает картинки от 300 до 6000 пикселей по каждой стороне.
Seedance identified your task as video editing based on your prompt. Seedance понял запрос как редактирование присланного видео. В песочнице и чате выберите режим «Редактирование видео», в API поставьте пропорции adaptive и длительность −1.
Seedance identified your task as video extension based on your prompt. Seedance решил, что присланное видео нужно продлить. Для этого поставьте пропорции adaptive, а если продлевать не нужно — уберите эту просьбу из промта.
generate task timeout. Модель не успела создать результат и сама остановила задачу.
Internal Error Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The request failed because the input image may contain sensitive information. Модель отклонила загруженную картинку из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The generated content was filtered by the safety system. Модель отклонила запрос из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The model provider rejected or dropped the task creation request. Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
No result from the provider within the task deadline. Модель либо не приняла задачу за 15 минут (у видео — за 60), либо не ответила за сутки.

Ссылка на готовый файл живёт 14 дней — столько его хранит поставщик. Файл, который нужен дольше, скачивайте к себе сразу после того, как задача пришла в состояние success.

Отказы

Тело отказа одно на все случаи: {"code":…,"msg":…,"data":null}. Задача, не дошедшая до результата, не тарифицируется — удержанные кредиты возвращаются целиком.

КодАдресКогда
400 /api/v1/jobs/createTask Тело запроса — не разбираемый JSON.
401 /api/v1/jobs/createTask Ключа нет в заголовке Authorization, либо он неверный или отключён.
402 /api/v1/jobs/createTask Свободных кредитов меньше, чем удерживается под задачу.
403 /api/v1/jobs/createTask Аккаунт заблокирован: вызовы модели, пополнение и загрузка файлов ему закрыты. Ключи при этом не отключены — запрет лежит на аккаунте.
413 /api/v1/jobs/createTask Тело запроса больше 512 КиБ.
415 /api/v1/jobs/createTask Тело отправлено не как application/json или заголовок Content-Type не передан.
422 /api/v1/jobs/createTask Поле model пустое или его имени нет в каталоге, input — не объект, поле не из списка модели либо значение вне её перечисления. В сообщении перечислено, что принимается. Тот же код — если во входе наша ссылка на готовый результат старше 14 дней: файла уже нет, его нужно загрузить заново. И если модель не может выполнить именно это сочетание полей: в сообщении сказано, что поменять, — например, другие файлы-образцы.
429 /api/v1/jobs/createTask Больше 30 запросов в минуту на один ключ, больше 50 незавершённых задач на аккаунте либо таймаут: за час 5 запросов к моделям этого вида отклонены из-за чувствительной темы, и запуск всех моделей этого вида приостановлен. У такого отказа в теле есть поле timeout с временем окончания паузы, а в заголовке Retry-After — секунды до него.
500 /api/v1/jobs/createTask Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.
401 /api/v1/jobs/recordInfo Ключа нет в заголовке Authorization, либо он неверный или отключён.
404 /api/v1/jobs/recordInfo Задачи с таким номером нет или она создана другим аккаунтом.
422 /api/v1/jobs/recordInfo Параметр taskId не передан.
429 /api/v1/jobs/recordInfo Больше 300 запросов в минуту на один ключ.
500 /api/v1/jobs/recordInfo Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.

Пример вызова

task.sh
# 1. Поставить задачу — в ответе придёт её номер
TASK=$(curl -s https://api.gen202.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer sk-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling/4-0-reference-to-video",
    "input": {
      "prompt": "The ginger cat from @image_1, in a white spacesuit, floats in zero gravity above Earth. It slowly turns its head toward the camera, front paws drifting; sunlight glints across the helmet visor, the blue planet reflected in the glass. The camera eases backwards, revealing a solar panel at the edge of frame. Cinematic, soft rim light, shallow depth of field.",
      "aspect_ratio": "1:1",
      "resolution": "720p",
      "duration": 3,
      "image_urls": [
        "https://gen202.com/assets/sample-nano-banana-pro.jpg"
      ]
    }
  }' | jq -r '.data.taskId')

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while true; do
  RECORD=$(curl -s "https://api.gen202.com/api/v1/jobs/recordInfo?taskId=$TASK" \
    -H "Authorization: Bearer sk-ваш-ключ")
  STATE=$(echo "$RECORD" | jq -r '.data.state')
  case "$STATE" in success|fail) break;; esac
  sleep 3
done

# 3. Забрать результат. Ссылка на файл лежит в resultJson — это строка JSON
#    внутри JSON, поэтому её разбирают вторым разбором (fromjson)
echo "$RECORD" | jq -r '.data |
  if .state == "fail"
  then "отказ \(.failCode): \(.failMsg)"
  else .resultJson | fromjson | .resultUrls[0]
  end'
task.py
import json
import time

import requests

headers = {"Authorization": "Bearer sk-ваш-ключ"}

# 1. Поставить задачу — в ответе придёт её номер
created = requests.post(
    "https://api.gen202.com/api/v1/jobs/createTask",
    headers=headers,
    json={
      "model": "kling/4-0-reference-to-video",
      "input": {
        "prompt": "The ginger cat from @image_1, in a white spacesuit, floats in zero gravity above Earth. It slowly turns its head toward the camera, front paws drifting; sunlight glints across the helmet visor, the blue planet reflected in the glass. The camera eases backwards, revealing a solar panel at the edge of frame. Cinematic, soft rim light, shallow depth of field.",
        "aspect_ratio": "1:1",
        "resolution": "720p",
        "duration": 3,
        "image_urls": [
          "https://gen202.com/assets/sample-nano-banana-pro.jpg"
        ]
      }
    },
).json()
task_id = created["data"]["taskId"]

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while True:
    task = requests.get(
        "https://api.gen202.com/api/v1/jobs/recordInfo",
        headers=headers,
        params={"taskId": task_id},
    ).json()["data"]
    if task["state"] in ("success", "fail"):
        break
    time.sleep(3)

# 3. Разобрать итог. У неудачи причина в failCode и failMsg
if task["state"] == "fail":
    raise SystemExit("отказ " + task["failCode"] + ": " + task["failMsg"])

# resultJson — строка JSON внутри JSON, поэтому разбор второй
result = json.loads(task["resultJson"])
print(result["resultUrls"][0])
print("списано кредитов:", task["creditsConsumed"])

Пример проходит весь путь: ставит задачу, повторяет запрос состояния раз в 3 секунды, пока задача не закончится, и разбирает ответ до ссылки на файл. Разборов два, потому что поле resultJson — строка JSON внутри JSON. В теле первого запроса стоят обязательные поля модели и значения из её перечислений, поэтому он проходит проверку шлюза как есть. Подставить остаётся только свой ключ. Пример на оболочке разбирает ответ через jq; на Python своего ничего не нужно, кроме requests.

POST https://api.gen202.com/api/v1/jobs/createTask
GET https://api.gen202.com/api/v1/jobs/recordInfo?taskId=…

Ролик делается минуты, поэтому файл не приходит в ответ на запрос. Первый вызов ставит задачу и сразу отвечает её номером, второй по этому номеру отдаёт состояние задачи, а когда она готова — ссылку на результат. Ключ передаётся в обоих запросах заголовком Authorization: Bearer sk-… и выпускается в кабинете. На один ключ шлюз пропускает 30 постановок задачи и 300 запросов состояния в минуту.

Поля запроса

Значения проверяются до обращения к поставщику: поле не из списка модели или значение вне перечисления возвращают 422 и кредитов не тратят.

ПолеТипОбяз.Допустимые значения
model текст обязательное kling/4-0-keyframe-to-video
input объект обязательное Параметры генерации — поля из таблицы ниже

Поля input

ПолеТипОбяз.Допустимые значения
prompt текст обязательное от 1 до 8 000 символов
duration целое число опц. целое от 3 до 30
resolution значение из списка опц. 720p · 1080p
aspect_ratio значение из списка опц. auto · 16:9 · 9:16 · 1:1 · 21:9
first_frame_url ссылка опц. одна ссылка на изображение
keyframe_urls список ссылок опц. до 8 ссылок на изображение
last_frame_url ссылка опц. одна ссылка на изображение

Поле keyframe_urls. Промежуточные кадры: до 8, по порядку. Число кадров вместе с первым и последним ограничено длиной видео: 3 секунды — до 4 кадров, 4 секунды — до 5, и так далее. Все 10 кадров можно дать с 9 секунд.

Ссылка на изображение принимается только полным адресом на http или https: не длиннее 2048 символов, на общедоступном сайте, без имени и пароля перед адресом и без порта, кроме 80 и 443. Относительный путь, а также адреса внутри сети — localhost, 127.0.0.1, 10.0.0.5, 192.168.1.2 — и имена без точки шлюз отклоняет ответом 422, к поставщику не обращаясь.

Ответ

Оба запроса отвечают одним конвертом: {"code":…,"msg":…,"data":…}, где code повторяет HTTP-статус, а полезное лежит в data. Тот же конверт приходит и при отказе — разбирать две формы ответа не нужно.

/api/v1/jobs/createTask

ПолеТипЧто в нём
data.taskId строка Номер задачи. Больше в ответе ничего нет и быть не может — работа только началась.

/api/v1/jobs/recordInfo

ПолеТипЧто в нём
data.taskId строка Номер задачи — тот же, что вернул createTask.
data.model строка Имя модели в том виде, в каком его прислал клиент.
data.state строка Состояние задачи: waiting, queuing, generating, success или fail.
data.param строка Параметры, с которыми задача создана, — строкой JSON внутри JSON.
data.resultJson строка Результат строкой JSON внутри JSON: {"resultUrls":["https://…"]} — разбирается вторым разбором. До завершения задачи — пустая строка.
data.failCode строка Код неудачи из таблицы ниже. У остальных задач — пустая строка.
data.failMsg строка Причина неудачи словами модели. Иначе пустая строка.
data.failComment строка Наш комментарий к словам модели, по-русски: что произошло. Есть не у всякой неудачи; иначе пустая строка.
data.costTime число Сколько задача заняла, миллисекунды. Пока не завершилась — null.
data.completeTime число Когда завершилась, миллисекунды эпохи Unix. Пока не завершилась — null.
data.createTime число Когда создана, миллисекунды эпохи Unix.
data.updateTime число Когда состояние менялось в последний раз, миллисекунды эпохи Unix.
data.creditsConsumed число Сколько кредитов списано. Ноль, пока задача не завершилась, и ноль у неудачной.

Состояния задачи

Состояние лежит в поле state ответа /api/v1/jobs/recordInfo. Первые три означают, что работа идёт: запрос надо повторить примерно через 3 секунды — чаще спрашивать нечего, столько же ждёт между опросами сам шлюз. Два последних состояния окончательные: после них задача не меняется.

stateЧто происходит
waiting Задача принята и стоит в очереди шлюза; поставщику она ещё не отправлена.
queuing Поставщик задачу принял и поставил в свою очередь.
generating Генерация идёт.
success Готово: ссылки на результат лежат в resultJson, в creditsConsumed — сколько списано.
fail Задача не удалась: причина в failCode и failMsg, удержанные кредиты возвращены целиком.

Задача идёт, пока модель не пришлёт результат или отказ. Причина неудачи приходит двумя полями: failCode из таблицы ниже и failMsg словами.

failCodeЧто произошло
501 Поставщик вернул отказ: генерация не удалась.
408 Модель не приняла задачу за 60 минут или не отвечала сутки.
404 Поставщик не знает такой задачи.
429 Поставщик отбил создание задачи по своему лимиту.
500 Поломка на нашей стороне; подробности остаются в журнале шлюза.

Слова модели в failMsg бывают непонятны, поэтому к части неудач шлюз добавляет поле failComment — наш комментарий по-русски о том, что произошло. У остальных неудач это поле пустое.

failMsg, примерfailComment
Image fetch failed. Модель не смогла скачать файл из нашего хранилища. Вероятно, это разовый сбой, повторите запрос. Если ошибка повторится — напишите в поддержку: hi@gen202.com
File type not supported По ссылке открывается страница сайта, а не файл. Загрузите сам файл или дайте прямую ссылку на него.
image #2: width and height must be between 300px and 6000px (got 262x377) (invalid_asset_material) Одна из картинок слишком маленькая. Seedance принимает картинки от 300 до 6000 пикселей по каждой стороне.
Seedance identified your task as video editing based on your prompt. Seedance понял запрос как редактирование присланного видео. В песочнице и чате выберите режим «Редактирование видео», в API поставьте пропорции adaptive и длительность −1.
Seedance identified your task as video extension based on your prompt. Seedance решил, что присланное видео нужно продлить. Для этого поставьте пропорции adaptive, а если продлевать не нужно — уберите эту просьбу из промта.
generate task timeout. Модель не успела создать результат и сама остановила задачу.
Internal Error Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The request failed because the input image may contain sensitive information. Модель отклонила загруженную картинку из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The generated content was filtered by the safety system. Модель отклонила запрос из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The model provider rejected or dropped the task creation request. Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
No result from the provider within the task deadline. Модель либо не приняла задачу за 15 минут (у видео — за 60), либо не ответила за сутки.

Ссылка на готовый файл живёт 14 дней — столько его хранит поставщик. Файл, который нужен дольше, скачивайте к себе сразу после того, как задача пришла в состояние success.

Отказы

Тело отказа одно на все случаи: {"code":…,"msg":…,"data":null}. Задача, не дошедшая до результата, не тарифицируется — удержанные кредиты возвращаются целиком.

КодАдресКогда
400 /api/v1/jobs/createTask Тело запроса — не разбираемый JSON.
401 /api/v1/jobs/createTask Ключа нет в заголовке Authorization, либо он неверный или отключён.
402 /api/v1/jobs/createTask Свободных кредитов меньше, чем удерживается под задачу.
403 /api/v1/jobs/createTask Аккаунт заблокирован: вызовы модели, пополнение и загрузка файлов ему закрыты. Ключи при этом не отключены — запрет лежит на аккаунте.
413 /api/v1/jobs/createTask Тело запроса больше 512 КиБ.
415 /api/v1/jobs/createTask Тело отправлено не как application/json или заголовок Content-Type не передан.
422 /api/v1/jobs/createTask Поле model пустое или его имени нет в каталоге, input — не объект, поле не из списка модели либо значение вне её перечисления. В сообщении перечислено, что принимается. Тот же код — если во входе наша ссылка на готовый результат старше 14 дней: файла уже нет, его нужно загрузить заново. И если модель не может выполнить именно это сочетание полей: в сообщении сказано, что поменять, — например, другие файлы-образцы.
429 /api/v1/jobs/createTask Больше 30 запросов в минуту на один ключ, больше 50 незавершённых задач на аккаунте либо таймаут: за час 5 запросов к моделям этого вида отклонены из-за чувствительной темы, и запуск всех моделей этого вида приостановлен. У такого отказа в теле есть поле timeout с временем окончания паузы, а в заголовке Retry-After — секунды до него.
500 /api/v1/jobs/createTask Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.
401 /api/v1/jobs/recordInfo Ключа нет в заголовке Authorization, либо он неверный или отключён.
404 /api/v1/jobs/recordInfo Задачи с таким номером нет или она создана другим аккаунтом.
422 /api/v1/jobs/recordInfo Параметр taskId не передан.
429 /api/v1/jobs/recordInfo Больше 300 запросов в минуту на один ключ.
500 /api/v1/jobs/recordInfo Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.

Пример вызова

task.sh
# 1. Поставить задачу — в ответе придёт её номер
TASK=$(curl -s https://api.gen202.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer sk-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling/4-0-keyframe-to-video",
    "input": {
      "prompt": "Ginger cat in a white spacesuit floats in zero gravity above Earth. It slowly turns its head toward the camera, front paws drifting; sunlight glints across the helmet visor, the blue planet reflected in the glass. The camera eases backwards, revealing a solar panel at the edge of frame. Cinematic, soft rim light, shallow depth of field.",
      "aspect_ratio": "auto",
      "resolution": "720p",
      "duration": 3,
      "first_frame_url": "https://gen202.com/assets/sample-nano-banana-pro.jpg"
    }
  }' | jq -r '.data.taskId')

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while true; do
  RECORD=$(curl -s "https://api.gen202.com/api/v1/jobs/recordInfo?taskId=$TASK" \
    -H "Authorization: Bearer sk-ваш-ключ")
  STATE=$(echo "$RECORD" | jq -r '.data.state')
  case "$STATE" in success|fail) break;; esac
  sleep 3
done

# 3. Забрать результат. Ссылка на файл лежит в resultJson — это строка JSON
#    внутри JSON, поэтому её разбирают вторым разбором (fromjson)
echo "$RECORD" | jq -r '.data |
  if .state == "fail"
  then "отказ \(.failCode): \(.failMsg)"
  else .resultJson | fromjson | .resultUrls[0]
  end'
task.py
import json
import time

import requests

headers = {"Authorization": "Bearer sk-ваш-ключ"}

# 1. Поставить задачу — в ответе придёт её номер
created = requests.post(
    "https://api.gen202.com/api/v1/jobs/createTask",
    headers=headers,
    json={
      "model": "kling/4-0-keyframe-to-video",
      "input": {
        "prompt": "Ginger cat in a white spacesuit floats in zero gravity above Earth. It slowly turns its head toward the camera, front paws drifting; sunlight glints across the helmet visor, the blue planet reflected in the glass. The camera eases backwards, revealing a solar panel at the edge of frame. Cinematic, soft rim light, shallow depth of field.",
        "aspect_ratio": "auto",
        "resolution": "720p",
        "duration": 3,
        "first_frame_url": "https://gen202.com/assets/sample-nano-banana-pro.jpg"
      }
    },
).json()
task_id = created["data"]["taskId"]

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while True:
    task = requests.get(
        "https://api.gen202.com/api/v1/jobs/recordInfo",
        headers=headers,
        params={"taskId": task_id},
    ).json()["data"]
    if task["state"] in ("success", "fail"):
        break
    time.sleep(3)

# 3. Разобрать итог. У неудачи причина в failCode и failMsg
if task["state"] == "fail":
    raise SystemExit("отказ " + task["failCode"] + ": " + task["failMsg"])

# resultJson — строка JSON внутри JSON, поэтому разбор второй
result = json.loads(task["resultJson"])
print(result["resultUrls"][0])
print("списано кредитов:", task["creditsConsumed"])

Пример проходит весь путь: ставит задачу, повторяет запрос состояния раз в 3 секунды, пока задача не закончится, и разбирает ответ до ссылки на файл. Разборов два, потому что поле resultJson — строка JSON внутри JSON. В теле первого запроса стоят обязательные поля модели и значения из её перечислений, поэтому он проходит проверку шлюза как есть. Подставить остаётся только свой ключ. Пример на оболочке разбирает ответ через jq; на Python своего ничего не нужно, кроме requests.

Остальные модели этого семейства и их поля — в разделе документации Видео.

Что делает нейросеть Kling 4.0

Kling 4.0 — видеомодель Kuaishou, выпущенная 15 октября 2026 года. Цена у GEN202 — от 24,4 ₽ до 36,5 ₽ за секунду, и ставку задаёт разрешение. Видео выходит сразу со звуком и длится до 30 секунд за один запуск; у Kling 3.0 потолок — 15 секунд.

Сцену модель берёт из одного описания, из ключевых кадров или из референсов. Под это на странице два режима — «Референсы» и «Кадры», — и в поле model у них разные имена: kling/4-0-reference-to-video и kling/4-0-keyframe-to-video. Без приложенных файлов оба режима снимают видео по описанию.

В режиме «Референсы» к описанию прикладывают до 10 изображений и до 5 видео. По словам Kuaishou, изображением задают персонажа, лист персонажа или раскадровку, а видео — игру персонажа, действие, движение камеры и темп рассказа. В тексте на файлы ссылаются по месту в списке: @image_1, @video_1 и дальше.

В режиме «Кадры» задают первый кадр, до 8 промежуточных и последний — всего до 10 кадров. Модель проходит через них по порядку, а что происходит между кадрами, говорит описание.

Звук модель пишет вместе с изображением всегда, и отдельного поля для него нет. Поля запроса целиком разобраны в разделе «Kling», а предыдущая серия — с 4K и выключаемым звуком — на странице Kling 3.0.

Как снять видео в Kling 4.0: референсы или ключевые кадры

Видео создаётся на стороне Kuaishou, а запрос туда уходит через GEN202. Форма с полями стоит в песочнице: в ней видео запускают, смотрят готовым и сохраняют файлом.

Счёт посекундный: с баланса уходит ставка за каждую секунду готового видео, и в 1080p она выше, чем в 720p. С видео-референсами ставка за секунду ниже, но оплачиваются и секунды входа: к длине готового видео прибавляется большее из двух чисел — общая длина присланных видео или длина готового. Все ставки собраны в таблице цен.

Порядок работы у двух режимов общий, а различаются в нём файлы, которые кладут рядом с описанием.

  1. Выберите режим. Переключатель над формой ставит «Референсы» или «Кадры», и от него зависит, какие поля для файлов появятся в форме.
  2. Опишите сцену. В поле prompt помещается до 8 000 знаков: персонажи, действие, локация, движение камеры и реплики. Планы модель расставляет сама, поэтому смену планов описывают словами.
  3. Приложите файлы. Референсы кладут списками image_urls и video_urls, ключевые кадры — полями first_frame_url, keyframe_urls и last_frame_url. В описании на них ссылаются метками @image_1, @video_1, @first_frame, @keyframe_1 и @last_frame.
  4. Задайте длину и разрешение. Поле duration принимает от 3 до 30 секунд, поле resolution — 720p и 1080p. Оба поля меняют сумму к оплате.
  5. Проверьте замысел коротким видео. Короткое видео в 720p стоит меньше всего: описание доводят на нём, а полную длину и 1080p ставят готовому описанию.

Чем Kling 4.0 отличается от Kling 3.0

Kling 3.0 — предыдущая серия того же разработчика, и в каталоге она стоит рядом. В таблице — что задают в запросе и как это устроено у каждой из двух моделей.

Что задаютKling 4.0Kling 3.0
Длительностьот 3 до 30 секундот 3 до 15 секунд
Разрешениеполе resolution: 720p и 1080pполе mode: std, pro и 4K
Форма кадраauto, 16:9, 9:16, 1:1, 21:916:9, 9:16, 1:1
Звуквсегда, отдельного поля нетфлаг sound; без звука секунда дешевле
Кадры на входепервый, до 8 промежуточных и последнийпервый и последний, до 2 в image_urls
Референсыдо 10 изображений и до 5 видеоэлементы в поле kling_elements
Смена плановмодель расставляет самафлаг multi_shots и список multi_prompt
Длина описаниядо 8 000 знаковдо 2 500 знаков
Секунда со звуком24,4 ₽ в 720p, 36,5 ₽ в 1080p15,65 ₽ в 720p, 20,9 ₽ в 1080p

Главное различие: Kling 4.0 снимает до 30 секунд и ведёт видео через ключевые кадры, а Kling 3.0 даёт 4K, выключаемый звук и закреплённые элементы. Её поля и ставки разобраны на странице Kling 3.0.

Раскадровку, расписанную по полям запроса, — у каждого плана своё описание и своя длительность — принимает Kling O3. У Kling 4.0 планы внутри видео расставляет сама модель.

Выпуски Kling 4.0 и серии 3.0: имена у Kuaishou и даты

Kling 4.0 вышла следом за серией 3.0, и модели обеих серий стоят в каталоге GEN202. Таблица называет имя у Kuaishou, день объявления, главное изменение и имя для поля model.

Имя у KuaishouДата по анонсуЧто изменилосьИмя для поля model
Kling 4.015 октября 2026До 30 секунд за запуск, до 10 ключевых кадров, форма кадра 21:9, звук всегдаkling/4-0-reference-to-video, kling/4-0-keyframe-to-video
Kling VIDEO 3.0 Omni5 февраля 2026Рассказ из нескольких планов, у каждого плана своё описание в запросеkling/3-0-omni-reference-to-video, kling/3-0-omni-text-to-video
Kling VIDEO 3.05 февраля 2026Родной звук по флагу, разметка планов, до 15 секундkling/3-0-video

Дату выхода называет пресс-релиз Kuaishou, разосланный 19 октября 2026 года: «today announced that Kling 4.0, the new-generation video generation model of Kling AI, officially launched on October 15». Перевод наш: «сегодня объявила, что Kling 4.0, видеомодель нового поколения Kling AI, официально вышла 15 октября». Страница — пресс-релиз Kuaishou о выходе Kling 4.0.

В тот же день, 15 октября, Kling AI написал в X: «For Those Who Create. KLING 4.0 Is Now Fully Available». Перевод наш: «Для тех, кто создаёт. KLING 4.0 теперь открыта всем». Пост — объявление Kling AI в X.

Что в выпуске нового, разработчик пометил словом «New» прямо в таблице характеристик своего руководства по Kling 4.0: «Supports up to 10 keyframe inputs New», «3-30s New», «21:9New», «Stereo, 2-channel New». Перевод наш: до 10 ключевых кадров, длительность от 3 до 30 секунд, форма кадра 21:9 и стереозвук в два канала отмечены как новое.

Какой длины и в каком разрешении выходит видео Kling 4.0

Длину задаёт поле duration — целым числом секунд, от 3 до 30. Это длина одного запуска: всё видео модель снимает за один проход, без склейки из кусков.

Внутри этой длины модель сама делит сцену на планы и расставляет темп. Раскадровка у Kling 4.0 включена всегда, и отдельного поля под неё в запросе нет.

Разрешения — 720p и 1080p. У каждого своя ставка за секунду, и все строки стоят в таблице цен.

Форма кадра выбирается из 5 значений: auto, 16:9, 9:16, 1:1 и 21:9. Когда приложены ключевые кадры, форма берётся с первого кадра, и поле aspect_ratio можно не заполнять.

Что кладут в запрос Kling 4.0 кроме описания

Обязательное поле у обоих режимов одно — prompt. Описание вмещает до 8 000 знаков, а остальные поля добавляют по замыслу.

Референсы идут двумя списками ссылок: image_urls — до 10 изображений, video_urls — до 5 видео. Метка в описании повторяет место ссылки в списке: первое изображение — @image_1, первое видео — @video_1.

Ключевые кадры кладут тремя полями: first_frame_url — первый кадр, keyframe_urls — до 8 промежуточных, last_frame_url — последний. В описании на них ссылаются метками @first_frame, @keyframe_1 и @last_frame. Метку ставят только для кадра, который есть в запросе: если последнего кадра нет, метка @last_frame даст отказ.

Число кадров ограничено длиной видео: 3 секунды — до 4 кадров, 4 секунды — до 5, и так далее. Все 10 кадров можно дать с 9 секунд.

Флаг keep_original_sound нужен только вместе с видео-референсами: он оставляет в готовом видео их звук. Все поля с допустимыми значениями перечислены в таблице выше.

Что Kuaishou говорит о модели Kling 4.0

Чем разработчик считает эту модель, сказано в первых строках его руководства: «Kling 4.0 is a next-generation native multimodal AI model for video creation. It delivers more stable complex motion, stronger consistency across diverse references, and more coherent, precise, and controllable storytelling». Перевод наш: «Kling 4.0 — многомодальная модель нового поколения для создания видео. Она устойчивее держит сложное движение, точнее сохраняет сходство с разными референсами и даёт более связный, точный и управляемый рассказ». Страница — руководство Kling AI по Kling 4.0.

Первые два из трёх направлений выпуска пресс-релиз называет так: «steadier large-scale motion, with smoother continuity in high-speed action and complex camera work; native generation of up to 30 seconds in a single pass, supporting long takes and continuous storytelling with a director's mindset throughout». Перевод наш: «устойчивее крупное движение, плавнее быстрое действие и сложная работа камеры; до 30 секунд за один проход — длинные планы и непрерывный рассказ с режиссёрским взглядом от начала до конца». Страница — пресс-релиз Kuaishou от 19 октября 2026 года.

Ключевые кадры руководство описывает так: «Kling 4.0 supports first frames, last frames, start-and-last frames, and middle frames at any position in the timeline». Перевод наш: «Kling 4.0 принимает первый кадр, последний, пару из первого и последнего и промежуточные кадры в любом месте шкалы времени». Время событий между кадрами там же предлагают писать прямо в описании, например «Raise a hand at 3 seconds, turn around at 7 seconds» — «поднимает руку на третьей секунде, поворачивается на седьмой».

Про длину и планы в том же руководстве сказано: «Kling 4.0 supports single-generation videos ranging from 3 to 30 seconds. Multi-shot is enabled by default, allowing the model to automatically split shots and organize pacing based on the content». Перевод наш: «Kling 4.0 делает за одну генерацию видео от 3 до 30 секунд. Несколько планов включены по умолчанию: модель сама делит видео на планы и выстраивает темп по содержанию». В форме GEN202 поле duration принимает от 3 до 30 секунд.

Звук и раскадровка не выключаются, и разработчик пишет это прямо: «Audio-visual synchronization and Smart Storyboard are enabled by default and have no separate toggles». Перевод наш: «Синхронизация звука с изображением и умная раскадровка включены по умолчанию, отдельных переключателей у них нет». Музыку и шумы модель создаёт сама: «Background music and sound effects are generated by the model based on the visuals» — «фоновую музыку и звуковые эффекты модель создаёт по изображению».

Из запретов в описании разработчик советует оставлять два: «Only two types of negative instructions are truly necessary: no subtitles and no background music. The model may add these by default, so explicitly exclude them when they are not needed». Перевод наш: «По-настоящему нужны только два запрета: без субтитров и без фоновой музыки. Модель может добавить их сама, поэтому, когда они не нужны, исключайте их явно».

Длину описания разработчик считает в токенах — «Up to 8,000 tokens», а в форме GEN202 у поля prompt предел в знаках: до 8 000.

Цитаты приведены по руководству Kling AI, пресс-релизу Kuaishou и посту Kling AI в X на 24 октября 2026 года.

Какие пределы Kuaishou ставит у Kling 4.0

Два входа в одной генерации не смешиваются: «The capabilities of the two entry points cannot be combined within a single generation task». Перевод наш: «Возможности двух входов нельзя совмещать в одной генерации». Поэтому на этой странице два режима, и в одном запросе к описанию прикладывают либо референсы, либо ключевые кадры.

У изображения-референса соотношение сторон держится в пределах «aspect ratio: 2:5–5:2»: слишком узкое или слишком вытянутое изображение модель не примет. В форме GEN202 таких изображений берётся до 10.

Для видео-референсов предел двойной — по числу и по общей длине: «Up to 5 videos; Total video duration ≤ 30s». Перевод наш: до 5 видео, и вместе они длятся не больше 30 секунд. В форме GEN202 список video_urls берёт до 5 ссылок.

Ключевых кадров руководство допускает «Up to 10 images in total» — до десяти изображений вместе. В форме GEN202 это первый кадр, до 8 промежуточных и последний, а сколько из них примет запрос, зависит от длины видео.

Что показали независимые проверки Kling 4.0

Модель проверил Adam Campbell Cinema в видео от 21 октября 2026 года: пять тестов по ключевым кадрам, до 30 секунд и до 10 кадров, и три раунда «ключевые кадры против Omni Reference». Omni Reference — так в кабинете Kling называется вход по референсам, у GEN202 это режим «Референсы». Снимал автор на сайте Kling AI в 720p: «One video generation per setup, no rerolls» — перевод наш: «по одной генерации на тест, без перезапусков». Видео — Adam Campbell Cinema, 21 октября 2026.

Лучший тест по ключевым кадрам — пять кадров на 30 секунд — автор описывает так: «Best key frame result yet. All five pictures in order. The cuts land within a frame or two». Перевод наш: «Лучший результат по ключевым кадрам: все пять изображений по порядку, склейки попадают с точностью до одного-двух кадров». И сразу оговаривается: «Kling hit every picture. It still cheated the action» — «Kling попал в каждое изображение, но с действием между ними всё равно схитрил».

В тесте на десять кадров, где по улице катится сбежавшая тыква-фонарь, вышло хуже: «Once he's rolling, it doesn't hold his face. The dog barks at him, but the chase down the street never happens». Перевод наш: «Как только он покатился, модель перестаёт держать его лицо. Собака лает на него, но погони по улице так и не случается».

Разницу между двумя входами автор сводит в одну формулу: «Keyframes follows your pictures. The prompt is just direction. Omni follows your prompt. The pictures are just direction». Перевод наш: «Ключевые кадры следуют вашим изображениям, а описание лишь задаёт направление. Omni следует описанию, а изображения лишь задают направление». И добавляет: «In these tests, Omni looked more realistic. Some of my Keyframes shots still have that pasted-in look» — «в этих тестах Omni выглядел реалистичнее, а часть планов по ключевым кадрам всё ещё смотрится вклеенной».

Итог он подводит так: «hitting a picture isn't the same as making the action work. I still check every take». Перевод наш: «Попасть в изображение — не то же самое, что сделать действие рабочим. Я по-прежнему проверяю каждый дубль».

Второй взгляд — видео Aaron Randall от 23 октября 2026 года, где модель поставлена рядом с Seedance 2.5. В описании к нему автор пишет: «I break down where the image to video motion falls apart in action choreography, dialogue performance, and anime style animation». Перевод наш: «Разбираю, где движение из изображения разваливается: в постановке динамичных сцен, в игре персонажей в диалоге и в анимации в стиле аниме». Видео — Aaron Randall, 23 октября 2026.

Ни один из этих тестов не сделан через GEN202: авторы снимали в кабинете Kling AI и на сторонних сайтах. Слова авторов приведены по их видео и описаниям на 24 октября 2026 года.

Канал Kling AI — представление модели от 28 сентября 2026 года: видео до 30 секунд за один запуск, до 10 ключевых кадров и референсы. Идёт меньше двух минут.

Частые вопросы

Как вызвать Kling 4.0 через API из России?
Запрос уходит на api.gen202.com, и это адрес GEN202, а не адрес Kuaishou: обращения за границу в вызове Kling 4.0 нет, поэтому VPN не требуется. В поле model уходит идентификатор выбранного варианта: референсы (kling/4-0-reference-to-video), кадры (kling/4-0-keyframe-to-video). Порядок вызова Kling 4.0 с примерами кода разобран в документации.
Сколько стоит Kling 4.0
Цена за секунду Kling 4.0 — от 48.8 кр. (24,4 ₽ · $0.2218) до 73 кр. (36,5 ₽ · $0.3318). У Kling 4.0 списывается фактический расход, а задача, завершившаяся ошибкой, не тарифицируется вовсе.
Нужны ли VPN и иностранная карта для Kling 4.0
Ни то, ни другое: обращение к Kling 4.0 идёт на наш адрес, а расчёты с Kuaishou ведём мы, поэтому договариваться с ним клиенту не о чем. Оплата рублями с карты российского банка.
Что Kling 4.0 принимает на вход
Обязательные поля запроса к Kling 4.0: Референсы — prompt — от 1 до 8 000 символов. Кадры — prompt — от 1 до 8 000 символов. Остальные поля необязательны.
Как подключить Kling 4.0 API и сделать первый вызов
Войти на сайт и выпустить ключ в кабинете: при первом входе начисляется 50 кредитов, и этот же ключ открывает Kling 4.0 вместе с остальным каталогом. Собственного ключа Kuaishou и договора с ним для вызова Kling 4.0 не нужно.
Какая компания разработала Kling 4.0
Kling 4.0 разработала компания Kuaishou и открыла её всем 15 октября 2026 года. Это видеомодель со звуком: видео по описанию, по ключевым кадрам и по референсам — изображениям и видео.
Чем Kling 4.0 отличается от Kling 3.0
По руководствам Kuaishou, Kling 4.0 снимает до 30 секунд за один запуск против 15 у Kling 3.0, принимает до 10 ключевых кадров и форму кадра 21:9, а звук пишет всегда. 4K, выключаемый звук и закреплённые элементы остаются у Kling 3.0 — она стоит в каталоге рядом.
Есть ли у Kling 4.0 официальный сайт
Модель Kuaishou описывает в руководстве по Kling 4.0 на kling.ai. Здесь Kling 4.0 вызывают по API ключу GEN202 и оплачивают рублями.