Claude Opus 5.5 уже доступна в SeedRouter
SeedRouter Docs

Seedance 2.0

Генерируйте видео с Seedance 2.0 через официальный API задач ModelArk: видео по тексту, первый и последний кадр, а также референсы из изображений, видео и аудио, от 480p до 4K.

View Markdown

Seedance 2.0 — модель генерации видео от ByteDance (Dreamina Seedance 2.0). Отправьте официальное тело задачи ModelArk, сохраните возвращённый идентификатор задачи и получите готовое видео из задачи. Изображения, видео и аудио передаются в content как URL.

ID моделей

ID моделиРазрешенияПримечания
dreamina-seedance-2-0480p, 720p, 1080p, 4KПолная модель
dreamina-seedance-2-0-fast480p, 720pБолее низкая цена за секунду
dreamina-seedance-2-0-mini480p, 720pСамая низкая цена за секунду

Все три ID принимают одинаковые параметры. Актуальные цены — на странице модели.

Краткий пример

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [{"type": "text", "text": "A red paper boat drifts across a calm pond at sunrise, slow dolly-in"}],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "generate_audio": true
  }'

Конечная точка

POST https://api.seedrouter.ai/v1/contents/generations/tasks
ЗаголовокЗначение
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Тело запроса — официальный запрос ModelArk «создание задачи генерации видео». Если вы уже вызываете ModelArk, измените только базовый URL на https://api.seedrouter.ai/v1 и API-ключ. В ответе приходит {"id": "task_..."}, а не готовое видео. Храните API-ключи в серверном коде.

Параметры

ИмяТипОбязательныйПо умолчаниюПримечания
modelstringДа—Один из трёх ID моделей, указанных выше.
contentobject[]Да—Промпт и медиа; см. ниже.
resolutionenumНет720p480p, 720p, 1080p, 4k; ID Fast и Mini принимают только 480p и 720p.
ratioenumНетadaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive.
durationintegerНет5От 4 до 15 секунд или -1, чтобы длительность выбрала модель.
generate_audiobooleanНетtrueГенерировать звук вместе с видео.
watermarkbooleanНетfalseДобавить водяной знак.
return_last_framebooleanНетfalseДополнительно вернуть финальный кадр как URL изображения.
execution_expires_afterintegerНет172800От 3600 до 259200 секунд. Задача, не завершённая к этому сроку, переходит в expired и не тарифицируется.
priorityintegerНет0От 0 до 9.
safety_identifierstringНет—От 1 до 64 символов, идентифицирующих вашего конечного пользователя. Подойдёт хеш.
service_tierenumНетdefaultТолько default.
content_filterbooleanНетtrueРасширение SeedRouter. false отключает фильтрацию контента для этого запроса.

Элементы content

ЭлементСтруктураРольОграничение
Текст{"type": "text", "text": "..."}—Один.
Изображение{"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."}first_frame, last_frame, reference_imageДо 9 референсных изображений.
Видео{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_videoДо 3.
Аудио{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audioДо 3. Нужно референсное изображение или видео.

Неизвестные поля отклоняются. Не поддерживаются: seed, callback_url (вместо этого опрашивайте задачу), draft и draft_task, tools, а также frames и camera_fixed, доступные только в 1.x, и output_format и omni_reference_task_type (только Seedance 2.5). Задачи нельзя отменить или удалить.

Режимы

Режим определяется элементами content; параметра режима нет.

Режимcontent
Видео по текстуодин текстовый элемент
Первый кадртекст (необязательно) + одно изображение с ролью first_frame или одно изображение без роли
Первый и последний кадртекст (необязательно) + одно изображение first_frame + одно изображение last_frame
Мультимодальные референсытекст + любое сочетание элементов reference_image, reference_video и reference_audio

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

Пример с референсами

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [
      {"type": "text", "text": "The character from the image walks through the market in the video, same camera move"},
      {"type": "image_url", "image_url": {"url": "https://example.com/character.png"}, "role": "reference_image"},
      {"type": "video_url", "video_url": {"url": "https://example.com/market.mp4"}, "role": "reference_video"}
    ],
    "ratio": "adaptive",
    "duration": 8
  }'

Замените примеры URL на собственные доступные файлы.

Медиавходы

Этот API принимает только ссылки по URL. Base64, ссылки data:, идентификаторы asset:// и multipart-загрузки не принимаются. Playground сначала загружает выбранные файлы в хранилище и затем отправляет их URL.

Медиа должны быть публичными HTTP(S)-ссылками и соответствовать официальным ограничениям модели:

МедиаФорматыОграничения
ИзображениеJPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIFМенее 30 МБ; ширина и высота 300–6000 px; соотношение сторон (ширина / высота) 0,4–2,5; 1–9 референсных изображений
ВидеоMP4, MOV (H.264 или H.265)2–15 секунд каждое, не более 3, суммарно не более 15 секунд; не более 200 МБ; 24–60 FPS; ширина и высота 300–6000 px; соотношение сторон 0,4–2,5; 407 696–8 295 044 пикселей (ширина × высота)
АудиоWAV, MP32–15 секунд каждое, не более 3, суммарно не более 15 секунд; нужно референсное изображение или видео; не более 15 МБ

Референсные изображения и видео с реальными человеческими лицами модель не поддерживает.

Медиа проверяются при запуске задачи, до начала генерации. Задача, медиа которой нарушают одно из этих ограничений, завершается со статусом failed, ошибкой invalid_request_error и сообщением с указанием правила, например The request was rejected: content reference videos must total at most 15 seconds., и не тарифицируется. Файл, который на этом этапе не удаётся прочитать, передаётся модели, и она принимает или отклоняет его; неуспешная задача не тарифицируется в любом случае.

Факторы стоимости

Актуальные тарифы смотрите в разделе цен модели. Seedance 2.0 тарифицирует видеотокены — официальную единицу:

video tokens = (output seconds + reference video seconds) × width × height × 24 / 1024

Тариф за миллион токенов зависит от разрешения результата и от того, есть ли в запросе референсное видео; для запроса с референсным видео ко всем его токенам применяется более низкий тариф. Текстовые, графические и аудиовходы не тарифицируются. При 16:9 одна секунда — это 10 044 токена в 480p (864×496), 21 600 в 720p, 48 600 в 1080p и 194 400 в 4K.

Списание определяется токенами, о которых сообщает готовое видео (usage.completion_tokens), поэтому при duration: -1 оплачивается фактически сгенерированная длительность. Отрендеренные ролики немного длиннее запрошенного: запрос на 5 секунд в 720p и 16:9 даёт 121 кадр и сообщает 108 900 токенов, а не 108 000. Итоговые списания смотрите в истории использования своей учётной записи. Неуспешные и истёкшие задачи не тарифицируются.

Схема вывода

При отправке возвращается идентификатор задачи:

{"id": "task_..."}

Получение задачи

curl https://api.seedrouter.ai/v1/contents/generations/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Опрашивайте каждые 10–20 секунд, пока status не станет succeeded, failed или expired. Сетевой тайм-аут во время опроса не означает, что генерация завершилась сбоем: сохраните идентификатор задачи и продолжите проверку. Не создавайте другую задачу, чтобы узнать ход выполнения.

Полный пример опроса

Выполните этот код после приведённого выше примера отправки на Python.

import time

deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/contents/generations/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "succeeded":
        print(task["content"]["video_url"])
        break
    if task["status"] in ("failed", "expired"):
        raise RuntimeError(task["error"]["message"])
    time.sleep(15)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

Успешная задача

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "succeeded",
  "content": {
    "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
    "last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg"
  },
  "usage": {"completion_tokens": 108900, "total_tokens": 108900},
  "seed": 42,
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "framespersecond": 24,
  "generate_audio": true,
  "draft": false,
  "output_format": "mp4",
  "service_tier": "default",
  "execution_expires_after": 172800,
  "priority": 0,
  "created_at": 1790321515,
  "updated_at": 1790321652
}
ПолеЗначение
idСохраните этот идентификатор для последующих запросов.
statusqueued, running, succeeded, failed или expired.
content.video_urlСгенерированное видео.
content.last_frame_urlФинальный кадр, если return_last_frame равно true.
usage.completion_tokensВидеотокены готового видео; тарифицируемое количество.
duration, resolution, ratio, framespersecond, seedФактические параметры рендера; seed — значение, выбранное моделью.
created_at, updated_atМетки времени Unix в секундах.
error{"code", "message"} у неуспешной или истёкшей задачи.

URL видео размещены в нашем хранилище. Сохраняйте файл в собственное хранилище, если нужна долговременная копия.

Список задач

curl "https://api.seedrouter.ai/v1/contents/generations/tasks?page_num=1&page_size=20&filter.status=succeeded" \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Возвращает {"total": N, "items": [...]} с объектами задач за последние 7 дней, сначала новые. page_num и page_size — от 1 до 500 (по умолчанию 1 и 20). Фильтры: filter.status, filter.model, filter.task_ids (можно повторять) и filter.service_tier.

Ошибки

Запросы, отклонённые до создания задачи, возвращают HTTP-ошибку вместе с объектом error и не тарифицируются. Задача, которая завершилась сбоем уже после приёма, при запросе возвращает HTTP 200 с status: "failed" (или "expired") и объектом error. Результат, заблокированный фильтрацией контента, завершается ошибкой content_policy_violation; задача, которая выполняется дольше execution_expires_after, завершается как expired с task_expired.

Коды, HTTP-статусы и рекомендации по повторным попыткам приведены в общем каталоге ошибок.

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

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

Советы

  • Описывайте объект, действие, движение камеры и освещение полными предложениями.
  • Делайте черновик в 480p с коротким duration, а затем рендерьте выбранный вариант в более высоком разрешении.
  • Склеивайте сцены с помощью return_last_frame: используйте возвращённый кадр как first_frame следующей задачи.

Связанные материалы