Введение
Wan 3.0 Изображение в видео оживляет ваше статичное изображение. image_url используется ровно как первый кадр, поэтому одежда, тело, декорации и направление света берутся из картинки, а промпту остаётся описать только движение. Промпт необязателен: без него модель анимирует кадр сама. Необязательный last_image_url точно задаёт последний кадр. Клипы длятся от 2 до 30 секунд в 480p, 720p или 1080p, генерация звука включена по умолчанию. Это самый буквальный из режимов: если результат должен совпасть с формулировкой, отдайте внешний вид изображению, а промпт — движению.
Выберите режим по исходному материалу
| Исходный материал | Режим |
|---|---|
| Письменный бриф задаёт сцену, действие, камеру и при необходимости звук. | Wan 3.0 Текст в видео |
| Утверждённое стартовое изображение задаёт объект и композицию, а инструкция направляет последующее движение. | Wan 3.0 Изображение в видео |
| Отдельные референсы могут направлять идентичность, место, движение или звук, если каждому назначена ясная роль. | Wan 3.0 Референсы в видео |
Ключевые возможности и особенности
Первый кадр задаёт потолок качества
Раз первый кадр — это ваше изображение, его резкость, свет и композиция становятся верхней границей клипа. Подходят JPEG, PNG без прозрачности, BMP или WEBP от 240 до 8000 пикселей по стороне, с соотношением сторон не шире 8:1 и размером до 20 МБ. Если не указывать aspect_ratio, клип унаследует форму кадра; противоречащее соотношение обрежет его.
Финальный кадр закреплён, а не предложен
last_image_url — не мягкая подсказка: клип заканчивается ровно на этом изображении, и поле работает только вместе с image_url. В примере с флаконом один и тот же пэкшот передан на оба конца, поэтому флакон поворачивается на четверть оборота, блик проходит по стеклу, и он возвращается к исходному ракурсу с читаемой этикеткой.
Длинные отрезки между двумя закреплёнными моментами
Когда заданы оба конца, генерируется только переход между ними. Пример на крыше закрепляет открытую танцевальную позицию как первый кадр и нижнюю точку поддержки как последний, а модель заполняет пять секунд между ними в 720p; те же два кадра могут обрамлять гораздо более длинное движение, потому что на этом эндпоинте duration_seconds доходит до 30.
Параметры запроса
| Параметр | Обязательно | Описание |
|---|---|---|
prompt | Нет | Необязателен: без него модель сама оживит открывающий кадр. Если пишете, опишите кадр: субъект, одно действие, одно движение камеры, затем свет и звук. Не менее 1 символов |
image_url | Да | Стартовый кадр: используется ровно как первый кадр и задаёт настоящий потолок качества всего плана. |
last_image_url | Нет | Необязательный, работает только вместе с |
aspect_ratio | Нет | 16:9, 9:16, 1:1, 4:3, 3:4 или adaptive, при котором выбирает модель. Оставьте поле пустым — клип унаследует форму открывающего кадра; противоречащее значение обрежет его. |
enable_thinking | Нет | Заставляет модель продумать задание и референсы до генерации. Помогает с объёмными документами, веб-страницами и сложными референсными изображениями, но генерация идёт дольше. По умолчанию: |
resolution | Нет | 480p, 720p или 1080p, по умолчанию 720p. Разрешение меняет и цену, и время возврата задачи. |
duration_seconds | Нет | Любое целое от 2 до 30 или -1 — умная длительность, при которой длину выбирает модель: заранее резервируется максимум в 30 секунд, а списание идёт по фактически выданной длине. |
generate_audio | Нет | По умолчанию включён. Клип возвращается со звуком, уже сцепленным с картинкой. По умолчанию: |
enable_prompt_expansion | Нет | По умолчанию выключено. Во включённом виде описание переписывается перед генерацией: тонкому брифу это помогает, подробному — мешает. По умолчанию: |
seed | Нет | От 0 до 2147483647. Держите его неизменным, чтобы сравнивать по одному изменённому полю; уберите — получите разнообразие. |
Стоимость
| Спецификация | Стоимость |
|---|---|
| $0.045 / секунду |
| $0.09 / секунду |
| $0.18 / секунду |
Сценарии использования
Вращение товара с возвратом к главному ракурсу
Для пэкшота передайте утверждённое изображение и как первый, и как последний кадр, зафиксируйте камеру и опишите одно движение. В примере с флаконом используется один мягкий рисующий свет слева, без музыки (generate_audio равно false), и фиксированный сид 20260907 — так легко повторить то же движение после небольшой правки текста и сравнить два файла.
Стилизованные кадры, которые следуют тексту
Если одежда, тело или декорации должны выглядеть ровно как утверждено, поместите их в первый кадр. Пример у окна начинается с кадра женщины в шёлковой сорочке; промпт описывает только её поворот к объективу, прозрачную занавеску, проплывающую перед светом, и медленный наезд, пока рассвет становится ярче. Клип идёт 5 секунд в 1080p со звуком.
Руководство по промптам и практические советы
Описывайте то, что меняется, а не то, что видно
Всё, что уже есть в кадре, наследуется; описывать это заново — значит тратить слова, нужные движению. Напишите, кто или что движется, в каком направлении и с какой скоростью, а затем что делает камера: «The bottle rotates a quarter turn so the highlight travels across the glass, then returns to its starting angle. Locked camera, single soft key from the left, no music.»
Готовьте два кадра как пару
Добавляя last_image_url, делайте оба изображения в одном кадрировании и в одних декорациях, а в промпте объясняйте, как одно превращается в другое. Пример на крыше сочетает первый кадр пары в открытой танцевальной позиции с финальным кадром той же пары — на той же крыше и с той же точки съёмки — в нижней точке поддержки, а промпт описывает только движение между ними: он притягивает её за руку и плавно наклоняет назад, камера при этом неподвижна.
Проверяйте середину клипа, а не только края
Совпавший финальный кадр ещё не доказывает правдоподобного перехода. Проверяйте внешность и геометрию в начале, в середине и в конце; если они плывут, уменьшите число одновременных движений, прежде чем удлинять клип. Добейтесь нужного движения на 5 секундах, потом удлиняйте, а enable_prompt_expansion оставьте в значении по умолчанию false, чтобы подробное описание движения выполнялось как написано.
Быстрый старт API
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "alibaba/wan-3.0/image-to-video",
"input": {
"duration_seconds": 5,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "720p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
Аутентификация, полная схема, опрос статуса и обработка ошибок описаны в справочнике API.



























