kosareva.cloud
RU
РусскийEnglish

API видео

Видео в kosareva.cloud создаётся через POST /v1/videos, в форме видео-API OpenAI: задача, статус, готовый mp4. Ролик строится по описанию или по вашей картинке, цена известна до запуска.

Задача, статус, файл

Запрос ставит задачу, статус спрашивайте раз в 10–15 секунд, готовый ролик скачивается отдельным запросом.

# 1. Поставить задачу, в ответе id и status
curl https://api.kosareva.cloud/v1/videos \
  -H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"model":"seedance-2-mini","prompt":"Бариста рисует узор на латте, камера медленно наезжает","seconds":5,"resolution":"480p","aspect_ratio":"16:9"}'

# Ролик из картинки: input_reference станет первым кадром, last_frame последним
curl https://api.kosareva.cloud/v1/videos \
  -H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"model":"seedance-2-mini","prompt":"Камера облетает чашку","seconds":5,"resolution":"480p","input_reference":"https://example.com/first.jpg","last_frame":"https://example.com/last.jpg"}'

# 2. Спрашивать раз в 10–15 секунд, пока status не станет completed
curl https://api.kosareva.cloud/v1/videos/ID_ЗАДАЧИ \
  -H "Authorization: Bearer ВАШ_API_КЛЮЧ"

# 3. Скачать ролик
curl https://api.kosareva.cloud/v1/videos/ID_ЗАДАЧИ/content \
  -H "Authorization: Bearer ВАШ_API_КЛЮЧ" -o video.mp4
from openai import OpenAI

client = OpenAI(api_key="ВАШ_API_КЛЮЧ", base_url="https://api.kosareva.cloud/v1")

# Картинка файлом: так OpenAI SDK передаёт input_reference. SDK сам дождётся ролика.
video = client.videos.create_and_poll(
    model="seedance-2-mini",
    prompt="Бариста рисует узор на латте, камера медленно наезжает",
    seconds="5",
    input_reference=open("frame.jpg", "rb"),
)
if video.status == "failed":
    raise SystemExit(video.error.message)  # деньги за такой ролик возвращаются
client.videos.download_content(video.id).write_to_file("video.mp4")

Поля запроса

ПолеЧто этоОграничения
modelВидеомодель из каталога: Veo, Kling, Seedance, Hailuo, Grok Imagine, Wan, PixVerseобязательно
promptОписание сцены: кто в кадре, что происходит, как движется камераобязательно. Предел свой у семейства: Veo, Grok Imagine и PixVerse до 5000 символов, Kling до 2500, Hailuo до 1500, Seedance и Wan до 20 000. Длиннее получит 400 до списания
seconds, resolution, aspect_ratioДлительность, качество, формат кадра; вместо двух последних можно передать size, как у OpenAIсвои у каждой модели, смотрите её карточку; значение не из списка заменяется ближайшим допустимым
input_referenceКартинка первого кадра: файл в multipart/form-data, ссылка https:// или строка data:image/…;base64JPEG, PNG или WebP до 10 МБ; у Veo и Kling JPEG и PNG
last_frameКартинка последнего кадратолько вместе с input_reference; нет у Kling 2.6, Kling 3.0 Turbo и Grok Imagine Video
reference_imagesСписок картинок-референсов: модель возьмёт из них внешность героя или предмета, но не сам кадрVeo 3.1 Fast и Lite до 3 (ролик всегда 8 секунд), Grok Imagine Video до 7 (в 1080p одна), Seedance 2.x и Wan 3.0 до 9; с кадрами в одном запросе не сочетается

Что важно знать

  • Цена ролика известна до запуска и списывается при постановке задачи. Если модель не справилась, деньги возвращаются.
  • Картинка на вход цену ролика не меняет. Если формат кадра не задан, он берётся по картинке. В ответе поле input_images показывает, какие картинки дошли до генерации.
  • Картинку, которую модель не принимает, или файл не того формата сервер отклоняет с кодом 400 до списания, в тексте ошибки сказано, какие модели это умеют.
  • Статус задачи: queued, in_progress, completed или failed, у готовой есть content_url. GET /v1/videos отдаёт последние 20 задач, параметр limit до 100, следующая страница через after. При нехватке денег ответ 402 с ценой ролика и остатком.
  • То же без кода во вкладке «Видео» личного кабинета. Картинку там пока не загрузить, ролик строится по тексту.