{
  "aboutHtml": "<p>MiniMax Hailuo 2.3 to model generowania wideo z trybami tworzenia z tekstu i z obrazu. Rozwija Hailuo 02, koncentrując się na działaniach fizycznych, stylu wizualnym, mikroekspresjach postaci i reagowaniu na instrukcje ruchu. Dostarcz opis sceny, aby utworzyć ujęcie od zera, albo użyj obrazu początkowego do ustalenia pierwszego widoku i opisz dalszy ruch.</p><p>Ruch ciała jest jednym z głównych obszarów ulepszeń tej wersji. Hailuo 2.3 ma zapewniać większą płynność i kontrolę ruchów, również w scenach z poruszającą się kamerą. Zaplanuj ważną akcję przed dodaniem ozdobnych szczegółów. Postać podnosząca przedmiot, odwracająca się do drugiej osoby lub przechodząca przez pokój daje ujęciu widoczne zdarzenie do oceny. Ustal, który ruch niesie opowieść, a następnie utrzymuj pozostałe instrukcje w zgodzie z nim.</p><p>Kolejnym obszarem jest stylizacja. Model obsługuje anime i ilustrację, a także style takie jak malarstwo tuszem i grafika komputerowa z gier. Opisz oczekiwany sposób przedstawienia i zachowaj spójność wyglądu ze sceną. Jeśli obraz początkowy już ustala styl rysunku, użyj tekstu do pokierowania animacją, zamiast wprowadzać konkurencyjny opis projektu postaci. Sprawdź w całym klipie, czy styl pozostaje czytelny podczas ruchu.</p><p>Model koncentruje się również na grze mimicznej i subtelnych zmianach wyrazu twarzy. Przygotuj ujęcie postaci wokół ważnej reakcji: dostrzeżenia przedmiotu, zaciekawienia lub odpowiedzi lekkim uśmiechem. Zbliżenie może ułatwić ocenę tej zmiany, podczas gdy rozbudowana sekwencja gestów może od niej odciągać uwagę. Sprawdź twarz przed reakcją, w jej trakcie i po niej, zamiast oceniać tylko reprezentatywną nieruchomą klatkę.</p><p>Ruch przedmiotu przydaje się w scenach skupionych na produkcie. Własny opis może przedstawiać mały ceramiczny wazon obracający się w ciepłym bocznym świetle, gdy kamera stopniowo się do niego zbliża. Wskaż właściwości, które muszą pozostać rozpoznawalne, takie jak sylwetka, brzeg i wykończenie powierzchni. Oceń te szczegóły w ruchu, ponieważ sama przekonująca atmosfera nie potwierdza wiernego przedstawienia produktu.</p><p>W trybie tekstowym wymagany opis może zawierać do 2000 znaków. Podaj temat, akcję, otoczenie i styl wizualny w spójnej kolejności. Generowanie z obrazu wymaga obrazu klatki początkowej, z opcjonalnym opisem do 2000 znaków. Obraz ustala kompozycję otwarcia, dlatego przygotuj temat i kadr przed zleceniem ruchu. Pozostaw widoczną przestrzeń tam, gdzie ma poruszać się ręka, przedmiot lub postać.</p><p>Obraz początkowy może mieć format JPG, JPEG, PNG lub WebP, musi zajmować mniej niż 20 MB, mieć krótszy bok większy niż 300 pikseli oraz proporcje od 2:5 do 5:2. Można go dostarczyć jako publiczny adres URL obrazu lub adres danych Base64. Wybierz czytelny obraz początkowy, zamiast liczyć, że animacja naprawi zasłoniętą twarz lub akcję już uciętą przez kadr.</p><p>Hailuo 2.3 generuje przy 24 klatkach na sekundę. Sześciosekundowe ujęcie może korzystać z 768P lub 1080P, a dziesięciosekundowe — z 768P. Domyślne wartości to sześć sekund i 768P. Wybierz długość odpowiednią do oczekiwanej akcji: krótka reakcja może zmieścić się w krótkim ujęciu, a wolniejszy ruch potrzebuje więcej miejsca. Przy umieszczaniu klipu w montażu odczytaj rzeczywistą szerokość i wysokość gotowego wyniku, ponieważ sama etykieta rozdzielczości nie określa całego kadru.</p><p>Pracą kamery można sterować poleceniami w nawiasach kwadratowych. Dostępne elementy sterowania obejmują jazdę boczną, panoramowanie, najazd, ruch pionowy, pochylenie, zoom, drgania, śledzenie i ujęcie statyczne. Polecenie takie jak [Push in] określa zbliżenie; polecenia zgrupowane w jednym nawiasie działają jednocześnie, a ułożone po kolei opisują sekwencję. MiniMax zaleca najwyżej trzy polecenia równocześnie. Dopasuj ruch kamery do akcji obiektu lub postaci, aby główne zdarzenie pozostało łatwe do śledzenia.</p><p>Automatyczna optymalizacja promptu jest domyślnie włączona i można ją wyłączyć dla ściślejszej kontroli nad dostarczonym sformułowaniem. Opcjonalne szybkie przetwarzanie wstępne skraca czas optymalizacji, gdy jest ona włączona; to osobne ustawienie względem wyboru modelu Hailuo 2.3 Fast. Standardowy Hailuo 2.3 obsługuje oba tryby tworzenia, a Fast jest odrębną wersją do generowania wideo z obrazu. Wybierz wersję zależnie od tego, czy projekt zaczyna się od samego tekstu, czy istniejącej klatki.</p><p>Proces generowania zwraca asynchroniczny identyfikator zadania, a następnie zgłasza przygotowanie, oczekiwanie w kolejce, przetwarzanie, sukces lub błąd. Po sukcesie wynik zawiera identyfikator pliku i rzeczywiste wymiary filmu, a gotowe wideo pobiera się do zapisania. Zapisz klip, dopóki jego adres pobierania jest ważny. Obecna dokumentacja pobierania wideo producenta podaje godzinny czas ważności zwróconego adresu URL. Do montowanej sekwencji zachowaj każde ujęcie wraz z promptem i obrazem początkowym, aby wybrany kierunek twórczy można było prześledzić podczas poprawek.</p><p>Oceń w zapisanym klipie akcję, ciągłość fizyczną, szczegóły twarzy lub produktu, styl wizualny i zachowanie kamery. Obejrzyj całe ujęcie, a następnie sprawdź początek i koniec w miejscach łączenia z innymi materiałami. Jeśli żądanie zawiera zbyt wiele konkurujących ruchów, uprość główną akcję; jeśli projekt początkowy jest niejasny, popraw obraz startowy. Wybierz ujęcie przekazujące zamierzone zdarzenie, a następnie dodaj narrację, tytuły i przejścia w procesie montażu.</p>",
  "aboutText": "MiniMax Hailuo 2.3 to model generowania wideo z trybami tworzenia z tekstu i z obrazu. Rozwija Hailuo 02, koncentrując się na działaniach fizycznych, stylu wizualnym, mikroekspresjach postaci i reagowaniu na instrukcje ruchu. Dostarcz opis sceny, aby utworzyć ujęcie od zera, albo użyj obrazu początkowego do ustalenia pierwszego widoku i opisz dalszy ruch.\n\nRuch ciała jest jednym z głównych obszarów ulepszeń tej wersji. Hailuo 2.3 ma zapewniać większą płynność i kontrolę ruchów, również w scenach z poruszającą się kamerą. Zaplanuj ważną akcję przed dodaniem ozdobnych szczegółów. Postać podnosząca przedmiot, odwracająca się do drugiej osoby lub przechodząca przez pokój daje ujęciu widoczne zdarzenie do oceny. Ustal, który ruch niesie opowieść, a następnie utrzymuj pozostałe instrukcje w zgodzie z nim.\n\nKolejnym obszarem jest stylizacja. Model obsługuje anime i ilustrację, a także style takie jak malarstwo tuszem i grafika komputerowa z gier. Opisz oczekiwany sposób przedstawienia i zachowaj spójność wyglądu ze sceną. Jeśli obraz początkowy już ustala styl rysunku, użyj tekstu do pokierowania animacją, zamiast wprowadzać konkurencyjny opis projektu postaci. Sprawdź w całym klipie, czy styl pozostaje czytelny podczas ruchu.\n\nModel koncentruje się również na grze mimicznej i subtelnych zmianach wyrazu twarzy. Przygotuj ujęcie postaci wokół ważnej reakcji: dostrzeżenia przedmiotu, zaciekawienia lub odpowiedzi lekkim uśmiechem. Zbliżenie może ułatwić ocenę tej zmiany, podczas gdy rozbudowana sekwencja gestów może od niej odciągać uwagę. Sprawdź twarz przed reakcją, w jej trakcie i po niej, zamiast oceniać tylko reprezentatywną nieruchomą klatkę.\n\nRuch przedmiotu przydaje się w scenach skupionych na produkcie. Własny opis może przedstawiać mały ceramiczny wazon obracający się w ciepłym bocznym świetle, gdy kamera stopniowo się do niego zbliża. Wskaż właściwości, które muszą pozostać rozpoznawalne, takie jak sylwetka, brzeg i wykończenie powierzchni. Oceń te szczegóły w ruchu, ponieważ sama przekonująca atmosfera nie potwierdza wiernego przedstawienia produktu.\n\nW trybie tekstowym wymagany opis może zawierać do 2000 znaków. Podaj temat, akcję, otoczenie i styl wizualny w spójnej kolejności. Generowanie z obrazu wymaga obrazu klatki początkowej, z opcjonalnym opisem do 2000 znaków. Obraz ustala kompozycję otwarcia, dlatego przygotuj temat i kadr przed zleceniem ruchu. Pozostaw widoczną przestrzeń tam, gdzie ma poruszać się ręka, przedmiot lub postać.\n\nObraz początkowy może mieć format JPG, JPEG, PNG lub WebP, musi zajmować mniej niż 20 MB, mieć krótszy bok większy niż 300 pikseli oraz proporcje od 2:5 do 5:2. Można go dostarczyć jako publiczny adres URL obrazu lub adres danych Base64. Wybierz czytelny obraz początkowy, zamiast liczyć, że animacja naprawi zasłoniętą twarz lub akcję już uciętą przez kadr.\n\nHailuo 2.3 generuje przy 24 klatkach na sekundę. Sześciosekundowe ujęcie może korzystać z 768P lub 1080P, a dziesięciosekundowe — z 768P. Domyślne wartości to sześć sekund i 768P. Wybierz długość odpowiednią do oczekiwanej akcji: krótka reakcja może zmieścić się w krótkim ujęciu, a wolniejszy ruch potrzebuje więcej miejsca. Przy umieszczaniu klipu w montażu odczytaj rzeczywistą szerokość i wysokość gotowego wyniku, ponieważ sama etykieta rozdzielczości nie określa całego kadru.\n\nPracą kamery można sterować poleceniami w nawiasach kwadratowych. Dostępne elementy sterowania obejmują jazdę boczną, panoramowanie, najazd, ruch pionowy, pochylenie, zoom, drgania, śledzenie i ujęcie statyczne. Polecenie takie jak [Push in] określa zbliżenie; polecenia zgrupowane w jednym nawiasie działają jednocześnie, a ułożone po kolei opisują sekwencję. MiniMax zaleca najwyżej trzy polecenia równocześnie. Dopasuj ruch kamery do akcji obiektu lub postaci, aby główne zdarzenie pozostało łatwe do śledzenia.\n\nAutomatyczna optymalizacja promptu jest domyślnie włączona i można ją wyłączyć dla ściślejszej kontroli nad dostarczonym sformułowaniem. Opcjonalne szybkie przetwarzanie wstępne skraca czas optymalizacji, gdy jest ona włączona; to osobne ustawienie względem wyboru modelu Hailuo 2.3 Fast. Standardowy Hailuo 2.3 obsługuje oba tryby tworzenia, a Fast jest odrębną wersją do generowania wideo z obrazu. Wybierz wersję zależnie od tego, czy projekt zaczyna się od samego tekstu, czy istniejącej klatki.\n\nProces generowania zwraca asynchroniczny identyfikator zadania, a następnie zgłasza przygotowanie, oczekiwanie w kolejce, przetwarzanie, sukces lub błąd. Po sukcesie wynik zawiera identyfikator pliku i rzeczywiste wymiary filmu, a gotowe wideo pobiera się do zapisania. Zapisz klip, dopóki jego adres pobierania jest ważny. Obecna dokumentacja pobierania wideo producenta podaje godzinny czas ważności zwróconego adresu URL. Do montowanej sekwencji zachowaj każde ujęcie wraz z promptem i obrazem początkowym, aby wybrany kierunek twórczy można było prześledzić podczas poprawek.\n\nOceń w zapisanym klipie akcję, ciągłość fizyczną, szczegóły twarzy lub produktu, styl wizualny i zachowanie kamery. Obejrzyj całe ujęcie, a następnie sprawdź początek i koniec w miejscach łączenia z innymi materiałami. Jeśli żądanie zawiera zbyt wiele konkurujących ruchów, uprość główną akcję; jeśli projekt początkowy jest niejasny, popraw obraz startowy. Wybierz ujęcie przekazujące zamierzone zdarzenie, a następnie dodaj narrację, tytuły i przejścia w procesie montażu.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "f9930f853d11806d51465973404a0ebba1b0a0b7b56aca61390f26955b729a95",
    "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\">MM</span><h2 id=\"sheet-title\">MiniMax-Hailuo-2.3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zamknij\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>MiniMax-Hailuo-2.3</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=\"Core|videos|/v1/videos/generations|MiniMax-Hailuo-2.3\">Wideo</button><button type=\"button\" role=\"tab\" tabindex=\"-1\" aria-controls=\"card-method-content\" aria-selected=\"false\" id=\"card-method-tab-1\" data-card-method=\"Ultra|videos|/v1/videos|MiniMax-Hailuo-2.3\">Wideo · Ultra</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\">MiniMax Hailuo 2.3 tworzy filmy z tekstu lub obrazu początkowego, z możliwością sterowania ruchem i kierunkiem pracy kamery. Wybierz sześć sekund w 768P lub 1080P albo dziesięć sekund w 768P do gry postaci, stylizowanych scen i ujęć produktów, które można ocenić i zmontować.</p><dl class=\"card-io\" data-card-io><div><dt>Akceptowane dane wejściowe</dt><dd>Tekst · Obrazy</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>MiniMax Hailuo 2.3 to model generowania wideo z trybami tworzenia z tekstu i z obrazu. Rozwija Hailuo 02, koncentrując się na działaniach fizycznych, stylu wizualnym, mikroekspresjach postaci i reagowaniu na instrukcje ruchu. Dostarcz opis sceny, aby utworzyć ujęcie od zera, albo użyj obrazu początkowego do ustalenia pierwszego widoku i opisz dalszy ruch.</p><p>Ruch ciała jest jednym z głównych obszarów ulepszeń tej wersji. Hailuo 2.3 ma zapewniać większą płynność i kontrolę ruchów, również w scenach z poruszającą się kamerą. Zaplanuj ważną akcję przed dodaniem ozdobnych szczegółów. Postać podnosząca przedmiot, odwracająca się do drugiej osoby lub przechodząca przez pokój daje ujęciu widoczne zdarzenie do oceny. Ustal, który ruch niesie opowieść, a następnie utrzymuj pozostałe instrukcje w zgodzie z nim.</p><p>Kolejnym obszarem jest stylizacja. Model obsługuje anime i ilustrację, a także style takie jak malarstwo tuszem i grafika komputerowa z gier. Opisz oczekiwany sposób przedstawienia i zachowaj spójność wyglądu ze sceną. Jeśli obraz początkowy już ustala styl rysunku, użyj tekstu do pokierowania animacją, zamiast wprowadzać konkurencyjny opis projektu postaci. Sprawdź w całym klipie, czy styl pozostaje czytelny podczas ruchu.</p><p>Model koncentruje się również na grze mimicznej i subtelnych zmianach wyrazu twarzy. Przygotuj ujęcie postaci wokół ważnej reakcji: dostrzeżenia przedmiotu, zaciekawienia lub odpowiedzi lekkim uśmiechem. Zbliżenie może ułatwić ocenę tej zmiany, podczas gdy rozbudowana sekwencja gestów może od niej odciągać uwagę. Sprawdź twarz przed reakcją, w jej trakcie i po niej, zamiast oceniać tylko reprezentatywną nieruchomą klatkę.</p><p>Ruch przedmiotu przydaje się w scenach skupionych na produkcie. Własny opis może przedstawiać mały ceramiczny wazon obracający się w ciepłym bocznym świetle, gdy kamera stopniowo się do niego zbliża. Wskaż właściwości, które muszą pozostać rozpoznawalne, takie jak sylwetka, brzeg i wykończenie powierzchni. Oceń te szczegóły w ruchu, ponieważ sama przekonująca atmosfera nie potwierdza wiernego przedstawienia produktu.</p><p>W trybie tekstowym wymagany opis może zawierać do 2000 znaków. Podaj temat, akcję, otoczenie i styl wizualny w spójnej kolejności. Generowanie z obrazu wymaga obrazu klatki początkowej, z opcjonalnym opisem do 2000 znaków. Obraz ustala kompozycję otwarcia, dlatego przygotuj temat i kadr przed zleceniem ruchu. Pozostaw widoczną przestrzeń tam, gdzie ma poruszać się ręka, przedmiot lub postać.</p><p>Obraz początkowy może mieć format JPG, JPEG, PNG lub WebP, musi zajmować mniej niż 20 MB, mieć krótszy bok większy niż 300 pikseli oraz proporcje od 2:5 do 5:2. Można go dostarczyć jako publiczny adres URL obrazu lub adres danych Base64. Wybierz czytelny obraz początkowy, zamiast liczyć, że animacja naprawi zasłoniętą twarz lub akcję już uciętą przez kadr.</p><p>Hailuo 2.3 generuje przy 24 klatkach na sekundę. Sześciosekundowe ujęcie może korzystać z 768P lub 1080P, a dziesięciosekundowe — z 768P. Domyślne wartości to sześć sekund i 768P. Wybierz długość odpowiednią do oczekiwanej akcji: krótka reakcja może zmieścić się w krótkim ujęciu, a wolniejszy ruch potrzebuje więcej miejsca. Przy umieszczaniu klipu w montażu odczytaj rzeczywistą szerokość i wysokość gotowego wyniku, ponieważ sama etykieta rozdzielczości nie określa całego kadru.</p><p>Pracą kamery można sterować poleceniami w nawiasach kwadratowych. Dostępne elementy sterowania obejmują jazdę boczną, panoramowanie, najazd, ruch pionowy, pochylenie, zoom, drgania, śledzenie i ujęcie statyczne. Polecenie takie jak [Push in] określa zbliżenie; polecenia zgrupowane w jednym nawiasie działają jednocześnie, a ułożone po kolei opisują sekwencję. MiniMax zaleca najwyżej trzy polecenia równocześnie. Dopasuj ruch kamery do akcji obiektu lub postaci, aby główne zdarzenie pozostało łatwe do śledzenia.</p><p>Automatyczna optymalizacja promptu jest domyślnie włączona i można ją wyłączyć dla ściślejszej kontroli nad dostarczonym sformułowaniem. Opcjonalne szybkie przetwarzanie wstępne skraca czas optymalizacji, gdy jest ona włączona; to osobne ustawienie względem wyboru modelu Hailuo 2.3 Fast. Standardowy Hailuo 2.3 obsługuje oba tryby tworzenia, a Fast jest odrębną wersją do generowania wideo z obrazu. Wybierz wersję zależnie od tego, czy projekt zaczyna się od samego tekstu, czy istniejącej klatki.</p><p>Proces generowania zwraca asynchroniczny identyfikator zadania, a następnie zgłasza przygotowanie, oczekiwanie w kolejce, przetwarzanie, sukces lub błąd. Po sukcesie wynik zawiera identyfikator pliku i rzeczywiste wymiary filmu, a gotowe wideo pobiera się do zapisania. Zapisz klip, dopóki jego adres pobierania jest ważny. Obecna dokumentacja pobierania wideo producenta podaje godzinny czas ważności zwróconego adresu URL. Do montowanej sekwencji zachowaj każde ujęcie wraz z promptem i obrazem początkowym, aby wybrany kierunek twórczy można było prześledzić podczas poprawek.</p><p>Oceń w zapisanym klipie akcję, ciągłość fizyczną, szczegóły twarzy lub produktu, styl wizualny i zachowanie kamery. Obejrzyj całe ujęcie, a następnie sprawdź początek i koniec w miejscach łączenia z innymi materiałami. Jeśli żądanie zawiera zbyt wiele konkurujących ruchów, uprość główną akcję; jeśli projekt początkowy jest niejasny, popraw obraz startowy. Wybierz ujęcie przekazujące zamierzone zdarzenie, a następnie dodaj narrację, tytuły i przejścia w procesie montażu.</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 · Wideo</b> <code>POST /v1/videos/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Wejście</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Wyjście</dt><dd><code>video</code></dd></div><div><dt>Format wyjściowy</dt><dd>mp4</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>MiniMax-Hailuo-2.3</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\">prompt</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>Minimalna długość: 1</div><div>Maksymalna długość: 2000</div><div>Jednostka: znaki Unicode</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>6, 10</div><div>Warunki: 10 sekund wymaga 768P</div><div>Jednostka: sekundy</div></td><td data-cell-label=\"Domyślnie\" data-default=\"known\"><span class=\"card-cell-label\">Domyślnie</span>6</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>768P, 1080P</div><div>Warunki: 1080P wymaga 6 sekund</div></td><td data-cell-label=\"Domyślnie\" data-default=\"known\"><span class=\"card-cell-label\">Domyślnie</span>768P</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\">first_frame_image</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>https_url|data_image_url</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>Maksymalna liczba zdekodowanych bajtów: 20 971 520</div><div>Typy MIME: image/jpeg, image/png, image/webp</div><div>Minimalny wymiar (bez wartości granicznej): 300</div><div>Zakres proporcji obrazu: 2:5, 5:2</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\">prompt_optimizer</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>Opcjonalne</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=\"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\">fast_pretreatment</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>Opcjonalne</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=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinacje materiałów wejściowych</summary><p class=\"note-s\"><b>Obraz na wideo</b> · Wymagane: prompt, first_frame_image</p><p class=\"note-s\"><b>Tekst na wideo</b> · Wymagane: prompt</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>material_types</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>text, image</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>null</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>optional_controls</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>null</td></tr></tbody></table></div><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\">Struktury metod i ID są dokładne; możliwości dostawcy są odrębne od dopuszczenia żądania.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cennik</h3><h4>Stawki metod Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Wideo</b><code>POST /v1/videos/generations</code></header><dl><div><dt>Wyjście</dt><dd>0,28 USD <em>za wideo o długości 6 s w 768p</em></dd></div></dl></section><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><div data-declared-reference-pricing><h4>Szczegóły taryfy referencyjnej</h4><p class=\"note-s\">Referencyjne tabele modelu nie zmieniają wyboru metody, wyceny ani opłat. Naliczane opłaty korzystają ze stawek wybranej metody Ailoot.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>MiniMax-Hailuo-2.3</summary><h4>Ceny według konfiguracji</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguracja</th><th>Warunki rozliczania</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>MiniMax-Hailuo-2.3 · Domyślna konfiguracja</th><td data-cell-label=\"Warunki rozliczania\"><span class=\"card-cell-label\">Warunki rozliczania</span>Konfiguracja domyślna</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Wejście</span> <b>0,00 USD</b> <span class=\"price-unit\">za wywołanie</span></div><div><span>Wyjście · Wyjście</span> <b>0,60 USD</b> <span class=\"price-unit\">za wywołanie</span></div></td></tr></tbody></table></div></details><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>MiniMax-Hailuo-2.3</summary><h4>Ceny według konfiguracji</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguracja</th><th>Warunki rozliczania</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>MiniMax-Hailuo-2.3 · Domyślna konfiguracja</th><td data-cell-label=\"Warunki rozliczania\"><span class=\"card-cell-label\">Warunki rozliczania</span>Konfiguracja domyślna</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Wejście</span> <b>0,00 USD</b> <span class=\"price-unit\">za wywołanie</span></div><div><span>Wyjście · Wyjście</span> <b>1,20 USD</b> <span class=\"price-unit\">za wywołanie</span></div></td></tr></tbody></table></div></details><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>MiniMax-Hailuo-2.3</summary><h4>Ceny według konfiguracji</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguracja</th><th>Warunki rozliczania</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>MiniMax-Hailuo-2.3 · Konfiguracja domyślna</th><td data-cell-label=\"Warunki rozliczania\"><span class=\"card-cell-label\">Warunki rozliczania</span>Konfiguracja domyślna</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Wejście</span> <b>0,00 USD</b> <span class=\"price-unit\">za wywołanie</span></div><div><span>Wyjście · Wyjście</span> <b>1,20 USD</b> <span class=\"price-unit\">za wywołanie</span></div></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Przykładowe żądania</h3><h4>Ailoot · 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-374-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-374-panel-0\" aria-selected=\"true\" tabindex=\"0\">Przykład wideo</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-374-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-374-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl https://api.ailoot.ai/v1/videos/generations \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; \\\n  -H &quot;Content-Type: application/json&quot; \\\n  -d &#39;{&quot;model&quot;: &quot;MiniMax-Hailuo-2.3&quot;, &quot;prompt&quot;: &quot;A person walks slowly through a quiet garden as the camera tracks from the side.&quot;, &quot;duration&quot;: 6, &quot;resolution&quot;: &quot;768P&quot;}&#39;</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 · Wideo</h4><p class=\"note-s\">mp4</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><h5>Sprawdź status zadania</h5><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-375-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-375-panel-0\" aria-selected=\"true\" tabindex=\"0\">Pobierz status przez GET</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-375-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-375-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}&quot;\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c &#39;import os, urllib.parse; print(urllib.parse.quote(os.environ[&quot;AILOOT_VIDEO_ID&quot;], safe=&quot;&quot;))&#39;) || exit 1\ncurl &quot;https://api.ailoot.ai/v1/videos/generations/$video_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot;</code></pre></div></div></div><details class=\"card-about\"><summary>Inne odczyty treści</summary><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-376-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-376-panel-0\" aria-selected=\"true\" tabindex=\"0\">Pobierz treść przez GET</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-376-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-376-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}&quot;\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c &#39;import os, urllib.parse; print(urllib.parse.quote(os.environ[&quot;AILOOT_VIDEO_ID&quot;], safe=&quot;&quot;))&#39;) || exit 1\ncurl &quot;https://api.ailoot.ai/v1/videos/generations/$video_id/content&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; \\\n  --output video.mp4</code></pre></div></div></div></details><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 zwrócony element data i indeks wyniku. content_url wskazuje tylko pierwszy; pobierz każdą rzeczywistą ścieżkę treści i zasób. GET treści bez index nie obejmuje wszystkich wyników.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jeśli trzeba sprawdzić pierwotną odpowiedź</h5><p class=\"note-s\">Odczytuj istniejące pierwotne zadanie; nigdy nie ponawiaj wysłania 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\">object</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\">model</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</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">content_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>signed URL</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>signed URL</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</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">result_pending_check</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>boolean</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łowe wymagane pola, sposób reprezentacji materiału lub wartość parametru</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Popraw wskazane pola przed nowym żądaniem utworzenia.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Treść pierwotnego wyniku nie jest jeszcze dostępna</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Odpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span><code>server_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Zwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Zachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.</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=\"Core\"><b>Ailoot</b> <a href=\"#m=MiniMax-Hailuo-2.3&amp;route=Core&amp;caller=MiniMax-Hailuo-2.3&amp;fmt=videos\"><code>MiniMax-Hailuo-2.3</code></a></span><br><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=MiniMax-Hailuo-2.3&amp;route=Ultra&amp;caller=MiniMax-Hailuo-2.3&amp;fmt=videos\"><code>MiniMax-Hailuo-2.3</code></a></span></p><h4>Aliasy ścieżek metod</h4><p class=\"note-s\"><code>/v1/videos/generations</code>, <code>/videos</code>, <code>/videos/generations</code></p><h4>Powiązane ID modeli</h4><p class=\"note-s\"><a href=\"#m=MiniMax-Hailuo-2.3&amp;route=Core&amp;caller=MiniMax-Hailuo-2.3&amp;fmt=videos\"><code>MiniMax-Hailuo-2.3</code></a>, <a href=\"#m=MiniMax-Hailuo-2.3&amp;route=Ultra&amp;caller=MiniMax-Hailuo-2.3&amp;fmt=videos\"><code>MiniMax-Hailuo-2.3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "MiniMax-Hailuo-2.3",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos/generations",
        "request_model_id": "MiniMax-Hailuo-2.3",
        "route_label": "Core"
      },
      "method_key": "Core|videos|/v1/videos/generations|MiniMax-Hailuo-2.3",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Preserve every returned data item/output index. content_url is first only; fetch every actual content path/asset. GETcontentwithoutindex isnotalloutputs.",
            "errors": [
              {
                "code": null,
                "condition": "Nieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru",
                "http_status": 400,
                "recovery": "Popraw wskazane pola przed nowym żądaniem utworzenia.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Treść pierwotnego wyniku nie jest jeszcze dostępna",
                "http_status": 409,
                "recovery": "Odpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Zwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia",
                "http_status": null,
                "recovery": "Zachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos/generations"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "operation_id_is_not_task_id": true,
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Odczytuj istniejące pierwotne zadanie; nigdy nie ponawiaj wysłania o nieznanym wyniku.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "mode": "image_to_video",
                "required": [
                  "prompt",
                  "first_frame_image"
                ]
              },
              {
                "available": true,
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "videos"
            ],
            "outputs": {
              "all_results": "Zachowaj każdy zwrócony element data i indeks wyniku. content_url wskazuje tylko pierwszy; pobierz każdą rzeczywistą ścieżkę treści i zasób. GET treści bez index nie obejmuje wszystkich wyników.",
              "content_selection": "Oneownedvideo; use actualreturnedcontent_url/data[] ororiginalcontentread. No indexedselection field is promised by thisCorehandler.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "content_url",
                  "type": "signed URL"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "signed URL"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "result_pending_check",
                  "type": "boolean"
                }
              ],
              "format": "mp4"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "MiniMax-Hailuo-2.3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length": 2000,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string",
                "unit": "znaki Unicode"
              },
              {
                "availability": "source_interface",
                "conditions": "10 sekund wymaga 768P",
                "default": 6,
                "default_known": true,
                "enum": [
                  6,
                  10
                ],
                "enum_known": true,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "sekundy"
              },
              {
                "availability": "source_interface",
                "conditions": "1080P wymaga 6 sekund",
                "default": "768P",
                "default_known": true,
                "enum": [
                  "768P",
                  "1080P"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "aspect_ratio_range": [
                  "2:5",
                  "5:2"
                ],
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_decoded_bytes": 20971520,
                "mime_types": [
                  "image/jpeg",
                  "image/png",
                  "image/webp"
                ],
                "minimum_dimension_exclusive": 300,
                "name": "first_frame_image",
                "required": false,
                "type": "https_url|data_image_url"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_optimizer",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "fast_pretreatment",
                "required": false,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Struktury metod i ID są dokładne; możliwości dostawcy są odrębne od dopuszczenia żądania."
          ],
          "input": {
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "id_source": "only actual ID/path from creation/status",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos/generations"
          },
          "operation_modes": [
            "videos"
          ],
          "output": {
            "family": [
              "video"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl https://api.ailoot.ai/v1/videos/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"MiniMax-Hailuo-2.3\", \"prompt\": \"A person walks slowly through a quiet garden as the camera tracks from the side.\", \"duration\": 6, \"resolution\": \"768P\"}'",
            "label": "Create video · retained exact shape",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\"",
            "label": "GET status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id/content\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --output video.mp4",
            "label": "GET content",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Wideo",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos/generations",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.28,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_768p_6s_clip",
                "label": "per 6 s video at 768p",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "MiniMax-Hailuo-2.3",
        "route_label": "Core",
        "status_reads": [
          "GET /v1/videos/generations/{id}",
          "GET /v1/videos/generations/{id}/content"
        ],
        "tiers": [],
        "tool_prices": null,
        "unit": "video_output_768p_6s_clip",
        "units": [
          {
            "key": "video_output_768p_6s_clip",
            "label": "per 6 s video at 768p",
            "side": "out",
            "usd": 0.28
          }
        ]
      }
    },
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">MM</span><h2 id=\"sheet-title\">MiniMax-Hailuo-2.3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zamknij\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>MiniMax-Hailuo-2.3</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=\"-1\" aria-controls=\"card-method-content\" aria-selected=\"false\" id=\"card-method-tab-0\" data-card-method=\"Core|videos|/v1/videos/generations|MiniMax-Hailuo-2.3\">Wideo</button><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-1\" data-card-method=\"Ultra|videos|/v1/videos|MiniMax-Hailuo-2.3\">Wideo · Ultra</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-1\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Start</h3><p class=\"mdesc-full\">MiniMax Hailuo 2.3 tworzy filmy z tekstu lub obrazu początkowego, z możliwością sterowania ruchem i kierunkiem pracy kamery. Wybierz sześć sekund w 768P lub 1080P albo dziesięć sekund w 768P do gry postaci, stylizowanych scen i ujęć produktów, które można ocenić i zmontować.</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>MiniMax Hailuo 2.3 to model generowania wideo z trybami tworzenia z tekstu i z obrazu. Rozwija Hailuo 02, koncentrując się na działaniach fizycznych, stylu wizualnym, mikroekspresjach postaci i reagowaniu na instrukcje ruchu. Dostarcz opis sceny, aby utworzyć ujęcie od zera, albo użyj obrazu początkowego do ustalenia pierwszego widoku i opisz dalszy ruch.</p><p>Ruch ciała jest jednym z głównych obszarów ulepszeń tej wersji. Hailuo 2.3 ma zapewniać większą płynność i kontrolę ruchów, również w scenach z poruszającą się kamerą. Zaplanuj ważną akcję przed dodaniem ozdobnych szczegółów. Postać podnosząca przedmiot, odwracająca się do drugiej osoby lub przechodząca przez pokój daje ujęciu widoczne zdarzenie do oceny. Ustal, który ruch niesie opowieść, a następnie utrzymuj pozostałe instrukcje w zgodzie z nim.</p><p>Kolejnym obszarem jest stylizacja. Model obsługuje anime i ilustrację, a także style takie jak malarstwo tuszem i grafika komputerowa z gier. Opisz oczekiwany sposób przedstawienia i zachowaj spójność wyglądu ze sceną. Jeśli obraz początkowy już ustala styl rysunku, użyj tekstu do pokierowania animacją, zamiast wprowadzać konkurencyjny opis projektu postaci. Sprawdź w całym klipie, czy styl pozostaje czytelny podczas ruchu.</p><p>Model koncentruje się również na grze mimicznej i subtelnych zmianach wyrazu twarzy. Przygotuj ujęcie postaci wokół ważnej reakcji: dostrzeżenia przedmiotu, zaciekawienia lub odpowiedzi lekkim uśmiechem. Zbliżenie może ułatwić ocenę tej zmiany, podczas gdy rozbudowana sekwencja gestów może od niej odciągać uwagę. Sprawdź twarz przed reakcją, w jej trakcie i po niej, zamiast oceniać tylko reprezentatywną nieruchomą klatkę.</p><p>Ruch przedmiotu przydaje się w scenach skupionych na produkcie. Własny opis może przedstawiać mały ceramiczny wazon obracający się w ciepłym bocznym świetle, gdy kamera stopniowo się do niego zbliża. Wskaż właściwości, które muszą pozostać rozpoznawalne, takie jak sylwetka, brzeg i wykończenie powierzchni. Oceń te szczegóły w ruchu, ponieważ sama przekonująca atmosfera nie potwierdza wiernego przedstawienia produktu.</p><p>W trybie tekstowym wymagany opis może zawierać do 2000 znaków. Podaj temat, akcję, otoczenie i styl wizualny w spójnej kolejności. Generowanie z obrazu wymaga obrazu klatki początkowej, z opcjonalnym opisem do 2000 znaków. Obraz ustala kompozycję otwarcia, dlatego przygotuj temat i kadr przed zleceniem ruchu. Pozostaw widoczną przestrzeń tam, gdzie ma poruszać się ręka, przedmiot lub postać.</p><p>Obraz początkowy może mieć format JPG, JPEG, PNG lub WebP, musi zajmować mniej niż 20 MB, mieć krótszy bok większy niż 300 pikseli oraz proporcje od 2:5 do 5:2. Można go dostarczyć jako publiczny adres URL obrazu lub adres danych Base64. Wybierz czytelny obraz początkowy, zamiast liczyć, że animacja naprawi zasłoniętą twarz lub akcję już uciętą przez kadr.</p><p>Hailuo 2.3 generuje przy 24 klatkach na sekundę. Sześciosekundowe ujęcie może korzystać z 768P lub 1080P, a dziesięciosekundowe — z 768P. Domyślne wartości to sześć sekund i 768P. Wybierz długość odpowiednią do oczekiwanej akcji: krótka reakcja może zmieścić się w krótkim ujęciu, a wolniejszy ruch potrzebuje więcej miejsca. Przy umieszczaniu klipu w montażu odczytaj rzeczywistą szerokość i wysokość gotowego wyniku, ponieważ sama etykieta rozdzielczości nie określa całego kadru.</p><p>Pracą kamery można sterować poleceniami w nawiasach kwadratowych. Dostępne elementy sterowania obejmują jazdę boczną, panoramowanie, najazd, ruch pionowy, pochylenie, zoom, drgania, śledzenie i ujęcie statyczne. Polecenie takie jak [Push in] określa zbliżenie; polecenia zgrupowane w jednym nawiasie działają jednocześnie, a ułożone po kolei opisują sekwencję. MiniMax zaleca najwyżej trzy polecenia równocześnie. Dopasuj ruch kamery do akcji obiektu lub postaci, aby główne zdarzenie pozostało łatwe do śledzenia.</p><p>Automatyczna optymalizacja promptu jest domyślnie włączona i można ją wyłączyć dla ściślejszej kontroli nad dostarczonym sformułowaniem. Opcjonalne szybkie przetwarzanie wstępne skraca czas optymalizacji, gdy jest ona włączona; to osobne ustawienie względem wyboru modelu Hailuo 2.3 Fast. Standardowy Hailuo 2.3 obsługuje oba tryby tworzenia, a Fast jest odrębną wersją do generowania wideo z obrazu. Wybierz wersję zależnie od tego, czy projekt zaczyna się od samego tekstu, czy istniejącej klatki.</p><p>Proces generowania zwraca asynchroniczny identyfikator zadania, a następnie zgłasza przygotowanie, oczekiwanie w kolejce, przetwarzanie, sukces lub błąd. Po sukcesie wynik zawiera identyfikator pliku i rzeczywiste wymiary filmu, a gotowe wideo pobiera się do zapisania. Zapisz klip, dopóki jego adres pobierania jest ważny. Obecna dokumentacja pobierania wideo producenta podaje godzinny czas ważności zwróconego adresu URL. Do montowanej sekwencji zachowaj każde ujęcie wraz z promptem i obrazem początkowym, aby wybrany kierunek twórczy można było prześledzić podczas poprawek.</p><p>Oceń w zapisanym klipie akcję, ciągłość fizyczną, szczegóły twarzy lub produktu, styl wizualny i zachowanie kamery. Obejrzyj całe ujęcie, a następnie sprawdź początek i koniec w miejscach łączenia z innymi materiałami. Jeśli żądanie zawiera zbyt wiele konkurujących ruchów, uprość główną akcję; jeśli projekt początkowy jest niejasny, popraw obraz startowy. Wybierz ujęcie przekazujące zamierzone zdarzenie, a następnie dodaj narrację, tytuły i przejścia w procesie montażu.</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><div><dt>Format wyjściowy</dt><dd>mp4</dd></div><div><dt>Liczba wyników</dt><dd>Do 1 wynik</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>MiniMax-Hailuo-2.3</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\">prompt</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>Minimalna długość: 1</div><div>Maksymalna długość: 2000</div><div>Warunki: Dla 768P: najwyżej 2000 punktów kodowych Unicode. Dla 1080P: mniej niż 200 punktów kodowych Unicode (maksymalnie 199). Prompt musi zawierać tekst inny niż białe znaki.</div><div>Jednostka: znaki Unicode</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>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>6</div><div>Jednostka: sekundy</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\">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>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>768P, 1080P</div></td><td data-cell-label=\"Domyślnie\" data-default=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinacje materiałów wejściowych</summary><p class=\"note-s\"><b>Tekst na wideo</b> · Wymagane: prompt</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>model, prompt, duration, resolution</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>other_options</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>false</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>duration</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>6</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>resolution</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>768P, 1080P</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>prompt_max_characters</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>2000</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>prompt_max_characters_by_resolution</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>{&quot;768P&quot;:2000,&quot;1080P&quot;:199}</td></tr></tbody></table></div><p>Aliasy metody: <code>/v1/videos/generations</code>, <code>/videos</code>, <code>/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 zapisz zwrócony identyfikator.</p><p class=\"note-s\">Odpytuj pierwotny status; zachowaj każdy ukończony zasób i jego czas trwania.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cennik</h3><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>Stawki Ailoot</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>Nominalna długość klipu, sekundy</th><th>Rozdzielczość</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=\"Nominalna długość klipu, sekundy\"><span class=\"card-cell-label\">Nominalna długość klipu, sekundy</span>—</td><td data-cell-label=\"Rozdzielczość\"><span class=\"card-cell-label\">Rozdzielczość</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</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wyjście · Tokeny wyjściowe</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Odczyt cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Zapis do cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Zapis do cache, 1 godz.</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=\"Nominalna długość klipu, sekundy\"><span class=\"card-cell-label\">Nominalna długość klipu, sekundy</span>6</td><td data-cell-label=\"Rozdzielczość\"><span class=\"card-cell-label\">Rozdzielczość</span>1080P</td><td data-cell-label=\"Jednostka rozliczeniowa\"><span class=\"card-cell-label\">Jednostka rozliczeniowa</span>za klip wyjściowy o nominalnej długości 6s</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wyjście · nominalny klip wyjściowy o długości 6s</span> <b>$1.2</b> <span class=\"price-unit\">za klip wyjściowy o nominalnej długości 6s</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=\"Nominalna długość klipu, sekundy\"><span class=\"card-cell-label\">Nominalna długość klipu, sekundy</span>6</td><td data-cell-label=\"Rozdzielczość\"><span class=\"card-cell-label\">Rozdzielczość</span>768P</td><td data-cell-label=\"Jednostka rozliczeniowa\"><span class=\"card-cell-label\">Jednostka rozliczeniowa</span>za klip wyjściowy o nominalnej długości 6s</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wyjście · nominalny klip wyjściowy o długości 6s</span> <b>$0.6</b> <span class=\"price-unit\">za klip wyjściowy o nominalnej długości 6s</span></div></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><div data-declared-reference-pricing><h4>Szczegóły taryfy referencyjnej</h4><p class=\"note-s\">Referencyjne tabele modelu nie zmieniają wyboru metody, wyceny ani opłat. Naliczane opłaty korzystają ze stawek wybranej metody Ailoot.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>MiniMax-Hailuo-2.3</summary><h4>Ceny według konfiguracji</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguracja</th><th>Warunki rozliczania</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>MiniMax-Hailuo-2.3 · Domyślna konfiguracja</th><td data-cell-label=\"Warunki rozliczania\"><span class=\"card-cell-label\">Warunki rozliczania</span>Konfiguracja domyślna</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Wejście</span> <b>0,00 USD</b> <span class=\"price-unit\">za wywołanie</span></div><div><span>Wyjście · Wyjście</span> <b>0,60 USD</b> <span class=\"price-unit\">za wywołanie</span></div></td></tr></tbody></table></div></details><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>MiniMax-Hailuo-2.3</summary><h4>Ceny według konfiguracji</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguracja</th><th>Warunki rozliczania</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>MiniMax-Hailuo-2.3 · Domyślna konfiguracja</th><td data-cell-label=\"Warunki rozliczania\"><span class=\"card-cell-label\">Warunki rozliczania</span>Konfiguracja domyślna</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Wejście</span> <b>0,00 USD</b> <span class=\"price-unit\">za wywołanie</span></div><div><span>Wyjście · Wyjście</span> <b>1,20 USD</b> <span class=\"price-unit\">za wywołanie</span></div></td></tr></tbody></table></div></details><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>MiniMax-Hailuo-2.3</summary><h4>Ceny według konfiguracji</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguracja</th><th>Warunki rozliczania</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>MiniMax-Hailuo-2.3 · Konfiguracja domyślna</th><td data-cell-label=\"Warunki rozliczania\"><span class=\"card-cell-label\">Warunki rozliczania</span>Konfiguracja domyślna</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Wejście</span> <b>0,00 USD</b> <span class=\"price-unit\">za wywołanie</span></div><div><span>Wyjście · Wyjście</span> <b>1,20 USD</b> <span class=\"price-unit\">za wywołanie</span></div></td></tr></tbody></table></div></details></div></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-377-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-377-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-377-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-377-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · 1080P / 6 sekund</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-377-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-377-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;MiniMax-Hailuo-2.3&quot;, &quot;prompt&quot;: &quot;A cat in a spacesuit walking on the Moon&quot;, &quot;duration&quot;: 6, &quot;resolution&quot;: &quot;768P&quot;}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_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-377-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-377-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_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;MiniMax-Hailuo-2.3&quot;, &quot;prompt&quot;: &quot;A cat in a spacesuit walking on the Moon&quot;, &quot;duration&quot;: 6, &quot;resolution&quot;: &quot;1080P&quot;}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_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></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\">mp4</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><h5>Sprawdź status zadania</h5><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-378-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-378-panel-0\" aria-selected=\"true\" tabindex=\"0\">Pobierz status przez GET</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-378-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-378-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}&quot;\nexport AILOOT_OPERATION_ID\noperation_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_OPERATION_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/videos/$operation_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o status.json\npython3 - &lt;&lt;&#39;PY_STATUS&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nprint(json.dumps(r))\nif r.get(&quot;status&quot;)==&quot;completed&quot;:\n    for x in r.get(&quot;data&quot;,[]):print(x)\nPY_STATUS\n</code></pre></div></div></div><h5>Zapisz wszystkie ukończone zasoby</h5><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-379-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-379-panel-0\" aria-selected=\"true\" tabindex=\"0\">Pobierz wszystkie ukończone zasoby przez GET</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-379-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-379-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}&quot;\nexport AILOOT_STATUS_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[&quot;AILOOT_STATUS_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose the actual completed status file&quot;)\nr=json.loads(f.read_text())\nif r.get(&quot;status&quot;)!=&quot;completed&quot; or not isinstance(r.get(&quot;data&quot;),list) or not r[&quot;data&quot;]:raise SystemExit(&quot;Wait for a completed status with asset paths&quot;)\nurls=[]\nfor x in r[&quot;data&quot;]:\n    if not isinstance(x,str) or &quot;\\n&quot; in x or &quot;\\r&quot; in x:raise SystemExit(&quot;Invalid asset path&quot;)\n    u=urljoin(&quot;https://api.ailoot.ai&quot;,x)\n    z=urlsplit(u)\n    if z.scheme!=&quot;https&quot; or z.netloc!=&quot;api.ailoot.ai&quot; or z.username or z.password:raise SystemExit(&quot;Use the actual Ailoot asset paths from status&quot;)\n    urls.append(u)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; \\\n    -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o &quot;video-${index}.mp4&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div><details class=\"card-about\"><summary>Inne odczyty treści</summary><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-380-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-380-panel-0\" aria-selected=\"true\" tabindex=\"0\">Pobierz treść przez GET</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-380-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-380-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}&quot;\nexport AILOOT_OPERATION_ID\noperation_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_OPERATION_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/videos/$operation_id/content&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o video.mp4\n</code></pre></div></div></div></details><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\">Ukończone data[] zawiera wszystkie podpisane adresy URL treści należących do użytkownika. Pobierz każdy zwrócony URL lub użyj endpointu treści z index ustawionym na rzeczywisty indeks wyniku. Nieudane pierwotne zadanie może zwrócić charge_pending_check; sprawdź to pierwotne zadanie zamiast tworzyć je ponownie.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jeśli trzeba sprawdzić pierwotną odpowiedź</h5><p class=\"note-s\">Odczytuj istniejące pierwotne zadanie; nigdy nie ponawiaj wysłania o nieznanym wyniku.</p></div><p class=\"note-s\">Maksymalna liczba wyników: 1.</p><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\">object</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\">model</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</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>signed content URL</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">charge_pending_check</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>boolean</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">error.code</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\">error.message</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\">requested_nominal_duration_seconds</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">measured_duration_seconds</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>number</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer</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łowe wymagane pola, sposób reprezentacji materiału lub wartość parametru</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Popraw wskazane pola przed nowym żądaniem utworzenia.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Treść pierwotnego wyniku nie jest jeszcze dostępna</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Odpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span><code>server_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Zwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Zachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.</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=\"Core\"><b>Ailoot</b> <a href=\"#m=MiniMax-Hailuo-2.3&amp;route=Core&amp;caller=MiniMax-Hailuo-2.3&amp;fmt=videos\"><code>MiniMax-Hailuo-2.3</code></a></span><br><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=MiniMax-Hailuo-2.3&amp;route=Ultra&amp;caller=MiniMax-Hailuo-2.3&amp;fmt=videos\"><code>MiniMax-Hailuo-2.3</code></a></span></p><h4>Aliasy ścieżek metod</h4><p class=\"note-s\"><code>/v1/videos/generations</code>, <code>/videos</code>, <code>/videos/generations</code></p><h4>Powiązane ID modeli</h4><p class=\"note-s\"><a href=\"#m=MiniMax-Hailuo-2.3&amp;route=Core&amp;caller=MiniMax-Hailuo-2.3&amp;fmt=videos\"><code>MiniMax-Hailuo-2.3</code></a>, <a href=\"#m=MiniMax-Hailuo-2.3&amp;route=Ultra&amp;caller=MiniMax-Hailuo-2.3&amp;fmt=videos\"><code>MiniMax-Hailuo-2.3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "MiniMax-Hailuo-2.3",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "MiniMax-Hailuo-2.3",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|MiniMax-Hailuo-2.3",
      "ordinal": 1,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Completeddata[] contains all owned signedcontentURLs. FetcheachactualURL,orusecontent?index=actualindex. Failedoriginaljobs maycarrycharge_pending_check; do not recreate.",
            "errors": [
              {
                "code": null,
                "condition": "Nieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru",
                "http_status": 400,
                "recovery": "Popraw wskazane pola przed nowym żądaniem utworzenia.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Treść pierwotnego wyniku nie jest jeszcze dostępna",
                "http_status": 409,
                "recovery": "Odpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Zwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia",
                "http_status": null,
                "recovery": "Zachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "operation_id_is_not_task_id": true,
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Odczytuj istniejące pierwotne zadanie; nigdy nie ponawiaj wysłania o nieznanym wyniku.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "all_results": "Ukończone data[] zawiera wszystkie podpisane adresy URL treści należących do użytkownika. Pobierz każdy zwrócony URL lub użyj endpointu treści z index ustawionym na rzeczywisty indeks wyniku. Nieudane pierwotne zadanie może zwrócić charge_pending_check; sprawdź to pierwotne zadanie zamiast tworzyć je ponownie.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "signed content URL"
                },
                {
                  "description": null,
                  "name": "charge_pending_check",
                  "type": "boolean"
                },
                {
                  "description": null,
                  "name": "error.code",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "error.message",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "requested_nominal_duration_seconds",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "measured_duration_seconds",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "width",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "height",
                  "type": "integer"
                }
              ],
              "format": "mp4",
              "maximum_outputs": 1,
              "status_enum": [
                "in_progress",
                "completed",
                "failed"
              ]
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "MiniMax-Hailuo-2.3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Dla 768P: najwyżej 2000 punktów kodowych Unicode. Dla 1080P: mniej niż 200 punktów kodowych Unicode (maksymalnie 199). Prompt musi zawierać tekst inny niż białe znaki.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_bytes": null,
                "maximum_length": 2000,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string",
                "unit": "znaki Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  6
                ],
                "enum_known": true,
                "name": "duration",
                "required": true,
                "type": "integer",
                "unit": "sekundy"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "768P",
                  "1080P"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "request_schema": {
              "additionalProperties": false,
              "allOf": [
                {
                  "if": {
                    "properties": {
                      "resolution": {
                        "const": "1080P"
                      }
                    },
                    "required": [
                      "resolution"
                    ]
                  },
                  "then": {
                    "properties": {
                      "prompt": {
                        "maxLength": 199
                      }
                    }
                  }
                }
              ],
              "properties": {
                "duration": {
                  "enum": [
                    6
                  ],
                  "type": "integer"
                },
                "model": {
                  "enum": [
                    "MiniMax-Hailuo-2.3"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "description": "Non-whitespace UTF-8 text. Length counts Unicode code points; the 1080P conditional maximum is 199.",
                  "maxLength": 2000,
                  "minLength": 1,
                  "type": "string"
                },
                "resolution": {
                  "enum": [
                    "768P",
                    "1080P"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration",
                "resolution"
              ],
              "type": "object"
            },
            "unsupported": [
              "everyfieldoutsideexactrequiredprofile"
            ]
          },
          "hints": [
            "Utwórz raz i zapisz zwrócony identyfikator.",
            "Odpytuj pierwotny status; zachowaj każdy ukończony zasób i jego czas trwania."
          ],
          "input": {
            "content_type": "application/json",
            "duration": [
              6
            ],
            "material_types": [
              "text"
            ],
            "other_options": false,
            "prompt_max_characters": 2000,
            "prompt_max_characters_by_resolution": {
              "1080P": 199,
              "768P": 2000
            },
            "required": [
              "model",
              "prompt",
              "duration",
              "resolution"
            ],
            "resolution": [
              "768P",
              "1080P"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "id_source": "only actual ID/path from creation/status",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations",
            "/videos",
            "/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "count": 1,
            "family": "video",
            "format": "mp4",
            "result": "owned validated complete MP4"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "nominal_duration_seconds": 6,
              "quoted_unit": "per nominal 6s output clip",
              "resolution": "1080P"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "1.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "video_output_1080p_6s_clip",
                "label": "nominal 6s output clip",
                "native_amount_usd_per_unit": "1.2",
                "native_quantity": 1,
                "public_unit_label": "per nominal 6s output clip",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "nominal_6s_output_clip"
              }
            ]
          },
          {
            "dimensions": {
              "nominal_duration_seconds": 6,
              "quoted_unit": "per nominal 6s output clip",
              "resolution": "768P"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.6",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "video_output_768p_6s_clip",
                "label": "nominal 6s output clip",
                "native_amount_usd_per_unit": "0.6",
                "native_quantity": 1,
                "public_unit_label": "per nominal 6s output clip",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "nominal_6s_output_clip"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"MiniMax-Hailuo-2.3\", \"prompt\": \"A cat in a spacesuit walking on the Moon\", \"duration\": 6, \"resolution\": \"768P\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_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",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_OPERATION_ID\noperation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_OPERATION_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/videos/$operation_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o status.json\npython3 - <<'PY_STATUS'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"status.json\").read_text())\nprint(json.dumps(r))\nif r.get(\"status\")==\"completed\":\n    for x in r.get(\"data\",[]):print(x)\nPY_STATUS\n",
            "label": "GET status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_OPERATION_ID\noperation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_OPERATION_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/videos/$operation_id/content\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o video.mp4\n",
            "label": "GET content",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"MiniMax-Hailuo-2.3\", \"prompt\": \"A cat in a spacesuit walking on the Moon\", \"duration\": 6, \"resolution\": \"1080P\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_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 · 1080P / 6 seconds",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and save returned ID.",
          "Poll original status; retain every completed asset and duration."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations",
          "/videos",
          "/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": "video",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "video_output_1080p_6s_clip": 1.2,
            "video_output_768p_6s_clip": 0.6
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "nominal_duration_seconds": 6,
              "quoted_unit": "per nominal 6s output clip",
              "resolution": "1080P"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "1.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "video_output_1080p_6s_clip",
                "label": "nominal 6s output clip",
                "native_amount_usd_per_unit": "1.2",
                "native_quantity": 1,
                "public_unit_label": "per nominal 6s output clip",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "nominal_6s_output_clip"
              }
            ]
          },
          {
            "dimensions": {
              "nominal_duration_seconds": 6,
              "quoted_unit": "per nominal 6s output clip",
              "resolution": "768P"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.6",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "video_output_768p_6s_clip",
                "label": "nominal 6s output clip",
                "native_amount_usd_per_unit": "0.6",
                "native_quantity": 1,
                "public_unit_label": "per nominal 6s output clip",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "nominal_6s_output_clip"
              }
            ]
          }
        ],
        "request_model_id": "MiniMax-Hailuo-2.3",
        "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": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "1.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "video_output_1080p_6s_clip",
            "label": "nominal 6s output clip",
            "native_amount_usd_per_unit": "1.2",
            "native_quantity": 1,
            "public_unit_label": "per nominal 6s output clip",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "nominal_6s_output_clip"
          },
          {
            "amount": "0.6",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "video_output_768p_6s_clip",
            "label": "nominal 6s output clip",
            "native_amount_usd_per_unit": "0.6",
            "native_quantity": 1,
            "public_unit_label": "per nominal 6s output clip",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "nominal_6s_output_clip"
          }
        ]
      }
    }
  ],
  "model_id": "MiniMax-Hailuo-2.3",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "881792fff13599459984b65fac240a245612cb6e03a10ffa9e7a2459baf654f9",
    "input_html_sha256": "5ed3477750865db965775334efd62269da9aa8b59a12dd11176cb5a09db2b6c1",
    "private_audit_sha256": "46a9ff26e16f08d8d3ddf2cd14d1ab4ab45b32cdec195457a1c99693e26c5a89",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/pl/minimax-hailuo-2-3/",
    "description": "MiniMax Hailuo 2.3 tworzy filmy z tekstu lub obrazu początkowego, z możliwością sterowania ruchem i kierunkiem pracy kamery. Wybierz sześć sekund w 768P lub 1080P albo dziesięć sekund w 768P do gry postaci, stylizowanych scen i ujęć produktów, które można ocenić i zmontować.",
    "locale": "pl",
    "md_url": "https://ailoot.ai/models/pl/minimax-hailuo-2-3/index.md",
    "title": "MiniMax-Hailuo-2.3 — Ailoot",
    "url": "https://ailoot.ai/models/pl/minimax-hailuo-2-3/"
  },
  "rawModel": {
    "about": "MiniMax Hailuo 2.3 to model generowania wideo z trybami tworzenia z tekstu i z obrazu. Rozwija Hailuo 02, koncentrując się na działaniach fizycznych, stylu wizualnym, mikroekspresjach postaci i reagowaniu na instrukcje ruchu. Dostarcz opis sceny, aby utworzyć ujęcie od zera, albo użyj obrazu początkowego do ustalenia pierwszego widoku i opisz dalszy ruch.\n\nRuch ciała jest jednym z głównych obszarów ulepszeń tej wersji. Hailuo 2.3 ma zapewniać większą płynność i kontrolę ruchów, również w scenach z poruszającą się kamerą. Zaplanuj ważną akcję przed dodaniem ozdobnych szczegółów. Postać podnosząca przedmiot, odwracająca się do drugiej osoby lub przechodząca przez pokój daje ujęciu widoczne zdarzenie do oceny. Ustal, który ruch niesie opowieść, a następnie utrzymuj pozostałe instrukcje w zgodzie z nim.\n\nKolejnym obszarem jest stylizacja. Model obsługuje anime i ilustrację, a także style takie jak malarstwo tuszem i grafika komputerowa z gier. Opisz oczekiwany sposób przedstawienia i zachowaj spójność wyglądu ze sceną. Jeśli obraz początkowy już ustala styl rysunku, użyj tekstu do pokierowania animacją, zamiast wprowadzać konkurencyjny opis projektu postaci. Sprawdź w całym klipie, czy styl pozostaje czytelny podczas ruchu.\n\nModel koncentruje się również na grze mimicznej i subtelnych zmianach wyrazu twarzy. Przygotuj ujęcie postaci wokół ważnej reakcji: dostrzeżenia przedmiotu, zaciekawienia lub odpowiedzi lekkim uśmiechem. Zbliżenie może ułatwić ocenę tej zmiany, podczas gdy rozbudowana sekwencja gestów może od niej odciągać uwagę. Sprawdź twarz przed reakcją, w jej trakcie i po niej, zamiast oceniać tylko reprezentatywną nieruchomą klatkę.\n\nRuch przedmiotu przydaje się w scenach skupionych na produkcie. Własny opis może przedstawiać mały ceramiczny wazon obracający się w ciepłym bocznym świetle, gdy kamera stopniowo się do niego zbliża. Wskaż właściwości, które muszą pozostać rozpoznawalne, takie jak sylwetka, brzeg i wykończenie powierzchni. Oceń te szczegóły w ruchu, ponieważ sama przekonująca atmosfera nie potwierdza wiernego przedstawienia produktu.\n\nW trybie tekstowym wymagany opis może zawierać do 2000 znaków. Podaj temat, akcję, otoczenie i styl wizualny w spójnej kolejności. Generowanie z obrazu wymaga obrazu klatki początkowej, z opcjonalnym opisem do 2000 znaków. Obraz ustala kompozycję otwarcia, dlatego przygotuj temat i kadr przed zleceniem ruchu. Pozostaw widoczną przestrzeń tam, gdzie ma poruszać się ręka, przedmiot lub postać.\n\nObraz początkowy może mieć format JPG, JPEG, PNG lub WebP, musi zajmować mniej niż 20 MB, mieć krótszy bok większy niż 300 pikseli oraz proporcje od 2:5 do 5:2. Można go dostarczyć jako publiczny adres URL obrazu lub adres danych Base64. Wybierz czytelny obraz początkowy, zamiast liczyć, że animacja naprawi zasłoniętą twarz lub akcję już uciętą przez kadr.\n\nHailuo 2.3 generuje przy 24 klatkach na sekundę. Sześciosekundowe ujęcie może korzystać z 768P lub 1080P, a dziesięciosekundowe — z 768P. Domyślne wartości to sześć sekund i 768P. Wybierz długość odpowiednią do oczekiwanej akcji: krótka reakcja może zmieścić się w krótkim ujęciu, a wolniejszy ruch potrzebuje więcej miejsca. Przy umieszczaniu klipu w montażu odczytaj rzeczywistą szerokość i wysokość gotowego wyniku, ponieważ sama etykieta rozdzielczości nie określa całego kadru.\n\nPracą kamery można sterować poleceniami w nawiasach kwadratowych. Dostępne elementy sterowania obejmują jazdę boczną, panoramowanie, najazd, ruch pionowy, pochylenie, zoom, drgania, śledzenie i ujęcie statyczne. Polecenie takie jak [Push in] określa zbliżenie; polecenia zgrupowane w jednym nawiasie działają jednocześnie, a ułożone po kolei opisują sekwencję. MiniMax zaleca najwyżej trzy polecenia równocześnie. Dopasuj ruch kamery do akcji obiektu lub postaci, aby główne zdarzenie pozostało łatwe do śledzenia.\n\nAutomatyczna optymalizacja promptu jest domyślnie włączona i można ją wyłączyć dla ściślejszej kontroli nad dostarczonym sformułowaniem. Opcjonalne szybkie przetwarzanie wstępne skraca czas optymalizacji, gdy jest ona włączona; to osobne ustawienie względem wyboru modelu Hailuo 2.3 Fast. Standardowy Hailuo 2.3 obsługuje oba tryby tworzenia, a Fast jest odrębną wersją do generowania wideo z obrazu. Wybierz wersję zależnie od tego, czy projekt zaczyna się od samego tekstu, czy istniejącej klatki.\n\nProces generowania zwraca asynchroniczny identyfikator zadania, a następnie zgłasza przygotowanie, oczekiwanie w kolejce, przetwarzanie, sukces lub błąd. Po sukcesie wynik zawiera identyfikator pliku i rzeczywiste wymiary filmu, a gotowe wideo pobiera się do zapisania. Zapisz klip, dopóki jego adres pobierania jest ważny. Obecna dokumentacja pobierania wideo producenta podaje godzinny czas ważności zwróconego adresu URL. Do montowanej sekwencji zachowaj każde ujęcie wraz z promptem i obrazem początkowym, aby wybrany kierunek twórczy można było prześledzić podczas poprawek.\n\nOceń w zapisanym klipie akcję, ciągłość fizyczną, szczegóły twarzy lub produktu, styl wizualny i zachowanie kamery. Obejrzyj całe ujęcie, a następnie sprawdź początek i koniec w miejscach łączenia z innymi materiałami. Jeśli żądanie zawiera zbyt wiele konkurujących ruchów, uprość główną akcję; jeśli projekt początkowy jest niejasny, popraw obraz startowy. Wybierz ujęcie przekazujące zamierzone zdarzenie, a następnie dodaj narrację, tytuły i przejścia w procesie montażu.",
    "alias_of": null,
    "aliases": [],
    "author": "MiniMax",
    "available": null,
    "canonical_model": "MiniMax-Hailuo-2.3",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [],
      "manufacturer_output": []
    },
    "card_routes": [
      {
        "label": "Core",
        "rates": [
          {
            "key": "video_output_768p_6s_clip",
            "label": "per 6 s video at 768p",
            "side": "out",
            "usd": 0.28
          }
        ],
        "summary": "Pełny cennik konfiguracji w szczegółach."
      },
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "1.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "video_output_1080p_6s_clip",
            "label": "nominal 6s output clip",
            "native_amount_usd_per_unit": "1.2",
            "native_quantity": 1,
            "public_unit_label": "per nominal 6s output clip",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "nominal_6s_output_clip"
          },
          {
            "amount": "0.6",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "video_output_768p_6s_clip",
            "label": "nominal 6s output clip",
            "native_amount_usd_per_unit": "0.6",
            "native_quantity": 1,
            "public_unit_label": "per nominal 6s output clip",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "nominal_6s_output_clip"
          }
        ],
        "summary": "Pełny cennik konfiguracji w szczegółach."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "fbaf58dadd2536629a45",
        "label": "MiniMax-Hailuo-2.3",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "Konfiguracja domyślna"
            },
            "label": "MiniMax-Hailuo-2.3 · Domyślna konfiguracja",
            "units": [
              {
                "amount": "0.0",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "19ab01e12c389ee949ca7020",
                "label": "Input",
                "public_unit_label": "per call",
                "quantity": 1,
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "次"
              },
              {
                "amount": "0.6",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "773fea089d2ce55d46c2a7b1",
                "label": "Output",
                "public_unit_label": "per call",
                "quantity": 1,
                "rate_role": "declared_tariff_rate",
                "side": "out",
                "unit": "次"
              }
            ]
          }
        ]
      },
      {
        "client_selectable": false,
        "key": "09daf355a38c30492684",
        "label": "MiniMax-Hailuo-2.3",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "Konfiguracja domyślna"
            },
            "label": "MiniMax-Hailuo-2.3 · Domyślna konfiguracja",
            "units": [
              {
                "amount": "0.0",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "daa8a5932b5bcaac702117f1",
                "label": "Input",
                "public_unit_label": "per call",
                "quantity": 1,
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "次"
              },
              {
                "amount": "1.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "3fd346a74d57c55dc3f1d22b",
                "label": "Output",
                "public_unit_label": "per call",
                "quantity": 1,
                "rate_role": "declared_tariff_rate",
                "side": "out",
                "unit": "次"
              }
            ]
          }
        ]
      },
      {
        "client_selectable": false,
        "key": "bf657018f1f319cdd9bf",
        "label": "MiniMax-Hailuo-2.3",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "Default configuration"
            },
            "label": "MiniMax-Hailuo-2.3 · Default configuration",
            "units": [
              {
                "amount": "0.0",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "9d0b136d74c27e74edf7a782",
                "label": "Input",
                "public_unit_label": "per call",
                "quantity": 1,
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "次"
              },
              {
                "amount": "1.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "219fbf3c287f8104ea30a466",
                "label": "Output",
                "public_unit_label": "per call",
                "quantity": 1,
                "rate_role": "declared_tariff_rate",
                "side": "out",
                "unit": "次"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "MiniMax-Hailuo-2.3",
    "input": [
      "text",
      "image"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Preserve every returned data item/output index. content_url is first only; fetch every actual content path/asset. GETcontentwithoutindex isnotalloutputs.",
            "errors": [
              {
                "code": null,
                "condition": "Nieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru",
                "http_status": 400,
                "recovery": "Popraw wskazane pola przed nowym żądaniem utworzenia.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Treść pierwotnego wyniku nie jest jeszcze dostępna",
                "http_status": 409,
                "recovery": "Odpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Zwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia",
                "http_status": null,
                "recovery": "Zachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos/generations"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "operation_id_is_not_task_id": true,
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Odczytuj istniejące pierwotne zadanie; nigdy nie ponawiaj wysłania o nieznanym wyniku.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "mode": "image_to_video",
                "required": [
                  "prompt",
                  "first_frame_image"
                ]
              },
              {
                "available": true,
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "videos"
            ],
            "outputs": {
              "all_results": "Zachowaj każdy zwrócony element data i indeks wyniku. content_url wskazuje tylko pierwszy; pobierz każdą rzeczywistą ścieżkę treści i zasób. GET treści bez index nie obejmuje wszystkich wyników.",
              "content_selection": "Oneownedvideo; use actualreturnedcontent_url/data[] ororiginalcontentread. No indexedselection field is promised by thisCorehandler.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "content_url",
                  "type": "signed URL"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "signed URL"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "result_pending_check",
                  "type": "boolean"
                }
              ],
              "format": "mp4"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "MiniMax-Hailuo-2.3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length": 2000,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string",
                "unit": "znaki Unicode"
              },
              {
                "availability": "source_interface",
                "conditions": "10 sekund wymaga 768P",
                "default": 6,
                "default_known": true,
                "enum": [
                  6,
                  10
                ],
                "enum_known": true,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "sekundy"
              },
              {
                "availability": "source_interface",
                "conditions": "1080P wymaga 6 sekund",
                "default": "768P",
                "default_known": true,
                "enum": [
                  "768P",
                  "1080P"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "aspect_ratio_range": [
                  "2:5",
                  "5:2"
                ],
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_decoded_bytes": 20971520,
                "mime_types": [
                  "image/jpeg",
                  "image/png",
                  "image/webp"
                ],
                "minimum_dimension_exclusive": 300,
                "name": "first_frame_image",
                "required": false,
                "type": "https_url|data_image_url"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_optimizer",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "fast_pretreatment",
                "required": false,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Struktury metod i ID są dokładne; możliwości dostawcy są odrębne od dopuszczenia żądania."
          ],
          "input": {
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "id_source": "only actual ID/path from creation/status",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos/generations"
          },
          "operation_modes": [
            "videos"
          ],
          "output": {
            "family": [
              "video"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl https://api.ailoot.ai/v1/videos/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"MiniMax-Hailuo-2.3\", \"prompt\": \"A person walks slowly through a quiet garden as the camera tracks from the side.\", \"duration\": 6, \"resolution\": \"768P\"}'",
            "label": "Create video · retained exact shape",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\"",
            "label": "GET status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id/content\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --output video.mp4",
            "label": "GET content",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Wideo",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos/generations",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.28,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_768p_6s_clip",
                "label": "per 6 s video at 768p",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "MiniMax-Hailuo-2.3",
        "route_label": "Core",
        "status_reads": [
          "GET /v1/videos/generations/{id}",
          "GET /v1/videos/generations/{id}/content"
        ],
        "tiers": [],
        "tool_prices": null,
        "unit": "video_output_768p_6s_clip",
        "units": [
          {
            "key": "video_output_768p_6s_clip",
            "label": "per 6 s video at 768p",
            "side": "out",
            "usd": 0.28
          }
        ]
      },
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Completeddata[] contains all owned signedcontentURLs. FetcheachactualURL,orusecontent?index=actualindex. Failedoriginaljobs maycarrycharge_pending_check; do not recreate.",
            "errors": [
              {
                "code": null,
                "condition": "Nieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru",
                "http_status": 400,
                "recovery": "Popraw wskazane pola przed nowym żądaniem utworzenia.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Treść pierwotnego wyniku nie jest jeszcze dostępna",
                "http_status": 409,
                "recovery": "Odpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Zwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia",
                "http_status": null,
                "recovery": "Zachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "operation_id_is_not_task_id": true,
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Odczytuj istniejące pierwotne zadanie; nigdy nie ponawiaj wysłania o nieznanym wyniku.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "all_results": "Ukończone data[] zawiera wszystkie podpisane adresy URL treści należących do użytkownika. Pobierz każdy zwrócony URL lub użyj endpointu treści z index ustawionym na rzeczywisty indeks wyniku. Nieudane pierwotne zadanie może zwrócić charge_pending_check; sprawdź to pierwotne zadanie zamiast tworzyć je ponownie.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "signed content URL"
                },
                {
                  "description": null,
                  "name": "charge_pending_check",
                  "type": "boolean"
                },
                {
                  "description": null,
                  "name": "error.code",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "error.message",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "requested_nominal_duration_seconds",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "measured_duration_seconds",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "width",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "height",
                  "type": "integer"
                }
              ],
              "format": "mp4",
              "maximum_outputs": 1,
              "status_enum": [
                "in_progress",
                "completed",
                "failed"
              ]
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "MiniMax-Hailuo-2.3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Dla 768P: najwyżej 2000 punktów kodowych Unicode. Dla 1080P: mniej niż 200 punktów kodowych Unicode (maksymalnie 199). Prompt musi zawierać tekst inny niż białe znaki.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_bytes": null,
                "maximum_length": 2000,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string",
                "unit": "znaki Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  6
                ],
                "enum_known": true,
                "name": "duration",
                "required": true,
                "type": "integer",
                "unit": "sekundy"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "768P",
                  "1080P"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "request_schema": {
              "additionalProperties": false,
              "allOf": [
                {
                  "if": {
                    "properties": {
                      "resolution": {
                        "const": "1080P"
                      }
                    },
                    "required": [
                      "resolution"
                    ]
                  },
                  "then": {
                    "properties": {
                      "prompt": {
                        "maxLength": 199
                      }
                    }
                  }
                }
              ],
              "properties": {
                "duration": {
                  "enum": [
                    6
                  ],
                  "type": "integer"
                },
                "model": {
                  "enum": [
                    "MiniMax-Hailuo-2.3"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "description": "Non-whitespace UTF-8 text. Length counts Unicode code points; the 1080P conditional maximum is 199.",
                  "maxLength": 2000,
                  "minLength": 1,
                  "type": "string"
                },
                "resolution": {
                  "enum": [
                    "768P",
                    "1080P"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration",
                "resolution"
              ],
              "type": "object"
            },
            "unsupported": [
              "everyfieldoutsideexactrequiredprofile"
            ]
          },
          "hints": [
            "Utwórz raz i zapisz zwrócony identyfikator.",
            "Odpytuj pierwotny status; zachowaj każdy ukończony zasób i jego czas trwania."
          ],
          "input": {
            "content_type": "application/json",
            "duration": [
              6
            ],
            "material_types": [
              "text"
            ],
            "other_options": false,
            "prompt_max_characters": 2000,
            "prompt_max_characters_by_resolution": {
              "1080P": 199,
              "768P": 2000
            },
            "required": [
              "model",
              "prompt",
              "duration",
              "resolution"
            ],
            "resolution": [
              "768P",
              "1080P"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "id_source": "only actual ID/path from creation/status",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations",
            "/videos",
            "/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "count": 1,
            "family": "video",
            "format": "mp4",
            "result": "owned validated complete MP4"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "nominal_duration_seconds": 6,
              "quoted_unit": "per nominal 6s output clip",
              "resolution": "1080P"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "1.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "video_output_1080p_6s_clip",
                "label": "nominal 6s output clip",
                "native_amount_usd_per_unit": "1.2",
                "native_quantity": 1,
                "public_unit_label": "per nominal 6s output clip",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "nominal_6s_output_clip"
              }
            ]
          },
          {
            "dimensions": {
              "nominal_duration_seconds": 6,
              "quoted_unit": "per nominal 6s output clip",
              "resolution": "768P"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.6",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "video_output_768p_6s_clip",
                "label": "nominal 6s output clip",
                "native_amount_usd_per_unit": "0.6",
                "native_quantity": 1,
                "public_unit_label": "per nominal 6s output clip",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "nominal_6s_output_clip"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"MiniMax-Hailuo-2.3\", \"prompt\": \"A cat in a spacesuit walking on the Moon\", \"duration\": 6, \"resolution\": \"768P\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_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",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_OPERATION_ID\noperation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_OPERATION_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/videos/$operation_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o status.json\npython3 - <<'PY_STATUS'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"status.json\").read_text())\nprint(json.dumps(r))\nif r.get(\"status\")==\"completed\":\n    for x in r.get(\"data\",[]):print(x)\nPY_STATUS\n",
            "label": "GET status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_OPERATION_ID\noperation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_OPERATION_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/videos/$operation_id/content\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o video.mp4\n",
            "label": "GET content",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"MiniMax-Hailuo-2.3\", \"prompt\": \"A cat in a spacesuit walking on the Moon\", \"duration\": 6, \"resolution\": \"1080P\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_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 · 1080P / 6 seconds",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and save returned ID.",
          "Poll original status; retain every completed asset and duration."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations",
          "/videos",
          "/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": "video",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "video_output_1080p_6s_clip": 1.2,
            "video_output_768p_6s_clip": 0.6
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "nominal_duration_seconds": 6,
              "quoted_unit": "per nominal 6s output clip",
              "resolution": "1080P"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "1.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "video_output_1080p_6s_clip",
                "label": "nominal 6s output clip",
                "native_amount_usd_per_unit": "1.2",
                "native_quantity": 1,
                "public_unit_label": "per nominal 6s output clip",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "nominal_6s_output_clip"
              }
            ]
          },
          {
            "dimensions": {
              "nominal_duration_seconds": 6,
              "quoted_unit": "per nominal 6s output clip",
              "resolution": "768P"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.6",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "video_output_768p_6s_clip",
                "label": "nominal 6s output clip",
                "native_amount_usd_per_unit": "0.6",
                "native_quantity": 1,
                "public_unit_label": "per nominal 6s output clip",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "nominal_6s_output_clip"
              }
            ]
          }
        ],
        "request_model_id": "MiniMax-Hailuo-2.3",
        "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": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "1.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "video_output_1080p_6s_clip",
            "label": "nominal 6s output clip",
            "native_amount_usd_per_unit": "1.2",
            "native_quantity": 1,
            "public_unit_label": "per nominal 6s output clip",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "nominal_6s_output_clip"
          },
          {
            "amount": "0.6",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "video_output_768p_6s_clip",
            "label": "nominal 6s output clip",
            "native_amount_usd_per_unit": "0.6",
            "native_quantity": 1,
            "public_unit_label": "per nominal 6s output clip",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "nominal_6s_output_clip"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "MiniMax-Hailuo-2.3",
        "request_model_id": "MiniMax-Hailuo-2.3",
        "route_label": "Core"
      },
      {
        "canonical_model_id": "MiniMax-Hailuo-2.3",
        "request_model_id": "MiniMax-Hailuo-2.3",
        "route_label": "Ultra"
      }
    ],
    "name": "MiniMax-Hailuo-2.3",
    "price": {
      "in": null,
      "in_label": null,
      "out": 1.2,
      "out_label": "per nominal 6s output clip",
      "sort_in": null,
      "sort_out": 1.2,
      "varies": true
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "basis": "Source-only tariff reference.",
        "dimensions": {
          "conditions": [
            "Image-to-video and text-to-video: 768P, 6S"
          ]
        },
        "label": "Ailoot Ultra · MiniMax-Hailuo-2.3 · Image-to-video and text-to-video: 768P, 6S",
        "units": [
          {
            "amount": "0.0",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_original_amount": "0.0",
            "billing_original_published_unit": "次",
            "billing_original_quantity": "1",
            "billing_original_unit": "call",
            "key": "input",
            "label": "input call",
            "native_amount_usd_per_unit": "0.0",
            "native_quantity": 1,
            "quantity": 1,
            "side": "in",
            "unit": "call"
          },
          {
            "amount": "0.6",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_original_amount": "0.6",
            "billing_original_published_unit": "次",
            "billing_original_quantity": "1",
            "billing_original_unit": "call",
            "key": "output",
            "label": "output call",
            "native_amount_usd_per_unit": "0.6",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "call"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "basis": "Source-only tariff reference.",
        "dimensions": {
          "conditions": [
            "Image-to-video and text-to-video: 768P, 10S"
          ]
        },
        "label": "Ailoot Ultra · MiniMax-Hailuo-2.3 · Image-to-video and text-to-video: 768P, 10S",
        "units": [
          {
            "amount": "0.0",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_original_amount": "0.0",
            "billing_original_published_unit": "次",
            "billing_original_quantity": "1",
            "billing_original_unit": "call",
            "key": "input",
            "label": "input call",
            "native_amount_usd_per_unit": "0.0",
            "native_quantity": 1,
            "quantity": 1,
            "side": "in",
            "unit": "call"
          },
          {
            "amount": "1.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_original_amount": "1.2",
            "billing_original_published_unit": "次",
            "billing_original_quantity": "1",
            "billing_original_unit": "call",
            "key": "output",
            "label": "output call",
            "native_amount_usd_per_unit": "1.2",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "call"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "basis": "Source-only tariff reference.",
        "dimensions": {
          "conditions": [
            "Image-to-video and text-to-video: 1080P, 6S"
          ]
        },
        "label": "Ailoot Ultra · MiniMax-Hailuo-2.3 · Image-to-video and text-to-video: 1080P, 6S",
        "units": [
          {
            "amount": "0.0",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_original_amount": "0.0",
            "billing_original_published_unit": "次",
            "billing_original_quantity": "1",
            "billing_original_unit": "call",
            "key": "input",
            "label": "input call",
            "native_amount_usd_per_unit": "0.0",
            "native_quantity": 1,
            "quantity": 1,
            "side": "in",
            "unit": "call"
          },
          {
            "amount": "1.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_original_amount": "1.2",
            "billing_original_published_unit": "次",
            "billing_original_quantity": "1",
            "billing_original_unit": "call",
            "key": "output",
            "label": "output call",
            "native_amount_usd_per_unit": "1.2",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "call"
          }
        ]
      }
    ],
    "public_id": "MiniMax-Hailuo-2.3",
    "short": "MiniMax Hailuo 2.3 tworzy filmy z tekstu lub obrazu początkowego, z możliwością sterowania ruchem i kierunkiem pracy kamery. Wybierz sześć sekund w 768P lub 1080P albo dziesięć sekund w 768P do gry postaci, stylizowanych scen i ujęć produktów, które można ocenić i zmontować."
  },
  "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
        },
        {
          "contract_json_pointer": "/methods/1/rawMethod/contract",
          "html_json_pointer": "/methods/1/html",
          "method_ordinal": 1
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod",
        "/methods/1/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "MiniMax Hailuo 2.3 tworzy filmy z tekstu lub obrazu początkowego, z możliwością sterowania ruchem i kierunkiem pracy kamery. Wybierz sześć sekund w 768P lub 1080P albo dziesięć sekund w 768P do gry postaci, stylizowanych scen i ujęć produktów, które można ocenić i zmontować.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "d11b408bfcc00abf7b1a78daf454d7bc9956b76706e57715f31c6eb9a3698240",
    "renderer_sha256": "1217dcf19a93e99ac1d6fd7bf974dc19adc12fea4bd4470c2601f04e48f688cb"
  },
  "sourceRevision": "a8e8af5fb59938d6b7fea47bcb04d3c2837f67bfd822b8d20d9ba47ad4495ae5"
}
