Seedance 2.5
API Seedance 2.5: генерация видео, кадры и референсы, примеры запросов, проверка задач, скачивание и цены.
Seedance 2.5 поддерживает текст, первый и последний кадры, референсы изображений, видео и аудио; разрешения: 480p, 720p, 1080p. Генерируйте до 30 секунд на запрос. Описание модели и Playground.
Подключение к Wan API
Используйте https://api.wanapi.app как базовый URL API. Создайте ключ в настройках API: один ключ подходит для всех моделей. Передавайте его как Authorization: Bearer YOUR_API_KEY. Храните ключи на сервере. Playground использует вашу сессию сайта и тот же баланс аккаунта; вставлять ключ в браузер не требуется.
Для доступа нужен активный аккаунт с достаточным балансом. GET /v1/models возвращает модели, доступные вашему ключу. Модели Seedance используют POST /v1/videos; выберите модель в теле JSON.
| Параметр | Seedance 2.5 |
|---|---|
| Идентификатор модели | bytedance/seedance-2.5 |
resolution | 480p, 720p, 1080p; по умолчанию: 720p. |
duration | 4–30 секунд видео или -1 для автоматического выбора; по умолчанию: -1. |
aspectRatio | adaptive, 16:9, 4:3, 1:1, 3:4, 9:16, 21:9; по умолчанию: adaptive. |
generateAudio | true по умолчанию. false не снижает тариф за токены. |
| Результат | Одно видео на запрос, 24 fps. |
Раздел поля запроса описывает все 14 полей верхнего уровня. Используйте приведённые имена полей, включая aspectRatio и generateAudio.
Отправка задачи Seedance 2.5
Это запрос генерации четырёхсекундного видео из текста в 720p. Задайте ваш ключ в WAN_API_KEY на сервере. Отправьте запрос один раз и сохраните полученный id.
curl https://api.wanapi.app/v1/videos \
-H "Authorization: Bearer $WAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seedance-2.5",
"prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
"resolution": "720p",
"aspectRatio": "16:9",
"duration": 4,
"generateAudio": true
}'Проверка задачи Seedance 2.5
Сохраните полученный id как TASK_ID, затем проверяйте статус с тем же ключом. Отправка возвращает подтверждение задачи; видео доступно после завершения. Начните с опроса каждые пять секунд; см. статусы задач и скачивание.
curl "https://api.wanapi.app/v1/videos/$TASK_ID" \
-H "Authorization: Bearer $WAN_API_KEY"Цены Seedance 2.5
Тарифы указаны в USD за один миллион видеотокенов. Итоговая стоимость зависит от входных и выходных видеотокенов. На расход влияют разрешение, длительность и референсные видео; используйте тариф для запросов с референсным видео или без него. Отдельного тарифа для аудио нет.
| Разрешение | Референсное видео | Цена fal.ai | Цена Wan API | Ваша экономия |
|---|---|---|---|---|
| 480p | Без видео | 0,2056 $ | Недоступно | — |
| 480p | С видео | 0,1234 $ | Недоступно | — |
| 720p | Без видео | 0,4622 $ | Недоступно | — |
| 720p | С видео | 0,2773 $ | Недоступно | — |
| 1080p | Без видео | 1,1372 $ | Недоступно | — |
| 1080p | С видео | 0,6823 $ | Недоступно | — |
Расчёт основан на результате 16:9 с частотой 24 fps. Другие соотношения сторон и фактические размеры результата могут менять стоимость.
Без референсного видео учитывается только длительность результата. С референсным видео учитывается длительность входного и выходного видео. Для черновиков Seedance 2.5 и генерации из черновика с референсным видео минимальная оплачиваемая длительность входа составляет две трети длительности результата с округлением вверх до целой секунды. Итоговая стоимость определяется отчётом об использовании.
Сравнение с fal.ai: Цены моделей fal.ai. Проверено 2026-10-22. Цены Wan API обновляются автоматически.
Итоговая стоимость зависит от входных и выходных видеотокенов. Неудачные запросы не оплачиваются.
Цены и оценки Seedance 2.5. Проверьте оценку в Playground перед отправкой.
Поля запроса
Передайте объект JSON. Для новой сцены обязательны model и непустой промпт либо хотя бы один медиафайл; остальные поля необязательны. Для финального рендера передайте только model, draftTaskId и resolution: "1080p" (необязательно n: 1 и параметры финального рендера в providerOptions.bytedance). Неизвестные поля отклоняются.
| Поле | Тип | Условия |
|---|---|---|
model | string | Обязательно: bytedance/seedance-2.5. |
draftTaskId | string | Публичный идентификатор вашего завершённого черновика Seedance 2.5. Для финального рендера передайте только model, draftTaskId и resolution: "1080p" (необязательно n: 1 и параметры финального рендера в providerOptions.bytedance). |
prompt | string | Текстовые инструкции: до 20 000 символов в этом сервисе. Для новой сцены требуется промпт или медиафайл; при использовании draftTaskId не указывайте это поле. |
image | URL или объект URL | URL изображения первого кадра либо объект с type: "url", url и необязательным mediaType. Используйте только одно из полей: image или frameImages. |
frameImages | array | Один first_frame и необязательный last_frame. Каждая запись содержит frameType и image; см. пример кадров ниже. |
inputReferences | array | До 30 изображений и 10 видео. Каждая запись содержит type: "url", url и mediaType. Также принимается URL в форме data/mediaType. |
aspectRatio | string | adaptive (по умолчанию), 16:9, 4:3, 1:1, 3:4, 9:16, 21:9. Для режимов первого кадра требуется adaptive. |
resolution | string | 480p, 720p, 1080p. По умолчанию: 720p. Также принимает 854x480, 1280x720, 1920x1080 как уровни разрешения; используйте aspectRatio для выбора соотношения сторон. |
duration | integer | 4–30 секунд видео или -1 для автоматического выбора. По умолчанию: -1. |
fps | integer | Фиксированное значение 24; не указывайте или передайте 24. |
generateAudio | boolean | Генерация аудио. По умолчанию: true; отключение не меняет тариф за токены. |
n | integer | Фиксированное значение 1; одно видео на запрос. |
providerOptions | object | Необязательный объект bytedance с нативными параметрами из раздела параметры провайдера. Неизвестные параметры отклоняются. |
Параметры провайдера
Поместите эти нативные параметры в providerOptions.bytedance. Для пропущенных параметров используются указанные значения по умолчанию. Финальный рендер из draftTaskId принимает только output_format, watermark, return_last_frame, execution_expires_after, priority, safety_identifier, service_tier и совпадающий content_filter.
| Параметр | Тип | По умолчанию | Условия |
|---|---|---|---|
referenceAudio | string[] | — | До 10 URL аудио HTTP(S) для референсов. |
draft | boolean | false | true создаёт черновик 480p и требует resolution: "480p". |
output_format | string | mp4 | mp4 или mov. |
omni_reference_task_type | string | auto | auto, reference, edit или extend. Для edit и extend требуются референсное видео и aspectRatio: "adaptive"; для edit требуется duration: -1. |
content_filter | boolean | true | false отключает фильтрацию содержимого для этого запроса. Цена не меняется. Финальный рендер наследует значение черновика. |
watermark | boolean | false | Добавить водяной знак. |
return_last_frame | boolean | false | Также вернуть последний кадр как изображение в lastFrame. |
execution_expires_after | integer | 172800 | 3600–259200 секунд. Незавершённая за это время задача истекает и не оплачивается. |
priority | integer | 0 | 0–9. |
safety_identifier | string | — | 1–64 байта для идентификации вашего конечного пользователя; можно использовать хеш. |
service_tier | string | default | Только default. |
Сочетания входных данных и ограничения медиа
-
Используйте
imageдля первого кадра илиframeImagesдля первого и необязательного последнего кадра. Последний кадр без первого и повторяющиеся типы кадров отклоняются. -
Кадры нельзя сочетать с
inputReferencesилиproviderOptions.bytedance.referenceAudio. -
Режим референсов принимает до 30 изображений, 10 видео и 10 аудиоклипов, всего не более 50 референсов.
-
Для кадров требуется
aspectRatio: "adaptive". Референсное аудио можно использовать без изображения или видео. -
Медиаданные должны быть общедоступными URL HTTP(S). Загрузка байтов и URL с учётными данными не принимаются.
-
Изображения: JPEG, PNG, WebP, BMP, TIFF или GIF, HEIC или HEIF; менее 30 MB; каждая сторона 300–6000 пикселей; соотношение сторон 0.4–2.5.
-
Видео: MP4 или MOV; не более 200 MB на файл; каждый клип 2–30 секунд, суммарно не более 30 секунд; 300–6000 пикселей на сторону, соотношение сторон 0.4–2.5, 24–60 fps.
-
Аудио: MP3 или WAV; не более 15 MB на файл; каждый клип 2–30 секунд, суммарно не более 30 секунд.
-
Размер, кодировка и длительность удалённых медиа проверяются при обработке; проверка URL сама по себе не гарантирует пригодность файла.
-
Используйте
draftTaskIdдля рендера завершённого черновика в 1080p. Нативные параметры задачи указываются вproviderOptions.bytedance; другие нативные поля не принимаются.
Примеры кадров и референсов
Отправьте эти тела запроса в тот же эндпоинт POST /v1/videos. Перед отправкой замените каждый URL example.com своим URL с прямым доступом к медиа. Сохраняйте доступность входных URL до завершения задачи.
Первый и последний кадры
Для одного первого кадра используйте image: "https://example.com/first-frame.jpg" и не указывайте frameImages. Чтобы задать оба крайних кадра клипа, используйте:
{
"model": "bytedance/seedance-2.5",
"prompt": "The camera slowly moves from the opening scene to the closing scene.",
"frameImages": [
{
"frameType": "first_frame",
"image": "https://example.com/first-frame.jpg"
},
{
"frameType": "last_frame",
"image": "https://example.com/last-frame.jpg"
}
],
"aspectRatio": "adaptive",
"resolution": "720p",
"duration": 4
}Референсы изображений, видео и аудио
Поместите изображения и видео в inputReferences, явно указав MIME-тип. URL аудио поместите в providerOptions.bytedance.referenceAudio. Не добавляйте кадры в этот запрос.
{
"model": "bytedance/seedance-2.5",
"prompt": "Use the character from the image and the camera movement from the video.",
"inputReferences": [
{
"type": "url",
"url": "https://example.com/character.jpg",
"mediaType": "image/jpeg"
},
{
"type": "url",
"url": "https://example.com/motion.mp4",
"mediaType": "video/mp4"
}
],
"providerOptions": {
"bytedance": {
"referenceAudio": [
"https://example.com/sound.wav"
]
}
},
"resolution": "720p",
"duration": 4
}Редактирование или продление референсного видео
Задайте providerOptions.bytedance.omni_reference_task_type как edit или extend и укажите хотя бы одно референсное видео. Для обоих режимов требуется aspectRatio: "adaptive"; для edit также требуется duration: -1.
{
"model": "bytedance/seedance-2.5",
"prompt": "Replace the sky with a sunset. Keep the camera movement.",
"inputReferences": [
{
"type": "url",
"url": "https://example.com/source.mp4",
"mediaType": "video/mp4"
}
],
"aspectRatio": "adaptive",
"resolution": "720p",
"duration": -1,
"providerOptions": {
"bytedance": {
"omni_reference_task_type": "edit"
}
}
}Предпросмотр черновика
Используйте providerOptions.bytedance.draft: true с resolution: "480p" для создания черновика. Для черновика действует обычный тариф 480p за токены. После завершения используйте его публичный идентификатор задачи для отдельного финального рендера в 1080p.
{
"model": "bytedance/seedance-2.5",
"prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
"resolution": "480p",
"aspectRatio": "16:9",
"duration": 4,
"generateAudio": true,
"providerOptions": {
"bytedance": {
"draft": true
}
}
}Рендер черновика в 1080p
Отправьте это тело в POST /v1/videos, указав публичный идентификатор task_… завершённого черновика. Черновик должен принадлежать вашему аккаунту, использовать те же модель и канал и быть создан менее 7 дней назад. Этот нативный срок жизни черновика не связан со сроком хранения видео.
{
"model": "bytedance/seedance-2.5",
"draftTaskId": "task_YOUR_COMPLETED_DRAFT",
"resolution": "1080p"
}Не передавайте повторно prompt, медиа, duration, aspectRatio, generateAudio, fps, draft, referenceAudio или omni_reference_task_type. Эти настройки берутся из черновика. В providerOptions.bytedance можно задать output_format, watermark, return_last_frame, execution_expires_after, priority, safety_identifier и service_tier. Значение content_filter наследуется из черновика; если вы передаёте его, оно должно совпадать. API возвращает новый идентификатор задачи; опрашивайте GET /v1/videos/{new_task_id} для получения финального видео и его URL Bunny.
Финальный рендер оплачивается отдельно по текущему тарифу 1080p и категории референсного видео исходного черновика, с учётом фактических токенов результата. Опрос не повторяет генерацию и не вызывает повторное списание. Если результат отправки неизвестен, не отправляйте запрос повторно автоматически.
Вывод MOV
Задайте providerOptions.bytedance.output_format как mov для MOV или mp4 для MP4 (по умолчанию). Этот параметр работает для новой сцены и финального рендера из черновика.
{
"model": "bytedance/seedance-2.5",
"prompt": "A red ball on a plain table. Static camera.",
"resolution": "480p",
"duration": 4,
"providerOptions": {
"bytedance": {
"output_format": "mov"
}
}
}После завершения videos[0].url содержит подписанный URL Bunny исходного файла .mov, а videos[0].mediaType — video/quicktime. MOV не преобразуется в MP4. Воспроизведение в браузере зависит от поддержки кодека; скачайте файл, если браузер не может его воспроизвести. Файлы загружаются в Bunny; в базе данных хранятся только ссылки на файлы и метаданные задач. Медиа в Base64 не принимаются.
Проверка статуса и скачивание видео
Принятая задача возвращает подобный объект. Идентификаторы и временные метки приведены для примера:
{
"id": "task_EXAMPLE",
"object": "video",
"model": "bytedance/seedance-2.5",
"status": "queued",
"progress": 0,
"created_at": 1792022400
}Опрашивайте GET /v1/videos/{task_id} с вашим ключом API. Ответ содержит тот же публичный идентификатор задачи и модель. Определяйте момент окончания опроса по status; progress не является оценкой оставшегося времени.
| Статус | Значение | Следующий шаг |
|---|---|---|
queued | Задача принята. | Продолжайте проверять статус. |
in_progress | Идёт генерация. | Продолжайте проверять статус. |
completed | Видео готово. | Прочитайте videos[0].url и скачайте файл. |
failed | Генерация завершилась ошибкой. | Прекратите опрос и проверьте error. |
Ответ завершённой задачи содержит videos — массив объектов с url и mediaType. Временные метки указаны в секундах Unix; completed_at появляется при регистрации завершения.
{
"id": "task_EXAMPLE",
"object": "video",
"model": "bytedance/seedance-2.5",
"status": "completed",
"progress": 100,
"created_at": 1792022400,
"completed_at": 1792022460,
"videos": [
{
"url": "/v1/tasks/task_EXAMPLE/artifacts/video/content",
"mediaType": "video/mp4"
}
]
}При providerOptions.bytedance.return_last_frame: true завершённая задача также содержит lastFrame — объект с url и mediaType (image/jpeg).
Если полученный URL является относительным путём, дополните его относительно https://api.wanapi.app и авторизуйтесь вашим ключом API. Для примера выше:
curl "https://api.wanapi.app/v1/tasks/$TASK_ID/artifacts/video/content" \
-H "Authorization: Bearer $WAN_API_KEY" \
-o video.mp4Если возвращён подписанный HTTPS URL медиа, используйте его напрямую, не передавая ключ API этому хосту. Срок действия URL может истечь. Сохраняйте нужные видео в собственном хранилище. Опрос и скачивание готового результата не создают новую генерацию.
Неудачная задача содержит объект error с code и message, например:
{
"id": "task_EXAMPLE",
"object": "video",
"model": "bytedance/seedance-2.5",
"status": "failed",
"error": {
"code": "generation_failed",
"message": "Video generation failed"
}
}Оплата и обработка ошибок
Итоговое списание определяется фактическим расходом видеотокенов и текущим тарифом модели. Оценка Playground — максимальная оценка, а не фиксированная цена. Более длинные клипы и высокое разрешение могут увеличить расход токенов. Неудачные запросы не оплачиваются.
- Неверные параметры: исправьте поля или сочетание входных данных перед повторной отправкой. Проверьте форматы и ограничения медиа, а также синтаксис URL.
- Авторизация или доступ к модели: используйте действительный ключ API.
- Недостаточный баланс: пополните счёт перед новым платным запросом. Лимит ключа не пополняет баланс аккаунта.
- Временная ошибка опроса: повторите GET с увеличивающимися интервалами и предельным временем ожидания. Ошибка запроса статуса не означает ошибку генерации.
- Тайм-аут отправки или отсутствие идентификатора задачи: результат может быть неизвестен. Не повторяйте POST автоматически: это может создать вторую платную задачу.
- Ошибка скачивания: повторите скачивание существующего результата перед новой генерацией.
Сохраните идентификатор задачи и обратитесь в поддержку, если нужно выяснить результат отправки.