Wprowadzenie
Wan 3.0 Przedłużanie wideo kontynuuje klip, który już masz. Przekaż go w video_url; prompt opisujący, co dzieje się dalej, pokieruje kontynuacją, a bez niego model sam poprowadzi scenę dalej. Ostatnia klatka klipu staje się klatką początkową nowego ujęcia Wan 3.0 z obrazu na wideo trwającego od 2 do 30 sekund, a obie części są łączone 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 montować części oddzielnie.
Najważniejsze funkcje
Ciągłość bierze się z ostatniej klatki. Kostiumy, scenografia, światło i ustawienie wszystkich postaci zostają zachowane, bo nowy fragment dosłownie zaczyna się od twojej ostatniej klatki. Ruch nie przechodzi w ten sam sposób: model widzi jedną nieruchomą klatkę, a nie cały klip, dlatego opisz ruch, który ma trwać dalej, zamiast zakładać, że tempo i kierunek zostaną zachowane.
Jeśli chcesz, wskaż też, gdzie ujęcie ma się zakończyć. Podaj last_image_url, a nowy fragment skończy się dokładnie na tym obrazie, więc ujęcie może wrócić do głównego kadru albo dojść do ustalonej kompozycji. Bez niej o zakończeniu decyduje model. Początek to zawsze ostatnia klatka twojego klipu.
Dostajesz jeden plik i osobno nowy kawałek. Połączony MP4 zachowuje liczbę klatek na sekundę i kadr Twojego klipu, bez czarnych pasów. Aby dopasować łączenie, obraz może zostać przycięty lub skorygowany o kilka procent na brzegach. 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. Całość jest kodowana jako H.264 z dźwiękiem AAC. Dźwięk oryginału zostaje, dźwięk wygenerowany dla nowego fragmentu idzie po nim, a cicha strona jest wypełniana ciszą, żeby obraz i dźwięk zgadzały się na łączeniu. Drugi zasób w wyniku to sam nowy fragment, gotowy do kolejnego przedłużenia albo do montażu.
Cała reszta to Wan 3.0 z obrazu na wideo. Nowy fragment idzie tymi samymi trasami, z tym samym zakresem dopuszczalnych treści i tą samą ceną za sekundę co endpoint z obrazu na wideo, a nieudane generowanie jest zwracane tak samo. Jeśli generowanie się uda, ale samo łączenie nie powstanie, zadanie kończy się błędem, a opłata wraca.
Parametry żądania
| Parametr | Wymagane | Uwaga |
|---|---|---|
prompt | Nie | Opcjonalny. Jeśli go pominiesz, model sam kontynuuje scenę od ostatniej klatki. od 1 znaków |
video_url | Tak | Klip do kontynuowania: MP4, MOV lub WebM, do 60 sekund. Jego ostatnia klatka staje się klatką początkową nowego fragmentu, więc przytnij go na czystej, ostrej klatce. od 1 znaków |
last_image_url | Nie | Opcjonalna klatka końcowa (adres URL obrazu): nowy fragment kończy się dokładnie na tym obrazie, użytym jako ostatnia klatka, a nie luźna wskazówka. |
enable_thinking | Nie | Każe modelowi przemyśleć polecenie i materiały referencyjne przed generowaniem. Domyślnie: |
resolution | Nie | Rozdzielczość, w jakiej powstaje nowy fragment: 480p, 720p lub 1080p, domyślnie 720p. Wybierz rozdzielczość oryginału, żeby na łączeniu nie było widać skoku ostrości. |
duration_seconds | Nie | Długość nowego fragmentu: dowolna liczba całkowita od 2 do 30 albo -1, żeby wybrał model; wtedy 30 sekund jest rezerwowanych z góry, a opłata wyrównuje się do dostarczonej długo… |
generate_audio | Nie | Domyślnie włączone, więc nowy fragment dostaje wygenerowany dźwięk. Domyślnie: |
enable_prompt_expansion | Nie | Domyślnie wyłączone. Po włączeniu prompt jest przepisywany przed generowaniem: pomaga przy ubogich briefach, a przy szczegółowych działa przeciwko tobie. Domyślnie: |
seed | Nie | Od 0 do 2147483647. Trzymaj go na stałe, aby porównywać po jednym zmienionym polu; pomiń go, gdy chcesz różnorodności. |
Cennik
Opłata za każdą sekundę nowego fragmentu w wybranej rozdzielczości; wysłany klip źródłowy nie jest rozliczany.
| Specyfikacja | Cena |
|---|---|
| $0.045 / sekundę |
| $0.09 / sekundę |
| $0.18 / sekundę |
Zastosowania
Wydłuż ujęcie, które skończyło się za wcześnie: obrotową podstawę z produktem, która staje, zanim etykieta zwróci się do kamery, albo spacer urwany, zanim postać dojdzie do drzwi. Przedłuż o kilka sekund i opisz tylko pozostały ruch.
Buduj dłuższą sekwencję krok po kroku. Wygeneruj pierwsze ujęcie, przedłuż je, a potem znowu przedłuż połączony wynik; każdy krok rozlicza tylko dodane sekundy. Każdy krok zaczyna się od jednej klatki, więc obejrzyj każde łączenie, zanim dołożysz kolejne.
Wskazówki
Opisuj następny moment, a nie całą scenę. Klatka już ustala, kto i gdzie się znajduje; poświęć prompt na następną akcję, ruch kamery i dźwięk. Powtórz język kamery, na którym skończył się klip, na przykład powolny najazd albo statyczne ujęcie, żeby łączenie wyglądało jak jedno ujęcie. Prompt jest opcjonalny; bez niego model po prostu kontynuuje od klatki, co wystarcza przy ujęciach nastrojowych lub słabo wyreżyserowanych.
Przytnij klip przed przedłużeniem. Ostatnia klatka to jedyne, co widzi model, więc rozmyte, urwane w pół ruchu albo mocno skompresowane zakończenie przechodzi wprost do kontynuacji. Najpierw przytnij oryginał na czystej, ostrej klatce. Przyjmowane są oryginały do 60 sekund w formatach MP4, MOV lub WebM.
Trzymaj tę samą rozdzielczość. Rozdzielczość decyduje tylko o tym, jak ostry jest nowy fragment. Wybierz rozdzielczość oryginału, żeby na łączeniu nie było widać skoku ostrości, i ustaw duration_seconds na długość, której naprawdę potrzebujesz: opłata dotyczy tylko nowego fragmentu.
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": "alibaba/wan-3.0/video-extend",
"input": {
"duration_seconds": 5,
"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.





















