Claude Opus 5.5 jest już dostępny w SeedRouter

Video

Seedance 2.5

View Markdown

Generuj, edytuj i przedłużaj wideo w Seedance 2.5 przez oficjalne API zadań ModelArk: do 30 sekund w 1080p, z maksymalnie 30 referencjami obrazów, 10 wideo i 10 audio.

Seedance 2.5 to najnowszy model generowania wideo od ByteDance (Dreamina Seedance 2.5). Wyślij oficjalną treść żądania zadania ModelArk do POST /v1/videos/generations, zachowaj zwrócony identyfikator zadania i odczytaj gotowe wideo z GET /v1/tasks/{id}. Obrazy, wideo i audio umieszczasz w content jako adresy URL.

ID modeli

ID modeluRozdzielczościDługość
dreamina-seedance-2-5480p, 720p, 1080p4–30 sekund lub automatycznie

Aktualne ceny znajdziesz na stronie modelu.

Krótki przykład

curl https://api.seedrouter.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-5",
    "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
  }'

Punkt końcowy

POST https://api.seedrouter.ai/v1/videos/generations
NagłówekWartość
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Treść to oficjalne żądanie ModelArk „utwórz zadanie generowania wideo”; to ten sam endpoint, z którego korzystają wszystkie modele wideo SeedRouter. Odpowiedź to nowe zadanie (id, status: "processing"), a nie gotowe wideo. Klucze API trzymaj w kodzie po stronie serwera.

Parametry

NazwaTypWymaganyDomyślnieUwagi
modelstringTak—dreamina-seedance-2-5.
contentobject[]Tak—Prompt i multimedia; szczegóły poniżej.
draftbooleanNiefalsetrue tworzy wersję roboczą w 480p.
resolutionenumNie480p, 720p, 1080p. Domyślnie 720p dla standardowego generowania i 480p dla wersji roboczej. Przy generowaniu finalnego filmu z wersji roboczej trzeba jawnie podać 1080p.480p, 720p, 1080p.
ratioenumNieadaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive. Przy pierwszej klatce oraz dla edit i extend musi mieć wartość adaptive (lub zostać pominięty).
durationintegerNie-14–30 sekund lub -1, aby wybór pozostawić modelowi. Dla edit musi mieć wartość -1.
generate_audiobooleanNietrueGeneruje dźwięk razem z wideo.
watermarkbooleanNiefalseDodaje znak wodny.
return_last_framebooleanNiefalseZwraca też ostatnią klatkę jako adres URL obrazu.
output_formatenumNiemp4mp4 lub mov.
omni_reference_task_typeenumNieautoauto, reference, edit, extend. edit i extend wymagają wideo referencyjnego.
execution_expires_afterintegerNie1728003600–259200 sekund. Zadanie, które po tym czasie nadal nie jest zakończone, kończy się niepowodzeniem z task_expired i nie jest naliczane.
priorityintegerNie00–9.
safety_identifierstringNie—1–64 znaki identyfikujące Twojego użytkownika końcowego. Może to być hash.
service_tierenumNiedefaultTylko default.
content_filterbooleanNietrueRozszerzenie SeedRouter. false wyłącza filtrowanie treści dla tego żądania.

Elementy content

ElementPostaćRolaLimit
Tekst{"type": "text", "text": "..."}—Jeden.
Obraz{"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."}first_frame, last_frame, reference_imageDo 30 obrazów referencyjnych.
Wideo{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_videoDo 10.
Audio{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audioDo 10.

Nieznane pola są odrzucane. Nieobsługiwane: seed, callback_url (zamiast tego odpytuj zadanie), tools oraz dostępne tylko w 1.x frames i camera_fixed. Zadań nie można anulować ani usunąć.

Tryby

Tryb wynika z elementów content; nie ma parametru trybu.

Trybcontent
Tekst na wideojeden element tekstowy
Pierwsza klatkatekst (opcjonalnie) + jeden obraz z rolą first_frame albo jeden obraz bez roli
Pierwsza i ostatnia klatkatekst (opcjonalnie) + jeden obraz first_frame + jeden obraz last_frame
Referencja multimodalnatekst + dowolne połączenie elementów reference_image, reference_video i reference_audio
Edycja wideotekst + jeden reference_video, z omni_reference_task_type: "edit"
Przedłużenie wideotekst + jeden reference_video, z omni_reference_task_type: "extend"

Trybów z pierwszą klatką nie można łączyć z elementami referencyjnymi. Przy kilku obrazach lub jakichkolwiek innych multimediach każdy obraz wymaga role.

Przykład z referencjami

curl https://api.seedrouter.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-5",
    "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
  }'

Zastąp przykładowe adresy URL własnymi, dostępnymi plikami.

Dane wejściowe multimediów

To API przyjmuje wyłącznie odwołania przez adres URL. Base64, adresy data:, identyfikatory asset:// oraz przesyłanie multipart nie są przyjmowane. Playground najpierw wysyła wybrane pliki do magazynu, a dopiero potem przesyła ich adresy URL.

Multimedia muszą być publicznymi adresami HTTP(S) i spełniać oficjalne limity modelu:

MultimediaFormatyLimity
ObrazJPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIFMniej niż 30 MB; szerokość i wysokość 300–6000 px; proporcje (szerokość / wysokość) 0,4–2,5; 1–30 obrazów referencyjnych
WideoMP4, MOV (H.264 lub H.265)2–30 sekund każde (4–30 sekund dla edit), maksymalnie 10, łącznie najwyżej 30 sekund; najwyżej 200 MB; 24–60 FPS; szerokość i wysokość 300–6000 px; proporcje 0,4–2,5; 407 696–8 295 044 pikseli (szerokość × wysokość)
AudioWAV, MP32–30 sekund każde, maksymalnie 10, łącznie najwyżej 30 sekund; najwyżej 15 MB

Model nie obsługuje obrazów ani wideo referencyjnych, które zawierają prawdziwe ludzkie twarze.

Multimedia są sprawdzane w chwili uruchomienia zadania, przed jakimkolwiek generowaniem. Zadanie, którego multimedia naruszają któryś z tych limitów, kończy się stanem failed z invalid_request_error i komunikatem wskazującym regułę, na przykład The request was rejected: content reference videos must total at most 15 seconds., i nie jest naliczane. Plik, którego nie da się w tym momencie odczytać, zostaje przekazany modelowi, który go przyjmuje lub odrzuca; nieudane zadanie w żadnym z tych przypadków nie jest naliczane.

Czynniki wpływające na koszt

Aktualne stawki znajdziesz w sekcji cen modelu. Seedance 2.5 nalicza opłaty za tokeny wideo, czyli oficjalną jednostkę:

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

Stawka za milion tokenów zależy od rozdzielczości wyjściowej oraz od tego, czy żądanie zawiera wideo referencyjne; żądanie z wideo referencyjnym korzysta z niższej stawki dla wszystkich swoich tokenów. Tekst, obrazy i audio na wejściu nie są naliczane. Przy 16:9 jedna sekunda to 9 607,5 tokena w 480p (854×480), 21 600 w 720p, 48 600 w 1080p.

Żądania z filmami referencyjnymi mają również minimalny próg tokenów. Przy szacowaniu kosztu przyjmij we wzorze co najmniej ceil(output seconds × 2 / 3) sekund materiału referencyjnego, nawet gdy pierwotne filmy referencyjne są krótsze. Dotyczy to zarówno zadań wersji roboczej, jak i finalnego filmu; sam klip wersji roboczej nie staje się filmem referencyjnym. Rzeczywista opłata zależy od zużycia zgłoszonego przez ukończone zadanie.

Opłata wynika z liczby tokenów raportowanej przez gotowe wideo (output.usage.completion_tokens), dlatego przy duration: -1 naliczana jest faktycznie wygenerowana długość. Wyrenderowane klipy są nieco dłuższe od żądanej długości: 5-sekundowe żądanie 720p 16:9 renderuje 121 klatek i raportuje 108 900 tokenów zamiast 108 000. Ostateczne opłaty zobaczysz w historii zużycia swojego konta. Nieudane zadania nie są naliczane.

Schemat odpowiedzi

Wysłanie zwraca nowe zadanie:

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

Pobieranie zadania

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

Odpytuj co 10–20 sekund, aż status przyjmie wartość completed lub failed. Przekroczenie limitu czasu sieci podczas odpytywania nie oznacza, że generowanie się nie powiodło: zachowaj identyfikator zadania i wznów sprawdzanie. Nie twórz kolejnego zadania, aby sprawdzić postęp.

Pełny przykład odpytywania

Uruchom to po powyższym przykładzie wysyłania w Pythonie.

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}.")

Zadanie zakończone

{
  "id": "task_...",
  "model": "dreamina-seedance-2-5",
  "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
  }
}
PoleZnaczenie
idZachowaj ten identyfikator na potrzeby późniejszych zapytań.
statusprocessing, completed lub failed.
output.video_urlWygenerowane wideo.
output.last_frame_urlOstatnia klatka, gdy return_last_frame ma wartość true.
output.contentTe same adresy URL w oficjalnym kształcie ModelArk.
output.usage.completion_tokensTokeny wideo gotowego klipu; ilość, za którą naliczana jest opłata.
output.duration, output.resolution, output.ratio, output.framespersecond, output.seedFaktycznie wyrenderowane wartości; seed to wartość wybrana przez model.
created_at, finished_atZnaczniki czasu Unix w sekundach.
error{"code", "message"} w nieudanym zadaniu.

Adresy URL wideo są hostowane w naszym magazynie. Zapisz plik we własnym magazynie, jeśli potrzebujesz trwałej kopii.

Błędy

Żądania odrzucone przed utworzeniem zadania zwracają błąd HTTP wraz z obiektem error i nie są naliczane. Zadanie, które zawiodło po przyjęciu, przy odpytaniu zwraca HTTP 200 z status: "failed" i obiektem error. Wynik wstrzymany przez filtrowanie treści kończy się niepowodzeniem z content_policy_violation; zadanie, które przekroczy execution_expires_after, kończy się niepowodzeniem z task_expired.

Kody, statusy HTTP i wskazówki dotyczące ponawiania znajdziesz we wspólnym katalogu błędów.

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

Jeśli limit czasu został przekroczony przy samym wysyłaniu, przed ponownym wysłaniem sprawdź historię zadań: pierwsze żądanie mogło już zostać przyjęte.

Wskazówki

  • Opisz obiekt, akcję, ruch kamery i oświetlenie pełnymi zdaniami.
  • Twórz szkice w 480p z krótkim duration, a wybraną wersję wyrenderuj w wyższej rozdzielczości.
  • Łącz ujęcia za pomocą return_last_frame: użyj zwróconej klatki jako first_frame kolejnego zadania.
  • Aby edytować materiał, ustaw omni_reference_task_type na edit i opisz tylko to, co ma się zmienić.

Powiązane

Podgląd w wersji roboczej i finalny film

Ustaw draft: true, aby wygenerować podgląd w 480p. Inne rozdzielczości są niedozwolone w trybie wersji roboczej. Sposób obliczania zużycia tokenów i cena jednostkowa są takie same jak przy standardowym generowaniu w 480p.

{
  "model": "dreamina-seedance-2-5",
  "content": [{ "type": "text", "text": "A fox walks through a sunny garden." }],
  "draft": true,
  "resolution": "480p",
  "duration": 4,
  "ratio": "16:9"
}

Odpytuj zwrócone ID zadania SeedRouter, aż status będzie mieć wartość completed i output.draft — true. W ciągu 7 dni od utworzenia wersji roboczej wyślij osobne żądanie z tym ID:

{
  "model": "dreamina-seedance-2-5",
  "content": [{ "type": "draft_task", "draft_task": { "id": "task_YOUR_DRAFT_ID" } }],
  "resolution": "1080p"
}

Wersja robocza musi należeć do twojego konta, być ukończona i korzystać z tego samego modelu. content może zawierać tylko jeden element draft_task. Jawnie ustaw resolution na 1080p; pomiń draft lub ustaw je na false. Nie wysyłaj ponownie duration, ratio, seed, generate_audio, omni_reference_task_type, tekstu ani multimediów, nawet z tymi samymi wartościami. Te ustawienia są dziedziczone z wersji roboczej.

W nowym zadaniu możesz ustawić watermark, return_last_frame, output_format, execution_expires_after, priority, safety_identifier i service_tier: "default". Pominięte opcje wyjściowe przyjmują swoje wartości domyślne. content_filter jest dziedziczony i nie można go zmienić. Pomyślne wygenerowanie finalnego filmu zwraca nowe ID zadania, output.draft: false oraz output.draft_task_id z ID pierwotnej wersji roboczej SeedRouter. Przed upływem terminu ważności jednej wersji roboczej można użyć do kilku osobnych generowań finalnego filmu.

Wersja robocza i finalny film są rozliczane niezależnie. Dla finalnego filmu obowiązuje stawka 1080p odpowiadająca kategorii danych wejściowych pierwotnej wersji roboczej: jeśli wersja robocza korzystała z filmu referencyjnego, finalny film również korzysta ze stawki dla wejścia z filmem referencyjnym, a czas trwania pierwotnego filmu referencyjnego jest uwzględniany w zużyciu tokenów. Sam klip wersji roboczej nie jest liczony jako dodatkowy film wejściowy. Każde zadanie korzysta z ceny obowiązującej w momencie jego wysłania. Nieudane żądania nie są płatne.