GPT-6 Sol и Claude Opus 5.5 уже доступныGPT-6 Sol вдвое дешевле 5.6 Sol

Kling 3.0 API: генерация видео по тексту, код запроса и реальные клипы

Задача text-to-video — это один POST с моделью kling-3.0. Ниже код запроса, поля, которые он принимает, и два 5-секундных клипа, сделанные 29 октября 2026 года, с измерениями.

Kiki, OmniaKey COO7 мин чтения
На этой странице

Задача text-to-video для Kling 3.0 — это один POST на https://api.omniakey.com/v1/media/tasks с моделью kling-3.0, операцией text_to_video и двумя обязательными параметрами: duration (5, 10 или 15 секунд) и mode (std или pro). В ответ приходит id задачи: опрашивайте её до успешного статуса, затем скачайте MP4. 29 октября 2026 года мы сделали два 5-секундных клипа в режиме std с разрешением 1280×720 и измерили файлы и кадры.

Что нужно для запроса к Kling 3.0

В теле запроса семь полей. Два из них, duration и mode, для Kling обязательны: они задают длину клипа и класс качества.

ПолеЧто отправить
modelkling-3.0
typevideo
operationtext_to_video
input.promptсцена, действие и камера одной строкой
parameters.duration5, 10 или 15, целыми секундами
parameters.modestd или pro
parameters.aspect_ratio16:9, 9:16 или 1:1

Пример на самой странице модели отправляет duration 6 и поле resolution со значением 720p, и здесь не подходит ни то, ни другое: страница принимает только 5, 10 или 15 секунд и прямо пишет, что отдельного поля разрешения нет (страница модели, проверено 29 октября 2026 года). В её разделе вопросов standard соответствует 720P, а pro — 1080P.

Звук есть по умолчанию, переключателя на странице нет (проверено 29 октября 2026 года). Соотношение сторон относится к text-to-video; в image-to-video формат задаёт первый кадр, а явное соотношение отклоняется. В этих двух запусках были std, 5 секунд и 16:9, а режим pro, 10 и 15 секунд, 9:16 и 1:1, image-to-video и последний кадр остались за их пределами.

Текст промпта задаёт сцену, действие и камеру. Гайд по промптам Kling 3.0 разбирает части промпта и язык описания камеры.

Код запроса

Один файл Python отправляет тело, опрашивает задачу и скачивает MP4. Ключ он берёт из OMNIAKEY_API_KEY, в запрос создания кладёт случайный Idempotency-Key и ждёт по 5 секунд между опросами, до 180 попыток. Тело несёт те же поля и значения, что и два клипа из следующего раздела: модель kling-3.0, type video, operation text_to_video, duration 5, mode std, соотношение 16:9. Хватает стандартной библиотеки Python: SDK и другие зависимости ставить не нужно.

python
import json
import os
import time
import urllib.error
import urllib.request
import uuid

API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]

def request(method, url, body=None, extra_headers=None):
    headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
    data = None
    if body is not None:
        headers["Content-Type"] = "application/json"
        data = json.dumps(body).encode()
    headers.update(extra_headers or {})
    req = urllib.request.Request(url, data=data, headers=headers, method=method)
    with urllib.request.urlopen(req, timeout=120) as resp:
        return json.load(resp)

def poll(url, attempts=5):
    for attempt in range(attempts):
        try:
            return request("GET", url)
        except urllib.error.HTTPError as err:
            if err.code < 500 or attempt == attempts - 1:
                raise
        except urllib.error.URLError:
            if attempt == attempts - 1:
                raise
        time.sleep(5 * (attempt + 1))

def text_to_video(prompt, out_path, duration=5, mode="std", aspect_ratio="16:9"):
    body = {
        "model": "kling-3.0",
        "type": "video",
        "operation": "text_to_video",
        "input": {"prompt": prompt},
        "parameters": {"duration": duration, "mode": mode, "aspect_ratio": aspect_ratio},
    }
    task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
    print("task", task, flush=True)
    for _ in range(180):
        time.sleep(5)
        state = poll(f"{API}/{task}")
        if state["status"] not in ("queued", "processing"):
            break
    if state["status"] != "succeeded":
        raise RuntimeError(state.get("error") or state["status"])
    asset_url = state["assets"][0]["url"]  # ссылка подписана и живёт недолго: скачивайте сразу
    req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
    with urllib.request.urlopen(req, timeout=300) as resp, open(out_path, "wb") as f:
        f.write(resp.read())
    return task

if __name__ == "__main__":
    task = text_to_video(
        "A paper boat drifts slowly down a rain-soaked street at dusk. Warm streetlights reflect on "
        "the wet cobblestones. The camera follows the boat at a steady pace. No people, no text.",
        "paper-boat.mp4",
    )
    print("done", task)

Каждый опрос — это GET по адресу задачи, и цикл смотрит на status, а не на progress.percent: процент может стоять на 0, пока клип рендерится. Как только статус выходит из queued и processing, код останавливается: при succeeded он скачивает файл по assets[0].url, при любом другом статусе выбрасывает сообщение об ошибке самой задачи. Скачивать нужно сразу, потому что ссылка на файл истекает; когда это случится, запросите задачу снова и получите новую. Опрос, который упал из-за обрыва связи или ошибки сервера (5xx), повторяется до пяти раз, и с каждой попыткой пауза длиннее.

29 октября 2026 года мы прогнали этот файл ещё раз с теми же настройками. Первая попытка потеряла соединение во время опроса — поэтому в нём теперь есть повторы. Второй запуск вернул задачу task_PNB1kPopriUyfcHsXhVWY2hBOEoSUIqM, её MP4 показал 5.04 секунды при 1280×720 и стереодорожку AAC. От создания до скачивания прошло 807 секунд против 82.2 и 110.7 секунд у двух клипов ниже, так что закладывайте запас на долгое ожидание.

Два клипа, которые мы сделали

Оба запроса ушли 29 октября 2026 года с телом, указанным выше. Задача бумажного кораблика — task_cbOtsBxO75cml3nOmVUu9YG3PkYXW2ja, задача чайника — task_M2Ub1EoCaCUa1FjOZDdWDOuEOS9nRjnt. Каждый промпт отправлен ровно так, как написан.

Бумажный кораблик

prompt
A paper boat drifts slowly down a rain-soaked street at dusk. Warm streetlights reflect on the wet cobblestones. The camera follows the boat at a steady pace. No people, no text.
Кадры клипа с бумажным корабликом: сложенный бумажный кораблик на мокрой брусчатке в сумерках, тёплые отражения фонарей.
Кадры клипа с бумажным корабликом по порядку времени. Kling 3.0, text-to-video, 5 секунд, режим standard, 16:9, сгенерировано 29 октября 2026 года.

Чайник

prompt
A ceramic teapot sits on a wooden table by a window. Steam rises in slow curls. Soft morning light moves across the table. The camera pushes in slowly. No people, no text.
Кадры клипа с чайником: керамический чайник зелёной глазури на деревянном столе у окна, поднимается пар.
Кадры клипа с чайником по порядку времени. Kling 3.0, text-to-video, 5 секунд, режим standard, 16:9, сгенерировано 29 октября 2026 года.

Что показали файлы

Инструмент для работы с клипами измерил каждое скачивание 29 октября 2026 года.

  • Бумажный кораблик — Размер: 1280×720; Частота кадров: 24.0 fps; Длительность: 5.04 s; Звук: AAC, 2 канала, 44.1 kHz; Средний уровень: −50.9 dB; Пиковый уровень: −34.0 dB; Склейки: нет
  • Чайник — Размер: 1280×720; Частота кадров: 24.0 fps; Длительность: 5.04 s; Звук: AAC, 2 канала, 44.1 kHz; Средний уровень: −54.3 dB; Пиковый уровень: −35.9 dB; Склейки: нет
  • Клип из кода — Размер: 1280×720; Частота кадров: 24.0 fps; Длительность: 5.04 s; Звук: AAC, 2 канала, 44.1 kHz; Средний уровень: −48.4 dB; Пиковый уровень: −20.0 dB; Склейки: нет

Первые два клипа очень тихие: средние уровни −50.9 dB и −54.3 dB, пики −34.0 dB и −35.9 dB. Клип из кода громче: средний −48.4 dB, пик −20.0 dB. Мы измерили только уровень, содержимое дорожек осталось за рамками измерения. Детектор склеек не нашёл ни сильных, ни слабых склеек ни в одном из трёх, поэтому каждый клип идёт одним планом.

Что видно на кадрах

Оба клипа идут по промпту, а чайник добавляет одно небольшое движение от себя.

В клипе с бумажным корабликом кораблик все 5.04 секунды держится ближе к центру кадра, а мокрая улица скользит позади, поэтому кадр читается как камера, которая следует за корабликом. Тёплые отражения фонарей остаются на камнях до последнего кадра (кадры проверены 29 октября 2026 года). Ни одна склейка не прерывает это движение.

В клипе с чайником пар поднимается медленными завитками и рассеивается, а утренний свет движется по деревянному столу. К концу чайник становится крупнее и смещается ближе к правому нижнему углу, это читается как наезд с небольшим боковым сносом; в промпте был медленный наезд, а снос промпт не просил (кадры проверены 29 октября 2026 года).

Первый и последний кадр клипа с чайником рядом. В последнем кадре чайник крупнее и правее.
Слева: первый кадр клипа с чайником. Справа: последний. Чайник растёт в кадре — это тот наезд, который просил промпт, с небольшим боковым сносом.

Ошибки и ограничения

Длительность вне значений 5, 10 и 15 возвращает HTTP 400 model_price_error, и задача не создаётся (документация по API видео, проверено 29 октября 2026 года). Отправляйте целые секунды только из этих трёх значений.

Запрос создания без Idempotency-Key возвращает 400 missing_idempotency_key; ключ может быть до 255 символов. Тот же ключ с тем же телом возвращает существующую задачу с HTTP 200, и повторно ничего не списывается, а изменённое тело с тем же ключом даёт 409 idempotency_key_reused (обзор API медиа, проверено 29 октября 2026 года).

29 октября 2026 года POST с User-Agent по умолчанию из urllib в Python вернул HTTP 403 с телом error code: 1010 от Cloudflare, а со своим заголовком User-Agent запрос дошёл до API. Ставьте User-Agent и в запрос создания, и в скачивание.

Ссылки на результат живут недолго: опрашивайте задачу заново ради нового assets[].url, а не сохраняйте ссылку (документация по API видео, проверено 29 октября 2026 года). Записи задач хранятся 24 часа после создания (обзор API медиа, проверено 29 октября 2026 года).

Kling 3.0 тарифицируется за генерацию, а не за секунду (документация по API видео, проверено 29 октября 2026 года). Актуальные цены — на странице цен OmniaKey.

Вопросы и ответы

Какие длительности принимает kling-3.0?

5, 10 и 15 секунд. Любое другое значение возвращает HTTP 400 model_price_error и не создаёт задачу (документация по API видео, проверено 29 октября 2026 года).

Чем отличаются std и pro?

Страница модели называет их Standard и Pro и связывает standard с 720P, а pro с 1080P (проверено 29 октября 2026 года). Мы запускали только std, поэтому измеренной разницы между ними у нас нет.

У клипов есть звук?

У каждого клипа есть дорожка AAC с двумя каналами на 44.1 kHz. Первые два очень тихие, средние уровни −50.9 dB и −54.3 dB; клип из кода громче, средний −48.4 dB и пик −20.0 dB. Мы измерили только уровень и не определяли, что именно записано в дорожках.

Можно ли начать клип с картинки?

Страница модели перечисляет image-to-video с первым кадром и необязательным последним (проверено 29 октября 2026 года). Первый кадр задаёт соотношение сторон, а явное соотношение в этой операции отклоняется.

Сколько времени занимает генерация клипа?

В наших двух запусках 29 октября 2026 года бумажный кораблик был готов за 110.7 секунды, а чайник за 82.2 секунды. Оба были 5-секундными клипами std в 16:9.

Начните со страницы модели Kling 3.0 и отправьте то же тело со своим промптом.

Модели в этой статье

Kling 3.0ИИ-видеоAPI для видеоtext-to-videoAPI

Похожие статьи

Недавние статьи