Видео
Генерация видео из текста
Как выбрать text-to-video модель под задуманный кадр, написать рабочий промпт и пройти весь путь API от создания задачи до готового файла.
Одна фраза на входе, один MP4 на выходе. Обещание text-to-video уже достаточно близко к реальности, чтобы небольшая команда за день подготовила тизер продукта, зацикленный фон для первого экрана или десятки вариантов рекламы.
Однако модели не взаимозаменяемы. Одна выдаёт 4K, другая создаёт звук, третья работает до 30 секунд, но ограничена 720p. Выбирайте модель под конкретный кадр, а не по общему рейтингу. Все они доступны по одному ключу и с общего баланса, поэтому один промпт можно проверить на нескольких моделях.
Что с их помощью создают
| Задача | Что важнее всего | С чего начать |
|---|---|---|
| Тизер продукта, hero-loop | разрешение, чистое движение камеры | veo3.1-quality |
| Вертикальная реклама | цена варианта, скорость | veo3.1-fast, pixverse-v6 |
| Сцена с репликой или атмосферой | звук в том же рендере | doubao-seedance-2.0 |
| B-roll и общий план | длительность, правдоподобная камера | sora2, sora-2-official |
| Фоновая петля под заголовком | длительность важнее резкости | grok-imagine-1.5-video |
| Тест множества рекламных заходов | цена клипа | veo3.1-fast, doubao-seedance-2.0-fast |
Полезная привычка важнее выбора модели: отладьте промпт на быстрой модели, а финальную версию один раз запустите на дорогой. Промпт переносится между моделями, а деньги за дюжину ненужных 4K-черновиков — нет.
Какую модель выбрать
veo3.1-quality — максимальное разрешение. Вместе с veo3.1-fast это
единственные модели с resolution: "4k". Quality подходит для полноэкранного
hero или монтажа с реальным видео; Fast — для поиска рабочего промпта.
sora2 / sora2-pro — длинный связный дубль. Они создают 10, 15 или 25
секунд и хорошо удерживают движение камеры: наезд, облёт и ручное сопровождение
реже распадаются к концу. В Pro больше вычислительных ресурсов.
sora-2-official — точный выбор длительности. Доступны 4, 8, 12, 16 и 20
секунд с оплатой фактически выбранного времени. Это удобно для заданного места
на монтажной шкале.
doubao-seedance-2.0 — видео со звуком. generateAudio по умолчанию равен
true: модель может сразу добавить шум помещения, шаги и короткую реплику.
Fast ускоряет черновики, а doubao-seedance-1-5-pro остаётся дешёвым вариантом
предыдущего поколения.
pixverse-v6 — модель с большим числом настроек. Она поддерживает
negativePrompt, seed, motionMode, watermark и audio. Зафиксированный
seed позволяет менять одно слово и оценивать именно его влияние.
grok-imagine-1.5-video — длительный фон. До 30 секунд при максимуме 720p.
Для приглушённой петли под текстом это часто разумный обмен качества на время.
wan2.7-video — буквальное прочтение. Создаёт 5, 10 или 15 секунд в 720p
или 1080p и подходит, если другие модели чрезмерно стилизуют сцену.
Как написать промпт для видео
Рабочий промпт похож на описание кадра:
предмет → действие → движение камеры → свет и время суток → визуальный язык.
«Маяк» оставляет почти всё на усмотрение модели. «Маяк на базальтовом утёсе на рассвете, медленный наезд, туман над водой, снято на 35 мм» уже задаёт кадр.
- Явно описывайте движение. Медленный наезд, облёт влево, статичная камера, ручное сопровождение надёжнее надежды на удачную импровизацию.
- Negative prompt работает только там, где есть поле. У этих моделей оно
есть у
pixverse-v6. В остальных случаях лучше описывать желаемый результат. - Одна идея на клип. Два действия за десять секунд часто приводят к превращению предметов. Создайте два клипа и смонтируйте их.
Рецепты
Один кадр из пяти частей — veo3.1-quality, aspectRatio: "16:9",
resolution: "720p":
Close up shot (composition) of melting icicles (subject) on a frozen rock wall(context) with cool blue tones (ambiance), zoomed in (camera motion) maintainingclose-up detail of water drips (action).
Промпт задаёт композицию, предмет, окружение, атмосферу, камеру и действие без лишних слов. Все инструкции относятся к одному цельному макрокадру.
Source: Google AI for Developers, used under CC BY 4.0; format and dimensions adapted.
Вертикальная реклама с репликой — doubao-seedance-2.0, size: "9:16",
resolution: "1080p", duration: 8, generateAudio: true:
A barista slides a paper cup across the counter and says "your usual, right?",warm indoor light, handheld, slight rack focus onto the cup, cafe ambience
Результат уже содержит атмосферу и реплику. Синхронизация губ лучше работает с разговорным темпом и фразой короче шести слов.
Детали дают контроль — veo3.1-quality, aspectRatio: "16:9":
A close-up cinematic shot follows a desperate man in a weathered green trenchcoat as he dials a rotary phone mounted on a gritty brick wall, bathed in theeerie glow of a green neon sign. The camera dollies in, revealing the tensionin his jaw and the desperation etched on his face as he struggles to make thecall. The shallow depth of field focuses on his furrowed brow and the blackrotary phone, blurring the background into a sea of neon colors and indistinctshadows, creating a sense of urgency and isolation.
Наезд, малая глубина резкости, зелёный неон и напряжение лица усиливают одну идею. Длинный промпт работает, когда все его части описывают один кадр.
Source: Google AI for Developers, used under CC BY 4.0; format and dimensions adapted.
Только предмет и окружение — veo3.1-quality:
A satellite floating through outer space with the moon and some stars in thebackground.
Такого описания достаточно для связного клипа, но ракурс и движение выбирает модель. Короткий запрос экономит время, язык камеры добавляет контроль.
Source: Google AI for Developers, used under CC BY 4.0; format and dimensions adapted.
Настройка вместо случайного перезапуска — pixverse-v6, seed: 42:
A cyclist crests a hill at dusk, silhouette against an orange sky, cameratracking alongside, dust in the air
Сохраните seed и измените dusk на midday: композиция останется близкой, и вы увидите влияние конкретной правки.
About these samples. Ready-made examples are copied to our own storage only when their source permits reuse. The exact prompt appears above each result, and the original source and license are linked below the media.
Сравнение моделей
| Модель | Длительность, с | Разрешение | Поле формата | Звук |
|---|---|---|---|---|
veo3.1-fast | по умолчанию | 720p 1080p 4k | aspectRatio | — |
veo3.1-quality | по умолчанию | 720p 1080p 4k | aspectRatio | — |
sora2 | 10 15 25 | по умолчанию | aspectRatio | — |
sora2-pro | 10 15 25 | по умолчанию | aspectRatio | — |
sora-2-official | 4 8 12 16 20 | по модели | aspectRatio | — |
doubao-seedance-2.0 | 4–15 | 480p 720p 1080p | size | generateAudio |
doubao-seedance-2.0-fast | 4–15 | 480p 720p 1080p | size | generateAudio |
doubao-seedance-1-5-pro | 4–15 | 480p 720p 1080p | size | generateAudio |
pixverse-v6 | 1–15 | 360p 540p 720p 1080p | size | audio |
grok-imagine-1.5-video | 6 10 15 20 25 30 | 480p 720p | size | — |
wan2.7-video | 5 10 15 | 720p 1080p | size | — |
Полные таблицы находятся в разделе Модели видео.
Соотношение сторон, разрешение и длительность
aspectRatio используют Sora и Veo; допустимы 16:9 и 9:16. Остальные
семейства используют size с более широким набором форматов. Seedance принимает
16:9, 9:16, 1:1, 4:3, 3:4, 21:9; Pixverse добавляет 2:3 и 3:2.
aspectRatioиsizeне взаимозаменяемы. Полеsizeуveo3.1-fastилиaspectRatioуpixverse-v6не входит в DTO, поэтому API вернёт 400invalid_inputбез неявной подстановки.
Veo использует 720p, 1080p и 4k со строчной k. У остальных моделей —
уровни с p. duration всегда задаётся целым числом секунд, обычно из enum.
Отправка запроса
Тело всегда содержит model, input и необязательный webhook:
curl -X POST https://api.api-stock.com/api/v1/generation/create \-H "Authorization: Bearer sk-your-key" \-H "Content-Type: application/json" \-d '{"model": "veo3.1-quality","input": {"prompt": "A lighthouse on a basalt cliff at dawn, slow push-in, fog rolling over the water","aspectRatio": "16:9","resolution": "4k"}}'
Ответ приходит до начала работы провайдера:
{"code": 200,"data": {"taskId": "019ca881-9503-7270-a560-f00fc2b15785","status": "not_started","createdAt": "2026-02-28T11:22:33.000Z"}}
Баланс списывается в этот момент. При нехватке средств API возвращает 402
insufficient_balance и не создаёт задачу. Если задача завершится как
failed, списание возвращается автоматически.
Получение результата
GET /api/v1/task/status/{taskId} возвращает одну форму на всех стадиях:
not_started → processing → finished или failed.
curl https://api.api-stock.com/api/v1/task/status/019ca881-9503-7270-a560-f00fc2b15785 \-H "Authorization: Bearer sk-your-key"
В состоянии finished файл находится в data.files. URL действует 24 часа,
поэтому скачайте его в своё хранилище и не используйте как постоянную ссылку.
Подробнее — Файлы и хранение.
Полный цикл
const BASE = "https://api.api-stock.com/api/v1";const KEY = process.env.API_STOCK_KEY!;async function createVideo(prompt: string): Promise<string> {const res = await fetch(`${BASE}/generation/create`, {method: "POST",headers: {Authorization: `Bearer ${KEY}`,"Content-Type": "application/json",},body: JSON.stringify({model: "veo3.1-quality",input: { prompt, aspectRatio: "16:9", resolution: "4k" },}),});const body = await res.json();if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);return body.data.taskId;}async function waitForTask(taskId: string) {const deadline = Date.now() + 20 * 60_000;while (Date.now() < deadline) {const res = await fetch(`${BASE}/task/status/${taskId}`, {headers: { Authorization: `Bearer ${KEY}` },});const body = await res.json();if (!res.ok) throw new Error(body.error.message);if (body.data.status === "finished") return body.data;if (body.data.status === "failed") throw new Error(body.data.errorMessage);await new Promise((resolve) => setTimeout(resolve, 10_000));}throw new Error(`timed out waiting for ${taskId}`);}
Для видео разумен интервал 10 секунд. Частый опрос только расходует лимит 120 запросов за 60 секунд. Подробнее — Лимиты запросов.
Получение результата через вебхук
Опрос необязателен. Передайте webhook, и завершённая задача придёт POST-запросом
в том же формате, что и ответ проверки статуса.
{"model": "sora2","input": {"prompt": "Neon-lit rain on an empty parking garage, handheld","aspectRatio": "9:16","duration": 15},"webhook": "https://example.com/hooks/api-stock/8f2c1e9a-secret"}
Заголовка подписи нет, поэтому секрет должен быть частью URL. Доставка повторяется 13 раз с экспоненциальной задержкой — около 22 часов. Подробнее — Вебхуки.
Если генерация не удалась
Ошибки при создании приходят как HTTP-ошибка. Сопоставляйте error.code, а не
изменяемый текст error.message. invalid_input означает, что неизменённое
тело повторять бессмысленно.
Ошибки во время рендера возвращаются с HTTP 200 и status: "failed". К этому
моменту платформа уже исчерпала допустимые попытки основного и резервных
провайдеров и вернула списание. Отклонение политикой контента окончательно;
нужно изменить промпт.
Следующие шаги
- Видео из изображения — оживить готовый кадр.
- Модели видео — полные параметры.
- Опрос статуса и вебхуки.
- Ошибки и цены.
Запустите это со своим ключом
Все модели из этого руководства доступны в каталоге API Stock — один API-ключ, один предоплаченный баланс, без отдельной регистрации у каждого провайдера.