Руководство
Kling 4.0 API генерации видео из изображения: справочник по запросам и один реальный запуск
Kling 4.0 для генерации видео из изображения превращает одно стартовое изображение в клип длительностью 3–30 секунд со синхронизированным звуком. В этом руководстве приведены готовые к использованию примеры запросов в hiapi, поля, которые API принимает и отклоняет, а также результаты одного реального запуска. Вам нужно получить API-ключ в консоли hiapi; идентификатор модели — kling-4.0/image-to-video, актуальные характеристики перечислены на странице модели.
Если вы всё ещё используете Kling 3.0, обзор API Kling 4.0 был написан до релиза и описывает анонс; именно эта страница является актуальным справочником.
Минимальный запрос (curl)
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-4.0/image-to-video",
"input": {
"prompt": "Она слегка поворачивает голову к камере, волосы развеваются на ветру, камера медленно приближается, звук волн окружения",
"image_urls": ["https://example.com/first-frame.jpg"],
"duration": 3,
"resolution": "720p"
}
}'
Ответ сразу возвращает идентификатор задачи:
{"code":200,"data":{"taskId":"tk-hiapi-..."},"message":"success"}
Опрашивайте GET /v1/tasks/<taskId>, пока data.status не станет success, затем прочитайте data.output[0].url.
Python: отправка и опрос
import os, time, requests
BASE = "https://api.hiapi.ai"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}
def kling4_i2v(image_url, prompt, duration=5, resolution="720p"):
r = requests.post(f"{BASE}/v1/tasks", headers=HEADERS, json={
"model": "kling-4.0/image-to-video",
"input": {
"prompt": prompt,
"image_urls": [image_url], # 恰好一张首帧图
"duration": duration, # 整数,3-30
"resolution": resolution, # "720p" 或 "1080p"
},
})
body = r.json()
if body["code"] != 200:
raise RuntimeError(body["message"])
task_id = body["data"]["taskId"]
while True:
d = requests.get(f"{BASE}/v1/tasks/{task_id}", headers=HEADERS).json()["data"]
if d["status"] == "success":
return d["output"][0]["url"]
if d["status"] == "fail":
raise RuntimeError(d)
time.sleep(10)
Сразу скачайте возвращённый MP4-файл. URL результата содержит временную метку expireAt (в нашем запуске — примерно через семь дней) и размещён на временном домене, поэтому скопируйте его в собственное хранилище, а не используйте прямую ссылку.
Поля, которые принимает API
Мы протестировали эту конечную точку с намеренно недопустимыми значениями (они возвращают HTTP 400 INVALID_REQUEST и не создают задачу):
| Поле | Наблюдаемое правило |
|---|---|
image_urls |
Обязательный массив, ровно один элемент (два → maxItems: got 2, want 1) |
duration |
Целое число, минимум 3, максимум 30. Строка вроде "5" отклоняется (got string, want integer) |
resolution |
720p или 1080p |
aspect_ratio |
Необязательно: 16:9, 9:16, 1:1, 21:9. На странице модели указано, что при пропуске композиция следует за исходным изображением |
prompt |
Описание движения; в проверках валидатора мы отправляли запросы без этого поля, поэтому считайте его рекомендуемым полем |
При переносе кода с других видеомоделей легко ошибиться в двух вещах:
- Поле называется
image_urls, а неimage_url. Отправкаimage_urlодновременно выдаёт «отсутствует обязательное полеimage_urls» и «недопустимое дополнительное свойствоimage_url». - Нет переключателя аудио.
audio,generate_audioиsoundотклоняются как дополнительные свойства. Аудио всегда генерируется вместе с изображением; управляйте аудио через подсказку (в примере выше запрашивается звук волн окружения).
Неизвестные поля отклоняются, а не игнорируются, поэтому опечатки проявляются как ошибка 400, а не как молча проигнорированная настройка.
Замечания для продакшена
- Предпочитайте обратные вызовы опросу. Генерация клипа занимает несколько минут, поэтому при создании задачи передавайте
callback(содержащийurlиwhen: "final") и обрабатывайте результат в webhook; опрос используйте только как резервный вариант. - Проверяйте до оплаты. Поскольку недопустимые входные данные возвращают 400 и не создают задачу, сначала проверяйте длительность и разрешение в своём коде; ошибочный запрос ничего не стоит, но корректный тарифицируется за каждую запрошенную секунду.
- Тарификация по секундам и зависит от разрешения. Более длинные клипы и 1080p стоят дороже; актуальные тарифы смотрите в разделе цены, а не полагайтесь на цифры из статьи.
- Сохраняйте идентификатор задачи. Если опрос завершился с временной сетевой ошибкой, повторно опрашивайте тот же ID, а не отправляйте заново, иначе будет создан и тарифицирован второй клип.
Фактический запуск
Мы отправили вышеуказанный запрос: вертикальное стартовое изображение, duration: 3, resolution: "720p", без aspect_ratio.
- Наблюдаемая последовательность статусов при опросе примерно каждые 10 секунд:
handling→archiving→success. - Общее фактическое время: около 274 секунд для 3-секундного клипа.
handlingзанимает около 255 секунд; планируйте в минутах, а не в секундах, и проектируйте вокруг обратных вызовов. - Выходной файл (проверено с помощью
ffprobe): видео H.264, 1280×720, 3,04 секунды, плюс звуковая дорожка AAC той же длительности. Таким образом, аудио действительно встроено в MP4, а композиция следует за исходным изображением 16:9.
Мы не тестировали: 1080p, длительность более 3 секунд и нестандартные значения aspect_ratio. Эти ограничения взяты из сообщений валидатора API и страницы модели, а не из сгенерированного результата.
Связанные страницы
- Страница модели Kling 4.0 для генерации видео из изображения
- Страница модели Kling 4.0 для генерации видео из текста, если нет исходного изображения
- Страница модели Kling 3.0 для генерации видео из изображения
- Как использовать Kling 3.0 Turbo для генерации видео из изображения
- Цены hiapi
- Документация hiapi
Часто задаваемые вопросы
Можно ли отключить аудио в Kling 4.0 для генерации видео из изображения?
С помощью поля запроса — нет. audio, generate_audio и sound все отклоняются валидатором. Опишите желаемый звук (или его отсутствие) в подсказке.
Сколько входных изображений можно отправить?
Одно. image_urls должен содержать ровно одно стартовое изображение.
Сколько времени занимает один запрос?
Наш 3-секундный клип 720p занимает около 274 секунд от начала до конца. Для продакшен-нагрузки используйте обратные вызовы.
Какова максимальная длительность клипа?
API принимает duration не более 30 (целые секунды) и отклоняет более высокие значения; мы сами генерировали только 3-секундные клипы.
Похожие статьи
Все статьи →-
Руководство
Как вызвать hailuo-2.3-fast/image-to-video через HiAPI API: практика с curl и Python
Первый рабочий запрос к быстрому и недорогому уровню генерации видео по изображению — от ID модели до загрузки MP4
-
Руководство
Как вызывать hailuo-2.3/text-to-video через API HiAPI: curl, Python и рабочие примеры запросов
-
Руководство
Использование Kandinsky 6.0 Pro для преобразования текста в видео на HiAPI: руководство по curl и Python
Практическая демонстрация с упором на запросы: построение вызова от промпта до видеоклипа, отправка запроса, опрос статуса завершения и скачивание результата