Вы отправляете кадр в kling-o3, дописываете "aspect_ratio":"16:9" и ждёте ролик. У Kling O3 с картинкой формат задаёт сам кадр, а этот параметр по документации вендора работает только в режиме, который через наш API не включается. 22.09.2026 мы прогнали модель из текста и из картинки и записали время, ошибки и то, во что обходится ролик.
Kling O3 доступна в altrouter по OpenAI-совместимому API. Ролик на 5 секунд в 720p без звука стоит $0,42 на 22.09.2026, но скидки на эту модель у нас нет: это наш минус, цена равна официальной цене вендора. Первый вызов можно начать с регистрации в altrouter.
Главная практическая мысль такая: для генерации из текста aspect_ratio задаёт формат ролика, а для генерации из картинки формат должен следовать из самого первого кадра. Вызов «картинка плюс aspect_ratio» я не прогонял, поэтому ниже не буду утверждать, что он обязательно падает или игнорируется.
Первый запуск Kling O3 из текста: 429 и повтор
Около 14:51 МСК я отправил первый проверочный запрос из текста: 3 секунды, 720p, 16:9, без звука. В этот момент мы одновременно запустили пачку проверочных задач по нескольким моделям. В нашем API такой запрос выглядит так:
curl -s https://api.altrouter.ai/v1/videos \
-H "Authorization: Bearer $ALTROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"kling-o3","prompt":"A slow cinematic camera push-in, gentle natural motion, soft light","seconds":3,"resolution":"720p","aspect_ratio":"16:9"}'
Вместо задачи пришёл 429 с текстом Your call frequency is too high. Please try again later. Деньги не списались, задача не создалась. Ошибка 429 — это ответ «слишком часто», а не сообщение о поломке видеомодели.
Я повторил тот же запуск в 14:53:44 МСК. В 14:54:34 МСК ролик был готов, то есть этот прогон занял 50 секунд.
Что это значит для вас: не повторяйте запрос мгновенно после 429. Сделайте паузу и отправьте его снова, особенно если до этого разом запускали несколько задач. Подробно про такой сценарий можно прочитать в материале про ошибку 429.
Запуск Kling O3 из картинки
Между этими двумя попытками, в 14:51:46 МСК, ушёл запуск из изображения. Поле image — это массив ссылок на картинки, который передаёт первый кадр. В этом запросе я не передавал aspect_ratio. В нашем API он выглядит так:
curl -s https://api.altrouter.ai/v1/videos \
-H "Authorization: Bearer $ALTROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"kling-o3","prompt":"A slow cinematic camera push-in, gentle natural motion, soft light","seconds":3,"resolution":"720p","image":["https://example.com/frame.png"]}'
Запуск начался в 14:51:46 МСК и завершился в 14:53:09 МСК. Ролик на 3 секунды в 720p без звука был готов за 83 секунды.
Создание асинхронное: сначала задача принимается, а файл появляется позже. Здесь важнее другое наблюдение: режим из картинки отработал без переданного aspect_ratio, формат взялся из кадра.

Что это значит для вас: если вы подаёте готовый кадр, сначала подготовьте его в нужной ориентации. В моём замере картинка дала результат за 83 секунды, а повторный текстовый запуск — за 50 секунд, но это по одному прогону на режим, а время зависит от очереди.
aspect_ratio с картинкой
В каталоге API у Kling O3 есть aspect_ratio со значениями 16:9, 9:16 и 1:1. Для генерации из текста это прямой параметр запроса: его можно указать рядом с seconds и resolution, как в первом примере.
С картинкой ситуация тоньше. В документации вендора Kling 3.0 Omni сказано: 16:9, 9:16 и 1:1 можно выбирать только при включённом пользовательском мультикадровом режиме через customize_multi_shots; иначе нужно использовать auto. В примере image-to-video у вендора передан aspect_ratio: auto.
Мультикадровый режим через наш API не включается. В ролике используется один план, поэтому рекомендация для вызова через altrouter простая: не передавайте aspect_ratio вместе с image, а нужный формат задайте самим кадром.

Есть важная оговорка. Связку «картинка плюс aspect_ratio: 16:9» мы не прогоняли: на серию статей был заложен бюджет на один видеоролик. Поэтому я не называю такой запрос гарантированно ошибочным и не говорю, что параметр точно будет проигнорирован.
Что это значит для вас: для текста задайте aspect_ratio явно. Для картинки подготовьте первый кадр в нужной ориентации и не добавляйте этот параметр в запрос.
Сколько стоит Kling O3 по API
На 22.09.2026 Kling O3 стоит $0,084 за секунду в 720p без звука. Это одновременно наша цена и официальная цена вендора для Kling O3 standard на fal. Скидки на Kling O3 у нас нет, и это наш минус.
| Длина ролика | Цена 720p без звука |
|---|---|
| 3 секунды | $0,252 |
| 5 секунд | $0,42 |
| 10 секунд | $0,84 |
| 15 секунд | $1,26 |
Параметр seconds принимает целое значение от 3 до 15, а значение по умолчанию — 5 секунд. resolution может быть 720p, 1080p или 4k, но в замере я проверял только 720p.
При создании задачи баланс получает холд — деньги замораживаются с запасом 20%, но ещё не списываются. Для ролика на 5 секунд в 720p без звука холд составит $0,504, а после готовности спишется $0,42, остаток вернётся. Этот механизм мы проверили в тот же день на реальном вызове другой модели: холд $0,225, списание $0,1875.
Для sound: true холд вдвое больше. Для 1080p он вдвое больше, чем для 720p, а для 4k — впятеро больше. У вендора цена со звуком составляет $0,112 за секунду, поэтому включение звука меняет не только параметры ролика, но и расчёт суммы.

Что это значит для вас: проверяйте баланс с учётом холда, а не только итоговой цены ролика. Если денег на холд не хватает, задача не создаётся и видеомодель не запускается. Оплатить API можно картой РФ, через СБП или криптой; для пробы доступен $1 после подтверждения Telegram.
Как опрашивать асинхронный видео API
После POST https://api.altrouter.ai/v1/videos API возвращает HTTP 202, идентификатор задачи и статус in_progress. Затем нужно делать GET /v1/videos/{id} раз в 10 секунд, пока статус не станет completed или failed.
Ниже пример цикла. status — поле, где API сообщает состояние задачи, а url — ссылка на готовый mp4.
import os, time, requests
H = {"Authorization": f"Bearer {os.environ['ALTROUTER_API_KEY']}"}
job = requests.post("https://api.altrouter.ai/v1/videos", headers=H, json={
"model": "kling-o3", "prompt": "A slow cinematic camera push-in",
"seconds": 5, "image": ["https://example.com/frame.png"]}).json()
while job["status"] not in ("completed", "failed"):
time.sleep(10)
job = requests.get(f"https://api.altrouter.ai/v1/videos/{job['id']}", headers=H).json()
print(job.get("url"))
Для ориентира, реальный ответ нашего API выглядел так, но он относится к другой модели — kling-2.1-standard; формат тот же. При создании API вернул HTTP 202, id, model, status: "in_progress" и seconds: 5, а после готовности появились status: "completed" и поле url со ссылкой на mp4 на домене api.altrouter.ai.
Что это значит для вас: не держите HTTP-запрос открытым в ожидании файла. Сохраните id, опрашивайте задачу и забирайте url после статуса completed.
Чек-лист перед первым вызовом Kling O3
- Укажите модель
kling-o3, а ключ передайте через переменную окруженияALTROUTER_API_KEY. - Задайте
secondsот 3 до 15 и выберитеresolution. - Для генерации из текста передайте
aspect_ratio:16:9,9:16или1:1. - Для генерации из картинки передайте
imageкак массив ссылок и не добавляйтеaspect_ratio. - Учтите холд: для 5 секунд в 720p без звука это $0,504 при итоговой цене $0,42.
- После
POSTсохраняйтеidи опрашивайтеGET /v1/videos/{id}раз в 10 секунд.
Что именно не проверено
Я сделал по одному прогону на режим. Это недостаточно, чтобы считать 50 секунд и 83 секунды постоянным временем ответа.
Я не замерял 1080p, 4k, звук и длину больше 3 секунд. Вызов с картинкой и одновременно переданным aspect_ratio тоже не проверял, поэтому вывод про него основан на документации вендора и ограничении мультикадрового режима через наш API.
Ещё один минус altrouter для видео — цены в каталоге помечены как ориентировочные: итоговое списание считается по фактическому ролику. Для Kling O3 базовая цена совпадает с официальной, скидки нет.
FAQ
Сколько стоит Kling O3 по API?
$0,084 за секунду 720p без звука на 22.09.2026, ролик 5 с — $0,42; официальная цена такая же, скидки нет. Со звуком у вендора $0,112/с.
Можно ли сделать вертикальное видео 9:16 из картинки в Kling O3?
По документации вендора формат с картинкой берётся из кадра (auto), выбор 16:9/9:16/1:1 — только в мультикадровом режиме, который через наш API не включается. Нужна вертикаль — подайте вертикальный кадр.
Сколько ждать ролик Kling O3?
Замер 22.09.2026: 50 с из текста и 83 с из картинки, 3 секунды 720p, по одному прогону; время зависит от очереди. Это ориентир одного запуска, а не гарантированный срок.
Чем Kling O3 отличается от Kling 3.0?
Kling O3 — это Kling 3.0 Omni: 3–15 с, 720p/1080p/4k, звук по желанию, $0,084/с. Kling 3.0 в нашем каталоге — $0,0875/с, режимы std/pro/4K.
Почему Kling O3 вернул ошибку 429?
Это ответ «слишком часто»: мы получили его, запустив пачку задач разом. Повторите с паузой; деньги за непринятую задачу не списываются.