Veo 3.1
Generuj klipy wideo Veo 3.1 przez jedno API zadań: trzy modele rozliczane za 8-sekundowy klip i dwa rozliczane za sekundę, z klatkami, dźwiękiem i wyjściem GIF.
Veo 3.1 to model generowania wideo od Google. SeedRouter udostępnia go pod pięcioma ID modeli w jednym punkcie końcowym: trzy rozliczane za klip, każdy klip trwa 8 sekund, i dwa rozliczane za sekundę, z większą kontrolą (długość, dźwięk, seed, prompt negatywny, pierwsza i ostatnia klatka). Wyślij żądanie, zachowaj zwrócony identyfikator zadania i odczytaj gotowe wideo z tego zadania. Obrazy przekazujesz jako adresy URL.
ID modeli
| ID modelu | Rozliczenie | Długość | Obrazy | Dźwięk |
|---|---|---|---|---|
veo-3.1-fast | za klip | 8 sekund | do 3, tryb klatek lub referencji | bez przełącznika |
veo-3.1-quality | za klip | 8 sekund | do 3, tryb klatek | bez przełącznika |
veo-3.1-lite | za klip | 8 sekund | brak (tekst na wideo) | bez przełącznika |
veo-3.1-fast-official | za sekundę | 4, 6 lub 8 sekund | pierwsza i ostatnia klatka | generate_audio |
veo-3.1-quality-official | za sekundę | 4, 6 lub 8 sekund | pierwsza i ostatnia klatka | generate_audio |
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": "veo-3.1-fast",
"prompt": "A red paper boat drifts across a calm pond at sunrise, soft mist on the water, slow push-in on a 35mm lens, no text, no logos.",
"resolution": "720p",
"aspect_ratio": "16:9"
}'Punkt końcowy
POST https://api.seedrouter.ai/v1/videos/generations| Nagłówek | Wartość |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
Odpowiedź to zadanie ({"id": "task_...", "status": "processing"}), a nie gotowe wideo. Wynik odczytasz, odpytując GET /v1/tasks/{task_id}. Klucze API trzymaj w kodzie po stronie serwera.
Parametry: modele rozliczane za klip
veo-3.1-fast, veo-3.1-quality i veo-3.1-lite.
| Pole | Typ | Domyślnie | Uwagi |
|---|---|---|---|
model | string | wymagane | Jeden z trzech powyższych ID. |
prompt | string | wymagane | Opisuje ujęcie. |
duration | integer | 8 | Akceptowane jest tylko 8. |
aspect_ratio | enum | 16:9 lub 9:16. | |
resolution | enum | 720p | 720p, 1080p lub 4k (wielkość liter dowolna). veo-3.1-lite nie ma 4k. |
enable_gif | boolean | false | Zwraca klip jako animowany GIF zamiast MP4. Tylko 720p. |
nsfw_check | boolean | false | Sprawdza prompt i obrazy pod kątem niebezpiecznych treści przed generowaniem. |
image_urls | array | Tylko Fast i Quality. Do 3 publicznych adresów URL obrazów. | |
generation_type | enum | według liczby obrazów | Tylko Fast i Quality. frame lub reference; Quality przyjmuje tylko frame. |
Parametry: modele rozliczane za sekundę
veo-3.1-fast-official i veo-3.1-quality-official.
| Pole | Typ | Domyślnie | Uwagi |
|---|---|---|---|
model | string | wymagane | Jeden z dwóch powyższych ID. |
prompt | string | wymagane | Opisuje ujęcie. |
negative_prompt | string | Czego ma nie być w klipie. | |
duration | integer | 8 | 4, 6 lub 8 sekund. |
aspect_ratio | enum | 16:9 | 16:9 lub 9:16. |
resolution | enum | 720p | 720p, 1080p lub 4k (wielkość liter dowolna). |
first_frame_image | string | Publiczny URL obrazu. Klip zaczyna się od niego. | |
last_frame_image | string | Publiczny URL obrazu. Wymaga first_frame_image. | |
seed | integer | losowy | Od 0 do 4294967295. |
generate_audio | boolean | false | Dodaje ścieżkę dźwiękową. Naliczane według wyższej stawki za sekundę. |
person_generation | enum | allow_adult | allow_adult lub disallow. |
resize_mode | enum | pad | pad lub crop. Wymaga first_frame_image. |
enhance_prompt | boolean | true | Akceptowane jest tylko true; w przeciwnym razie pomiń to pole. |
nsfw_check | boolean | false | Sprawdza prompt i obrazy pod kątem niebezpiecznych treści przed generowaniem. |
Schemat jest ścisły: nieznane pola są odrzucane, a nie ignorowane, a każdy model przyjmuje tylko własne pola. Callbacki nie są dostępne; zamiast tego odpytuj zadanie.
Tryby obrazów
W veo-3.1-fast i veo-3.1-quality pole generation_type określa, jak są używane image_urls:
generation_type | Obrazy | Efekt |
|---|---|---|
frame | 1 lub 2 | Pierwszy obraz jest pierwszą klatką, drugi ostatnią. |
reference | do 3 | Obrazy są referencjami obiektu i stylu. Tylko Fast. |
| pominięte | 2 lub 3 | Dwa obrazy używają trybu klatek, trzy trybu referencji. |
veo-3.1-quality nie obsługuje trybu referencji, więc odrzuca generation_type: "reference" oraz trzy obrazy bez generation_type. veo-3.1-lite nie przyjmuje obrazów.
W modelach rozliczanych za sekundę ustaw first_frame_image i opcjonalnie last_frame_image. resize_mode decyduje, czy obraz o innych proporcjach zostanie dopełniony, czy przycięty.
Dane wejściowe multimediów
Obrazy to publiczne adresy URL HTTP(S):
{ "image_urls": ["https://example.com/first.jpg", "https://example.com/last.jpg"] }W modelach rozliczanych za klip każdy obraz musi być w formacie JPEG, PNG lub WebP i mieć najwyżej 10 MB; plik, który łamie te zasady, kończy zadanie niepowodzeniem bez naliczenia opłaty. Dane base64 nie są przyjmowane: prześlij plik do własnego magazynu i przekaż jego adres URL.
Czynniki wpływające na koszt
Aktualne stawki znajdziesz w sekcji cen modelu.
per-clip models: cost = price of one clip at the output resolution (720p and 1080p cost the same)
per-second models: cost = duration × rate for the resolution and audio settingOpłata jest ustalana w chwili przyjęcia żądania, więc zarezerwowana kwota jest kwotą naliczoną. Ostateczne opłaty zobaczysz w historii zużycia swojego konta. Nieudane zadania nie są naliczane.
Schemat odpowiedzi
Wysłanie zwraca zadanie:
{"id": "task_...", "model": "veo-3.1-fast", "status": "processing", "created_at": 1789689600}Pobieranie zadania
GET https://api.seedrouter.ai/v1/tasks/{task_id}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.
Zadanie zakończone
{
"id": "task_...",
"model": "veo-3.1-fast",
"status": "completed",
"created_at": 1789689600,
"finished_at": 1789689720,
"output": {
"video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4"
}
}video_url to plik MP4 albo GIF, gdy żądanie ustawiło enable_gif. Link prowadzi do magazynu SeedRouter.
Co zwróciły nasze przebiegi testowe (po jednym przebiegu, 2026-10-04):
| Żądanie | Plik |
|---|---|
veo-3.1-fast, 9:16, tryb klatek | MP4, H.264, 720 × 1280, 24 fps, 8 s, ze stereofoniczną ścieżką dźwiękową AAC |
veo-3.1-fast-official, 16:9, 720p, 4 s, bez generate_audio | MP4, H.264, 1280 × 720, 24 fps, 4 s, bez ścieżki dźwiękowej |
veo-3.1-lite, enable_gif | GIF, 480 × 270, 16 fps, 8 s |
Modele rozliczane za klip nie mają przełącznika dźwięku; modele rozliczane za sekundę dodają ścieżkę dźwiękową tylko z generate_audio.
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.
Kody, statusy HTTP i wskazówki dotyczące ponawiania znajdziesz we wspólnym katalogu błędów.
{
"id": "task_...",
"model": "veo-3.1-fast",
"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ź swoje zadania: pierwsze żądanie mogło już zostać przyjęte.
Wskazówki
- Zacznij od
veo-3.1-litelubveo-3.1-fastw 720p, żeby przetestować prompt, a do finalnego renderu przejdź na Quality lub 4k. - Nazwij kamerę i światło: obiektyw i ruch kamery zmieniają ujęcie bardziej niż przymiotniki.
- Dodaj
no text, no logos, aby w kadrze nie pojawiały się wymyślone napisy i znaki. - Jeśli ujęcie musi zaczynać się i kończyć na znanych obrazach, użyj trybu klatek z dwoma obrazami albo modeli rozliczanych za sekundę z
first_frame_imageilast_frame_image. - Aby dopracować ujęcie, ustal
seedw modelach rozliczanych za sekundę i zmieniaj po jednym fragmencie promptu.
