Wprowadzenie
Seedance 2.0 Mini — przedłużanie wideo kontynuuje klip, który już masz. Wyślij go jako video_url z opcjonalnym promptem o tym, co dzieje się dalej. Ostatnia klatka twojego klipu staje się klatką otwierającą nowego ujęcia z obrazu na wideo Seedance 2.0 Mini o długości od 4 do 15 sekund, a obie części łączą się w jeden plik MP4: najpierw oryginał, potem kontynuacja, bez powtórzonej klatki na łączeniu. Nowy fragment wraca też jako osobny plik, więc możesz przedłużać dalej albo edytować części osobno.
Najważniejsze funkcje
Ciągłość bierze się z ostatniej klatki. Kostiumy, scenografia, światło i ustawienie postaci przechodzą dalej, bo nowy fragment dosłownie zaczyna się na twojej ostatniej klatce. Ruch nie przechodzi w ten sam sposób: model widzi jedną klatkę, a nie cały klip, więc opisz ruch, który ma trwać, zamiast zakładać, że zachowa tempo czy kierunek.
Jeden plik w odpowiedzi, plus nowy kawałek osobno. Połączony plik zachowuje liczbę klatek na sekundę i kadr Twojego klipu, bez czarnych pasów, i jest zakodowany jako MP4 H.264 z dźwiękiem AAC. Aby dopasować łączenie, obraz może zostać przycięty lub skorygowany o kilka procent przy krawędziach. Jeśli model zwróci wyraźnie inne proporcje, nowy fragment zostanie przeskalowany tak, aby wypełnić Twój kadr, i wyśrodkowany, a to, co wystaje, zostanie przycięte. Dźwięk twojego oryginału zostaje, dźwięk wygenerowany dla nowego fragmentu dołącza po krótkim przenikaniu na łączeniu, a niema strona jest uzupełniana ciszą. Drugim zasobem wyniku jest sam nowy fragment, gotowy do kolejnego przedłużenia albo do edytora.
Opcjonalna klatka końcowa. Dodaj last_image_url, a nowy fragment skończy się na tym obrazie, co pozwala powtarzalnie zrobić przejście albo powrót do znanej klatki.
Cała reszta to obraz na wideo Seedance 2.0 Mini. Nowy fragment idzie tymi samymi trasami, z tym samym zakresem treści i tą samą ceną za sekundę co endpoint obrazu na wideo, łącznie z ustawieniami dźwięku i wyszukiwania w sieci, a nieudana generacja jest zwracana tak samo. Jeśli generacja się uda, ale samego połączenia nie da się zbudować, zadanie kończy się niepowodzeniem, a opłata jest zwracana w całości.
Parametry żądania
| Parametr | Wymagane | Uwaga |
|---|---|---|
prompt | Nie | Opcjonalny. Co dzieje się dalej: kolejna akcja, ruch kamery i dźwięk. od 1 znaków |
video_url | Tak | Klip do kontynuowania: MP4, MOV lub WebM, do 60 sekund. Jego ostatnia klatka staje się klatką otwierającą nowego fragmentu, więc potnij go na czystej, ostrej klatce. od 1 znaków |
last_image_url | Nie | Opcjonalna docelowa klatka końcowa: nowy fragment kończy się na tym obrazie, zamiast tam, gdzie zdecyduje model. Przydaje się do przejścia albo powrotu do znanej klatki. |
resolution | Nie | Rozmiar nowego fragmentu: 480p lub 720p, domyślnie 720p. |
duration_seconds | Nie | Długość nowego fragmentu w pełnych sekundach: od 4 do 15 albo -1, żeby model sam wybrał; wtedy z góry rezerwowane jest 15 sekund, a opłata rozlicza się na długość faktycznie dos… |
generate_audio | Nie | Domyślnie włączone, więc nowy fragment dostaje wygenerowany dźwięk; wyłączenie nie obniża ceny w tym progu. Domyślnie: |
enable_web_search | Nie | Domyślnie wyłączone. Po włączeniu model może przed renderowaniem nowego fragmentu wyszukać w sieci informacje związane z twoim promptem. Domyślnie: |
seed | Nie | Liczba całkowita od 0 do 2147483647; bez niej każde uruchomienie losuje własną. |
bitrate_mode | Nie | Przepływność kodowania nowego fragmentu w takiej postaci, w jakiej dostarcza go model: |
watermark | Nie | Dodaje do nowego fragmentu własny, widoczny znak wodny modelu „AI generated”. Domyślnie wyłączone; włącz, gdy miejsce publikacji wymaga oznaczania materiału wytworzonego przez AI. Domyślnie: |
Cennik
Rozliczana jest każda sekunda nowego fragmentu w wybranej rozdzielczości i przy wybranym ustawieniu dźwięku, a przy włączonym wyszukiwaniu w sieci według stawki za wyszukiwanie; wysłany klip źródłowy nie jest rozliczany.
| Specyfikacja | Cena |
|---|---|
| $0.0246078 / sekundę |
| $0.05292 / sekundę |
| $0.036 / sekundę |
| $0.072 / sekundę |
Zastosowania
Wydłużenie ujęcia, które skończyło się za wcześnie: obrotowy talerz z produktem, który staje, zanim etykieta spojrzy w kamerę, albo spacer ucięty, zanim bohater dojdzie do drzwi. Przedłuż o kilka sekund i opisz tylko brakujący ruch.
Budowanie dłuższej sekwencji krok po kroku. Wygeneruj pierwsze ujęcie, przedłuż je, a potem przedłuż jeszcze raz połączony wynik; każdy krok rozlicza tylko dodane sekundy, a oryginał w każdym kroku może mieć do 60 sekund. Ponieważ każdy krok zaczyna od jednej klatki, obejrzyj każde łączenie, zanim nałożysz kolejne.
Wskazówki
Opisz następny moment, a nie całą scenę. Klatka już ustala, kto i gdzie, więc prompt przeznacz na kolejną akcję, ruch kamery i dźwięk. Powtórz język kamery, którym skończył się twój klip, na przykład powolny najazd albo kadr statyczny, żeby łączenie wyglądało jak jedno ujęcie.
Przytnij przed przedłużeniem. Ostatnia klatka to jedyne, co widzi model, więc rozmyte, urwane w pół ruchu albo mocno skompresowane zakończenie przechodzi prosto do kontynuacji. Najpierw potnij oryginał na czystej, ostrej klatce.
Utrzymaj spójną rozdzielczość. Rozdzielczość określa tylko jakość nowego fragmentu, więc przedłużenie klipu 1080p w 480p sprawi, że nowa część będzie wyglądać miękciej niż oryginał. Dopasuj rozdzielczość do oryginału i ustaw duration_seconds na długość, której naprawdę potrzebujesz: opłata dotyczy tylko nowego fragmentu. Kadr nowego fragmentu wynika z ostatniej klatki klipu, więc nie wybierasz proporcji obrazu; spodziewaj się wyniku bardzo zbliżonego do źródła, ale nie identycznego co do piksela.
Szybki start z API
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "bytedance/seedance-2.0-mini/video-extend",
"input": {
"bitrate_mode": "standard",
"duration_seconds": 5,
"enable_web_search": false,
"generate_audio": true,
"resolution": "720p",
"video_url": "https://example.com/reference.mp4"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
Uwierzytelnianie, pełny schemat, odpytywanie i obsługę błędów opisuje dokumentacja API.









