{
  "aboutHtml": "<p>Seedance 1.0 Lite Text-to-Video generuje wideo na podstawie opisu sceny. Dokładny selektor doubao-seedance-1-0-lite-t2v-250428 oznacza wariant tekst-do-wideo edycji Lite. Użyj go, gdy obiekt, otoczenie i ruch można opisać bezpośrednio: produkt na blacie, ogólny widok miejsca lub krótkie działanie postaci. Wyjściem jest klip wideo; profil 1.0 nie generuje zsynchronizowanego dźwięku.</p><p>Opisz scenę w kolejności, w jakiej powinien ją zobaczyć widz. Określ obiekt i jego wygląd, miejsce, działanie, wielkość planu oraz ruch kamery, a następnie opisz końcową kompozycję. Przydatny opis produktu może przedstawiać butelkę na jasnym kamiennym postumencie, światło słoneczne przesuwające się po etykiecie i powolny najazd na nakrętkę. Są to instrukcje tworzenia nowej sceny, a nie stwierdzenie, że model odtwarza dostarczoną fotografię produktu. Dopasuj widoczne działanie do wybranej długości klipu.</p><p>Ten selektor tekst-do-wideo jest odrębny od osobno nazwanego selektora Lite obraz-do-wideo. Treść przekazuje się jako element tekstowy w tablicy content. Zdanie może opisywać osobę, przedmiot lub styl, ale nie dołącza obrazu referencyjnego ani nie ustala dokładnej tożsamości wizualnej na podstawie niewidzianego pliku. Dla sceny, której kompozycja otwierająca musi pochodzić z istniejącego obrazu, wybierz profil obsługujący obrazy zamiast zakładać, że tożsamość Lite t2v zmieni tryb po dodaniu pola z mediami.</p><p>Udokumentowany zakres długości dla 1.0 wynosi od dwóch do dwunastu sekund, z domyślną wartością pięciu sekund i stałą liczbą klatek 24 fps. Lite oferuje poziomy rozdzielczości 480p, 720p i 1080p, przy czym udokumentowaną wartością domyślną jest 720p. Stałe proporcje obejmują 16:9, 4:3, 1:1, 3:4, 9:16 i 21:9. Wybierz kadr dla miejsca docelowego przed generowaniem: pionowy do prezentacji pionowej, kwadratowy do kompaktowego panelu produktowego lub poziomy do szerokiej sceny. Poziomy rozdzielczości i proporcje opisują żądane wyjście; sprawdź pobrany klip pod kątem rzeczywistych wymiarów w pikselach i kadrowania.</p><p>Żądanie udostępnia ustawienia ziarna losowego, znaku wodnego i kamery. Ziarno jest liczbą całkowitą od -1 do 2^32-1, przy czym -1 wybiera losowość. Żądanie nieruchomej kamery dodaje odpowiednią instrukcję, a dokumentacja wyraźnie wskazuje, że efekt nie jest gwarantowany. Zachowaj zgodność kierunku pracy kamery między opisem sceny a osobnym ustawieniem. Instrukcje parametrów umieszczone w tekście mają pierwszeństwo przed osobnymi parametrami opcjonalnymi, więc unikaj sprzecznych instrukcji dotyczących długości, rozdzielczości lub kadrowania w obu miejscach.</p><p>Zużycie jest mierzone w tokenach wideo: szerokość wyjściowa × wysokość wyjściowa × liczba klatek na sekundę × długość wyjściowego klipu / 1024. Zakończone zadanie raportuje tę wielkość jako usage.completion_tokens. Zachowaj zgłoszone zużycie razem z gotowym klipem i żądanymi ustawieniami.</p><p>Generowanie jest asynchroniczne. Wysłanie żądania zwraca identyfikator zadania, a zapytanie o zadanie dostarcza stan przetwarzania i, po sukcesie, adres wideo w content.video_url. Zachowaj identyfikator, gdy zadanie ma stan queued lub running, i zapisz ukończony klip do kolejnej poprawki. Udokumentowany okres przechowywania wygenerowanych plików wynosi siedem dni. Żądanie ma również okres ważności liczony od utworzenia zadania, po którym niedokończone zadanie otrzymuje stan expired; udokumentowana wartość domyślna to 172800 sekund, z zakresem od 3600 do 259200 sekund.</p><p>Sprawdź cały klip względem opisu: czy pojawia się zamierzony obiekt, działanie następuje we właściwej kolejności, kamera podąża w żądanym kierunku, a ostatnia klatka nadaje się do wykorzystania. W kolejnej wersji zmień konkretną instrukcję, zachowując udaną strukturę sceny. Dla serii ujęć zachowaj każdy prompt, żądane ustawienia i ukończone wideo, aby kolejną scenę można było zaplanować na podstawie rzeczywistego wyniku.</p>",
  "aboutText": "Seedance 1.0 Lite Text-to-Video generuje wideo na podstawie opisu sceny. Dokładny selektor doubao-seedance-1-0-lite-t2v-250428 oznacza wariant tekst-do-wideo edycji Lite. Użyj go, gdy obiekt, otoczenie i ruch można opisać bezpośrednio: produkt na blacie, ogólny widok miejsca lub krótkie działanie postaci. Wyjściem jest klip wideo; profil 1.0 nie generuje zsynchronizowanego dźwięku.\n\nOpisz scenę w kolejności, w jakiej powinien ją zobaczyć widz. Określ obiekt i jego wygląd, miejsce, działanie, wielkość planu oraz ruch kamery, a następnie opisz końcową kompozycję. Przydatny opis produktu może przedstawiać butelkę na jasnym kamiennym postumencie, światło słoneczne przesuwające się po etykiecie i powolny najazd na nakrętkę. Są to instrukcje tworzenia nowej sceny, a nie stwierdzenie, że model odtwarza dostarczoną fotografię produktu. Dopasuj widoczne działanie do wybranej długości klipu.\n\nTen selektor tekst-do-wideo jest odrębny od osobno nazwanego selektora Lite obraz-do-wideo. Treść przekazuje się jako element tekstowy w tablicy content. Zdanie może opisywać osobę, przedmiot lub styl, ale nie dołącza obrazu referencyjnego ani nie ustala dokładnej tożsamości wizualnej na podstawie niewidzianego pliku. Dla sceny, której kompozycja otwierająca musi pochodzić z istniejącego obrazu, wybierz profil obsługujący obrazy zamiast zakładać, że tożsamość Lite t2v zmieni tryb po dodaniu pola z mediami.\n\nUdokumentowany zakres długości dla 1.0 wynosi od dwóch do dwunastu sekund, z domyślną wartością pięciu sekund i stałą liczbą klatek 24 fps. Lite oferuje poziomy rozdzielczości 480p, 720p i 1080p, przy czym udokumentowaną wartością domyślną jest 720p. Stałe proporcje obejmują 16:9, 4:3, 1:1, 3:4, 9:16 i 21:9. Wybierz kadr dla miejsca docelowego przed generowaniem: pionowy do prezentacji pionowej, kwadratowy do kompaktowego panelu produktowego lub poziomy do szerokiej sceny. Poziomy rozdzielczości i proporcje opisują żądane wyjście; sprawdź pobrany klip pod kątem rzeczywistych wymiarów w pikselach i kadrowania.\n\nŻądanie udostępnia ustawienia ziarna losowego, znaku wodnego i kamery. Ziarno jest liczbą całkowitą od -1 do 2^32-1, przy czym -1 wybiera losowość. Żądanie nieruchomej kamery dodaje odpowiednią instrukcję, a dokumentacja wyraźnie wskazuje, że efekt nie jest gwarantowany. Zachowaj zgodność kierunku pracy kamery między opisem sceny a osobnym ustawieniem. Instrukcje parametrów umieszczone w tekście mają pierwszeństwo przed osobnymi parametrami opcjonalnymi, więc unikaj sprzecznych instrukcji dotyczących długości, rozdzielczości lub kadrowania w obu miejscach.\n\nZużycie jest mierzone w tokenach wideo: szerokość wyjściowa × wysokość wyjściowa × liczba klatek na sekundę × długość wyjściowego klipu / 1024. Zakończone zadanie raportuje tę wielkość jako usage.completion_tokens. Zachowaj zgłoszone zużycie razem z gotowym klipem i żądanymi ustawieniami.\n\nGenerowanie jest asynchroniczne. Wysłanie żądania zwraca identyfikator zadania, a zapytanie o zadanie dostarcza stan przetwarzania i, po sukcesie, adres wideo w content.video_url. Zachowaj identyfikator, gdy zadanie ma stan queued lub running, i zapisz ukończony klip do kolejnej poprawki. Udokumentowany okres przechowywania wygenerowanych plików wynosi siedem dni. Żądanie ma również okres ważności liczony od utworzenia zadania, po którym niedokończone zadanie otrzymuje stan expired; udokumentowana wartość domyślna to 172800 sekund, z zakresem od 3600 do 259200 sekund.\n\nSprawdź cały klip względem opisu: czy pojawia się zamierzony obiekt, działanie następuje we właściwej kolejności, kamera podąża w żądanym kierunku, a ostatnia klatka nadaje się do wykorzystania. W kolejnej wersji zmień konkretną instrukcję, zachowując udaną strukturę sceny. Dla serii ujęć zachowaj każdy prompt, żądane ustawienia i ukończone wideo, aby kolejną scenę można było zaplanować na podstawie rzeczywistego wyniku.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "6879ec63da20206a34612c7592791d42b6dbea78e58733d2bf4d56a29ae20ec3",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "pl",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">ByteDance: Seedance 1.0 Lite Text-to-Video</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zamknij\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>doubao-seedance-1-0-lite-t2v-250428</code><button type=\"button\" id=\"copy-id\">Kopiuj ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sekcje karty modelu\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Dane wejściowe i metody</button><button type=\"button\" data-card-jump=\"pricing\">Cennik</button><button type=\"button\" data-card-jump=\"examples\">Przykłady</button><button type=\"button\" data-card-jump=\"results\">Wyniki</button><button type=\"button\" data-card-jump=\"aliases\">Aliasy</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metody API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|doubao-seedance-1-0-lite-t2v-250428\">Wideo</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Start</h3><p class=\"mdesc-full\">Seedance 1.0 Lite Text-to-Video zamienia opis sceny w nieme wideo. Ten dokładny selektor Lite korzysta z tekstu zamiast obrazu referencyjnego; oferuje długość 2–12 sekund, 24 fps oraz kadr poziomy, pionowy, kwadratowy lub kinowy.</p><dl class=\"card-io\" data-card-io><div><dt>Akceptowane dane wejściowe</dt><dd>Tekst</dd></div><div><dt>Wyniki</dt><dd>Wideo</dd></div></dl><details class=\"card-about\"><summary>O modelu</summary><p class=\"note-s\" data-model-method-boundary>Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.</p><div class=\"mabout\" id=\"m-about\"><p>Seedance 1.0 Lite Text-to-Video generuje wideo na podstawie opisu sceny. Dokładny selektor doubao-seedance-1-0-lite-t2v-250428 oznacza wariant tekst-do-wideo edycji Lite. Użyj go, gdy obiekt, otoczenie i ruch można opisać bezpośrednio: produkt na blacie, ogólny widok miejsca lub krótkie działanie postaci. Wyjściem jest klip wideo; profil 1.0 nie generuje zsynchronizowanego dźwięku.</p><p>Opisz scenę w kolejności, w jakiej powinien ją zobaczyć widz. Określ obiekt i jego wygląd, miejsce, działanie, wielkość planu oraz ruch kamery, a następnie opisz końcową kompozycję. Przydatny opis produktu może przedstawiać butelkę na jasnym kamiennym postumencie, światło słoneczne przesuwające się po etykiecie i powolny najazd na nakrętkę. Są to instrukcje tworzenia nowej sceny, a nie stwierdzenie, że model odtwarza dostarczoną fotografię produktu. Dopasuj widoczne działanie do wybranej długości klipu.</p><p>Ten selektor tekst-do-wideo jest odrębny od osobno nazwanego selektora Lite obraz-do-wideo. Treść przekazuje się jako element tekstowy w tablicy content. Zdanie może opisywać osobę, przedmiot lub styl, ale nie dołącza obrazu referencyjnego ani nie ustala dokładnej tożsamości wizualnej na podstawie niewidzianego pliku. Dla sceny, której kompozycja otwierająca musi pochodzić z istniejącego obrazu, wybierz profil obsługujący obrazy zamiast zakładać, że tożsamość Lite t2v zmieni tryb po dodaniu pola z mediami.</p><p>Udokumentowany zakres długości dla 1.0 wynosi od dwóch do dwunastu sekund, z domyślną wartością pięciu sekund i stałą liczbą klatek 24 fps. Lite oferuje poziomy rozdzielczości 480p, 720p i 1080p, przy czym udokumentowaną wartością domyślną jest 720p. Stałe proporcje obejmują 16:9, 4:3, 1:1, 3:4, 9:16 i 21:9. Wybierz kadr dla miejsca docelowego przed generowaniem: pionowy do prezentacji pionowej, kwadratowy do kompaktowego panelu produktowego lub poziomy do szerokiej sceny. Poziomy rozdzielczości i proporcje opisują żądane wyjście; sprawdź pobrany klip pod kątem rzeczywistych wymiarów w pikselach i kadrowania.</p><p>Żądanie udostępnia ustawienia ziarna losowego, znaku wodnego i kamery. Ziarno jest liczbą całkowitą od -1 do 2^32-1, przy czym -1 wybiera losowość. Żądanie nieruchomej kamery dodaje odpowiednią instrukcję, a dokumentacja wyraźnie wskazuje, że efekt nie jest gwarantowany. Zachowaj zgodność kierunku pracy kamery między opisem sceny a osobnym ustawieniem. Instrukcje parametrów umieszczone w tekście mają pierwszeństwo przed osobnymi parametrami opcjonalnymi, więc unikaj sprzecznych instrukcji dotyczących długości, rozdzielczości lub kadrowania w obu miejscach.</p><p>Zużycie jest mierzone w tokenach wideo: szerokość wyjściowa × wysokość wyjściowa × liczba klatek na sekundę × długość wyjściowego klipu / 1024. Zakończone zadanie raportuje tę wielkość jako usage.completion_tokens. Zachowaj zgłoszone zużycie razem z gotowym klipem i żądanymi ustawieniami.</p><p>Generowanie jest asynchroniczne. Wysłanie żądania zwraca identyfikator zadania, a zapytanie o zadanie dostarcza stan przetwarzania i, po sukcesie, adres wideo w content.video_url. Zachowaj identyfikator, gdy zadanie ma stan queued lub running, i zapisz ukończony klip do kolejnej poprawki. Udokumentowany okres przechowywania wygenerowanych plików wynosi siedem dni. Żądanie ma również okres ważności liczony od utworzenia zadania, po którym niedokończone zadanie otrzymuje stan expired; udokumentowana wartość domyślna to 172800 sekund, z zakresem od 3600 do 259200 sekund.</p><p>Sprawdź cały klip względem opisu: czy pojawia się zamierzony obiekt, działanie następuje we właściwej kolejności, kamera podąża w żądanym kierunku, a ostatnia klatka nadaje się do wykorzystania. W kolejnej wersji zmień konkretną instrukcję, zachowując udaną strukturę sceny. Dla serii ujęć zachowaj każdy prompt, żądane ustawienia i ukończone wideo, aby kolejną scenę można było zaplanować na podstawie rzeczywistego wyniku.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Dostępne w Ailoot · dane wejściowe i metody</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Wideo</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Wejście</dt><dd><code>text</code></dd></div><div><dt>Wyjście</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Pole</th><th>Typ</th><th>Wymaganie</th><th>Wartości i limity</th><th>Domyślnie</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>doubao-seedance-1-0-lite-t2v-250428</div></td><td data-cell-label=\"Domyślnie\" data-default=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">content</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>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.</div></td><td data-cell-label=\"Domyślnie\" data-default=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Opcjonalne</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>Minimum: 2</div><div>Maksimum: 12</div><div>Warunki: Pierwotny schemat 1.x określa 2–12; późniejszy wspólny opis wskazuje dla 1.5 zakres 4–12 lub -1. Przykład używa wartości 5 udokumentowanej w obu miejscach.</div></td><td data-cell-label=\"Domyślnie\" data-default=\"known\"><span class=\"card-cell-label\">Domyślnie</span>5</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Opcjonalne</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>480p, 720p, 1080p</div><div>Warunki: Wspólny enum; 1080p jest wykluczone przy obrazach referencyjnych i w 1.5. Osadzony opis pro wymienia 480p/1080p, a enum najwyższego poziomu zawiera 720p; nie ma rozstrzygniętej gwarancji 720p dla pro.</div></td><td data-cell-label=\"Domyślnie\" data-default=\"known\"><span class=\"card-cell-label\">Domyślnie</span>720p</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">ratio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Opcjonalne</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive</div><div>Warunki: Wartości domyślne zależą od sceny i modelu; dokumentacja wejścia obrazowego zaleca adaptive.</div></td><td data-cell-label=\"Domyślnie\" data-default=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">service_tier</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Opcjonalne</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>default, flex</div><div>Warunki: default=online, flex=offline; wybierz przed utworzeniem.</div></td><td data-cell-label=\"Domyślnie\" data-default=\"known\"><span class=\"card-cell-label\">Domyślnie</span>default</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">seed</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>Minimum: -1</div><div>Maksimum: 4 294 967 295</div></td><td data-cell-label=\"Domyślnie\" data-default=\"known\"><span class=\"card-cell-label\">Domyślnie</span>-1</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">camerafixed</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>boolean</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>Warunki: Wymagane przez Ailoot; sterowanie kamerą przy obrazie referencyjnym jest opisane jako nieobsługiwane, a jego efekt nie jest gwarantowany.</div></td><td data-cell-label=\"Domyślnie\" data-default=\"known\"><span class=\"card-cell-label\">Domyślnie</span>false</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">watermark</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>boolean</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span></td><td data-cell-label=\"Domyślnie\" data-default=\"known\"><span class=\"card-cell-label\">Domyślnie</span>false</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">execution_expires_after</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>Minimum: 3600</div><div>Maksimum: 259 200</div><div>Jednostka: sekundy</div></td><td data-cell-label=\"Domyślnie\" data-default=\"known\"><span class=\"card-cell-label\">Domyślnie</span>172 800</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinacje materiałów wejściowych</summary><p class=\"note-s\"><b></b></p></details><details class=\"note-s\" data-method-contract><summary>Parametry i cykl życia metody</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametr</th><th>Kontrakt</th></tr></thead><tbody><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>content_type</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>application/json</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>required</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>camerafixed, content, execution_expires_after, model, seed, watermark</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>optional</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>duration, resolution, ratio, service_tier</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>material_types</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>text</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>additional_properties</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>true</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>validation_scope</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>Ailoot sprawdza wymagane typy pól oraz niepusty model i tablicę content. Pozostałe pola żądania są zachowywane dla wybranego modelu.</td></tr></tbody></table></div><p>Aliasy metody: <code>/v1/videos/generations</code></p><p>Cykl życia: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Utwórz raz i zachowaj zwrócone publiczne id/polling_url.</p><p class=\"note-s\">Odpytuj pierwotne zadanie; pobierz rzeczywistą treść content.video_url należącą do użytkownika po uzyskaniu succeeded.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cennik</h3><div class=\"card-result-process\" data-billing-basis><h5>Jak obliczana jest ostateczna opłata</h5><p class=\"note-s\">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.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.</p><dl data-price-conditions><dt>Tryb szybki</dt><dd>Nie określono <span class=\"note-s\">Gdy wybrany jest tryb szybki</span></dd><dt>Tryb flex</dt><dd>Nie określono <span class=\"note-s\">Gdy wybrany jest tryb flex</span></dd><dt>Maksymalna intensywność rozumowania</dt><dd>Nie określono <span class=\"note-s\">Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Szacunkowe stawki do porównania</h4><h4>Ceny według konfiguracji</h4><p class=\"note-s\">Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguracja</th><th>Tabela stawek</th><th>Przewidywana ilość</th><th>Jednostka rozliczeniowa</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>Bazowe stawki za tokeny</th><td data-cell-label=\"Tabela stawek\"><span class=\"card-cell-label\">Tabela stawek</span>Stawka podstawowa</td><td data-cell-label=\"Przewidywana ilość\"><span class=\"card-cell-label\">Przewidywana ilość</span>—</td><td data-cell-label=\"Jednostka rozliczeniowa\"><span class=\"card-cell-label\">Jednostka rozliczeniowa</span>—</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Tokeny wejściowe · Szacunek tylko do porównania</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wyjście · Tokeny wyjściowe · Szacunek tylko do porównania</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Odczyt cache · Szacunek tylko do porównania</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Zapis do cache · Szacunek tylko do porównania</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Zapis do cache, 1 godz. · Szacunek tylko do porównania</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div></td></tr><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>Ultra</th><td data-cell-label=\"Tabela stawek\"><span class=\"card-cell-label\">Tabela stawek</span>—</td><td data-cell-label=\"Przewidywana ilość\"><span class=\"card-cell-label\">Przewidywana ilość</span>—</td><td data-cell-label=\"Jednostka rozliczeniowa\"><span class=\"card-cell-label\">Jednostka rozliczeniowa</span>za 1K tokenów wideo</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wyjście · Szacunek tylko do porównania</span> <b>$0.003</b> <span class=\"price-unit\">za 1K tokenów wideo</span></div></td></tr><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>Szacowany koszt generowania</th><td data-cell-label=\"Tabela stawek\"><span class=\"card-cell-label\">Tabela stawek</span>—</td><td data-cell-label=\"Przewidywana ilość\"><span class=\"card-cell-label\">Przewidywana ilość</span>szacunek dla jednego generowania</td><td data-cell-label=\"Jednostka rozliczeniowa\"><span class=\"card-cell-label\">Jednostka rozliczeniowa</span>—</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wyjście · Szacowany koszt generowania · Szacunek tylko do porównania</span> <b>$0.144</b> <span class=\"price-unit\">szacunek przed generowaniem</span></div><p class=\"note-s\">Ten szacunek nie jest dodatkową opłatą ani stałą stawką za ukończone generowanie.</p></td></tr></tbody></table></div></div><p class=\"note-s\">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. <a href=\"/docs/pl/billing/reserve/\">Jak działają rezerwacja i rozliczenie →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Przykładowe żądania</h3><h4>Ailoot Ultra · Wideo</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Warianty kodu\"><button class=\"cg-tab\" id=\"model-code-2775-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2775-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · utwórz film</button><button class=\"cg-tab\" id=\"model-code-2775-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2775-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · odczytaj pierwotne zadanie</button><button class=\"cg-tab\" id=\"model-code-2775-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2775-panel-2\" aria-selected=\"false\" tabindex=\"-1\">curl · pobierz własny film</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiuj kod\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2775-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2775-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON_REQUEST&#39;\n{&quot;model&quot;:&quot;doubao-seedance-1-0-lite-t2v-250428&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动&quot;}],&quot;resolution&quot;:&quot;480p&quot;,&quot;ratio&quot;:&quot;1:1&quot;,&quot;duration&quot;:5,&quot;service_tier&quot;:&quot;default&quot;,&quot;seed&quot;:-1,&quot;camerafixed&quot;:false,&quot;watermark&quot;:false,&quot;execution_expires_after&quot;:172800}\nJSON_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2775-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2775-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_POLL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\ni=r.get(&quot;id&quot;)\nif not isinstance(i,str) or not i.startswith(&quot;native302_&quot;):raise SystemExit(&quot;Keep original response/headers/id; do not resubmit creation.&quot;)\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r.get(&quot;polling_url&quot;) or &quot;/v1/videos/&quot;+quote(i,safe=&quot;&quot;))\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/videos/&quot;):raise SystemExit(&quot;Use actual Ailoot lookup path.&quot;)\nPath(&quot;poll-url.txt&quot;).write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error &quot;$(cat poll-url.txt)&quot; -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2775-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2775-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nif r.get(&quot;status&quot;)!=&quot;succeeded&quot;:raise SystemExit(&quot;Poll same original job until an owned result is returned.&quot;)\nu=r.get(&quot;content&quot;,{}).get(&quot;video_url&quot;)\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(&quot;No completed video URL.&quot;)\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(&quot;Invalid returned URL.&quot;)\n    p=urlsplit(u)\n    if p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/media/assets/&quot;) or not p.path.endswith(&quot;/content&quot;) or not p.query:raise SystemExit(&quot;Wait for actual Ailoot-owned signed result.&quot;)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; -o &quot;video-${index}.bin&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Odbieranie i zapisywanie wyników</h3><h4>Ailoot Ultra · Wideo</h4><p class=\"note-s\">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.</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Zachowaj wszystkie ukończone wyniki</h5><p class=\"note-s\">Zapisz każde ukończone wideo lub zwrócony plik; pobierz każdy faktycznie zwrócony URL zasobu.</p><p class=\"note-s\">Zachowaj każdy rzeczywisty URL z content.video_url; index musi wskazywać faktycznie zwrócony wynik.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jeśli trzeba sprawdzić pierwotną odpowiedź</h5><p class=\"note-s\">Zachowaj oryginalną odpowiedź, nagłówki i id oraz odpytuj tę operację; nigdy nie ponawiaj żądania utworzenia o nieznanym wyniku.</p></div><details class=\"card-about\" data-output-fields><summary>Pola odpowiedzi</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Pole</th><th>Typ</th></tr></thead><tbody><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string when supplied</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">content.video_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string|string[]</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object when supplied</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Błędy i dalsze kroki</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Odpowiedź</th><th>Warunek</th><th>Następny krok</th></tr></thead><tbody><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Nieprawidłowy JSON/model, typy wymaganych pól lub indeks treści.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span></td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Nieprawidłowy klucz API Ailoot.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span></td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Zadanie lub wynik nie istnieje albo nie należy do tego samego użytkownika, klucza API lub grupy.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span></td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>502 · <code>result_pending_check</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Pierwotne wysłanie lub sprawdzenie statusu jest niekompletne; zachowaj pierwotny identyfikator i nie wysyłaj ponownie.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span></td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Pierwotne multimedia, ścieżka lub rozliczenie są sprawdzane; kontynuuj pierwotną operację.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasy</h3><h4>Aliasy modelu</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=doubao-seedance-1-0-lite-t2v-250428&amp;route=Ultra&amp;caller=doubao-seedance-1-0-lite-t2v-250428&amp;fmt=videos\"><code>doubao-seedance-1-0-lite-t2v-250428</code></a></span></p><h4>Aliasy ścieżek metod</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>Powiązane ID modeli</h4><p class=\"note-s\"><a href=\"#m=doubao-seedance-1-0-lite-t2v-250428&amp;route=Ultra&amp;caller=doubao-seedance-1-0-lite-t2v-250428&amp;fmt=videos\"><code>doubao-seedance-1-0-lite-t2v-250428</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "doubao-seedance-1-0-lite-t2v-250428",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "doubao-seedance-1-0-lite-t2v-250428",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|doubao-seedance-1-0-lite-t2v-250428",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "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.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "errors": [
              {
                "condition": "Nieprawidłowy JSON/model, typy wymaganych pól lub indeks treści.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Nieprawidłowy klucz API Ailoot.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Zadanie lub wynik nie istnieje albo nie należy do tego samego użytkownika, klucza API lub grupy.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Pierwotne wysłanie lub sprawdzenie statusu jest niekompletne; zachowaj pierwotny identyfikator i nie wysyłaj ponownie.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Pierwotne multimedia, ścieżka lub rozliczenie są sprawdzane; kontynuuj pierwotną operację.",
                "http_status": 503,
                "type": "result_pending_check"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "succeeded"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed",
                "expired"
              ],
              "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Zachowaj oryginalną odpowiedź, nagłówki i id oraz odpytuj tę operację; nigdy nie ponawiaj żądania utworzenia o nieznanym wyniku.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ]
            ],
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
              "all_results": "Zachowaj każdy rzeczywisty URL z content.video_url; index musi wskazywać faktycznie zwrócony wynik.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string when supplied"
                },
                {
                  "description": null,
                  "name": "content.video_url",
                  "type": "string|string[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "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."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "doubao-seedance-1-0-lite-t2v-250428"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "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.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minItems": 1,
                "name": "content",
                "required": true,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Pierwotny schemat 1.x określa 2–12; późniejszy wspólny opis wskazuje dla 1.5 zakres 4–12 lub -1. Przykład używa wartości 5 udokumentowanej w obu miejscach.",
                "default": 5,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 12,
                "minimum": 2,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Wspólny enum; 1080p jest wykluczone przy obrazach referencyjnych i w 1.5. Osadzony opis pro wymienia 480p/1080p, a enum najwyższego poziomu zawiera 720p; nie ma rozstrzygniętej gwarancji 720p dla pro.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Wartości domyślne zależą od sceny i modelu; dokumentacja wejścia obrazowego zaleca adaptive.",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9",
                  "adaptive"
                ],
                "enum_known": true,
                "name": "ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "default=online, flex=offline; wybierz przed utworzeniem.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default",
                  "flex"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Wymagane przez Ailoot; sterowanie kamerą przy obrazie referencyjnym jest opisane jako nieobsługiwane, a jego efekt nie jest gwarantowany.",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "camerafixed",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": true,
                "type": "integer",
                "unit": "sekundy"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "camerafixed": {
                  "type": "boolean"
                },
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "maximum": 12,
                  "minimum": 2,
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "model": {
                  "const": "doubao-seedance-1-0-lite-t2v-250428",
                  "type": "string"
                },
                "ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "default": "720p",
                  "enum": [
                    "480p",
                    "720p",
                    "1080p"
                  ],
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default",
                    "flex"
                  ],
                  "type": "string"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "camerafixed",
                "content",
                "execution_expires_after",
                "model",
                "seed",
                "watermark"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "Primary content.items.required says type+text even for its image example without text; preserve intended example branches and outer-array validation boundary."
            ],
            "unsupported": [
              "Separate cancel/delete for this generic method",
              "Separate edit/extension endpoint for this method"
            ]
          },
          "hints": [
            "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."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "duration",
              "resolution",
              "ratio",
              "service_tier"
            ],
            "required": [
              "camerafixed",
              "content",
              "execution_expires_after",
              "model",
              "seed",
              "watermark"
            ],
            "validation_scope": "Ailoot sprawdza wymagane typy pól oraz niepusty model i tablicę content. Pozostałe pola żądania są zachowywane dla wybranego modelu."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "succeeded"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed",
              "expired"
            ],
            "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Preserve original response/headers/id and poll that operation; never resubmit unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
            "all_results": "Retain every actual URL in content.video_url; index must identify a real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": "string"
              },
              {
                "description": null,
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "status",
                "type": "string when supplied"
              },
              {
                "description": null,
                "name": "content.video_url",
                "type": "string|string[]"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "Native JSON with public id/polling_url. After publication content.video_url contains Ailoot-owned signed URL(s); before publication selected output URLs are blanked."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.003000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000003",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "Ten szacunek nie jest dodatkową opłatą ani stałą stawką za ukończone generowanie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Szacowany koszt generowania",
            "units": [
              {
                "amount": "0.144",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.144",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"doubao-seedance-1-0-lite-t2v-250428\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}],\"resolution\":\"480p\",\"ratio\":\"1:1\",\"duration\":5,\"service_tier\":\"default\",\"seed\":-1,\"camerafixed\":false,\"watermark\":false,\"execution_expires_after\":172800}\nJSON_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i.startswith(\"native302_\"):raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"status\")!=\"succeeded\":raise SystemExit(\"Poll same original job until an owned result is returned.\")\nu=r.get(\"content\",{}).get(\"video_url\")\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(\"No completed video URL.\")\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n    p=urlsplit(u)\n    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.\")\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain returned public id/polling_url.",
          "Poll the original job; download actual owned content.video_url after succeeded."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Wideo",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.003000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000003",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.144",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.144",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "doubao-seedance-1-0-lite-t2v-250428",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.003000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000003",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.144",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.144",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "doubao-seedance-1-0-lite-t2v-250428",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "85388bedcaf1fc07e75b3b4d7735d7940b916690b88aa82b1be9fa0ebb1c211f",
    "input_html_sha256": "a3e671ec48f79d2a46c9017bc076d70335baad55a2b1f5bdfbf630325f2cb1e2",
    "private_audit_sha256": "037365d9ebadef968fa59e0e100df65c6a83f50c04630182fdbf5d0f17808796",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/pl/doubao-seedance-1-0-lite-t2v-250428/",
    "description": "Seedance 1.0 Lite Text-to-Video zamienia opis sceny w nieme wideo. Ten dokładny selektor Lite korzysta z tekstu zamiast obrazu referencyjnego; oferuje długość 2–12 sekund, 24 fps oraz kadr poziomy, pionowy, kwadratowy lub kinowy.",
    "locale": "pl",
    "md_url": "https://ailoot.ai/models/pl/doubao-seedance-1-0-lite-t2v-250428/index.md",
    "title": "ByteDance: Seedance 1.0 Lite Text-to-Video — Ailoot",
    "url": "https://ailoot.ai/models/pl/doubao-seedance-1-0-lite-t2v-250428/"
  },
  "rawModel": {
    "about": "Seedance 1.0 Lite Text-to-Video generuje wideo na podstawie opisu sceny. Dokładny selektor doubao-seedance-1-0-lite-t2v-250428 oznacza wariant tekst-do-wideo edycji Lite. Użyj go, gdy obiekt, otoczenie i ruch można opisać bezpośrednio: produkt na blacie, ogólny widok miejsca lub krótkie działanie postaci. Wyjściem jest klip wideo; profil 1.0 nie generuje zsynchronizowanego dźwięku.\n\nOpisz scenę w kolejności, w jakiej powinien ją zobaczyć widz. Określ obiekt i jego wygląd, miejsce, działanie, wielkość planu oraz ruch kamery, a następnie opisz końcową kompozycję. Przydatny opis produktu może przedstawiać butelkę na jasnym kamiennym postumencie, światło słoneczne przesuwające się po etykiecie i powolny najazd na nakrętkę. Są to instrukcje tworzenia nowej sceny, a nie stwierdzenie, że model odtwarza dostarczoną fotografię produktu. Dopasuj widoczne działanie do wybranej długości klipu.\n\nTen selektor tekst-do-wideo jest odrębny od osobno nazwanego selektora Lite obraz-do-wideo. Treść przekazuje się jako element tekstowy w tablicy content. Zdanie może opisywać osobę, przedmiot lub styl, ale nie dołącza obrazu referencyjnego ani nie ustala dokładnej tożsamości wizualnej na podstawie niewidzianego pliku. Dla sceny, której kompozycja otwierająca musi pochodzić z istniejącego obrazu, wybierz profil obsługujący obrazy zamiast zakładać, że tożsamość Lite t2v zmieni tryb po dodaniu pola z mediami.\n\nUdokumentowany zakres długości dla 1.0 wynosi od dwóch do dwunastu sekund, z domyślną wartością pięciu sekund i stałą liczbą klatek 24 fps. Lite oferuje poziomy rozdzielczości 480p, 720p i 1080p, przy czym udokumentowaną wartością domyślną jest 720p. Stałe proporcje obejmują 16:9, 4:3, 1:1, 3:4, 9:16 i 21:9. Wybierz kadr dla miejsca docelowego przed generowaniem: pionowy do prezentacji pionowej, kwadratowy do kompaktowego panelu produktowego lub poziomy do szerokiej sceny. Poziomy rozdzielczości i proporcje opisują żądane wyjście; sprawdź pobrany klip pod kątem rzeczywistych wymiarów w pikselach i kadrowania.\n\nŻądanie udostępnia ustawienia ziarna losowego, znaku wodnego i kamery. Ziarno jest liczbą całkowitą od -1 do 2^32-1, przy czym -1 wybiera losowość. Żądanie nieruchomej kamery dodaje odpowiednią instrukcję, a dokumentacja wyraźnie wskazuje, że efekt nie jest gwarantowany. Zachowaj zgodność kierunku pracy kamery między opisem sceny a osobnym ustawieniem. Instrukcje parametrów umieszczone w tekście mają pierwszeństwo przed osobnymi parametrami opcjonalnymi, więc unikaj sprzecznych instrukcji dotyczących długości, rozdzielczości lub kadrowania w obu miejscach.\n\nZużycie jest mierzone w tokenach wideo: szerokość wyjściowa × wysokość wyjściowa × liczba klatek na sekundę × długość wyjściowego klipu / 1024. Zakończone zadanie raportuje tę wielkość jako usage.completion_tokens. Zachowaj zgłoszone zużycie razem z gotowym klipem i żądanymi ustawieniami.\n\nGenerowanie jest asynchroniczne. Wysłanie żądania zwraca identyfikator zadania, a zapytanie o zadanie dostarcza stan przetwarzania i, po sukcesie, adres wideo w content.video_url. Zachowaj identyfikator, gdy zadanie ma stan queued lub running, i zapisz ukończony klip do kolejnej poprawki. Udokumentowany okres przechowywania wygenerowanych plików wynosi siedem dni. Żądanie ma również okres ważności liczony od utworzenia zadania, po którym niedokończone zadanie otrzymuje stan expired; udokumentowana wartość domyślna to 172800 sekund, z zakresem od 3600 do 259200 sekund.\n\nSprawdź cały klip względem opisu: czy pojawia się zamierzony obiekt, działanie następuje we właściwej kolejności, kamera podąża w żądanym kierunku, a ostatnia klatka nadaje się do wykorzystania. W kolejnej wersji zmień konkretną instrukcję, zachowując udaną strukturę sceny. Dla serii ujęć zachowaj każdy prompt, żądane ustawienia i ukończone wideo, aby kolejną scenę można było zaplanować na podstawie rzeczywistego wyniku.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.144",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.144",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "Pełny cennik konfiguracji w szczegółach."
      }
    ],
    "ctx": null,
    "display_name": "ByteDance: Seedance 1.0 Lite Text-to-Video",
    "formats": [
      "videos"
    ],
    "id": "doubao-seedance-1-0-lite-t2v-250428",
    "input": [
      "text"
    ],
    "kind": "video",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "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.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "errors": [
              {
                "condition": "Nieprawidłowy JSON/model, typy wymaganych pól lub indeks treści.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Nieprawidłowy klucz API Ailoot.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Zadanie lub wynik nie istnieje albo nie należy do tego samego użytkownika, klucza API lub grupy.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Pierwotne wysłanie lub sprawdzenie statusu jest niekompletne; zachowaj pierwotny identyfikator i nie wysyłaj ponownie.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Pierwotne multimedia, ścieżka lub rozliczenie są sprawdzane; kontynuuj pierwotną operację.",
                "http_status": 503,
                "type": "result_pending_check"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "succeeded"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed",
                "expired"
              ],
              "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Zachowaj oryginalną odpowiedź, nagłówki i id oraz odpytuj tę operację; nigdy nie ponawiaj żądania utworzenia o nieznanym wyniku.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ]
            ],
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
              "all_results": "Zachowaj każdy rzeczywisty URL z content.video_url; index musi wskazywać faktycznie zwrócony wynik.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string when supplied"
                },
                {
                  "description": null,
                  "name": "content.video_url",
                  "type": "string|string[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "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."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "doubao-seedance-1-0-lite-t2v-250428"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "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.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minItems": 1,
                "name": "content",
                "required": true,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Pierwotny schemat 1.x określa 2–12; późniejszy wspólny opis wskazuje dla 1.5 zakres 4–12 lub -1. Przykład używa wartości 5 udokumentowanej w obu miejscach.",
                "default": 5,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 12,
                "minimum": 2,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Wspólny enum; 1080p jest wykluczone przy obrazach referencyjnych i w 1.5. Osadzony opis pro wymienia 480p/1080p, a enum najwyższego poziomu zawiera 720p; nie ma rozstrzygniętej gwarancji 720p dla pro.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Wartości domyślne zależą od sceny i modelu; dokumentacja wejścia obrazowego zaleca adaptive.",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9",
                  "adaptive"
                ],
                "enum_known": true,
                "name": "ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "default=online, flex=offline; wybierz przed utworzeniem.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default",
                  "flex"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Wymagane przez Ailoot; sterowanie kamerą przy obrazie referencyjnym jest opisane jako nieobsługiwane, a jego efekt nie jest gwarantowany.",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "camerafixed",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": true,
                "type": "integer",
                "unit": "sekundy"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "camerafixed": {
                  "type": "boolean"
                },
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "maximum": 12,
                  "minimum": 2,
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "model": {
                  "const": "doubao-seedance-1-0-lite-t2v-250428",
                  "type": "string"
                },
                "ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "default": "720p",
                  "enum": [
                    "480p",
                    "720p",
                    "1080p"
                  ],
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default",
                    "flex"
                  ],
                  "type": "string"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "camerafixed",
                "content",
                "execution_expires_after",
                "model",
                "seed",
                "watermark"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "Primary content.items.required says type+text even for its image example without text; preserve intended example branches and outer-array validation boundary."
            ],
            "unsupported": [
              "Separate cancel/delete for this generic method",
              "Separate edit/extension endpoint for this method"
            ]
          },
          "hints": [
            "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."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "duration",
              "resolution",
              "ratio",
              "service_tier"
            ],
            "required": [
              "camerafixed",
              "content",
              "execution_expires_after",
              "model",
              "seed",
              "watermark"
            ],
            "validation_scope": "Ailoot sprawdza wymagane typy pól oraz niepusty model i tablicę content. Pozostałe pola żądania są zachowywane dla wybranego modelu."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "succeeded"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed",
              "expired"
            ],
            "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Preserve original response/headers/id and poll that operation; never resubmit unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
            "all_results": "Retain every actual URL in content.video_url; index must identify a real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": "string"
              },
              {
                "description": null,
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "status",
                "type": "string when supplied"
              },
              {
                "description": null,
                "name": "content.video_url",
                "type": "string|string[]"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "Native JSON with public id/polling_url. After publication content.video_url contains Ailoot-owned signed URL(s); before publication selected output URLs are blanked."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.003000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000003",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "Ten szacunek nie jest dodatkową opłatą ani stałą stawką za ukończone generowanie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Szacowany koszt generowania",
            "units": [
              {
                "amount": "0.144",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.144",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"doubao-seedance-1-0-lite-t2v-250428\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}],\"resolution\":\"480p\",\"ratio\":\"1:1\",\"duration\":5,\"service_tier\":\"default\",\"seed\":-1,\"camerafixed\":false,\"watermark\":false,\"execution_expires_after\":172800}\nJSON_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i.startswith(\"native302_\"):raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"status\")!=\"succeeded\":raise SystemExit(\"Poll same original job until an owned result is returned.\")\nu=r.get(\"content\",{}).get(\"video_url\")\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(\"No completed video URL.\")\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n    p=urlsplit(u)\n    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.\")\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain returned public id/polling_url.",
          "Poll the original job; download actual owned content.video_url after succeeded."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Wideo",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.003000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000003",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.144",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.144",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "doubao-seedance-1-0-lite-t2v-250428",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.003000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000003",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.144",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.144",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "doubao-seedance-1-0-lite-t2v-250428",
        "request_model_id": "doubao-seedance-1-0-lite-t2v-250428",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 1.0 Lite Text-to-Video",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.144,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.144,
      "varies": false
    },
    "short": "Seedance 1.0 Lite Text-to-Video zamienia opis sceny w nieme wideo. Ten dokładny selektor Lite korzysta z tekstu zamiast obrazu referencyjnego; oferuje długość 2–12 sekund, 24 fps oraz kadr poziomy, pionowy, kwadratowy lub kinowy."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Seedance 1.0 Lite Text-to-Video zamienia opis sceny w nieme wideo. Ten dokładny selektor Lite korzysta z tekstu zamiast obrazu referencyjnego; oferuje długość 2–12 sekund, 24 fps oraz kadr poziomy, pionowy, kwadratowy lub kinowy.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "51ecc6e3076b0d33873e8e82723167d0d7955ba536b9080724b98b262bf1b18d",
    "renderer_sha256": "1217dcf19a93e99ac1d6fd7bf974dc19adc12fea4bd4470c2601f04e48f688cb"
  },
  "sourceRevision": "7f9445b74d53a90deef8d1355179e3856b227b44f372914d1cf2e3b5c403207a"
}
