ByteDance: Seedance 2.0
Seedance 2.0 generuje i edytuje wideo z wykorzystaniem tekstu, obrazów, wideo i odniesień dźwiękowych. Może kontynuować istniejący materiał i generować zsynchronizowany dźwięk, z długością 4–15 sekund, wyjściem 480p lub 720p i jawnymi rolami odniesień.
O modelu
Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.
Seedance 2.0 generuje wideo z opisu sceny lub połączenia odniesień obrazowych, wideo i dźwiękowych. Dokładny selektor doubao-seedance-2-0-260128 identyfikuje standardowy profil 2.0. Udokumentowane przepływy obejmują generowanie nowego wideo, edycję i przedłużanie istniejącego materiału. Używaj odniesień do przekazywania wyglądu, ruchu, języka kamery i dźwięku, a następnie określ, które części sceny powinny wyznaczać.
Tekst można podać samodzielnie. Udokumentowane kombinacje multimodalne dopuszczają również obrazy lub wideo z opcjonalnym tekstem, obrazy z dźwiękiem, wideo z dźwiękiem oraz obrazy, wideo i dźwięk razem. W tych wymienionych kombinacjach dźwięk towarzyszy więc mediom wizualnym; nie opisano go jako samodzielnego żądania dźwięk-do-wideo. Jasno napisz zamierzony wynik nawet wtedy, gdy tekst jest opcjonalny, aby rola każdego odniesienia była określona wprost, zamiast wynikać z domysłów na podstawie niepowiązanych materiałów.
Tablica content rozróżnia elementy text, image_url, video_url i audio_url. Odniesienia multimodalne używają ról takich jak reference_image, reference_video i reference_audio. Obraz może określać osobę, przedmiot, miejsce lub wygląd. Wideo może przekazywać wykonanie, ruch lub widok kamery, a dźwięk ustalać ścieżkę lub rytm czasowy. Określ przypisanie w opisie: zachowaj obiekt z obrazu, podążaj za widokiem kamery z wideo i użyj dźwięku jako tła. Nie wymagaj, aby każde odniesienie określało wszystkie właściwości naraz.
Udokumentowany przykład reklamowy łączy dwa obrazy produktu z wideo i odniesieniem dźwiękowym. Opisuje widok otwierający, sekwencję działań, zbliżenie szczegółu produktu i kompozycję końcową, zachowując spójny głos w tle. Ta sama struktura może uporządkować krótką prezentację: pokaż przedmiot, zademonstruj jedno działanie i zakończ na rozpoznawalnej cesze. Dla edycji wskaż materiał źródłowy i element, który powinien się zmienić; dla przedłużenia wyjaśnij działanie kontynuowane poza istniejącą sceną, zachowując obiekt i kierunek ruchu.
Profil 2.0 dokumentuje długość w pełnych sekundach od czterech do piętnastu lub -1 dla długości automatycznie wybranej w tym zakresie. Wartość domyślna wynosi pięć sekund. Opcje rozdzielczości to 480p i 720p, z 720p jako wartością domyślną; 1080p jest wykluczone dla 2.0. Stałe proporcje obejmują 16:9, 4:3, 1:1, 3:4, 9:16 i 21:9. Proporcje adaptive mogą dobierać kadr z promptu lub odniesienia: praca z pierwszą klatką podąża za obrazem otwierającym, a praca multimodalna korzysta z zamierzonej sceny lub pierwszego istotnego medium, z pierwszeństwem wideo przed obrazami. Sprawdź wynik zadania pod kątem rzeczywistych proporcji i długości.
Generowany dźwięk jest sterowany niezależnie od mediów referencyjnych. generate_audio=true żąda zsynchronizowanych głosów, efektów i muzyki tła na podstawie tekstu i zawartości wizualnej; false żąda niemego wideo. Udokumentowaną wartością domyślną jest true, a dla mowy zaleca się dialog w cudzysłowie. Określ mówiącego oraz związek dźwięku z widocznym działaniem, a następnie sprawdź rzeczywiste słowa, przypisanie głosu i czas. Dostarczenie odniesienia dźwiękowego i włączenie generowanego dźwięku to odrębne wybory w żądaniu.
Poradnik 2.0 wyklucza starsze ustawienia frames i camera_fixed oraz nie obsługuje przetwarzania offline flex. Używaj pola duration i opisz ruch kamery w samej scenie. Ziarno i znak wodny pozostają udokumentowanymi ustawieniami; poradnik podaje, że to samo żądanie i ziarno mogą dawać podobne wyniki bez gwarancji pełnej identyczności. Unikaj traktowania ziarna jako dowodu odtwarzalności lub powtórzonego żądania jako już sprawdzonego klipu.
Zużycie tokenów wideo oblicza się jako (długość wideo wejściowego + długość wideo wyjściowego) × szerokość wyjściowa × wysokość wyjściowa × liczba klatek na sekundę wyjścia / 1024. Żądania zawierające wideo wejściowe i te bez wideo wejściowego mają odrębne kategorie rozliczeniowe. Zapytanie o zadanie raportuje usage.completion_tokens i usage.total_tokens; zachowaj te zgłoszone wielkości razem z ukończonym klipem.
Przepływ jest asynchroniczny: wysłanie żądania zwraca identyfikator zadania, a ukończone zadanie dostarcza content.video_url wraz z raportowaną długością, rozdzielczością, proporcjami, liczbą klatek na sekundę i zużyciem tokenów. Zachowaj identyfikator i zapisz ukończone wideo z oryginalnymi odniesieniami i promptem. Pole wygaśnięcia domyślnie wynosi 172800 sekund i przyjmuje 3600–259200 sekund od utworzenia zadania; zadanie przekraczające ten czas otrzymuje stan expired. Sprawdź całe wyjście, w tym połączenie edycji lub kontynuacji, pod kątem wyglądu postaci, szczegółów przedmiotu, relacji przestrzennych, ciągłości kamery i zgodności dźwięku z obrazem.
Ailoot Ultra · Wideo POST /v1/videos doubao-seedance-2-0-260128
doubao-seedance-2-0-260128Start
Seedance 2.0 generuje i edytuje wideo z wykorzystaniem tekstu, obrazów, wideo i odniesień dźwiękowych. Może kontynuować istniejący materiał i generować zsynchronizowany dźwięk, z długością 4–15 sekund, wyjściem 480p lub 720p i jawnymi rolami odniesień.
- Akceptowane dane wejściowe
- Tekst · Obrazy · Wideo · Audio
- Wyniki
- Wideo
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · Wideo POST /v1/videos
- Wejście
text,image,video,audio- Wyjście
video
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity doubao-seedance-2-0-260128 | Domyślnie— |
Polecontent | Typarray | WymaganieWymagane | Wartości i limity Warunki: Natywne obiekty tekstowe i multimedialne; zewnętrzna tablica musi być niepusta. Ten ogólny konstruktor Ailoot nie weryfikuje typów zagnieżdżonych węzłów. | Domyślnie— |
Polegenerate_audio | Typboolean | WymaganieOpcjonalne | Wartości i limity Warunki: Zsynchronizowany dźwięk osadzony w wideo. | Domyślnietrue |
Poleduration | Typinteger | WymaganieOpcjonalne | Wartości i limity Warunki: Liczba całkowita 4–15 lub -1; rzeczywisty czas trwania jest zwracany w wyniku. | Domyślnie5 |
Poleresolution | Typstring | WymaganieOpcjonalne | Wartości i limity 480p, 720p Warunki: 1080p jest wyraźnie nieobsługiwane w 2.0/fast. | Domyślnie720p |
Poleratio | Typstring | WymaganieOpcjonalne | Wartości i limity 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive Warunki: Adaptive ma wyraźnie określony zakres 2.0/fast/1.5; przykład dla 2.5 używa wyłącznie 16:9. | Domyślnieadaptive |
Polewatermark | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Poleseed | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: -1 Maksimum: 4 294 967 295 | Domyślnie-1 |
Poleexecution_expires_after | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 3600 Maksimum: 259 200 Jednostka: sekundy | Domyślnie172 800 |
Poleservice_tier | Typstring | WymaganieOpcjonalne | Wartości i limity default Warunki: 2.0/fast wykluczają tryb offline flex; zakres dla 2.5 nie został ustalony. | Domyślniedefault |
Polesafety_identifier | Typstring | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Poletools | Typobject | WymaganieOpcjonalne | Wartości i limity Warunki: Wyłącznie 2.0/fast; udokumentowane type=web_search. | Domyślnie— |
Kombinacje materiałów wejściowych
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktcontent, model |
Parametroptional | Kontraktgenerate_audio, duration, resolution, ratio, watermark, seed, execution_expires_after, service_tier, safety_identifier, tools |
Parametrmaterial_types | Kontrakttext, image, video, audio |
Parametradditional_properties | Kontrakttrue |
Parametrvalidation_scope | KontraktAiloot sprawdza wymagane typy pól oraz niepusty model i tablicę content. Pozostałe pola żądania są zachowywane dla wybranego modelu. |
Parametrmaterial_combinations | Kontrakttext, image, video, image, audio, image, video, video, audio, image, video, audio |
Parametroptional_text_with_media | Kontrakttrue |
Parametrreference_media_count_and_size_limits | Kontraktnull |
Aliasy metody: /v1/videos/generations
Cykl życia: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Utwórz raz i zachowaj zwrócone publiczne id/polling_url.
Odpytuj pierwotne zadanie; pobierz rzeczywistą treść content.video_url należącą do użytkownika po uzyskaniu succeeded.
Cennik
Jak obliczana jest ostateczna opłata
Wyświetlane stawki służą do oszacowania kosztu przed generowaniem. Ostateczna opłata jest obliczana na podstawie kosztu zarejestrowanego dla pierwotnego generowania. Zmierzony czas trwania wyniku i prognozowane ilości nie stanowią ostatecznej ilości podlegającej rozliczeniu.
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Nie określono Gdy wybrany jest tryb szybki
- Tryb flex
- Nie określono Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Nie określono Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
Szacunkowe stawki do porównania
Ceny według konfiguracji
Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.
| Konfiguracja | Tabela stawek | Przewidywana ilość | Jednostka rozliczeniowa | Opłata |
|---|---|---|---|---|
| KonfiguracjaBazowe stawki za tokeny | Tabela stawekStawka podstawowa | Przewidywana ilość— | Jednostka rozliczeniowa— | Opłata Wejście · Tokeny wejściowe · Szacunek tylko do porównania — / 1K tokenów Wyjście · Tokeny wyjściowe · Szacunek tylko do porównania — / 1K tokenów Wejście · Odczyt cache · Szacunek tylko do porównania — / 1K tokenów Wejście · Zapis do cache · Szacunek tylko do porównania — / 1K tokenów Wejście · Zapis do cache, 1 godz. · Szacunek tylko do porównania — / 1K tokenów |
| KonfiguracjaDane wejściowe zawierają wideo. | Tabela stawek— | Przewidywana ilość— | Jednostka rozliczeniowaza 1K tokenów wideo | Opłata Wyjście · Szacunek tylko do porównania $0.0096 za 1K tokenów wideo |
| KonfiguracjaDane wejściowe nie zawierają wideo. | Tabela stawek— | Przewidywana ilość— | Jednostka rozliczeniowaza 1K tokenów wideo | Opłata Wyjście · Szacunek tylko do porównania $0.015768 za 1K tokenów wideo |
| KonfiguracjaSzacowany koszt generowania | Tabela stawek— | Przewidywana ilośćszacunek dla jednego generowania | Jednostka rozliczeniowa— | Opłata Wyjście · Szacowany koszt generowania · Szacunek tylko do porównania $0.822402 szacunek przed generowaniem Ten szacunek nie jest dodatkową opłatą ani stałą stawką za ukończone generowanie. |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
Ailoot Ultra · Wideo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
cat > request.json <<'JSON_REQUEST'
{"model":"doubao-seedance-2-0-260128","content":[{"type":"text","text":"女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动"}]}
JSON_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_POLL'
import json
from pathlib import Path
from urllib.parse import quote,urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
i=r.get("id")
if not isinstance(i,str) or not i.startswith("native302_"):raise SystemExit("Keep original response/headers/id; do not resubmit creation.")
u=urljoin("https://api.ailoot.ai",r.get("polling_url") or "/v1/videos/"+quote(i,safe=""))
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/videos/"):raise SystemExit("Use actual Ailoot lookup path.")
Path("poll-url.txt").write_text(u)
PY_POLL
curl --fail-with-body --silent --show-error "$(cat poll-url.txt)" -H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
set -eu
python3 - <<'PY_ASSETS'
import json
from pathlib import Path
from urllib.parse import urlsplit
r=json.loads(Path("status.json").read_text())
if r.get("status")!="succeeded":raise SystemExit("Poll same original job until an owned result is returned.")
u=r.get("content",{}).get("video_url")
urls=[u] if isinstance(u,str) else u
if not isinstance(urls,list) or not urls:raise SystemExit("No completed video URL.")
for u in urls:
if not isinstance(u,str):raise SystemExit("Invalid returned URL.")
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/media/assets/") or not p.path.endswith("/content") or not p.query:raise SystemExit("Wait for actual Ailoot-owned signed result.")
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_ASSETS
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" -o "video-${index}.bin"
index=$((index + 1))
done < asset-urls.txt
Odbieranie i zapisywanie wyników
Ailoot Ultra · Wideo
Natywny JSON z publicznym id/polling_url. Po publikacji content.video_url zawiera podpisane adresy URL należące do Ailoot; przed publikacją wybrane adresy URL wyników są puste.
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Zachowaj wszystkie ukończone wyniki
Zapisz każde ukończone wideo lub zwrócony plik; pobierz każdy faktycznie zwrócony URL zasobu.
Zachowaj każdy rzeczywisty URL z content.video_url; index musi wskazywać faktycznie zwrócony wynik.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj oryginalną odpowiedź, nagłówki i id oraz odpytuj tę operację; nigdy nie ponawiaj żądania utworzenia o nieznanym wyniku.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Poleprovider_task_id | Typstring |
Polepolling_url | Typstring |
Polestatus | Typstring when supplied |
Polecontent.video_url | Typstring|string[] |
Poleusage | Typobject when supplied |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowy JSON/model, typy wymaganych pól lub indeks treści. | Następny krok |
Odpowiedź401 · authentication_error | WarunekNieprawidłowy klucz API Ailoot. | Następny krok |
Odpowiedź404 · not_found_error | WarunekZadanie lub wynik nie istnieje albo nie należy do tego samego użytkownika, klucza API lub grupy. | Następny krok |
Odpowiedź502 · result_pending_check | WarunekPierwotne wysłanie lub sprawdzenie statusu jest niekompletne; zachowaj pierwotny identyfikator i nie wysyłaj ponownie. | Następny krok |
Odpowiedź503 · result_pending_check | WarunekPierwotne multimedia, ścieżka lub rozliczenie są sprawdzane; kontynuuj pierwotną operację. | Następny krok |
Aliasy
Aliasy modelu
Ailoot Ultra doubao-seedance-2-0-260128
Aliasy ścieżek metod
/v1/videos/generations
Powiązane ID modeli
FAQ · ByteDance: Seedance 2.0
- Jakie dane wejściowe i wyniki są dostępne?
POST /v1/videos·doubao-seedance-2-0-260128:text,image,video,audio→video- Jakich pól używa żądanie?
POST /v1/videos·doubao-seedance-2-0-260128:model,content,generate_audio,duration,resolution,ratio,watermark,seed,execution_expires_after,service_tier,safety_identifier,tools- Jakie limity obowiązują?
POST /v1/videos·doubao-seedance-2-0-260128:seed.minimum:-1;seed.maximum:4294967295;execution_expires_after.minimum:3600;execution_expires_after.maximum:259200