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

Video

Seedance 2.0

View Markdown

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

Seedance 2.0 — модель генерации видео от ByteDance (Dreamina Seedance 2.0). Отправьте официальное тело задачи ModelArk на POST /v1/videos/generations, сохраните возвращённый идентификатор задачи и получите готовое видео с помощью GET /v1/tasks/{id}. Изображения, видео и аудио передаются в 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/videos/generations \
  -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/videos/generations
ЗаголовокЗначение
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Тело запроса — официальный запрос ModelArk «создание задачи генерации видео»; это та же конечная точка, которую используют все видеомодели SeedRouter. В ответе приходит новая задача (id, status: "processing"), а не готовое видео. Храните 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 секунд. Задача, не завершённая к этому сроку, завершается с ошибкой task_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/videos/generations \
  -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.

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

Схема вывода

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

{"id": "task_...", "model": "dreamina-seedance-2-0", "status": "processing", "created_at": 1790321515}

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

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

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

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

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

import time

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

Completed task

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "completed",
  "created_at": 1790321515,
  "finished_at": 1790321652,
  "output": {
    "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",
    "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
  }
}
ПолеЗначение
idСохраните этот идентификатор для последующих запросов.
statusprocessing, completed или failed.
output.video_urlСгенерированное видео.
output.last_frame_urlФинальный кадр, если return_last_frame равно true.
output.contentТе же URL в официальной форме ModelArk.
output.usage.completion_tokensВидеотокены готового видео; тарифицируемое количество.
output.duration, output.resolution, output.ratio, output.framespersecond, output.seedФактические параметры рендера; seed — значение, выбранное моделью.
created_at, finished_atМетки времени Unix в секундах.
error{"code", "message"} у неуспешной задачи.

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

Ошибки

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

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