{
  "aboutHtml": "<p>Gemini 3.8 Flash to model Google z wyjściem tekstowym do długotrwałej pracy nad oprogramowaniem, wieloetapowych zadań agentowych i złożonych przepływów pracy opartych na wiedzy. Rozwija Gemini 3.7 Flash, usprawniając inżynierię oprogramowania i pracę agentów z wiedzą. Przyjmuje tekst, obrazy, audio, wideo i PDF, dzięki czemu zadanie może łączyć pisemny cel z rzeczywistym materiałem potrzebnym do jego rozwiązania. Przydatny wynik to zmiana kodu, analiza z wyjaśnieniem, pisemna odpowiedź lub rekord strukturalny.</p><p>W zleceniu programistycznym podaj wymaganie, odpowiednie pliki, zaobserwowane zachowanie i ograniczenia do zachowania. Zrzut ekranu może określać zamierzony interfejs, a logi lub przykład odtwarzający problem pokazywać awarię. W zadaniu debugowania poproś model o prześledzenie niezgodności między widocznym stanem formularza a jego zapisaną wartością, wskazanie odpowiedzialnej ścieżki kodu i zaproponowanie konkretnej poprawki. Zachowuj jasny zamierzony rezultat końcowy, aby dłuższa sekwencja badania i użycia narzędzi nadal miała konkretny warunek ukończenia.</p><p>Przy dłuższej pracy stosuj mniejsze kroki rozumowania, iteracyjne wywołania narzędzi i kontrole wyników pośrednich. Poziomy myślenia low, medium i high sterują ilością rozumowania; udokumentowane ustawienie domyślne to medium. Low pasuje do szybkiego szkicu lub analizy o ograniczonym zakresie, a high jest przeznaczone do trudnej matematyki, programowania lub zadań wieloetapowych. Gemini 3.8 Flash nie obsługuje poziomu myślenia minimal. Długotrwałe zlecenie debugowania i prosta ekstrakcja pól wymagają więc różnych wyborów rozumowania, zamiast tego samego ustawienia dla każdego żądania.</p><p>Udokumentowane narzędzia obejmują wywoływanie funkcji, wykonywanie kodu, wyszukiwanie plików, ugruntowanie przez wyszukiwanie, ugruntowanie Google Maps i kontekst URL, a Computer Use wymieniono jako możliwość w wersji preview. Structured outputs określają wynik czytelny maszynowo. Funkcje powinny mieć jasny cel i definicję parametrów: model może zażądać funkcji, a połączona aplikacja wykonuje operację i zwraca jej wynik. Zachowuj tożsamości funkcji i rzeczywiście zwrócone materiały między turami. Przydatna odpowiedź końcowa wyjaśnia, jakie dowody wspierają proponowaną poprawkę lub wyodrębnioną wartość.</p><p>Przewodnik migracji 3.8 stosuje sterowanie poziomami myślenia zamiast starszej konfiguracji budżetu rozumowania i zaleca usunięcie przestarzałych parametrów próbkowania oraz wstępnie wypełnionych tur modelu. Wymaga też zachowywania sygnatur myśli w odpowiednim bezstanowym przepływie pracy i dopasowywania odpowiedzi funkcji do ich wywołań według tożsamości i nazwy. Te szczegóły mają znaczenie przy kontynuowaniu zadania wieloetapowego: następna tura potrzebuje rzeczywistego wcześniejszego kontekstu zamiast przeredagowanego opisu, który gubi wynik narzędzia lub sygnaturę. W nowej turze użytkownika jawnie określ pytanie i żądane wyjście.</p><p>W multimodalnej pracy z wiedzą wskaż odpowiednie strony dokumentu, wykres, przedział audio lub zdarzenie wideo i określ, jak mają przyczynić się do odpowiedzi. Porównanie dokumentów może wymagać tabeli różnic z fragmentami źródłowymi; pytanie o wykres może wymagać widocznych wartości i wniosku, który wspierają. Analiza wideo może wymagać opisu zdarzeń uzasadniających ustalenie. Model zwraca tekst na podstawie tych danych wejściowych. Generowane obrazy, mowa i interakcja dźwiękowa Live należą do osobnych profili modeli.</p><p>Limity Gemini API wynoszą 1,048,576 tokenów wejściowych i 65,536 tokenów wyjściowych, co odpowiada natywnemu kontekstowi modelu do 1M i wyjściu tekstowemu 64K. Instrukcje, historia rozmowy i dostarczone media zużywają kontekst wejściowy, a rozumowanie lub długi rezultat końcowy muszą zmieścić się w udokumentowanym limicie wyjścia. Google wymienia również buforowanie, przetwarzanie wsadowe oraz przetwarzanie Flex i Priority dla tego profilu producenta. Dla niezależnych pozycji zachowuj stały identyfikator pozycji i jawny format wyjścia, aby każdy wynik pozostał powiązany ze źródłem.</p><p>Możliwe ograniczenia obejmują halucynacje, sporadyczne spowolnienia lub przekroczenia czasu oraz większe zużycie tokenów przy wyższym wysiłku. Data graniczna wiedzy to marzec 2026, przy czym niektóre dziedziny nadal są ograniczone do stycznia 2025. Dostarcz aktualne dowody lub użyj udokumentowanych narzędzi ugruntowania, gdy zadanie zależy od późniejszych informacji. Sprawdzaj cytowania źródeł, obliczenia i proponowany kod względem rzeczywistych danych wejściowych i wyników wykonania. Przydatny rezultat końcowy powinien odróżniać poparte ustalenie od nierozstrzygniętego pytania, bez założenia, że płynna odpowiedź potwierdza żądany wynik.</p>",
  "aboutText": "Gemini 3.8 Flash to model Google z wyjściem tekstowym do długotrwałej pracy nad oprogramowaniem, wieloetapowych zadań agentowych i złożonych przepływów pracy opartych na wiedzy. Rozwija Gemini 3.7 Flash, usprawniając inżynierię oprogramowania i pracę agentów z wiedzą. Przyjmuje tekst, obrazy, audio, wideo i PDF, dzięki czemu zadanie może łączyć pisemny cel z rzeczywistym materiałem potrzebnym do jego rozwiązania. Przydatny wynik to zmiana kodu, analiza z wyjaśnieniem, pisemna odpowiedź lub rekord strukturalny.\n\nW zleceniu programistycznym podaj wymaganie, odpowiednie pliki, zaobserwowane zachowanie i ograniczenia do zachowania. Zrzut ekranu może określać zamierzony interfejs, a logi lub przykład odtwarzający problem pokazywać awarię. W zadaniu debugowania poproś model o prześledzenie niezgodności między widocznym stanem formularza a jego zapisaną wartością, wskazanie odpowiedzialnej ścieżki kodu i zaproponowanie konkretnej poprawki. Zachowuj jasny zamierzony rezultat końcowy, aby dłuższa sekwencja badania i użycia narzędzi nadal miała konkretny warunek ukończenia.\n\nPrzy dłuższej pracy stosuj mniejsze kroki rozumowania, iteracyjne wywołania narzędzi i kontrole wyników pośrednich. Poziomy myślenia low, medium i high sterują ilością rozumowania; udokumentowane ustawienie domyślne to medium. Low pasuje do szybkiego szkicu lub analizy o ograniczonym zakresie, a high jest przeznaczone do trudnej matematyki, programowania lub zadań wieloetapowych. Gemini 3.8 Flash nie obsługuje poziomu myślenia minimal. Długotrwałe zlecenie debugowania i prosta ekstrakcja pól wymagają więc różnych wyborów rozumowania, zamiast tego samego ustawienia dla każdego żądania.\n\nUdokumentowane narzędzia obejmują wywoływanie funkcji, wykonywanie kodu, wyszukiwanie plików, ugruntowanie przez wyszukiwanie, ugruntowanie Google Maps i kontekst URL, a Computer Use wymieniono jako możliwość w wersji preview. Structured outputs określają wynik czytelny maszynowo. Funkcje powinny mieć jasny cel i definicję parametrów: model może zażądać funkcji, a połączona aplikacja wykonuje operację i zwraca jej wynik. Zachowuj tożsamości funkcji i rzeczywiście zwrócone materiały między turami. Przydatna odpowiedź końcowa wyjaśnia, jakie dowody wspierają proponowaną poprawkę lub wyodrębnioną wartość.\n\nPrzewodnik migracji 3.8 stosuje sterowanie poziomami myślenia zamiast starszej konfiguracji budżetu rozumowania i zaleca usunięcie przestarzałych parametrów próbkowania oraz wstępnie wypełnionych tur modelu. Wymaga też zachowywania sygnatur myśli w odpowiednim bezstanowym przepływie pracy i dopasowywania odpowiedzi funkcji do ich wywołań według tożsamości i nazwy. Te szczegóły mają znaczenie przy kontynuowaniu zadania wieloetapowego: następna tura potrzebuje rzeczywistego wcześniejszego kontekstu zamiast przeredagowanego opisu, który gubi wynik narzędzia lub sygnaturę. W nowej turze użytkownika jawnie określ pytanie i żądane wyjście.\n\nW multimodalnej pracy z wiedzą wskaż odpowiednie strony dokumentu, wykres, przedział audio lub zdarzenie wideo i określ, jak mają przyczynić się do odpowiedzi. Porównanie dokumentów może wymagać tabeli różnic z fragmentami źródłowymi; pytanie o wykres może wymagać widocznych wartości i wniosku, który wspierają. Analiza wideo może wymagać opisu zdarzeń uzasadniających ustalenie. Model zwraca tekst na podstawie tych danych wejściowych. Generowane obrazy, mowa i interakcja dźwiękowa Live należą do osobnych profili modeli.\n\nLimity Gemini API wynoszą 1,048,576 tokenów wejściowych i 65,536 tokenów wyjściowych, co odpowiada natywnemu kontekstowi modelu do 1M i wyjściu tekstowemu 64K. Instrukcje, historia rozmowy i dostarczone media zużywają kontekst wejściowy, a rozumowanie lub długi rezultat końcowy muszą zmieścić się w udokumentowanym limicie wyjścia. Google wymienia również buforowanie, przetwarzanie wsadowe oraz przetwarzanie Flex i Priority dla tego profilu producenta. Dla niezależnych pozycji zachowuj stały identyfikator pozycji i jawny format wyjścia, aby każdy wynik pozostał powiązany ze źródłem.\n\nMożliwe ograniczenia obejmują halucynacje, sporadyczne spowolnienia lub przekroczenia czasu oraz większe zużycie tokenów przy wyższym wysiłku. Data graniczna wiedzy to marzec 2026, przy czym niektóre dziedziny nadal są ograniczone do stycznia 2025. Dostarcz aktualne dowody lub użyj udokumentowanych narzędzi ugruntowania, gdy zadanie zależy od późniejszych informacji. Sprawdzaj cytowania źródeł, obliczenia i proponowany kod względem rzeczywistych danych wejściowych i wyników wykonania. Przydatny rezultat końcowy powinien odróżniać poparte ustalenie od nierozstrzygniętego pytania, bez założenia, że płynna odpowiedź potwierdza żądany wynik.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "deba20ab50260267a9fbfb08ec60feb62563c8e96f3b6ffee23b5ac1ecc2eaa3",
    "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\">G</span><h2 id=\"sheet-title\">Google: Gemini 3.8 Flash (batch)</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zamknij\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/gemini-3.8-flash:batch</code><button type=\"button\" id=\"copy-id\">Kopiuj ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sekcje karty modelu\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Dane wejściowe i metody</button><button type=\"button\" data-card-jump=\"pricing\">Cennik</button><button type=\"button\" data-card-jump=\"examples\">Przykłady</button><button type=\"button\" data-card-jump=\"results\">Wyniki</button><button type=\"button\" data-card-jump=\"aliases\">Aliasy</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metody API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|batches|/v1/batches|google%2Fgemini-3.8-flash%3Abatch\">Przetwarzanie wsadowe</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\">Gemini 3.8 Flash to wszechstronny multimodalny model Google do długotrwałej pracy nad oprogramowaniem, zadań agentowych i złożonych zadań opartych na wiedzy. Przyjmuje tekst, obrazy, audio, wideo i PDF, zwraca tekst oraz oferuje rozumowanie low, medium lub high z narzędziami i wyjściem strukturalnym. Udokumentowane limity wejścia/wyjścia wynoszą 1,048,576/65,536 tokenów.</p><dl class=\"card-io\" data-card-io><div><dt>Akceptowane dane wejściowe</dt><dd>Tekst</dd></div><div><dt>Wyniki</dt><dd>Tekst</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>Gemini 3.8 Flash to model Google z wyjściem tekstowym do długotrwałej pracy nad oprogramowaniem, wieloetapowych zadań agentowych i złożonych przepływów pracy opartych na wiedzy. Rozwija Gemini 3.7 Flash, usprawniając inżynierię oprogramowania i pracę agentów z wiedzą. Przyjmuje tekst, obrazy, audio, wideo i PDF, dzięki czemu zadanie może łączyć pisemny cel z rzeczywistym materiałem potrzebnym do jego rozwiązania. Przydatny wynik to zmiana kodu, analiza z wyjaśnieniem, pisemna odpowiedź lub rekord strukturalny.</p><p>W zleceniu programistycznym podaj wymaganie, odpowiednie pliki, zaobserwowane zachowanie i ograniczenia do zachowania. Zrzut ekranu może określać zamierzony interfejs, a logi lub przykład odtwarzający problem pokazywać awarię. W zadaniu debugowania poproś model o prześledzenie niezgodności między widocznym stanem formularza a jego zapisaną wartością, wskazanie odpowiedzialnej ścieżki kodu i zaproponowanie konkretnej poprawki. Zachowuj jasny zamierzony rezultat końcowy, aby dłuższa sekwencja badania i użycia narzędzi nadal miała konkretny warunek ukończenia.</p><p>Przy dłuższej pracy stosuj mniejsze kroki rozumowania, iteracyjne wywołania narzędzi i kontrole wyników pośrednich. Poziomy myślenia low, medium i high sterują ilością rozumowania; udokumentowane ustawienie domyślne to medium. Low pasuje do szybkiego szkicu lub analizy o ograniczonym zakresie, a high jest przeznaczone do trudnej matematyki, programowania lub zadań wieloetapowych. Gemini 3.8 Flash nie obsługuje poziomu myślenia minimal. Długotrwałe zlecenie debugowania i prosta ekstrakcja pól wymagają więc różnych wyborów rozumowania, zamiast tego samego ustawienia dla każdego żądania.</p><p>Udokumentowane narzędzia obejmują wywoływanie funkcji, wykonywanie kodu, wyszukiwanie plików, ugruntowanie przez wyszukiwanie, ugruntowanie Google Maps i kontekst URL, a Computer Use wymieniono jako możliwość w wersji preview. Structured outputs określają wynik czytelny maszynowo. Funkcje powinny mieć jasny cel i definicję parametrów: model może zażądać funkcji, a połączona aplikacja wykonuje operację i zwraca jej wynik. Zachowuj tożsamości funkcji i rzeczywiście zwrócone materiały między turami. Przydatna odpowiedź końcowa wyjaśnia, jakie dowody wspierają proponowaną poprawkę lub wyodrębnioną wartość.</p><p>Przewodnik migracji 3.8 stosuje sterowanie poziomami myślenia zamiast starszej konfiguracji budżetu rozumowania i zaleca usunięcie przestarzałych parametrów próbkowania oraz wstępnie wypełnionych tur modelu. Wymaga też zachowywania sygnatur myśli w odpowiednim bezstanowym przepływie pracy i dopasowywania odpowiedzi funkcji do ich wywołań według tożsamości i nazwy. Te szczegóły mają znaczenie przy kontynuowaniu zadania wieloetapowego: następna tura potrzebuje rzeczywistego wcześniejszego kontekstu zamiast przeredagowanego opisu, który gubi wynik narzędzia lub sygnaturę. W nowej turze użytkownika jawnie określ pytanie i żądane wyjście.</p><p>W multimodalnej pracy z wiedzą wskaż odpowiednie strony dokumentu, wykres, przedział audio lub zdarzenie wideo i określ, jak mają przyczynić się do odpowiedzi. Porównanie dokumentów może wymagać tabeli różnic z fragmentami źródłowymi; pytanie o wykres może wymagać widocznych wartości i wniosku, który wspierają. Analiza wideo może wymagać opisu zdarzeń uzasadniających ustalenie. Model zwraca tekst na podstawie tych danych wejściowych. Generowane obrazy, mowa i interakcja dźwiękowa Live należą do osobnych profili modeli.</p><p>Limity Gemini API wynoszą 1,048,576 tokenów wejściowych i 65,536 tokenów wyjściowych, co odpowiada natywnemu kontekstowi modelu do 1M i wyjściu tekstowemu 64K. Instrukcje, historia rozmowy i dostarczone media zużywają kontekst wejściowy, a rozumowanie lub długi rezultat końcowy muszą zmieścić się w udokumentowanym limicie wyjścia. Google wymienia również buforowanie, przetwarzanie wsadowe oraz przetwarzanie Flex i Priority dla tego profilu producenta. Dla niezależnych pozycji zachowuj stały identyfikator pozycji i jawny format wyjścia, aby każdy wynik pozostał powiązany ze źródłem.</p><p>Możliwe ograniczenia obejmują halucynacje, sporadyczne spowolnienia lub przekroczenia czasu oraz większe zużycie tokenów przy wyższym wysiłku. Data graniczna wiedzy to marzec 2026, przy czym niektóre dziedziny nadal są ograniczone do stycznia 2025. Dostarcz aktualne dowody lub użyj udokumentowanych narzędzi ugruntowania, gdy zadanie zależy od późniejszych informacji. Sprawdzaj cytowania źródeł, obliczenia i proponowany kod względem rzeczywistych danych wejściowych i wyników wykonania. Przydatny rezultat końcowy powinien odróżniać poparte ustalenie od nierozstrzygniętego pytania, bez założenia, że płynna odpowiedź potwierdza żądany wynik.</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 · Batch</b> <code>POST /v1/batches</code></summary><dl class=\"method-capabilities\"><div><dt>Wejście</dt><dd><code>text</code></dd></div><div><dt>Wyjście</dt><dd><code>text</code></dd></div><div><dt>Format wyjściowy</dt><dd>JSON bezpośrednio w results[].response.body</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\">endpoint</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>/v1/chat/completions</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\">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>google/gemini-3.8-flash:batch</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\">requests</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>batch_item[]</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 liczba elementów: 1</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\">requests[].custom_id</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></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\">requests[].body.messages</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>message[]</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span></td><td data-cell-label=\"Domyślnie\" data-default=\"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\">completion_window</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>24h</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\">provider</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object|null</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\">requests[].body.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>Opcjonalne</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>google/gemini-3.8-flash:batch, google/gemini-3.8-flash</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\">provider.only</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>google-vertex/global</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\">provider.allow_fallbacks</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>boolean|null</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>false, null</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=\"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>endpoint, model, requests</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>representation</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>requests[] bezpośrednio w żądaniu; każdy element zawiera custom_id i body</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>request_endpoint_profile</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>/v1/chat/completions</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>file_material</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>Wywołujący może lokalnie wczytać rzeczywisty plik JSONL w kodowaniu UTF-8 do requests[]. Nie używa się przeznaczenia przesyłanego pliku, input_file_id ani odwołania do pliku. Brak materiałów klienta lub ich pusta zawartość zatrzymują przygotowanie przed POST.</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>serialization_order</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>endpoint, model, provider (jeśli podano), completion_window (jeśli podano), requests na końcu</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>provider.only, provider.allow_fallbacks, completion_window</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>schema_scope</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>Treści żądań tekstowych Chat Completions w udokumentowanej strukturze Batch z danymi bezpośrednio w żądaniu.</td></tr></tbody></table></div><p>Cykl życia: <code>asynchronous</code></p><p class=\"note-s\"><code>GET /v1/batches/{operation_id}</code> · Rzeczywista wartość response.id zwrócona przy pierwotnym utworzeniu; ten sam użytkownik, klucz i grupa</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><dt>Wycena jawnej pamięci podręcznej</dt><dd>Niewłączone <span class=\"note-s\">Gdy zażądano jawnej pamięci podręcznej</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>Tokeny kontekstu, więcej niż</th><th>Tokeny kontekstu, do podanej wartości włącznie</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>Podstawowe 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=\"Tokeny kontekstu, więcej niż\"><span class=\"card-cell-label\">Tokeny kontekstu, więcej niż</span>—</td><td data-cell-label=\"Tokeny kontekstu, do podanej wartości włącznie\"><span class=\"card-cell-label\">Tokeny kontekstu, do podanej wartości włącznie</span>Bez górnej granicy</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Tokeny wejściowe</span> <b>$0.00075</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wyjście · Tokeny wyjściowe</span> <b>$0.00375</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Odczyt cache</span> <b>$0.000075</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Zapis do cache</span> <b>$0.0000833333333333334</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>Przedział długości żądania 1</th><td data-cell-label=\"Tabela stawek\"><span class=\"card-cell-label\">Tabela stawek</span>—</td><td data-cell-label=\"Tokeny kontekstu, więcej niż\"><span class=\"card-cell-label\">Tokeny kontekstu, więcej niż</span>0</td><td data-cell-label=\"Tokeny kontekstu, do podanej wartości włącznie\"><span class=\"card-cell-label\">Tokeny kontekstu, do podanej wartości włącznie</span>Bez górnej granicy</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Tokeny wejściowe</span> <b>$0.00075</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wyjście · Tokeny wyjściowe</span> <b>$0.00375</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Odczyt cache</span> <b>$0.000075</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Zapis do cache</span> <b>$0.0000833333333333334</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></tbody></table></div></div><p class=\"note-s\">Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. <a href=\"/docs/pl/billing/reserve/\">Jak działają rezerwacja i rozliczenie →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Przykładowe żądania</h3><h4>Ailoot Ultra · Batch</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-1480-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1480-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · zachowany zestaw danych testowych</button><button class=\"cg-tab\" id=\"model-code-1480-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1480-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python HTTP · rzeczywisty JSONL klienta</button><button class=\"cg-tab\" id=\"model-code-1480-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1480-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Python · zapisz każdy ukończony wynik</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-1480-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1480-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\nfrom pathlib import Path\nbody=json.loads(&#39;{&quot;endpoint&quot;:&quot;/v1/chat/completions&quot;,&quot;model&quot;:&quot;google/gemini-3.8-flash:batch&quot;,&quot;requests&quot;:[{&quot;custom_id&quot;:&quot;req-0001&quot;,&quot;body&quot;:{&quot;messages&quot;:[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Hello!&quot;}],&quot;max_tokens&quot;:16}}]}&#39;)\nPath(&quot;batch-request.json&quot;).write_text(json.dumps(body,ensure_ascii=False),encoding=&quot;utf-8&quot;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1480-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1480-tab-1\" hidden><pre data-lang=\"python\"><code>import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(&quot;Customer JSONL file is missing&quot;)\n    items = [json.loads(line) for line in path.read_text(encoding=&quot;utf-8&quot;).splitlines() if line.strip()]\n    if not items: raise ValueError(&quot;Customer JSONL contains no requests&quot;)\n    ids = set()\n    for item in items:\n        if set(item) != {&quot;custom_id&quot;, &quot;body&quot;}: raise ValueError(&quot;Each item needs custom_id and body&quot;)\n        cid = item[&quot;custom_id&quot;]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(&quot;custom_id must be nonempty and unique&quot;)\n        ids.add(cid)\n        if not isinstance(item[&quot;body&quot;], dict) or not item[&quot;body&quot;].get(&quot;messages&quot;): raise ValueError(&quot;Supply actual text messages&quot;)\n        supplied_model = item[&quot;body&quot;].get(&quot;model&quot;)\n        if supplied_model is not None and supplied_model not in [&#39;google/gemini-3.8-flash:batch&#39;, &#39;google/gemini-3.8-flash&#39;]: raise ValueError(&quot;body.model must be an exact documented caller or wire ID&quot;)\n    return {&quot;endpoint&quot;:&quot;/v1/chat/completions&quot;, &quot;model&quot;:&quot;google/gemini-3.8-flash:batch&quot;, &quot;requests&quot;:items}\n\nif __name__ == &quot;__main__&quot;:\n    material = os.environ.get(&quot;AILOOT_BATCH_REQUESTS_JSONL&quot;, &quot;&quot;)\n    if not material: raise SystemExit(&quot;Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file&quot;)\n    body = prepare_requests(material)\n    key = os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;)\n    if not key: raise SystemExit(&quot;Set AILOOT_API_KEY&quot;)\n    request = Request(&quot;https://api.ailoot.ai/v1/batches&quot;, data=json.dumps(body, ensure_ascii=False).encode(&quot;utf-8&quot;), headers={&quot;Authorization&quot;:&quot;Bearer &quot; + key, &quot;Content-Type&quot;:&quot;application/json&quot;}, method=&quot;POST&quot;)\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(&quot;batch-create-response.json&quot;).write_bytes(raw)\n        print(raw.decode(&quot;utf-8&quot;))\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1480-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1480-tab-2\" hidden><pre data-lang=\"python\"><code>import json\nfrom pathlib import Path\nraw = Path(&quot;batch-status-response.json&quot;).read_bytes()\nresponse = json.loads(raw)\nif response.get(&quot;status&quot;) != &quot;completed&quot;:\n    raise SystemExit(&quot;Keep the original operation; read its status without resubmitting&quot;)\nresults = response.get(&quot;results&quot;)\nif not isinstance(results, list) or not results:\n    raise SystemExit(&quot;Preserve the original response; completed results are missing&quot;)\nPath(&quot;batch-results.jsonl&quot;).write_text(&quot;&quot;.join(json.dumps(item, ensure_ascii=False) + &quot;\\n&quot; for item in results), encoding=&quot;utf-8&quot;)\n# Preserve batch-status-response.json with aggregate usage and every result/error.\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 · Batch</h4><p class=\"note-s\">JSON bezpośrednio w results[].response.body</p><ul class=\"card-result-paths\"><li><code>GET /v1/batches/{operation_id}</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-1481-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1481-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · status pierwotnej operacji</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-1481-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1481-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nBATCH_OPERATION_ID=&quot;$(python3 - &lt;&lt;&#39;PY_ID&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(&quot;batch-create-response.json&quot;).read_text(encoding=&quot;utf-8&quot;))\noperation = response.get(&quot;id&quot;)\nif not isinstance(operation, str) or not operation: raise SystemExit(&quot;No actual original operation ID; preserve the response and do not resubmit&quot;)\nprint(quote(operation, safe=&quot;&quot;))\nPY_ID\n)&quot;\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o batch-status-response.json\n</code></pre></div></div></div><div class=\"card-result-process\" data-all-results><h5>Zachowaj wszystkie ukończone wyniki</h5><p class=\"note-s\">Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.</p><p class=\"note-s\">Zachowaj pełny pierwotny JSON stanu, każdy wynik i custom_id oraz pełną treść odpowiedzi lub błędu. Zapisz ukończone wyniki z results[] jako JSONL bez filtrowania.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jeśli trzeba sprawdzić pierwotną odpowiedź</h5><p class=\"note-s\">Zachowaj pierwotny identyfikator operacji. Odpowiedź 503 result_pending_check zawiera X-Should-Retry:false; nigdy nie wysyłaj ponownie pierwotnego żądania Batch, którego wynik jest nieznany.</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\">results[].custom_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\">results[].response.body.choices[].message.content</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string|null</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">results[].error</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object|null</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|null</td></tr><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\">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\">endpoint</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\">request_counts</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\">results[].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\">results[].response.status_code</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\">results[].response.request_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</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łowa udokumentowana struktura z danymi bezpośrednio w żądaniu, zduplikowane klucze, problem z tożsamością elementu lub konflikt ze skonfigurowanymi możliwościami modelu.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Popraw wskazane pola przed wysłaniem jakiegokolwiek nowego żądania.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Nieprawidłowy klucz API.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Użyj autoryzowanego klucza Ailoot.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>403 · <code>permission_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Grupa Batch jest niedostępna.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Sprawdź uprawnienia klucza i grupy.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Batch korzysta z rozliczania z salda; utworzenie w ramach subskrypcji jest odrzucane.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Użyj autoryzowanej grupy rozliczanej z salda.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Nie można wycenić danych wejściowych Batch.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Zachowaj odpowiedź; użyj danych wejściowych udokumentowanych dla tej rodziny API.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>402 · <code>billing_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Rezerwa dla Batch jest niedostępna.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Rozwiąż problem dopuszczenia żądania przed wysłaniem nowego.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>503 · <code>price_unavailable</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Cena metody Batch lub stawki natywne są niedostępne.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Zachowaj odpowiedź; nie zastępuj cen innymi.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>503 · <code>api_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Dokładna trasa dostawcy jest niedostępna.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Zachowaj odpowiedź na potrzeby naprawy trasy.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Pierwotny wynik wymaga sprawdzenia; X-Should-Retry:false.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Zachowaj pierwotny operation_id/id i odczytuj stan operacji; nigdy nie powtarzaj pierwotnego POST.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>404 · <code>not_found</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Operacja sprawdzania stanu Batch nie istnieje lub należy do innej tożsamości.</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Użyj dokładnego pierwotnego id oraz tego samego użytkownika, klucza i grupy.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasy</h3><h4>Aliasy modelu</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=google%2Fgemini-3.8-flash%3Abatch&amp;route=Ultra&amp;caller=google%2Fgemini-3.8-flash%3Abatch&amp;fmt=batches\"><code>google/gemini-3.8-flash:batch</code></a></span></p><h4>Aliasy ścieżek metod</h4><p class=\"note-s\">Użyj ścieżek metod podanych powyżej.</p><h4>Powiązane ID modeli</h4><p class=\"note-s\"><a href=\"#m=google%2Fgemini-3.8-flash%3Abatch&amp;route=Ultra&amp;caller=google%2Fgemini-3.8-flash%3Abatch&amp;fmt=batches\"><code>google/gemini-3.8-flash:batch</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-3.8-flash:batch",
        "fmt": "batches",
        "http": "POST",
        "path": "/v1/batches",
        "request_model_id": "google/gemini-3.8-flash:batch",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|batches|/v1/batches|google%2Fgemini-3.8-flash%3Abatch",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": 0.075,
        "cache_write": 0.0833333333333334,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Preserve full JSON and every result; provider real IDs are only read from actual returned responses.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Nieprawidłowa udokumentowana struktura z danymi bezpośrednio w żądaniu, zduplikowane klucze, problem z tożsamością elementu lub konflikt ze skonfigurowanymi możliwościami modelu.",
                "http_status": 400,
                "recovery": "Popraw wskazane pola przed wysłaniem jakiegokolwiek nowego żądania.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Nieprawidłowy klucz API.",
                "http_status": 401,
                "recovery": "Użyj autoryzowanego klucza Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Grupa Batch jest niedostępna.",
                "http_status": 403,
                "recovery": "Sprawdź uprawnienia klucza i grupy.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Batch korzysta z rozliczania z salda; utworzenie w ramach subskrypcji jest odrzucane.",
                "http_status": 422,
                "recovery": "Użyj autoryzowanej grupy rozliczanej z salda.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Nie można wycenić danych wejściowych Batch.",
                "http_status": 422,
                "recovery": "Zachowaj odpowiedź; użyj danych wejściowych udokumentowanych dla tej rodziny API.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Rezerwa dla Batch jest niedostępna.",
                "http_status": 402,
                "recovery": "Rozwiąż problem dopuszczenia żądania przed wysłaniem nowego.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Cena metody Batch lub stawki natywne są niedostępne.",
                "http_status": 503,
                "recovery": "Zachowaj odpowiedź; nie zastępuj cen innymi.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Dokładna trasa dostawcy jest niedostępna.",
                "http_status": 503,
                "recovery": "Zachowaj odpowiedź na potrzeby naprawy trasy.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Pierwotny wynik wymaga sprawdzenia; X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Zachowaj pierwotny operation_id/id i odczytuj stan operacji; nigdy nie powtarzaj pierwotnego POST.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Operacja sprawdzania stanu Batch nie istnieje lub należy do innej tożsamości.",
                "http_status": 404,
                "recovery": "Użyj dokładnego pierwotnego id oraz tego samego użytkownika, klucza i grupy.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "google/gemini-3.8-flash:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "input_constraints": [
              "Use the exact shown :batch model ID.",
              "Each custom_id must be nonempty and unique within the batch.",
              "Keep requests last in the serialized body; duplicate JSON keys are rejected.",
              "Each body.model is omitted or equals the exact batch caller or its documented base ID.",
              "Per-item provider, service_tier and input_type are outside this batch profile.",
              "stream is omitted or false.",
              "Supply text messages for this Chat batch profile; image/audio/file/video objects, hosted tools and cache-control fields are outside this profile.",
              "If body.model is present, use only the exact caller or wire ID listed here; no suffix conversion is needed.",
              "For google/ wire IDs, all items use an identical response_format."
            ],
            "outputs": {
              "all_results": "Zachowaj pełny pierwotny JSON stanu, każdy wynik i custom_id oraz pełną treść odpowiedzi lub błędu. Zapisz ukończone wyniki z results[] jako JSONL bez filtrowania.",
              "enclosing_family": "batch",
              "family": "text",
              "fields": [
                {
                  "name": "results[].custom_id",
                  "type": "string"
                },
                {
                  "name": "results[].response.body.choices[].message.content",
                  "type": "string|null"
                },
                {
                  "name": "results[].error",
                  "type": "object|null"
                },
                {
                  "name": "usage",
                  "type": "object|null"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "endpoint",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "request_counts",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "results[].id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "results[].response.status_code",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "results[].response.request_id",
                  "type": "string"
                }
              ],
              "format": "JSON bezpośrednio w results[].response.body"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "/v1/chat/completions"
                ],
                "enum_known": true,
                "name": "endpoint",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/gemini-3.8-flash:batch"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "requests",
                "required": true,
                "type": "batch_item[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].custom_id",
                "required": true,
                "type": "string",
                "unique_within_batch": true
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].body.messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "24h"
                ],
                "enum_known": true,
                "name": "completion_window",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/gemini-3.8-flash:batch",
                  "google/gemini-3.8-flash"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "google-vertex/global"
                  ]
                ],
                "enum_known": true,
                "name": "provider.only",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "provider.allow_fallbacks",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "provider_policy": {
              "allow_fallbacks": false,
              "configured_only": [
                "google-vertex/global"
              ],
              "per_item_override": false,
              "when_omitted": "Current Source injects the exact persisted declaration before fresh submission."
            },
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "completion_window": {
                  "enum": [
                    "24h"
                  ],
                  "type": "string"
                },
                "endpoint": {
                  "enum": [
                    "/v1/chat/completions"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "google/gemini-3.8-flash:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "google-vertex/global"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "google-vertex/global"
                        ],
                        "type": "string"
                      },
                      "maxItems": 1,
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "requests": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "body": {
                        "additionalProperties": true,
                        "properties": {
                          "max_tokens": {
                            "minimum": 1,
                            "type": "integer"
                          },
                          "messages": {
                            "items": {
                              "properties": {
                                "content": {
                                  "type": "string"
                                },
                                "role": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "role",
                                "content"
                              ],
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "model": {
                            "enum": [
                              "google/gemini-3.8-flash:batch",
                              "google/gemini-3.8-flash"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "messages"
                        ],
                        "type": "object"
                      },
                      "custom_id": {
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "custom_id",
                      "body"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "endpoint",
                "model",
                "requests"
              ],
              "type": "object"
            },
            "schema_template": {
              "endpoint": "/v1/chat/completions",
              "model": "google/gemini-3.8-flash:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "unsupported": [
              "Files/input_file_id batch upload workflow",
              "active cancel route",
              "public batch list/delete/result-download route",
              "model-name-derived capability or weights equivalence"
            ]
          },
          "input": {
            "content_type": "application/json",
            "file_material": "Wywołujący może lokalnie wczytać rzeczywisty plik JSONL w kodowaniu UTF-8 do requests[]. Nie używa się przeznaczenia przesyłanego pliku, input_file_id ani odwołania do pliku. Brak materiałów klienta lub ich pusta zawartość zatrzymują przygotowanie przed POST.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "requests[] bezpośrednio w żądaniu; każdy element zawiera custom_id i body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Treści żądań tekstowych Chat Completions w udokumentowanej strukturze Batch z danymi bezpośrednio w żądaniu.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (jeśli podano)",
              "completion_window (jeśli podano)",
              "requests na końcu"
            ]
          },
          "lifecycle": {
            "cancel": null,
            "create": {
              "accepted_status": 202,
              "http": "POST",
              "path": "/v1/batches"
            },
            "delete": null,
            "file_upload": null,
            "mode": "asynchronous",
            "observed_status_values": [
              "validating",
              "in_progress",
              "finalizing",
              "completed",
              "failed",
              "expired",
              "cancelling",
              "cancelled"
            ],
            "owned_results": {
              "behavior": "Completed results are saved as owned JSONL, read back byte-for-byte and registered in the existing media library before publication after settlement. Status returns inline results; no separate Batch download route is added.",
              "format": "application/x-ndjson",
              "public_url_field_in_status": null
            },
            "status": {
              "http": "GET",
              "id_source": "Rzeczywista wartość response.id zwrócona przy pierwotnym utworzeniu; ten sam użytkownik, klucz i grupa",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Zachowaj pierwotny identyfikator operacji. Odpowiedź 503 result_pending_check zawiera X-Should-Retry:false; nigdy nie wysyłaj ponownie pierwotnego żądania Batch, którego wynik jest nieznany."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/batches"
          },
          "output": {
            "all_results": "Preserve the full original status JSON, every result/custom_id and complete response or error body. Save completed results[] as JSONL without filtering.",
            "family": "batch",
            "format": "JSON; completed results[] are returned inline and can be saved as JSONL."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Podstawowe stawki za tokeny",
            "units": [
              {
                "amount": "0.00075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000075",
                "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": "0.00375000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000375",
                "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": "0.000075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000075",
                "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": "0.0000833333333333334000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": "0.0000000833333333333334",
                "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": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Przedział długości żądania 1",
            "units": [
              {
                "amount": "0.00075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000075",
                "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": "0.00375000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000375",
                "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": "0.000075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000075",
                "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": "0.0000833333333333334000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": "0.0000000833333333333334",
                "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"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json\nfrom pathlib import Path\nbody=json.loads('{\"endpoint\":\"/v1/chat/completions\",\"model\":\"google/gemini-3.8-flash:batch\",\"requests\":[{\"custom_id\":\"req-0001\",\"body\":{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}],\"max_tokens\":16}}]}')\nPath(\"batch-request.json\").write_text(json.dumps(body,ensure_ascii=False),encoding=\"utf-8\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n",
            "label": "curl · retained fixture",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(\"Customer JSONL file is missing\")\n    items = [json.loads(line) for line in path.read_text(encoding=\"utf-8\").splitlines() if line.strip()]\n    if not items: raise ValueError(\"Customer JSONL contains no requests\")\n    ids = set()\n    for item in items:\n        if set(item) != {\"custom_id\", \"body\"}: raise ValueError(\"Each item needs custom_id and body\")\n        cid = item[\"custom_id\"]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(\"custom_id must be nonempty and unique\")\n        ids.add(cid)\n        if not isinstance(item[\"body\"], dict) or not item[\"body\"].get(\"messages\"): raise ValueError(\"Supply actual text messages\")\n        supplied_model = item[\"body\"].get(\"model\")\n        if supplied_model is not None and supplied_model not in ['google/gemini-3.8-flash:batch', 'google/gemini-3.8-flash']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"google/gemini-3.8-flash:batch\", \"requests\":items}\n\nif __name__ == \"__main__\":\n    material = os.environ.get(\"AILOOT_BATCH_REQUESTS_JSONL\", \"\")\n    if not material: raise SystemExit(\"Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file\")\n    body = prepare_requests(material)\n    key = os.environ.get(\"AILOOT_API_KEY\", \"\")\n    if not key: raise SystemExit(\"Set AILOOT_API_KEY\")\n    request = Request(\"https://api.ailoot.ai/v1/batches\", data=json.dumps(body, ensure_ascii=False).encode(\"utf-8\"), headers={\"Authorization\":\"Bearer \" + key, \"Content-Type\":\"application/json\"}, method=\"POST\")\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(\"batch-create-response.json\").write_bytes(raw)\n        print(raw.decode(\"utf-8\"))\n",
            "label": "Python HTTP · actual customer JSONL",
            "language": "python"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nBATCH_OPERATION_ID=\"$(python3 - <<'PY_ID'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(\"batch-create-response.json\").read_text(encoding=\"utf-8\"))\noperation = response.get(\"id\")\nif not isinstance(operation, str) or not operation: raise SystemExit(\"No actual original operation ID; preserve the response and do not resubmit\")\nprint(quote(operation, safe=\"\"))\nPY_ID\n)\"\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o batch-status-response.json\n",
            "label": "curl · original operation status",
            "language": "bash"
          },
          {
            "code": "import json\nfrom pathlib import Path\nraw = Path(\"batch-status-response.json\").read_bytes()\nresponse = json.loads(raw)\nif response.get(\"status\") != \"completed\":\n    raise SystemExit(\"Keep the original operation; read its status without resubmitting\")\nresults = response.get(\"results\")\nif not isinstance(results, list) or not results:\n    raise SystemExit(\"Preserve the original response; completed results are missing\")\nPath(\"batch-results.jsonl\").write_text(\"\".join(json.dumps(item, ensure_ascii=False) + \"\\n\" for item in results), encoding=\"utf-8\")\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n",
            "label": "Python · save every completed result",
            "language": "python"
          }
        ],
        "family": "batch",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "batches",
        "hints": [
          "Read your actual request items before submission; inline requests are required.",
          "Keep the returned operation ID and every result. Never replay an unknown submission."
        ],
        "http": "POST",
        "in": 0.75,
        "input": [
          "text"
        ],
        "label": "Batch",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 3.75,
        "output": [
          "text"
        ],
        "path": "/v1/batches",
        "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"
          },
          {
            "label": "Explicit cache pricing",
            "value": "Not enabled",
            "when": "When explicit cache is requested"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000075",
                "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": "0.00375000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000375",
                "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": "0.000075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000075",
                "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": "0.0000833333333333334000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": "0.0000000833333333333334",
                "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": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.00075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000075",
                "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": "0.00375000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000375",
                "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": "0.000075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000075",
                "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": "0.0000833333333333334000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": "0.0000000833333333333334",
                "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"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-3.8-flash:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.075,
            "cache_read_multiplier": null,
            "cache_write": 0.0833333333333334,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.75,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 3.75,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.00075000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000075",
            "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": "0.00375000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000375",
            "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": "0.000075000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": "0.000000075",
            "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": "0.0000833333333333334000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": "0.0000000833333333333334",
            "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"
          }
        ]
      }
    }
  ],
  "model_id": "google/gemini-3.8-flash:batch",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "9f92621102749c978b2f93edc1964be0cb6c354520f69c4852d9025cb066f432",
    "input_html_sha256": "13e3cd1a3407c96c19c5e73226097dcfb3d32c5097c6c05dfd48e5ebd0d11ed0",
    "private_audit_sha256": "e7c0264d73806f8c08bc00be860523a66d878787240ce53858b82573002275a9",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/pl/google-gemini-3-8-flash-u003a-batch/",
    "description": "Gemini 3.8 Flash to wszechstronny multimodalny model Google do długotrwałej pracy nad oprogramowaniem, zadań agentowych i złożonych zadań opartych na wiedzy. Przyjmuje tekst, obrazy, audio, wideo i PDF, zwraca tekst oraz oferuje rozumowanie low, medium lub high z narzędziami i wyjściem strukturalnym. Udokumentowane limity wejścia/wyjścia wynoszą 1,048,576/65,536 tokenów.",
    "locale": "pl",
    "md_url": "https://ailoot.ai/models/pl/google-gemini-3-8-flash-u003a-batch/index.md",
    "title": "Google: Gemini 3.8 Flash (batch) — Ailoot",
    "url": "https://ailoot.ai/models/pl/google-gemini-3-8-flash-u003a-batch/"
  },
  "rawModel": {
    "about": "Gemini 3.8 Flash to model Google z wyjściem tekstowym do długotrwałej pracy nad oprogramowaniem, wieloetapowych zadań agentowych i złożonych przepływów pracy opartych na wiedzy. Rozwija Gemini 3.7 Flash, usprawniając inżynierię oprogramowania i pracę agentów z wiedzą. Przyjmuje tekst, obrazy, audio, wideo i PDF, dzięki czemu zadanie może łączyć pisemny cel z rzeczywistym materiałem potrzebnym do jego rozwiązania. Przydatny wynik to zmiana kodu, analiza z wyjaśnieniem, pisemna odpowiedź lub rekord strukturalny.\n\nW zleceniu programistycznym podaj wymaganie, odpowiednie pliki, zaobserwowane zachowanie i ograniczenia do zachowania. Zrzut ekranu może określać zamierzony interfejs, a logi lub przykład odtwarzający problem pokazywać awarię. W zadaniu debugowania poproś model o prześledzenie niezgodności między widocznym stanem formularza a jego zapisaną wartością, wskazanie odpowiedzialnej ścieżki kodu i zaproponowanie konkretnej poprawki. Zachowuj jasny zamierzony rezultat końcowy, aby dłuższa sekwencja badania i użycia narzędzi nadal miała konkretny warunek ukończenia.\n\nPrzy dłuższej pracy stosuj mniejsze kroki rozumowania, iteracyjne wywołania narzędzi i kontrole wyników pośrednich. Poziomy myślenia low, medium i high sterują ilością rozumowania; udokumentowane ustawienie domyślne to medium. Low pasuje do szybkiego szkicu lub analizy o ograniczonym zakresie, a high jest przeznaczone do trudnej matematyki, programowania lub zadań wieloetapowych. Gemini 3.8 Flash nie obsługuje poziomu myślenia minimal. Długotrwałe zlecenie debugowania i prosta ekstrakcja pól wymagają więc różnych wyborów rozumowania, zamiast tego samego ustawienia dla każdego żądania.\n\nUdokumentowane narzędzia obejmują wywoływanie funkcji, wykonywanie kodu, wyszukiwanie plików, ugruntowanie przez wyszukiwanie, ugruntowanie Google Maps i kontekst URL, a Computer Use wymieniono jako możliwość w wersji preview. Structured outputs określają wynik czytelny maszynowo. Funkcje powinny mieć jasny cel i definicję parametrów: model może zażądać funkcji, a połączona aplikacja wykonuje operację i zwraca jej wynik. Zachowuj tożsamości funkcji i rzeczywiście zwrócone materiały między turami. Przydatna odpowiedź końcowa wyjaśnia, jakie dowody wspierają proponowaną poprawkę lub wyodrębnioną wartość.\n\nPrzewodnik migracji 3.8 stosuje sterowanie poziomami myślenia zamiast starszej konfiguracji budżetu rozumowania i zaleca usunięcie przestarzałych parametrów próbkowania oraz wstępnie wypełnionych tur modelu. Wymaga też zachowywania sygnatur myśli w odpowiednim bezstanowym przepływie pracy i dopasowywania odpowiedzi funkcji do ich wywołań według tożsamości i nazwy. Te szczegóły mają znaczenie przy kontynuowaniu zadania wieloetapowego: następna tura potrzebuje rzeczywistego wcześniejszego kontekstu zamiast przeredagowanego opisu, który gubi wynik narzędzia lub sygnaturę. W nowej turze użytkownika jawnie określ pytanie i żądane wyjście.\n\nW multimodalnej pracy z wiedzą wskaż odpowiednie strony dokumentu, wykres, przedział audio lub zdarzenie wideo i określ, jak mają przyczynić się do odpowiedzi. Porównanie dokumentów może wymagać tabeli różnic z fragmentami źródłowymi; pytanie o wykres może wymagać widocznych wartości i wniosku, który wspierają. Analiza wideo może wymagać opisu zdarzeń uzasadniających ustalenie. Model zwraca tekst na podstawie tych danych wejściowych. Generowane obrazy, mowa i interakcja dźwiękowa Live należą do osobnych profili modeli.\n\nLimity Gemini API wynoszą 1,048,576 tokenów wejściowych i 65,536 tokenów wyjściowych, co odpowiada natywnemu kontekstowi modelu do 1M i wyjściu tekstowemu 64K. Instrukcje, historia rozmowy i dostarczone media zużywają kontekst wejściowy, a rozumowanie lub długi rezultat końcowy muszą zmieścić się w udokumentowanym limicie wyjścia. Google wymienia również buforowanie, przetwarzanie wsadowe oraz przetwarzanie Flex i Priority dla tego profilu producenta. Dla niezależnych pozycji zachowuj stały identyfikator pozycji i jawny format wyjścia, aby każdy wynik pozostał powiązany ze źródłem.\n\nMożliwe ograniczenia obejmują halucynacje, sporadyczne spowolnienia lub przekroczenia czasu oraz większe zużycie tokenów przy wyższym wysiłku. Data graniczna wiedzy to marzec 2026, przy czym niektóre dziedziny nadal są ograniczone do stycznia 2025. Dostarcz aktualne dowody lub użyj udokumentowanych narzędzi ugruntowania, gdy zadanie zależy od późniejszych informacji. Sprawdzaj cytowania źródeł, obliczenia i proponowany kod względem rzeczywistych danych wejściowych i wyników wykonania. Przydatny rezultat końcowy powinien odróżniać poparte ustalenie od nierozstrzygniętego pytania, bez założenia, że płynna odpowiedź potwierdza żądany wynik.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 1048576,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "file",
        "audio"
      ],
      "manufacturer_output": [
        "text"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00075000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000075",
            "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": "0.00375000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000375",
            "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"
          }
        ],
        "summary": "Pełny cennik konfiguracji w szczegółach."
      }
    ],
    "ctx": null,
    "formats": [
      "batches"
    ],
    "id": "google/gemini-3.8-flash:batch",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": 0.075,
        "cache_write": 0.0833333333333334,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Preserve full JSON and every result; provider real IDs are only read from actual returned responses.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Nieprawidłowa udokumentowana struktura z danymi bezpośrednio w żądaniu, zduplikowane klucze, problem z tożsamością elementu lub konflikt ze skonfigurowanymi możliwościami modelu.",
                "http_status": 400,
                "recovery": "Popraw wskazane pola przed wysłaniem jakiegokolwiek nowego żądania.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Nieprawidłowy klucz API.",
                "http_status": 401,
                "recovery": "Użyj autoryzowanego klucza Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Grupa Batch jest niedostępna.",
                "http_status": 403,
                "recovery": "Sprawdź uprawnienia klucza i grupy.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Batch korzysta z rozliczania z salda; utworzenie w ramach subskrypcji jest odrzucane.",
                "http_status": 422,
                "recovery": "Użyj autoryzowanej grupy rozliczanej z salda.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Nie można wycenić danych wejściowych Batch.",
                "http_status": 422,
                "recovery": "Zachowaj odpowiedź; użyj danych wejściowych udokumentowanych dla tej rodziny API.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Rezerwa dla Batch jest niedostępna.",
                "http_status": 402,
                "recovery": "Rozwiąż problem dopuszczenia żądania przed wysłaniem nowego.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Cena metody Batch lub stawki natywne są niedostępne.",
                "http_status": 503,
                "recovery": "Zachowaj odpowiedź; nie zastępuj cen innymi.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Dokładna trasa dostawcy jest niedostępna.",
                "http_status": 503,
                "recovery": "Zachowaj odpowiedź na potrzeby naprawy trasy.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Pierwotny wynik wymaga sprawdzenia; X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Zachowaj pierwotny operation_id/id i odczytuj stan operacji; nigdy nie powtarzaj pierwotnego POST.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Operacja sprawdzania stanu Batch nie istnieje lub należy do innej tożsamości.",
                "http_status": 404,
                "recovery": "Użyj dokładnego pierwotnego id oraz tego samego użytkownika, klucza i grupy.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "google/gemini-3.8-flash:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "input_constraints": [
              "Use the exact shown :batch model ID.",
              "Each custom_id must be nonempty and unique within the batch.",
              "Keep requests last in the serialized body; duplicate JSON keys are rejected.",
              "Each body.model is omitted or equals the exact batch caller or its documented base ID.",
              "Per-item provider, service_tier and input_type are outside this batch profile.",
              "stream is omitted or false.",
              "Supply text messages for this Chat batch profile; image/audio/file/video objects, hosted tools and cache-control fields are outside this profile.",
              "If body.model is present, use only the exact caller or wire ID listed here; no suffix conversion is needed.",
              "For google/ wire IDs, all items use an identical response_format."
            ],
            "outputs": {
              "all_results": "Zachowaj pełny pierwotny JSON stanu, każdy wynik i custom_id oraz pełną treść odpowiedzi lub błędu. Zapisz ukończone wyniki z results[] jako JSONL bez filtrowania.",
              "enclosing_family": "batch",
              "family": "text",
              "fields": [
                {
                  "name": "results[].custom_id",
                  "type": "string"
                },
                {
                  "name": "results[].response.body.choices[].message.content",
                  "type": "string|null"
                },
                {
                  "name": "results[].error",
                  "type": "object|null"
                },
                {
                  "name": "usage",
                  "type": "object|null"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "endpoint",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "request_counts",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "results[].id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "results[].response.status_code",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "results[].response.request_id",
                  "type": "string"
                }
              ],
              "format": "JSON bezpośrednio w results[].response.body"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "/v1/chat/completions"
                ],
                "enum_known": true,
                "name": "endpoint",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/gemini-3.8-flash:batch"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "requests",
                "required": true,
                "type": "batch_item[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].custom_id",
                "required": true,
                "type": "string",
                "unique_within_batch": true
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].body.messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "24h"
                ],
                "enum_known": true,
                "name": "completion_window",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/gemini-3.8-flash:batch",
                  "google/gemini-3.8-flash"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "google-vertex/global"
                  ]
                ],
                "enum_known": true,
                "name": "provider.only",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "provider.allow_fallbacks",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "provider_policy": {
              "allow_fallbacks": false,
              "configured_only": [
                "google-vertex/global"
              ],
              "per_item_override": false,
              "when_omitted": "Current Source injects the exact persisted declaration before fresh submission."
            },
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "completion_window": {
                  "enum": [
                    "24h"
                  ],
                  "type": "string"
                },
                "endpoint": {
                  "enum": [
                    "/v1/chat/completions"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "google/gemini-3.8-flash:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "google-vertex/global"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "google-vertex/global"
                        ],
                        "type": "string"
                      },
                      "maxItems": 1,
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "requests": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "body": {
                        "additionalProperties": true,
                        "properties": {
                          "max_tokens": {
                            "minimum": 1,
                            "type": "integer"
                          },
                          "messages": {
                            "items": {
                              "properties": {
                                "content": {
                                  "type": "string"
                                },
                                "role": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "role",
                                "content"
                              ],
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "model": {
                            "enum": [
                              "google/gemini-3.8-flash:batch",
                              "google/gemini-3.8-flash"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "messages"
                        ],
                        "type": "object"
                      },
                      "custom_id": {
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "custom_id",
                      "body"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "endpoint",
                "model",
                "requests"
              ],
              "type": "object"
            },
            "schema_template": {
              "endpoint": "/v1/chat/completions",
              "model": "google/gemini-3.8-flash:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "unsupported": [
              "Files/input_file_id batch upload workflow",
              "active cancel route",
              "public batch list/delete/result-download route",
              "model-name-derived capability or weights equivalence"
            ]
          },
          "input": {
            "content_type": "application/json",
            "file_material": "Wywołujący może lokalnie wczytać rzeczywisty plik JSONL w kodowaniu UTF-8 do requests[]. Nie używa się przeznaczenia przesyłanego pliku, input_file_id ani odwołania do pliku. Brak materiałów klienta lub ich pusta zawartość zatrzymują przygotowanie przed POST.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "requests[] bezpośrednio w żądaniu; każdy element zawiera custom_id i body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Treści żądań tekstowych Chat Completions w udokumentowanej strukturze Batch z danymi bezpośrednio w żądaniu.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (jeśli podano)",
              "completion_window (jeśli podano)",
              "requests na końcu"
            ]
          },
          "lifecycle": {
            "cancel": null,
            "create": {
              "accepted_status": 202,
              "http": "POST",
              "path": "/v1/batches"
            },
            "delete": null,
            "file_upload": null,
            "mode": "asynchronous",
            "observed_status_values": [
              "validating",
              "in_progress",
              "finalizing",
              "completed",
              "failed",
              "expired",
              "cancelling",
              "cancelled"
            ],
            "owned_results": {
              "behavior": "Completed results are saved as owned JSONL, read back byte-for-byte and registered in the existing media library before publication after settlement. Status returns inline results; no separate Batch download route is added.",
              "format": "application/x-ndjson",
              "public_url_field_in_status": null
            },
            "status": {
              "http": "GET",
              "id_source": "Rzeczywista wartość response.id zwrócona przy pierwotnym utworzeniu; ten sam użytkownik, klucz i grupa",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Zachowaj pierwotny identyfikator operacji. Odpowiedź 503 result_pending_check zawiera X-Should-Retry:false; nigdy nie wysyłaj ponownie pierwotnego żądania Batch, którego wynik jest nieznany."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/batches"
          },
          "output": {
            "all_results": "Preserve the full original status JSON, every result/custom_id and complete response or error body. Save completed results[] as JSONL without filtering.",
            "family": "batch",
            "format": "JSON; completed results[] are returned inline and can be saved as JSONL."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Podstawowe stawki za tokeny",
            "units": [
              {
                "amount": "0.00075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000075",
                "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": "0.00375000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000375",
                "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": "0.000075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000075",
                "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": "0.0000833333333333334000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": "0.0000000833333333333334",
                "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": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Przedział długości żądania 1",
            "units": [
              {
                "amount": "0.00075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000075",
                "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": "0.00375000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000375",
                "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": "0.000075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000075",
                "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": "0.0000833333333333334000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": "0.0000000833333333333334",
                "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"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json\nfrom pathlib import Path\nbody=json.loads('{\"endpoint\":\"/v1/chat/completions\",\"model\":\"google/gemini-3.8-flash:batch\",\"requests\":[{\"custom_id\":\"req-0001\",\"body\":{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}],\"max_tokens\":16}}]}')\nPath(\"batch-request.json\").write_text(json.dumps(body,ensure_ascii=False),encoding=\"utf-8\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n",
            "label": "curl · retained fixture",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(\"Customer JSONL file is missing\")\n    items = [json.loads(line) for line in path.read_text(encoding=\"utf-8\").splitlines() if line.strip()]\n    if not items: raise ValueError(\"Customer JSONL contains no requests\")\n    ids = set()\n    for item in items:\n        if set(item) != {\"custom_id\", \"body\"}: raise ValueError(\"Each item needs custom_id and body\")\n        cid = item[\"custom_id\"]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(\"custom_id must be nonempty and unique\")\n        ids.add(cid)\n        if not isinstance(item[\"body\"], dict) or not item[\"body\"].get(\"messages\"): raise ValueError(\"Supply actual text messages\")\n        supplied_model = item[\"body\"].get(\"model\")\n        if supplied_model is not None and supplied_model not in ['google/gemini-3.8-flash:batch', 'google/gemini-3.8-flash']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"google/gemini-3.8-flash:batch\", \"requests\":items}\n\nif __name__ == \"__main__\":\n    material = os.environ.get(\"AILOOT_BATCH_REQUESTS_JSONL\", \"\")\n    if not material: raise SystemExit(\"Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file\")\n    body = prepare_requests(material)\n    key = os.environ.get(\"AILOOT_API_KEY\", \"\")\n    if not key: raise SystemExit(\"Set AILOOT_API_KEY\")\n    request = Request(\"https://api.ailoot.ai/v1/batches\", data=json.dumps(body, ensure_ascii=False).encode(\"utf-8\"), headers={\"Authorization\":\"Bearer \" + key, \"Content-Type\":\"application/json\"}, method=\"POST\")\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(\"batch-create-response.json\").write_bytes(raw)\n        print(raw.decode(\"utf-8\"))\n",
            "label": "Python HTTP · actual customer JSONL",
            "language": "python"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nBATCH_OPERATION_ID=\"$(python3 - <<'PY_ID'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(\"batch-create-response.json\").read_text(encoding=\"utf-8\"))\noperation = response.get(\"id\")\nif not isinstance(operation, str) or not operation: raise SystemExit(\"No actual original operation ID; preserve the response and do not resubmit\")\nprint(quote(operation, safe=\"\"))\nPY_ID\n)\"\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o batch-status-response.json\n",
            "label": "curl · original operation status",
            "language": "bash"
          },
          {
            "code": "import json\nfrom pathlib import Path\nraw = Path(\"batch-status-response.json\").read_bytes()\nresponse = json.loads(raw)\nif response.get(\"status\") != \"completed\":\n    raise SystemExit(\"Keep the original operation; read its status without resubmitting\")\nresults = response.get(\"results\")\nif not isinstance(results, list) or not results:\n    raise SystemExit(\"Preserve the original response; completed results are missing\")\nPath(\"batch-results.jsonl\").write_text(\"\".join(json.dumps(item, ensure_ascii=False) + \"\\n\" for item in results), encoding=\"utf-8\")\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n",
            "label": "Python · save every completed result",
            "language": "python"
          }
        ],
        "family": "batch",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "batches",
        "hints": [
          "Read your actual request items before submission; inline requests are required.",
          "Keep the returned operation ID and every result. Never replay an unknown submission."
        ],
        "http": "POST",
        "in": 0.75,
        "input": [
          "text"
        ],
        "label": "Batch",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 3.75,
        "output": [
          "text"
        ],
        "path": "/v1/batches",
        "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"
          },
          {
            "label": "Explicit cache pricing",
            "value": "Not enabled",
            "when": "When explicit cache is requested"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000075",
                "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": "0.00375000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000375",
                "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": "0.000075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000075",
                "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": "0.0000833333333333334000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": "0.0000000833333333333334",
                "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": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.00075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000075",
                "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": "0.00375000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000375",
                "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": "0.000075000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000075",
                "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": "0.0000833333333333334000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": "0.0000000833333333333334",
                "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"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-3.8-flash:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.075,
            "cache_read_multiplier": null,
            "cache_write": 0.0833333333333334,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.75,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 3.75,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.00075000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000075",
            "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": "0.00375000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000375",
            "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": "0.000075000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": "0.000000075",
            "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": "0.0000833333333333334000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": "0.0000000833333333333334",
            "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"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "google/gemini-3.8-flash:batch",
        "request_model_id": "google/gemini-3.8-flash:batch",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini 3.8 Flash (batch)",
    "price": {
      "in": 0.75,
      "in_label": null,
      "out": 3.75,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.75,
      "sort_out": 3.75,
      "varies": true
    },
    "short": "Gemini 3.8 Flash to wszechstronny multimodalny model Google do długotrwałej pracy nad oprogramowaniem, zadań agentowych i złożonych zadań opartych na wiedzy. Przyjmuje tekst, obrazy, audio, wideo i PDF, zwraca tekst oraz oferuje rozumowanie low, medium lub high z narzędziami i wyjściem strukturalnym. Udokumentowane limity wejścia/wyjścia wynoszą 1,048,576/65,536 tokenów."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Gemini 3.8 Flash to wszechstronny multimodalny model Google do długotrwałej pracy nad oprogramowaniem, zadań agentowych i złożonych zadań opartych na wiedzy. Przyjmuje tekst, obrazy, audio, wideo i PDF, zwraca tekst oraz oferuje rozumowanie low, medium lub high z narzędziami i wyjściem strukturalnym. Udokumentowane limity wejścia/wyjścia wynoszą 1,048,576/65,536 tokenów.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "afa1a5adb64def82b2ba2286de1a39491ccc783394fd85a3e35cdcff4e245c81",
    "renderer_sha256": "1217dcf19a93e99ac1d6fd7bf974dc19adc12fea4bd4470c2601f04e48f688cb"
  },
  "sourceRevision": "8bb369008cad9876c820d3c4a24c105429cb7cc714edd65937f74cb8c57c605e"
}
