Руководство по использованию
Создание коротких видео с помощью seedance-2.0-mini: сквозной рабочий процесс API hiapi
TL;DR
- Что это: сквозной рабочий процесс создания вертикальных коротких видео в стиле TikTok/Reels на API hiapi с использованием seedance-2.0-mini — от первого вызова curl до скрипта для пакетного рендеринга контента на целую неделю. Демонстрационные фрагменты на этой странице сгенерированы именно теми запросами, что показаны в статье.
- Почему эта модель для коротких видео: нативная поддержка
9:16, встроенный синхронный звук (без отдельной обработки звуковых эффектов), гибкая длительность от 4 до 15 секунд, черновик в 480p стоит всего $0.0272 за секунду — 4-секундный вертикальный черновик обойдётся примерно в $0.11 (цены). - Проверенные факты об API:
prompt,duration(целое число от 4 до 15) иresolution(480p|720p) обязательны;aspect_ratioпринимает1:1,4:3,3:4,16:9,9:16,21:9,adaptive. Для видео из изображения используютсяfirst_frame_url/last_frame_url. Схема строгая — неизвестные поля, такие какseed, отклоняются с ошибкой 400. - Рабочий процесс: генерируйте в 480p для итерации промптов, перерендеривайте отобранные фрагменты в 720p и отправляйте задачи параллельно пакетами — асинхронная очередь
/v1/tasksвыполнит распределение за вас.
Почему seedance-2.0-mini подходит для цикла коротких видео
Производство коротких видео — это количественная работа: вы черновите много фрагментов, оставляете немногие и публикуете ежедневно. Такому процессу нужен видео API, умеющий три вещи — дешёвую итерацию, вертикальный вывод и звук — и seedance-2.0-mini удовлетворяет всем трём:
- Стоимость одного черновика достаточно низкая для многократных итераций. В 480p модель тарифицируется по $0.0272 за каждую секунду вывода, поэтому 4-секундный черновик стоит около $0.11, а даже полный 15-секундный фрагмент — всего около $0.41. Тариф 720p составляет $0.0586/сек. (Цены проверены по актуальной странице цен; видео тарифицируется посекундно, поэтому
duration— ваш рычаг управления затратами.) - Нативный 9:16. Рендеринг сразу в вертикальном формате, а не кадрирование горизонтального фрагмента с потерей композиции.
- Нативный синхронный звук. Выходной MP4 содержит дорожку AAC, сгенерированную вместе со сценой — атмосферные звуки, фоли, фоновый шум помещения. Для ленты, которая воспроизводится автоматически со звуком, это избавляет от целого этапа монтажа.
Если вам нужна более крупная модель того же класса для ключевого визуального контента, тот же рабочий процесс применим к seedance-2-0 — просто с другим ценовым тарифом.
Настройка
Вам нужен только ключ API hiapi, больше ничего — SDK не требуется. Сохраните ключ в переменной окружения:
export HIAPI_API_KEY="sk-..."
Все видеомодели на hiapi работают через единый асинхронный эндпоинт задач: POST https://api.hiapi.ai/v1/tasks немедленно возвращает taskId, затем опрашивайте GET /v1/tasks/{taskId} до завершения. Подробности см. в документации.
Ваш первый вертикальный фрагмент (T2V)
Минимальный корректный запрос требует prompt, duration и resolution. Для короткого видео добавьте aspect_ratio: "9:16":
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-mini",
"input": {
"prompt": "Вертикальное короткое видео. На залитой солнцем барной стойке кофейни свежий матча-латте медленно наливается в прозрачный стакан, зелёный вихрь раскрывается среди молока, мягкий свет из окна, малая глубина резкости. Нативный звук: тихий фоновый шум кофейни, звук наливаемой жидкости. Чёткий, аппетитный, фотореалистичный.",
"duration": 4,
"resolution": "480p",
"aspect_ratio": "9:16"
}
}'
Ответ возвращается мгновенно:
{"code": 200, "data": {"taskId": "tk-hiapi-01KWTTFDPHSDWZ0FP1QAS5J79Q"}, "message": "success"}
Опрашивайте задачу, пока status не станет success, затем сразу скачайте output[0].url — выходные URL временные и истекают. Ниже — фактический фрагмент, сгенерированный этим запросом (4 секунды, 480p, 9:16, с нативным звуком наливания и окружающей обстановки — включите звук, чтобы услышать):
Два практических замечания по этому рендеру: вертикальный вывод «480p» на практике составляет 496×864 пикселей, а аудио попадает в MP4 как стандартная дорожка AAC — отдельная сборка файлов не требуется.
Входные режимы, проверенные по живому API
Схема строгая. Ниже приведены реальные ответы проверки, воспроизведённые дословно, чтобы вы могли распознать их в логах:
| Поле | Тип | Обязательность | Значения |
|---|---|---|---|
prompt |
string | ✅ (минимальная длина 3) | Ваше описание кадра |
duration |
integer | ✅ | 4–15 (секунд) |
resolution |
string | ✅ | 480p, 720p |
aspect_ratio |
string | необязательно | 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive |
first_frame_url |
string | необязательно | URL изображения начального кадра для I2V |
last_frame_url |
string | необязательно | URL изображения для управления конечным кадром |
image_input |
array | необязательно | Мультимодальный референс изображения |
reference_video_urls |
array | необязательно | Референсные видео стиля/движения (более низкий посекундный тариф) |
Если опустить обязательное поле, задача будет отклонена до создания (без списания средств):
{"code": 400, "error_code": "INVALID_REQUEST", "message": "invalid input: resolution: missing required field \"resolution\"; duration: missing required field \"duration\""}
Значения за пределами диапазона указывают точные границы — duration: maximum: got 16, want 15 — а неизвестные поля отклоняются, а не игнорируются:
{"code": 400, "error_code": "INVALID_REQUEST", "message": "invalid input: <root>: additional properties 'seed' not allowed"}
Последнее поведение стоит запомнить: если вы переносите структуру запроса от другой модели (какое-нибудь seed, size, флаг audio), seedance-2.0-mini вернёт 400, а не молча отбросит это поле.
Многоразовая функция Python
Всё, что нужно для продакшена, укладывается примерно в 40 строк — отправка, опрос, скачивание:
import os, time, requests
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}
def submit(prompt: str, duration: int = 4, resolution: str = "480p",
aspect_ratio: str = "9:16", **extra) -> str:
r = requests.post(API, headers=HEADERS, json={
"model": "seedance-2.0-mini",
"input": {"prompt": prompt, "duration": duration,
"resolution": resolution, "aspect_ratio": aspect_ratio, **extra},
}, timeout=60)
data = r.json()
task_id = (data.get("data") or {}).get("taskId")
if not task_id:
raise RuntimeError(f"submit failed: {data}")
return task_id
def wait(task_id: str, timeout_s: int = 900) -> dict:
deadline = time.time() + timeout_s
while time.time() < deadline:
task = requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=30).json()["data"]
if task["status"] == "success":
return task
if task["status"] == "fail":
raise RuntimeError(f"task failed: {task.get('error')}")
time.sleep(8)
raise TimeoutError(task_id)
def make_clip(prompt: str, out_path: str, **kw):
task = wait(submit(prompt, **kw))
url = task["output"][0]["url"] # временный URL — скачивайте сразу
with open(out_path, "wb") as f:
f.write(requests.get(url, timeout=120).content)
4-секундный фрагмент в 480p обычно завершается за несколько минут; в часы пик закладывайте до примерно 10 минут, прежде чем считать задачу просроченной.
Видео из изображения: фиксация начального кадра
Для коротких роликов, ориентированных на продукт, дрейф промпта — враг: вам нужен ваш продукт в кадре, а не представление модели о нём. Решение — I2V с first_frame_url: сгенерируйте (или снимите) статичный кадр, а затем анимируйте его. Вертикальный референсный кадр, подобный этому, созданный через тот же эндпоинт /v1/tasks с помощью gpt-image-2, отлично подходит в качестве начального кадра:

В запрос нужно добавить всего одно поле:
task_id = submit(
"Горячая вода медленно льётся по кругу сверху, из воронки для пуровера начинает подниматься пар, "
"капли падают в стеклянный сервировочный кувшин ниже, солнечный свет подсвечивает пар. Медленный мягкий наезд камеры. "
"Нативный звук: тихий звук воды, спокойный фоновый шум утренней комнаты.",
duration=4, resolution="480p", aspect_ratio="9:16",
first_frame_url="https://your-cdn.example/pourover-ref.jpg",
)
Вот как выглядит реальная анимация первого кадра — статичный кадр из нашей библиотеки рецептов seedance-2.0-mini и сгенерированный из него фрагмент, та же модель и структура запроса (в данном случае 16:9):

Композиция, тон и субъект зафиксированы на вашем статичном кадре; промпту нужно описывать только движение. Если фрагмент должен закончиться на определённом кадре, есть last_frame_url — удобно для зацикливания обратно на карточку продукта.
Пакетное производство контента на неделю
Поскольку /v1/tasks асинхронен, пакетное производство сводится к: отправить все задачи, затем опрашивать. Клиентская очередь не нужна.
briefs = [
("mon-hook", "Вертикальный фрагмент. Эспрессо медленно экстрагируется, …"),
("tue-loop", "Вертикальный бесшовно зацикленный фрагмент. Пар поднимается из чашки, …"),
("wed-recipe","Вертикальный фрагмент. Съёмка сверху последовательности заваривания пуровера, …"),
# … по одному на каждый день публикации
]
tasks = {name: submit(p, duration=6) for name, p in briefs} # распределение
for name, tid in tasks.items(): # сбор результатов
make = wait(tid)
url = make["output"][0]["url"]
open(f"{name}.mp4", "wb").write(requests.get(url, timeout=120).content)
Расчёт затрат остаётся предсказуемым, поскольку тарификация идёт по секундам вывода:
| Сценарий | Спецификация | Стоимость |
|---|---|---|
| 1 итерация черновика | 4 секунды · 480p | около $0.11 |
| 1 фрагмент, готовый к публикации | 6 секунд · 480p | около $0.16 |
| 7 фрагментов (неделя, по одному в день) | 7 × 6 секунд · 480p | около $1.14 |
| Перерендер ключевого контента | 6 секунд · 720p | около $0.35 |
Проверенный рабочий процесс: каждую идею сначала черновим в 480p, сохраняем лучшие, и только их перерендериваем в 720p. О других рычагах (тарифы разрешения, обрезка длительности, пакетное планирование) см. наше руководство по контролю затрат на API генерации изображений и видео.
Приёмы промптинга для ленты
Что работало в наших тестовых рендерах, специально настроенное под короткие видео:
- Указывайте «вертикальное» и компонуйте под него. Начинайте с «Вертикальное короткое видео.» и добавляйте
aspect_ratio: "9:16", чтобы субъект был в центре высокого кадра, а не в кадрированной горизонтальной сцене, которая будет обрезана. - Помещайте крючок в первую секунду. Лента принимает решение за первую секунду — пусть начальное действие само будет наградой (наливание уже идёт, пар уже поднимается), а не медленный установочный кадр.
- Прописывайте звук. Фраза «Нативный звук: …» с перечислением 2–3 конкретных звуков (наливание жидкости, фоновый шум кофейни) надёжно формирует звуковую дорожку. Без промпта вы получите лишь общий фоновый шум помещения.
- Для зацикливаемых фрагментов минимизируйте изменения от начала к концу. Дрейфующие частицы, пульсирующее свечение, клубящийся пар — описывайте устойчивое движение, и начальный и конечный кадры окажутся достаточно близки для зацикливания.
Итог
Создание коротких видео с seedance-2.0-mini сводится к одному асинхронному эндпоинту, трём обязательным полям и посекундной тарификации, которая делает итерации дешёвыми: черновики вертикальных фрагментов в 480p обходятся примерно в четверть доллара за штуку, зафиксируйте продуктовые кадры с помощью first_frame_url, отправляйте свой календарь публикаций пакетами и перерендеривайте отобранное в 720p. Получите ключ API и начните с 4-секундного запроса curl выше — на странице модели seedance-2.0-mini есть справочник параметров и актуальные цены, чтобы продолжить.
Похожие статьи
Все статьи →-
Руководство по использованию
Руководство по началу работы с seedream-5.0-pro/image-to-image: возможности, цены и ключевые моменты интеграции
Границы возможностей модели редактирования изображений ByteDance, принципы тарификации и практика инженерной интеграции
-
Руководство по использованию
Руководство по использованию seedream-5.0-pro text-to-image: границы возможностей, интеграция API и контроль затрат
Практический взгляд для разработчиков: от ключевых параметров до оценки стоимости $0.05 за изображение
-
Руководство по использованию
Руководство по началу работы с Hailuo 2.3 Fast для генерации видео из изображений: границы возможностей, цены и практика интеграции
Ключевые моменты выбора и интеграции модели MiniMax для генерации видео из изображений для разработчиков