Перейти к основному контенту

Wan 3.0 API: текст в видео, изображение в видео или референс в видео

Вход в Wan 3.0: текст, изображение или референс — по тому, что не должно меняться. Цены за секунду, лимиты, реальные клипы и тело запроса.

Автор
SpicyAPI Engineering
Опубликовано
Время чтения
14 мин чтения
Обновлено
Три киноплёнки держат рукописную страницу сценария и два пейзажа, свет сходится сквозь стекло в один проецируемый кадр пейзажа

Wan 3.0 — одно семейство моделей с тремя входами, и способ, которым вы начнёте, определяет, что вы можете контролировать, за что платите и как в этом API обрабатывается контент без цензуры. Отправлять слова, стоп-кадр или стопку референсов сводится к одному вопросу.

Коротко: спросите, что не должно меняться в клипе:

  • Пока ничего, вы ещё ищете сцену: текст в видео. Достаточно одного поля prompt.
  • Первый кадр (и по желанию последний): изображение в видео. Изображение используется ровно как первый кадр, поэтому промпту достаточно описать движение.
  • Персонаж, комната, голос или стиль движения, который должен повторяться: референс в видео. До десяти изображений, пяти клипов и пяти аудиодорожек, плюс необязательный документ или веб-страница, каждому из которых отведена роль в промпте.

Все три возвращают от 2 до 30 секунд со звуком в одном файле, в 480p, 720p или 1080p на базовом уровне и Prime (уровни Pro рендерят 1080p, 2K или 4K, причём 2K и 4K увеличиваются из рендера 1080p). Остальные видеомодели — в каталоге API видео без цензуры.

Три задачи рядом

Текст в видеоИзображение в видеоРеференс в видео
Обязательный входpromptimage_url (промпт необязателен)хотя бы одно из: reference_image_urls, reference_video_urls, reference_audio_urls, reference_file_url, reference_link_url (промпт необязателен)
Что фиксируетНичего; предложение — единственный источникРовно первый кадр; last_image_url фиксирует последний кадрНичего точно; референсы управляют внешностью, обликом, движением или голосом
Не отправлятьЛюбое изображение или референсПоля reference_*image_url, last_image_url
ЛимитыДлина промпта — по странице моделиИзображение от 240 до 8000 px по стороне, 20 MB, соотношение сторон не шире 8:110 изображений, 5 клипов и 5 аудиодорожек; референсные клипы и аудио суммарно ограничены 15 s
Лучше всего дляИзучения сцен, длинных непрерывных плановPackshot, утверждённой графики, циклов, продолжения с кадраПовторяющихся персонажей, совпадения комнаты, голоса или движения камеры

Во всех трёх задачах длительность — от 2 до 30 секунд, либо -1, чтобы модель выбрала длину (30 s резервируются заранее, а списание рассчитывается по выданной длине).

Если отправить поле, которого задача не перечисляет, например image_url в задачу «текст в видео», вызов создания вернёт 400. Возьмите схему со страницы модели, а не копируйте соседний эндпоинт.

Сколько стоит клип

Цена за секунду одинакова для текстового, визуального и референсного входа.

Уровень (все задачи)Разрешения и цена за секундуКлип 5 sКлип 30 s в минимальном разрешении
Wan 3.0480p $0.045 / 720p $0.09 / 1080p $0.18$0.225 / $0.45 / $0.90$1.35 (480p)
Wan 3.0 Prime (быстрее)480p $0.0612 / 720p $0.126 / 1080p $0.252$0.31 / $0.63 / $1.26$1.84 (480p)
Wan 3.0 Pro1080p $0.144 / 2K $0.16 / 4K $0.184$0.72 / $0.80 / $0.92$4.32 (1080p)
Wan 3.0 Pro Prime1080p $0.234 / 2K $0.252 / 4K $0.279$1.17 / $1.26 / $1.40$7.02 (1080p)

Референс в видео добавляет одну тонкость: секунды любого референсного видео тарифицируются сверх результата, а референсные клипы вместе с результатом должны укладываться в 30 секунд. Референсные изображения, аудио, документы и веб-страницы не тарифицируются. Расчёт или резервирование задачи с референсными клипами исходит из максимума в 15 секунд; снимается плата только за реально использованные секунды.

Более старый Wan 2.6 — альтернатива с фиксированной длиной: текст в видео и изображение в видео возвращают ровно 5, 10 или 15 секунд в 720p ($0.09 за секунду) или 1080p ($0.135). Его задача «референс в видео» — другой контракт: до трёх референсных клипов и ни одного изображения, а метка у неё Filtered content, а не Unrestricted.

Текст в видео: пишите кадр, а не настроение

Используйте её, когда сцена ещё открыта, утверждённого изображения нет или вам нужна одна длинная запись со своим звуком. Первый кадр ничем не закреплён, поэтому в промпт нужно поместить всё, что должен увидеть зритель: объект, одно действие, одно движение камеры, затем свет и звук. Одно ясное действие лучше длинного списка прилагательных. Ищите в другом месте, когда начальная композиция должна совпасть с утверждённым изображением: это изображение в видео.

json
{
  "model": "alibaba/wan-3.0/text-to-video",
  "input": {
    "prompt": "A ceramic bottle stands on a brushed-steel counter. One bead of condensation rolls down the glass while the camera pushes in slowly. Cool side light, no cut. Sound: a faint fridge hum and the tick of the droplet landing.",
    "duration_seconds": 10,
    "resolution": "720p",
    "aspect_ratio": "9:16",
    "generate_audio": true
  }
}

Такой запрос стоит 10 x $0.09 = $0.90 на базовом Wan 3.0. Помогают три привычки:

  • Определите внешний вид на 5 секундах, прежде чем просить 30. Длинные клипы больше дрейфуют, поэтому плохую идею дешевле найти короткой.
  • Для длинных планов разбейте промпт на отбивки по времени. Один пример сообщества описал по одной двухсекундной отбивке на действие (тесто, соус, начинка, духовка) плюс строку о непрерывности для 15-секундного клипа.
  • Выключайте расширение промпта, как только бриф точен. Оно помогает бедным промптам и мешает подробным; в задаче «текст в видео» у Wan 3.0 Pro оно включено по умолчанию.

Изображение в видео: кадр — это потолок

Используйте её, когда первый кадр не обсуждается: packshot товара с фиксированным кадрированием, утверждённый лист персонажа, ключевой кадр из предыдущего клипа. Изображение задаёт костюм, декорации и свет, поэтому промпт несёт только движение. Ищите в другом месте, когда сцена ещё открыта (текст в видео) или когда персонаж должен повторяться в нескольких планах (референс в видео). Опустите aspect_ratio, и клип унаследует форму изображения; конфликтующее значение обрежет его.

last_image_url заканчивает клип ровно на втором изображении. Передача одного и того же файла как первого и последнего кадра даёт цикл без сшивки, как в этом примере с бутылкой продукта: поворот на четверть, чтобы блик прошёл по стеклу, затем обратно к началу.

Wan 3.0 изображение в видео, 1080p, 5 секунд, без звука: флакон сыворотки поворачивается на четверть и возвращается в исходный ракурс, этикетка в конце снова по центру, на основе того же стоп-кадра, что и первый, и последний кадр

То же изображение, что image_url и last_image_url, звук выключен; 5 s в 1080p стоят $0.90.

json
{
  "model": "alibaba/wan-3.0/image-to-video",
  "input": {
    "image_url": "https://cdn.spicyapi.ai/models/examples/inputs/e82b71db9e3d0e5f.png",
    "last_image_url": "https://cdn.spicyapi.ai/models/examples/inputs/e82b71db9e3d0e5f.png",
    "prompt": "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.",
    "duration_seconds": 5,
    "resolution": "1080p",
    "generate_audio": false,
    "seed": 20260907
  }
}

Опишите кадр, который вы предоставили, затем движение; никогда — другую комнату. Если промпт называет сцену, отличную от стоп-кадра, Wan 3.0 может открыться на стоп-кадре, а затем переключиться на новую сцену. Один только last_image_url отклоняется; ему нужен image_url.

Референс в видео: дайте каждому референсу роль

Используйте его, когда что-то должно повторяться: один и тот же персонаж в нескольких планах, конкретная комната, голос, движение или стиль камеры. Wan 3.0 читает референсы в том порядке, в котором вы их передаёте, а промпт говорит, кто есть кто; иначе модель усредняет их в субъект, не похожий ни на кого. Ищите в другом месте, когда один утверждённый стоп-кадр уже говорит всё: лишние референсы конкурируют и не дают автоматически больше контроля. Пример ниже сохраняет персонажа с первого изображения и комнату со второго.

Светящаяся стеклянная линза на подставке, направляющая потоки света на три стеклянные панели: полоса раскадровки, пейзаж и ряд абстрактных карточек

Декоративная иллюстрация, а не результат модели и не схема примера ниже.

json
{
  "model": "alibaba/wan-3.0/reference-to-video",
  "input": {
    "reference_image_urls": [
      "https://cdn.spicyapi.ai/models/examples/inputs/a4d8d93ce949c527.png",
      "https://cdn.spicyapi.ai/models/examples/inputs/27753da99f960815.png"
    ],
    "prompt": "The first image is the character: keep her face, hair and the black slip dress exactly. The second image is the room. She crosses from the doorway to the window and leans against the frame, looking out. Slow lateral track, one practical lamp, night ambience.",
    "duration_seconds": 8,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "seed": 771120
  }
}
Wan 3.0 референс в видео, 720p, 8 секунд, со звуком: женщина в чёрном шёлковом платье, взятая с первого референсного изображения, пересекает тёмную квартиру от двери к ночному окну, комната взята со второго изображения

Два референсных изображения, референсного видео нет: 8-секундный клип стоит 8 x $0.09 = $0.72.

Что можно подать на вход:

  • Изображения (до 10) для внешности, костюма и декораций. Фотографию реального человека часто отклоняет проверка лиц ("The input content is suspected to include real human faces"). Используйте нарисованных, 3D-отрендеренных или сгенерированных персонажей. Отклонённые задачи не тарифицируются.
  • Видео (до 5 клипов, от 1 до 15 s каждый, всего 15 s) для движения и стиля камеры, а не для лица. Проверьте длины клипов перед отправкой; лимиты применяются во время генерации, а не при приёме.
  • Аудио (до 5 клипов, всего 15 s) для голоса или шума комнаты.
  • Один документ или одна публичная веб-страница (не оба сразу), которые модель читает для персонажей, костюма, окружения и действия: файл PDF, DOCX, TXT или Markdown до 100 MB и 50 страниц либо страница, открывающаяся без входа. Прикрепление любого из двух включает thinking (недоступно на уровнях Pro) и расширение промпта, если вы не задали их сами. Туториал автора показывает эту идею; неудачное чтение страницы не тарифицируется.

Если первый кадр должен быть точным, используйте изображение в видео. Референс в видео можно попросить начинать с изображения (см. руководство по промптам Wan 3.0 от Alibaba), но гарантирует это только изображение в видео.

Что меняется для работы без цензуры

Отсутствие цензуры — не один переключатель в Wan; выбранная задача меняет результат. По нашим тестам сентября 2026 года (полная таблица в тесте Wan без цензуры):

  • Базовый Wan 3.0 выдал в тесте все уровни интенсивности, от слабого до сильного, для текстового, визуального и референсного входа, но заходит дальше, чем вы просили: промпт на тему сдержанности часто возвращался как другая сцена со взрослыми, иногда с добавлением второго человека.
  • Изображение в видео у Wan 3.0 Prime смягчило сцену со взрослыми, тогда как Prime в тексте и с референсом её выдал. Если ваша работа начинается со стоп-кадра, сначала попробуйте базовый Wan 3.0.
  • Wan 3.0 Spicy и Prime Spicy существуют только как изображение в видео (от $0.057 за секунду в 480p). Они сами скатываются к контенту для взрослых и часто меняют или снимают одежду. Если костюм должен остаться, берите базовый Wan 3.0.
  • Референс в видео у Wan 2.6 отказал на нашем референсном материале.

Поведение различается по эндпоинтам, поэтому прогоните свой промпт на том, который выбрали. Чтобы продолжить историю дольше 30 секунд, смотрите сшивку клипов.

Сначала попробуйте в Playground

У каждой задачи есть своя страница с вкладкой Playground (оставайтесь в виде Form; войдите с пополненным счётом, чтобы запустить). Прогоните там короткий дешёвый клип, прежде чем писать код.

  1. Откройте страницу своей задачи: текст в видео, изображение в видео или референс в видео.
  2. Заполните входы, которые нужны задаче. Текст в видео: Prompt. Изображение в видео: Input image, плюс Closing frame, если клип должен закончиться вторым изображением; Prompt необязателен. Референс в видео: Reference images, Reference videos и Reference audio (хотя бы один из референсных входов); в промпте укажите, что управляет каждым из них.
  3. Поставьте Resolution в 480p, а Duration в 5. Оба помечены как влияющие на цену, и оценка на странице обновляется при их изменении.
  4. Оставьте Generate audio включённым, если только вы сами не оцениваете клип, и выключите Prompt expansion, как только промпт станет точным. Задайте Seed, если хотите сравнить два изменения.
  5. Нажмите Run model, посмотрите клип в Output, а затем поднимите разрешение и длительность, когда внешний вид станет правильным.

Представление JSON рядом с Form показывает тело запроса, а вкладки с кодом рядом показывают тот же вызов, поэтому работающий здесь клип можно скопировать в ваш код.

Затем запустите из кода

Установите Python SDK (pip install spicyapi), задайте SPICY_API_KEY в окружении и выполните это. Здесь используется тело «текст в видео» из примера выше; поменяйте идентификатор модели и input на любые из двух других задач. Код показывает цену и ждёт вашего подтверждения перед созданием задачи:

python
import uuid
from spicyapi import SpicyClient, output_assets

client = SpicyClient()  # reads SPICY_API_KEY from the environment
MODEL = "alibaba/wan-3.0/text-to-video"
body = {
    "prompt": "A ceramic bottle stands on a brushed-steel counter. One bead of condensation "
              "rolls down the glass while the camera pushes in slowly. Cool side light, no cut. "
              "Sound: a faint fridge hum and the tick of the droplet landing.",
    "duration_seconds": 10,
    "resolution": "720p",
    "aspect_ratio": "9:16",
    "generate_audio": True,
}

quote = client.quote_task(model=MODEL, input_data=body)
print("Estimated", quote["estimatedCost"], "maximum", quote["maxCharge"])
if input("Create the task? [y/N] ").strip().lower() != "y":
    raise SystemExit

task = client.create_task(
    model=MODEL,
    input_data=body,
    idempotency_key=str(uuid.uuid4()),
    quote_id=quote["quoteId"],
    expected_cost=quote["estimatedCost"],
)
print("Task", task["taskId"], flush=True)  # save it: after a timeout, look this task up instead of creating another
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
    raise SystemExit(f"{task['taskId']} ended as {final['state']}: {final.get('errorCode')}")
assets = output_assets(final)
if not assets or any(
    not asset.get("url") or asset.get("pending") or asset.get("unavailable")
    for asset in assets
):
    raise RuntimeError(f"{task['taskId']} has no complete downloadable output; look up this task before retrying")
print(assets[0]["url"])  # copy the clip to your own storage now

Для входов-изображений, клипов или аудио используйте публичную HTTPS-ссылку или загруженный файл (руководство по медиа). Всё, что выходит за рамки этого вызова, — в руководстве по задачам и справочнике Python SDK; сервис может использовать вебхуки. Клипы хранятся около 14 дней, поэтому копируйте нужные (хранение и доставка).

Или пусть запустит Agent

Когда клипы должен запускать ассистент, все три официальных инструмента показывают цену и спрашивают перед платным вызовом.

  • CLI. Положите тот же объект input в input.json, затем:

``bash spicyapi tasks create --model alibaba/wan-3.0/text-to-video --input-file input.json --wait ``

Для локального стоп-кадра spicyapi files upload still.png возвращает адрес spicy:// для image_url. Смотрите документацию CLI; npx @spicyapi/cli работает без установки.

  • MCP-сервер. Добавьте MCP-сервер своему ассистенту и спросите: "Make a 10-second 9:16 clip at 720p with Wan 3.0 text-to-video from this prompt." Он вызывает spicyapi_task_create, который останавливается для подтверждения цены, затем spicyapi_task_wait. Для файла на вашем компьютере он использует spicyapi_upload_file.
  • Skill. npx skills add spicyapi-ai/spicy-skill устанавливает Agent Skill, благодаря которому ассистент по коду читает актуальную схему модели вместо догадок о полях.

Когда результат неверен, измените одну вещь

Что вы видитеВероятная причинаСледующий шаг
Вызов создания возвращает 400Поле, которое задача не перечисляет, или значение вне диапазонаСверьтесь со схемой задачи
Референсные персонажи сливаются в одного новогоРеференсы не названы в промптеНапишите "the first image is the character, the second is the room"
Референсная задача не работает с фотографиейПроверка лица на реальном человекеПерейдите на сгенерированного, нарисованного или 3D-персонажа
Клип игнорирует ваше кадрированиеaspect_ratio конфликтует с изображениемОпустите его и позвольте клипу унаследовать форму изображения
Клип переключается на сцену, которую вы не давалиПромпт описывает комнату, отличную от стоп-кадраОпишите данный кадр, а затем только движение

Сравнивая две попытки, меняйте одно поле и держите seed, промпт, длительность и разрешение постоянными. Тайм-ауты, баланс и прочие общие ошибки описаны в справочнике ошибок.

С какого уровня начать

Начинайте с базового Wan 3.0 в 480p и поднимайте разрешение, когда внешний вид станет правильным. Prime быстрее, но на 36 процентов дороже за секунду в 480p и на 40 процентов дороже в 720p и 1080p; от 1080p до 4K используйте Pro. Для фиксированных 5, 10 или 15 секунд используйте Wan 2.6 с текстовым или визуальным входом.

FAQ

Лучше ли изображение в видео, чем референс в видео, для сохранения лица?

Если лицо находится в начальном кадре, используйте изображение в видео: оно берёт изображение ровно как первый кадр. Референс в видео нужен для лица, которое должно повторяться между планами, и его референсы управляют, а не фиксируют.

Лучше ли изображение в видео, чем текст в видео?

В целом ни одно не лучше. Изображение в видео выигрывает, когда первый кадр должен быть конкретным утверждённым изображением; текст в видео выигрывает, когда вы ещё изучаете сцену словами, и он не требует исходного файла.

Меняет ли тип задачи цену?

Нет. Цена за секунду зависит только от уровня и разрешения; референс в видео добавляет тарифицируемые секунды любого референсного клипа.

Коротко: слова — чтобы изучать сцену, стоп-кадр — чтобы зафиксировать первый кадр, референсы — для всего, что должно повторяться между планами.

Другие языки English · 日本語 · 한국어 · Deutsch · Français · Español · Português (Brasil) · Italiano · Polski