{
  "aboutHtml": "<p>Gemini 2.5 Flash-Lite on Googlen vakaa kevyt profiili suurivolyymiseen kääntämiseen, luokitteluun ja yksinkertaiseen tiedonpoimintaan. Sen hybridipäättely voi käyttää ajattelua tai jättää sen pois tehtävän mukaan. Se vastaanottaa tekstiä, kuvia, ääntä, videota ja PDF-aineistoa ja tuottaa tekstiä. Hyödyllinen tulos on luokka, tiivis käännös, annetusta aineistosta poimittu tietue tai rajattu kirjallinen selitys.</p><p>Määritä luokittelulle luokat, päätössääntö ja vastauksen muoto. Säilytä tuloksessa lähdetunniste, kun käsitellään useita erillisiä kohteita. Tukiviestien luokittelussa luokittele tukiviesti ongelmatyypin mukaan ja palauta luokkaa tukeva lause. Sisällytä sääntö puuttuvalle tai epäselvälle näytölle, jotta sujuva vastaus ei täytä pakollista kenttää arvauksella. Mallin kevyt rooli on hyödyllisimmillään, kun syöte ja vaadittu tulos on määritelty selkeästi.</p><p>Ajattelu on oletusarvoisesti pois käytöstä dokumentoidussa 2.5 Flash-Lite -kokoonpanossa. Googlen GenerateContent-ajatteluopas sallii nimenomaisen ajattelubudjetin väliltä 512–24 576 tokenia, nollan ajattelun pitämiseksi pois käytöstä ja arvon -1 dynaamisen ajattelun pyytämiseksi. Nämä ovat päättelybudjetin säätimiä, jotka ovat erillisiä lopulliselle vastaukselle varatusta tilasta. Ota lisäpäättely käyttöön, kun tiedonpoiminnassa on toisiinsa vaikuttavia ehtoja tai luokittelussa poikkeuksia; suoraviivainen muunnos voi säilyttää oletusarvoisen toiminnan ilman ajattelua. Opas huomauttaa, että malli voi käyttää enemmän tai vähemmän ajattelutokeneita kuin pyydetyssä budjetissa.</p><p>Anna käännöstehtävään kohdekieli, yleisö ja säilytettävät termit. Määritä, tuleeko tuloksen sisältää vain käännös vai tunnistein merkitty tietue. Määritä asiakirjojen tiedonpoiminnalle kentät ja pyydä lähdekohdat, joiden avulla tuloste voidaan tarkistaa. Erota tallenteen litterointi yhteenvedosta ja määritä olennainen jakso. Kuvat tai video voivat tarjota näyttöä tekstivastaukseen. Halutun tuotoksen tulee pysyä selkeänä silloinkin, kun syöte yhdistää useita mediatyyppejä.</p><p>Tämän vakaan version taulukko luettelee funktiokutsut, koodin suorittamisen, tiedostohaun, hakutuloksiin ankkuroinnin, Maps-tietoihin ankkuroinnin, URL-kontekstin ja rakenteiset tulosteet. Funktioilla on oltava selkeä tarkoitus ja määritellyt parametrit; liitetty sovellus suorittaa toiminnon ja toimittaa sen tuloksen. Tarkista skeemapohjaisessa tiedonpoiminnassa palautettu rakenne ja vertaa sen arvoja alkuperäiseen aineistoon. Työkalua koskeva päätös tai oikein muodostettu tietue on hyödyllinen vain suhteessa lähteeseen ja todelliseen palautettuun näyttöön.</p><p>Natiivi mallikortti ilmoittaa 1M:n konteksti-ikkunan ja 64K:n tekstitulosteen. API:n mallisivu määrittää 1 048 576 syötetokenia ja 65 536 tulostetokenia. Ohjeet, lähdesisältö ja säilytetty keskustelu kuluttavat syötebudjettia, kun taas päättely ja vastauksen enimmäispituus vaikuttavat lopullisen tuloksen mahtumiseen. Valmistajan tälle profiilille on lueteltu välimuisti sekä Batch-, Flex- ja Priority-käsittely. Säilytä toistuvissa tehtävissä samat luokka- tai kenttämääritelmät ja vie tunnisteet tulokseen asti, jotta myöhempi tarkistus löytää alkuperäisen kohteen.</p><p>Tämä vakaa profiili on erillinen muualla perheen yhteydessä kuvatuista kesäkuun ja syyskuun Preview-muunnelmista. Yhteinen natiivi mallikortti merkitsee syyskuun Preview-parannukset, kuten ohjeiden noudattamisen ja tiiviyden, nimenomaan kyseiselle esiversiolle; niitä ei tule siirtää huomaamatta vakaan version tunnisteelle. Myöhemmät Flash-Lite-sukupolvet käyttävät myös erilaisia ajattelun säätimiä ja ominaisuustaulukoita. Säilytä versio ja valitse sille dokumentoidut asetukset sen sijaan, että korvaisit 2.5-budjetit Gemini 3:n ajattelutasosyntaksilla.</p><p>Mallikortti luettelee hallusinaatiot sekä kausaalisen ymmärtämisen, monimutkaisen loogisen deduktion ja kontrafaktuaalisen päättelyn rajoitukset ja ilmoittaa tietämyksen katkaisukohdaksi tammikuun 2025. Anna ajantasaista näyttöä tai käytä dokumentoitua ankkurointityönkulkua, kun uudemmilla tiedoilla on merkitystä. Tarkista käännösten merkitys, poimittujen kenttien lähdetuki ja litteroinnit ääntä vasten. Kohdennettu, pieni tulos tekee tarkistamisesta käytännöllistä ilman, että viimeisteltyä vastausta pidetään todisteena siitä, että lähde sisälsi väitetyn yksityiskohdan.</p>",
  "aboutText": "Gemini 2.5 Flash-Lite on Googlen vakaa kevyt profiili suurivolyymiseen kääntämiseen, luokitteluun ja yksinkertaiseen tiedonpoimintaan. Sen hybridipäättely voi käyttää ajattelua tai jättää sen pois tehtävän mukaan. Se vastaanottaa tekstiä, kuvia, ääntä, videota ja PDF-aineistoa ja tuottaa tekstiä. Hyödyllinen tulos on luokka, tiivis käännös, annetusta aineistosta poimittu tietue tai rajattu kirjallinen selitys.\n\nMääritä luokittelulle luokat, päätössääntö ja vastauksen muoto. Säilytä tuloksessa lähdetunniste, kun käsitellään useita erillisiä kohteita. Tukiviestien luokittelussa luokittele tukiviesti ongelmatyypin mukaan ja palauta luokkaa tukeva lause. Sisällytä sääntö puuttuvalle tai epäselvälle näytölle, jotta sujuva vastaus ei täytä pakollista kenttää arvauksella. Mallin kevyt rooli on hyödyllisimmillään, kun syöte ja vaadittu tulos on määritelty selkeästi.\n\nAjattelu on oletusarvoisesti pois käytöstä dokumentoidussa 2.5 Flash-Lite -kokoonpanossa. Googlen GenerateContent-ajatteluopas sallii nimenomaisen ajattelubudjetin väliltä 512–24 576 tokenia, nollan ajattelun pitämiseksi pois käytöstä ja arvon -1 dynaamisen ajattelun pyytämiseksi. Nämä ovat päättelybudjetin säätimiä, jotka ovat erillisiä lopulliselle vastaukselle varatusta tilasta. Ota lisäpäättely käyttöön, kun tiedonpoiminnassa on toisiinsa vaikuttavia ehtoja tai luokittelussa poikkeuksia; suoraviivainen muunnos voi säilyttää oletusarvoisen toiminnan ilman ajattelua. Opas huomauttaa, että malli voi käyttää enemmän tai vähemmän ajattelutokeneita kuin pyydetyssä budjetissa.\n\nAnna käännöstehtävään kohdekieli, yleisö ja säilytettävät termit. Määritä, tuleeko tuloksen sisältää vain käännös vai tunnistein merkitty tietue. Määritä asiakirjojen tiedonpoiminnalle kentät ja pyydä lähdekohdat, joiden avulla tuloste voidaan tarkistaa. Erota tallenteen litterointi yhteenvedosta ja määritä olennainen jakso. Kuvat tai video voivat tarjota näyttöä tekstivastaukseen. Halutun tuotoksen tulee pysyä selkeänä silloinkin, kun syöte yhdistää useita mediatyyppejä.\n\nTämän vakaan version taulukko luettelee funktiokutsut, koodin suorittamisen, tiedostohaun, hakutuloksiin ankkuroinnin, Maps-tietoihin ankkuroinnin, URL-kontekstin ja rakenteiset tulosteet. Funktioilla on oltava selkeä tarkoitus ja määritellyt parametrit; liitetty sovellus suorittaa toiminnon ja toimittaa sen tuloksen. Tarkista skeemapohjaisessa tiedonpoiminnassa palautettu rakenne ja vertaa sen arvoja alkuperäiseen aineistoon. Työkalua koskeva päätös tai oikein muodostettu tietue on hyödyllinen vain suhteessa lähteeseen ja todelliseen palautettuun näyttöön.\n\nNatiivi mallikortti ilmoittaa 1M:n konteksti-ikkunan ja 64K:n tekstitulosteen. API:n mallisivu määrittää 1 048 576 syötetokenia ja 65 536 tulostetokenia. Ohjeet, lähdesisältö ja säilytetty keskustelu kuluttavat syötebudjettia, kun taas päättely ja vastauksen enimmäispituus vaikuttavat lopullisen tuloksen mahtumiseen. Valmistajan tälle profiilille on lueteltu välimuisti sekä Batch-, Flex- ja Priority-käsittely. Säilytä toistuvissa tehtävissä samat luokka- tai kenttämääritelmät ja vie tunnisteet tulokseen asti, jotta myöhempi tarkistus löytää alkuperäisen kohteen.\n\nTämä vakaa profiili on erillinen muualla perheen yhteydessä kuvatuista kesäkuun ja syyskuun Preview-muunnelmista. Yhteinen natiivi mallikortti merkitsee syyskuun Preview-parannukset, kuten ohjeiden noudattamisen ja tiiviyden, nimenomaan kyseiselle esiversiolle; niitä ei tule siirtää huomaamatta vakaan version tunnisteelle. Myöhemmät Flash-Lite-sukupolvet käyttävät myös erilaisia ajattelun säätimiä ja ominaisuustaulukoita. Säilytä versio ja valitse sille dokumentoidut asetukset sen sijaan, että korvaisit 2.5-budjetit Gemini 3:n ajattelutasosyntaksilla.\n\nMallikortti luettelee hallusinaatiot sekä kausaalisen ymmärtämisen, monimutkaisen loogisen deduktion ja kontrafaktuaalisen päättelyn rajoitukset ja ilmoittaa tietämyksen katkaisukohdaksi tammikuun 2025. Anna ajantasaista näyttöä tai käytä dokumentoitua ankkurointityönkulkua, kun uudemmilla tiedoilla on merkitystä. Tarkista käännösten merkitys, poimittujen kenttien lähdetuki ja litteroinnit ääntä vasten. Kohdennettu, pieni tulos tekee tarkistamisesta käytännöllistä ilman, että viimeisteltyä vastausta pidetään todisteena siitä, että lähde sisälsi väitetyn yksityiskohdan.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "3dbea7408258aba214ac081d706db800e4be7d489e746822f3a95bf1461767d6",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fi",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">G</span><h2 id=\"sheet-title\">Google: Gemini 2.5 Flash Lite (batch)</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/gemini-2.5-flash-lite:batch</code><button type=\"button\" id=\"copy-id\">Kopioi ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Mallikortin osiot\"><button type=\"button\" data-card-jump=\"overview\">Aloitus</button><button type=\"button\" data-card-jump=\"methods\">Syötteet &amp; menetelmät</button><button type=\"button\" data-card-jump=\"pricing\">Hinnoittelu</button><button type=\"button\" data-card-jump=\"examples\">Esimerkit</button><button type=\"button\" data-card-jump=\"results\">Tulokset</button><button type=\"button\" data-card-jump=\"aliases\">Aliakset</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-menetelmät\"><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-2.5-flash-lite%3Abatch\">Erät</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\">Aloitus</h3><p class=\"mdesc-full\">Gemini 2.5 Flash-Lite on Googlen vakaa multimodaalinen tekstimalli usein toistuvaan luokitteluun, kääntämiseen ja yksinkertaiseen tiedonpoimintaan. Ajattelu on oletusarvoisesti pois käytöstä, ja sen voi ottaa käyttöön 512–24 576 tokenin päättelybudjetilla. Se hyväksyy tekstiä ja mediaa sekä tukee työkaluja ja rakenteista tulostetta; syöteraja on 1 048 576 tokenia.</p><dl class=\"card-io\" data-card-io><div><dt>Hyväksytyt syötteet</dt><dd>Teksti</dd></div><div><dt>Tulokset</dt><dd>Teksti</dd></div></dl><details class=\"card-about\"><summary>Tietoa mallista</summary><p class=\"note-s\" data-model-method-boundary>Tämä kuvaus kattaa mallin ominaisuudet. Ailootissa saatavilla olevat syötteet, tulosteet ja asetukset luetellaan alla valitulle menetelmälle.</p><div class=\"mabout\" id=\"m-about\"><p>Gemini 2.5 Flash-Lite on Googlen vakaa kevyt profiili suurivolyymiseen kääntämiseen, luokitteluun ja yksinkertaiseen tiedonpoimintaan. Sen hybridipäättely voi käyttää ajattelua tai jättää sen pois tehtävän mukaan. Se vastaanottaa tekstiä, kuvia, ääntä, videota ja PDF-aineistoa ja tuottaa tekstiä. Hyödyllinen tulos on luokka, tiivis käännös, annetusta aineistosta poimittu tietue tai rajattu kirjallinen selitys.</p><p>Määritä luokittelulle luokat, päätössääntö ja vastauksen muoto. Säilytä tuloksessa lähdetunniste, kun käsitellään useita erillisiä kohteita. Tukiviestien luokittelussa luokittele tukiviesti ongelmatyypin mukaan ja palauta luokkaa tukeva lause. Sisällytä sääntö puuttuvalle tai epäselvälle näytölle, jotta sujuva vastaus ei täytä pakollista kenttää arvauksella. Mallin kevyt rooli on hyödyllisimmillään, kun syöte ja vaadittu tulos on määritelty selkeästi.</p><p>Ajattelu on oletusarvoisesti pois käytöstä dokumentoidussa 2.5 Flash-Lite -kokoonpanossa. Googlen GenerateContent-ajatteluopas sallii nimenomaisen ajattelubudjetin väliltä 512–24 576 tokenia, nollan ajattelun pitämiseksi pois käytöstä ja arvon -1 dynaamisen ajattelun pyytämiseksi. Nämä ovat päättelybudjetin säätimiä, jotka ovat erillisiä lopulliselle vastaukselle varatusta tilasta. Ota lisäpäättely käyttöön, kun tiedonpoiminnassa on toisiinsa vaikuttavia ehtoja tai luokittelussa poikkeuksia; suoraviivainen muunnos voi säilyttää oletusarvoisen toiminnan ilman ajattelua. Opas huomauttaa, että malli voi käyttää enemmän tai vähemmän ajattelutokeneita kuin pyydetyssä budjetissa.</p><p>Anna käännöstehtävään kohdekieli, yleisö ja säilytettävät termit. Määritä, tuleeko tuloksen sisältää vain käännös vai tunnistein merkitty tietue. Määritä asiakirjojen tiedonpoiminnalle kentät ja pyydä lähdekohdat, joiden avulla tuloste voidaan tarkistaa. Erota tallenteen litterointi yhteenvedosta ja määritä olennainen jakso. Kuvat tai video voivat tarjota näyttöä tekstivastaukseen. Halutun tuotoksen tulee pysyä selkeänä silloinkin, kun syöte yhdistää useita mediatyyppejä.</p><p>Tämän vakaan version taulukko luettelee funktiokutsut, koodin suorittamisen, tiedostohaun, hakutuloksiin ankkuroinnin, Maps-tietoihin ankkuroinnin, URL-kontekstin ja rakenteiset tulosteet. Funktioilla on oltava selkeä tarkoitus ja määritellyt parametrit; liitetty sovellus suorittaa toiminnon ja toimittaa sen tuloksen. Tarkista skeemapohjaisessa tiedonpoiminnassa palautettu rakenne ja vertaa sen arvoja alkuperäiseen aineistoon. Työkalua koskeva päätös tai oikein muodostettu tietue on hyödyllinen vain suhteessa lähteeseen ja todelliseen palautettuun näyttöön.</p><p>Natiivi mallikortti ilmoittaa 1M:n konteksti-ikkunan ja 64K:n tekstitulosteen. API:n mallisivu määrittää 1 048 576 syötetokenia ja 65 536 tulostetokenia. Ohjeet, lähdesisältö ja säilytetty keskustelu kuluttavat syötebudjettia, kun taas päättely ja vastauksen enimmäispituus vaikuttavat lopullisen tuloksen mahtumiseen. Valmistajan tälle profiilille on lueteltu välimuisti sekä Batch-, Flex- ja Priority-käsittely. Säilytä toistuvissa tehtävissä samat luokka- tai kenttämääritelmät ja vie tunnisteet tulokseen asti, jotta myöhempi tarkistus löytää alkuperäisen kohteen.</p><p>Tämä vakaa profiili on erillinen muualla perheen yhteydessä kuvatuista kesäkuun ja syyskuun Preview-muunnelmista. Yhteinen natiivi mallikortti merkitsee syyskuun Preview-parannukset, kuten ohjeiden noudattamisen ja tiiviyden, nimenomaan kyseiselle esiversiolle; niitä ei tule siirtää huomaamatta vakaan version tunnisteelle. Myöhemmät Flash-Lite-sukupolvet käyttävät myös erilaisia ajattelun säätimiä ja ominaisuustaulukoita. Säilytä versio ja valitse sille dokumentoidut asetukset sen sijaan, että korvaisit 2.5-budjetit Gemini 3:n ajattelutasosyntaksilla.</p><p>Mallikortti luettelee hallusinaatiot sekä kausaalisen ymmärtämisen, monimutkaisen loogisen deduktion ja kontrafaktuaalisen päättelyn rajoitukset ja ilmoittaa tietämyksen katkaisukohdaksi tammikuun 2025. Anna ajantasaista näyttöä tai käytä dokumentoitua ankkurointityönkulkua, kun uudemmilla tiedoilla on merkitystä. Tarkista käännösten merkitys, poimittujen kenttien lähdetuki ja litteroinnit ääntä vasten. Kohdennettu, pieni tulos tekee tarkistamisesta käytännöllistä ilman, että viimeisteltyä vastausta pidetään todisteena siitä, että lähde sisälsi väitetyn yksityiskohdan.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Saatavilla Ailootissa · syötteet &amp; menetelmät</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Eräajo</b> <code>POST /v1/batches</code></summary><dl class=\"method-capabilities\"><div><dt>Syötetyypit</dt><dd><code>text</code></dd></div><div><dt>Tulostyypit</dt><dd><code>text</code></dd></div><div><dt>Tulosteen muoto</dt><dd>vastaukseen sisältyvä JSON kentässä results[].response.body</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kenttä</th><th>Tyyppi</th><th>Vaatimus</th><th>Arvot &amp; rajat</th><th>Oletus</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>/v1/chat/completions</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>google/gemini-2.5-flash-lite:batch</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">requests</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>batch_item[]</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Kohteiden vähimmäismäärä: 1</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">requests[].custom_id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">requests[].body.messages</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>message[]</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">completion_window</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>24h</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>object|null</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">requests[].body.model</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>google/gemini-2.5-flash-lite:batch, google/gemini-2.5-flash-lite</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">provider.only</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string[]</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>google-ai-studio</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">provider.allow_fallbacks</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>boolean|null</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>false, null</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Menetelmän parametrit ja elinkaari</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametri</th><th>Sopimus</th></tr></thead><tbody><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>content_type</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>application/json</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>required</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>endpoint, model, requests</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>material_types</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>text</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>representation</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>pyyntöön sisältyvä requests[]; jokaisella alkiolla on custom_id ja body</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>request_endpoint_profile</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>/v1/chat/completions</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>file_material</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>Kutsuja voi lukea todellisen UTF-8 JSONL -aineiston paikallisesti requests[]-taulukkoon. Latauksen purpose-arvoa, input_file_id-arvoa tai tiedostoviitettä ei käytetä. Puuttuva tai tyhjä asiakkaan aineisto keskeyttää valmistelun ennen POST-pyyntöä.</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>serialization_order</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>endpoint, model, provider (jos annettu), completion_window (jos annettu), requests viimeisenä</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>optional_controls</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>provider.only, provider.allow_fallbacks, completion_window</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>schema_scope</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>Tekstimuotoiset Chat Completions -pyyntörungot dokumentoidussa pyyntöön sisältyvässä Batch-kääreessä.</td></tr></tbody></table></div><p>Elinkaari: <code>asynchronous</code></p><p class=\"note-s\"><code>GET /v1/batches/{operation_id}</code> · alkuperäisen luontivastauksen todellinen response.id; sama käyttäjä, avain ja ryhmä</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Hinnoittelu</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Hintatiedot eivät lisää pyyntövalintoja. Tuetut parametrit on lueteltu valitulle menetelmälle.</p><dl data-price-conditions><dt>Nopea tila</dt><dd>Ei määritetty <span class=\"note-s\">Kun nopea tila on valittu</span></dd><dt>Flex-tila</dt><dd>Ei määritetty <span class=\"note-s\">Kun flex-tila on valittu</span></dd><dt>Päättelyn enimmäisteho</dt><dd>Ei määritetty <span class=\"note-s\">Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä</span></dd><dt>Eksplisiittisen välimuistin hinnoittelu</dt><dd>Ei käytössä <span class=\"note-s\">Kun eksplisiittistä välimuistia pyydetään</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-hinnat</h4><h4>Hinnat asetusten mukaan</h4><p class=\"note-s\">Kohdista kukin veloitus näytettyihin ehtoihin. Käytä yhtä hintaa kutakin vaihtoehtoisten asetusten ryhmää kohden.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Asetukset</th><th>Hinnasto</th><th>Kontekstin tokenit, enemmän kuin</th><th>Kontekstin tokenit, enintään raja-arvo mukaan lukien</th><th>Veloitus</th></tr></thead><tbody><tr><th data-cell-label=\"Asetukset\" scope=\"row\"><span class=\"card-cell-label\">Asetukset</span>Tokenien perushinnat</th><td data-cell-label=\"Hinnasto\"><span class=\"card-cell-label\">Hinnasto</span>Perushinta</td><td data-cell-label=\"Kontekstin tokenit, enemmän kuin\"><span class=\"card-cell-label\">Kontekstin tokenit, enemmän kuin</span>—</td><td data-cell-label=\"Kontekstin tokenit, enintään raja-arvo mukaan lukien\"><span class=\"card-cell-label\">Kontekstin tokenit, enintään raja-arvo mukaan lukien</span>Ei ylärajaa</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Syöte · Syötetokenit</span> <b>$0.0001</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Tuloste · Tulostokenit</span> <b>$0.0004</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistin luku</span> <b>$0.00002</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus, 1 tunti</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div></td></tr><tr><th data-cell-label=\"Asetukset\" scope=\"row\"><span class=\"card-cell-label\">Asetukset</span>Pyynnön pituusluokka 1</th><td data-cell-label=\"Hinnasto\"><span class=\"card-cell-label\">Hinnasto</span>—</td><td data-cell-label=\"Kontekstin tokenit, enemmän kuin\"><span class=\"card-cell-label\">Kontekstin tokenit, enemmän kuin</span>0</td><td data-cell-label=\"Kontekstin tokenit, enintään raja-arvo mukaan lukien\"><span class=\"card-cell-label\">Kontekstin tokenit, enintään raja-arvo mukaan lukien</span>Ei ylärajaa</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Syöte · Syötetokenit</span> <b>$0.0001</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Tuloste · Tulostokenit</span> <b>$0.0004</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistin luku</span> <b>$0.00002</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus, 1 tunti</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. <a href=\"/docs/fi/billing/reserve/\">Varauksen ja lopullisen veloituksen toiminta →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esimerkkipyynnöt</h3><h4>Ailoot Ultra · Eräajo</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Koodivaihtoehdot\"><button class=\"cg-tab\" id=\"model-code-1440-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1440-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · säilytetty testiaineisto</button><button class=\"cg-tab\" id=\"model-code-1440-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1440-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python HTTP · asiakkaan todellinen JSONL-aineisto</button><button class=\"cg-tab\" id=\"model-code-1440-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1440-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Python · tallenna jokainen valmistunut tulos</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopioi koodi\"><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-1440-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1440-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-2.5-flash-lite: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-1440-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1440-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-2.5-flash-lite:batch&#39;, &#39;google/gemini-2.5-flash-lite&#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-2.5-flash-lite: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-1440-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1440-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\">Vastaanota ja tallenna tulokset</h3><h4>Ailoot Ultra · Eräajo</h4><p class=\"note-s\">vastaukseen sisältyvä JSON kentässä results[].response.body</p><ul class=\"card-result-paths\"><li><code>GET /v1/batches/{operation_id}</code></li></ul><h5>Tarkista työn tila</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Koodivaihtoehdot\"><button class=\"cg-tab\" id=\"model-code-1441-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1441-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · alkuperäisen toiminnon tila</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopioi koodi\"><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-1441-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1441-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>Säilytä kaikki valmistuneet tulokset</h5><p class=\"note-s\">Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.</p><p class=\"note-s\">Säilytä koko alkuperäinen tilatiedot sisältävä JSON, jokainen tulos ja custom_id sekä täydellinen vastaus- tai virherunko. Tallenna valmistuneet results[]-tulokset JSONL-muodossa suodattamatta.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jos alkuperäinen vastaus on tarkistettava</h5><p class=\"note-s\">Säilytä alkuperäinen operaation ID. 503 result_pending_check sisältää otsakkeen X-Should-Retry:false; älä koskaan lähetä uudelleen alkuperäistä eräajoa, jonka tila on tuntematon.</p></div><details class=\"card-about\" data-output-fields><summary>Vastauksen kentät</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Kenttä</th><th>Tyyppi</th></tr></thead><tbody><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">results[].custom_id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">results[].response.body.choices[].message.content</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string|null</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">results[].error</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>object|null</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>object|null</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">request_counts</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>object</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">results[].id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">results[].response.status_code</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>integer</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">results[].response.request_id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Virheet ja seuraavat vaiheet</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Vastaus</th><th>Ehto</th><th>Seuraava vaihe</th></tr></thead><tbody><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Dokumentoitu pyyntöön sisältyvä kääre on virheellinen, avaimet ovat päällekkäisiä, alkion identiteetti on virheellinen tai määritetyt mallin ominaisuudet ovat ristiriidassa.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Korjaa ilmoitetut kentät ennen uutta lähetystä.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Virheellinen API-avain.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Käytä valtuutettua Ailoot-avainta.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>403 · <code>permission_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Eräajoryhmä ei ole käytettävissä.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Tarkista avaimen ja ryhmän käyttöoikeudet.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Eräajo laskutetaan saldosta; tilauspohjaisella laskutuksella tehty eräajon luontipyyntö hylätään.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Käytä valtuutettua saldosta laskutettavaa ryhmää.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Eräajon syötteelle ei voida laskea hinta-arviota.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Säilytä vastaus; käytä dokumentoitua API-perheen syötettä.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>402 · <code>billing_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Eräajon varaus ei ole käytettävissä.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Poista pyynnön hyväksymisen esteet ennen uutta pyyntöä.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>503 · <code>price_unavailable</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Eräajomenetelmän hinta tai natiivit hinnat eivät ole käytettävissä.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Säilytä vastaus; älä korvaa hintoja toisilla.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>503 · <code>api_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Täsmällinen toimittajan reitti ei ole käytettävissä.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Säilytä vastaus reitin korjaamista varten.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Alkuperäinen tulos edellyttää tarkistusta; X-Should-Retry:false.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Säilytä alkuperäinen operation_id/id ja lue sen tila; älä koskaan toista alkuperäistä POST-pyyntöä.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>404 · <code>not_found</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Eräajon tilan operaatiota ei ole tai se kuuluu toiselle identiteetille.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Käytä täsmälleen alkuperäistä id-arvoa sekä samaa käyttäjää, avainta ja ryhmää.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliakset</h3><h4>Mallin aliakset</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=google%2Fgemini-2.5-flash-lite%3Abatch&amp;route=Ultra&amp;caller=google%2Fgemini-2.5-flash-lite%3Abatch&amp;fmt=batches\"><code>google/gemini-2.5-flash-lite:batch</code></a></span></p><h4>Menetelmäpolkujen aliakset</h4><p class=\"note-s\">Käytä yllä näytettyjä menetelmäpolkuja.</p><h4>Liittyvät kutsujan ID:t</h4><p class=\"note-s\"><a href=\"#m=google%2Fgemini-2.5-flash-lite%3Abatch&amp;route=Ultra&amp;caller=google%2Fgemini-2.5-flash-lite%3Abatch&amp;fmt=batches\"><code>google/gemini-2.5-flash-lite:batch</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-2.5-flash-lite:batch",
        "fmt": "batches",
        "http": "POST",
        "path": "/v1/batches",
        "request_model_id": "google/gemini-2.5-flash-lite:batch",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|batches|/v1/batches|google%2Fgemini-2.5-flash-lite%3Abatch",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": 0.02,
        "cache_write": null,
        "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": "Dokumentoitu pyyntöön sisältyvä kääre on virheellinen, avaimet ovat päällekkäisiä, alkion identiteetti on virheellinen tai määritetyt mallin ominaisuudet ovat ristiriidassa.",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät ennen uutta lähetystä.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Virheellinen API-avain.",
                "http_status": 401,
                "recovery": "Käytä valtuutettua Ailoot-avainta.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Eräajoryhmä ei ole käytettävissä.",
                "http_status": 403,
                "recovery": "Tarkista avaimen ja ryhmän käyttöoikeudet.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Eräajo laskutetaan saldosta; tilauspohjaisella laskutuksella tehty eräajon luontipyyntö hylätään.",
                "http_status": 422,
                "recovery": "Käytä valtuutettua saldosta laskutettavaa ryhmää.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Eräajon syötteelle ei voida laskea hinta-arviota.",
                "http_status": 422,
                "recovery": "Säilytä vastaus; käytä dokumentoitua API-perheen syötettä.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Eräajon varaus ei ole käytettävissä.",
                "http_status": 402,
                "recovery": "Poista pyynnön hyväksymisen esteet ennen uutta pyyntöä.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Eräajomenetelmän hinta tai natiivit hinnat eivät ole käytettävissä.",
                "http_status": 503,
                "recovery": "Säilytä vastaus; älä korvaa hintoja toisilla.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Täsmällinen toimittajan reitti ei ole käytettävissä.",
                "http_status": 503,
                "recovery": "Säilytä vastaus reitin korjaamista varten.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Alkuperäinen tulos edellyttää tarkistusta; X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Säilytä alkuperäinen operation_id/id ja lue sen tila; älä koskaan toista alkuperäistä POST-pyyntöä.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Eräajon tilan operaatiota ei ole tai se kuuluu toiselle identiteetille.",
                "http_status": 404,
                "recovery": "Käytä täsmälleen alkuperäistä id-arvoa sekä samaa käyttäjää, avainta ja ryhmää.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "google/gemini-2.5-flash-lite: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": "Säilytä koko alkuperäinen tilatiedot sisältävä JSON, jokainen tulos ja custom_id sekä täydellinen vastaus- tai virherunko. Tallenna valmistuneet results[]-tulokset JSONL-muodossa suodattamatta.",
              "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": "vastaukseen sisältyvä JSON kentässä 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-2.5-flash-lite: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-2.5-flash-lite:batch",
                  "google/gemini-2.5-flash-lite"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "google-ai-studio"
                  ]
                ],
                "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-ai-studio"
              ],
              "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-2.5-flash-lite:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "google-ai-studio"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "google-ai-studio"
                        ],
                        "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-2.5-flash-lite:batch",
                              "google/gemini-2.5-flash-lite"
                            ],
                            "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-2.5-flash-lite: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": "Kutsuja voi lukea todellisen UTF-8 JSONL -aineiston paikallisesti requests[]-taulukkoon. Latauksen purpose-arvoa, input_file_id-arvoa tai tiedostoviitettä ei käytetä. Puuttuva tai tyhjä asiakkaan aineisto keskeyttää valmistelun ennen POST-pyyntöä.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "pyyntöön sisältyvä requests[]; jokaisella alkiolla on custom_id ja body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Tekstimuotoiset Chat Completions -pyyntörungot dokumentoidussa pyyntöön sisältyvässä Batch-kääreessä.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (jos annettu)",
              "completion_window (jos annettu)",
              "requests viimeisenä"
            ]
          },
          "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": "alkuperäisen luontivastauksen todellinen response.id; sama käyttäjä, avain ja ryhmä",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Säilytä alkuperäinen operaation ID. 503 result_pending_check sisältää otsakkeen X-Should-Retry:false; älä koskaan lähetä uudelleen alkuperäistä eräajoa, jonka tila on tuntematon."
          },
          "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": "Tokenien perushinnat",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.00002000",
                "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.00000002",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Pyynnön pituusluokka 1",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.00002000",
                "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.00000002",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "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-2.5-flash-lite: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-2.5-flash-lite:batch', 'google/gemini-2.5-flash-lite']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"google/gemini-2.5-flash-lite: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.1,
        "input": [
          "text"
        ],
        "label": "Eräajo",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0.4,
        "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.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.00002000",
                "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.00000002",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.00002000",
                "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.00000002",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-2.5-flash-lite:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.02,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.1,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 0.4,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000001",
            "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.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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.00002000",
            "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.00000002",
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "google/gemini-2.5-flash-lite:batch",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "0016803cb8ec343051587933b90d5d9d8da9e9c7e2d4184cc074b4e0abe88c19",
    "input_html_sha256": "ec431918e6321d2c8fb544c965a44cc1e676eb7ad8ba01993e48141ddc49d143",
    "private_audit_sha256": "5a1147dc35bee7d66c712129b0a8fe6a5448e8e99e8de80ac0bb002b6a6082b3",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/google-gemini-2-5-flash-lite-u003a-batch/",
    "description": "Gemini 2.5 Flash-Lite on Googlen vakaa multimodaalinen tekstimalli usein toistuvaan luokitteluun, kääntämiseen ja yksinkertaiseen tiedonpoimintaan. Ajattelu on oletusarvoisesti pois käytöstä, ja sen voi ottaa käyttöön 512–24 576 tokenin päättelybudjetilla. Se hyväksyy tekstiä ja mediaa sekä tukee työkaluja ja rakenteista tulostetta; syöteraja on 1 048 576 tokenia.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/google-gemini-2-5-flash-lite-u003a-batch/index.md",
    "title": "Google: Gemini 2.5 Flash Lite (batch) — Ailoot",
    "url": "https://ailoot.ai/models/fi/google-gemini-2-5-flash-lite-u003a-batch/"
  },
  "rawModel": {
    "about": "Gemini 2.5 Flash-Lite on Googlen vakaa kevyt profiili suurivolyymiseen kääntämiseen, luokitteluun ja yksinkertaiseen tiedonpoimintaan. Sen hybridipäättely voi käyttää ajattelua tai jättää sen pois tehtävän mukaan. Se vastaanottaa tekstiä, kuvia, ääntä, videota ja PDF-aineistoa ja tuottaa tekstiä. Hyödyllinen tulos on luokka, tiivis käännös, annetusta aineistosta poimittu tietue tai rajattu kirjallinen selitys.\n\nMääritä luokittelulle luokat, päätössääntö ja vastauksen muoto. Säilytä tuloksessa lähdetunniste, kun käsitellään useita erillisiä kohteita. Tukiviestien luokittelussa luokittele tukiviesti ongelmatyypin mukaan ja palauta luokkaa tukeva lause. Sisällytä sääntö puuttuvalle tai epäselvälle näytölle, jotta sujuva vastaus ei täytä pakollista kenttää arvauksella. Mallin kevyt rooli on hyödyllisimmillään, kun syöte ja vaadittu tulos on määritelty selkeästi.\n\nAjattelu on oletusarvoisesti pois käytöstä dokumentoidussa 2.5 Flash-Lite -kokoonpanossa. Googlen GenerateContent-ajatteluopas sallii nimenomaisen ajattelubudjetin väliltä 512–24 576 tokenia, nollan ajattelun pitämiseksi pois käytöstä ja arvon -1 dynaamisen ajattelun pyytämiseksi. Nämä ovat päättelybudjetin säätimiä, jotka ovat erillisiä lopulliselle vastaukselle varatusta tilasta. Ota lisäpäättely käyttöön, kun tiedonpoiminnassa on toisiinsa vaikuttavia ehtoja tai luokittelussa poikkeuksia; suoraviivainen muunnos voi säilyttää oletusarvoisen toiminnan ilman ajattelua. Opas huomauttaa, että malli voi käyttää enemmän tai vähemmän ajattelutokeneita kuin pyydetyssä budjetissa.\n\nAnna käännöstehtävään kohdekieli, yleisö ja säilytettävät termit. Määritä, tuleeko tuloksen sisältää vain käännös vai tunnistein merkitty tietue. Määritä asiakirjojen tiedonpoiminnalle kentät ja pyydä lähdekohdat, joiden avulla tuloste voidaan tarkistaa. Erota tallenteen litterointi yhteenvedosta ja määritä olennainen jakso. Kuvat tai video voivat tarjota näyttöä tekstivastaukseen. Halutun tuotoksen tulee pysyä selkeänä silloinkin, kun syöte yhdistää useita mediatyyppejä.\n\nTämän vakaan version taulukko luettelee funktiokutsut, koodin suorittamisen, tiedostohaun, hakutuloksiin ankkuroinnin, Maps-tietoihin ankkuroinnin, URL-kontekstin ja rakenteiset tulosteet. Funktioilla on oltava selkeä tarkoitus ja määritellyt parametrit; liitetty sovellus suorittaa toiminnon ja toimittaa sen tuloksen. Tarkista skeemapohjaisessa tiedonpoiminnassa palautettu rakenne ja vertaa sen arvoja alkuperäiseen aineistoon. Työkalua koskeva päätös tai oikein muodostettu tietue on hyödyllinen vain suhteessa lähteeseen ja todelliseen palautettuun näyttöön.\n\nNatiivi mallikortti ilmoittaa 1M:n konteksti-ikkunan ja 64K:n tekstitulosteen. API:n mallisivu määrittää 1 048 576 syötetokenia ja 65 536 tulostetokenia. Ohjeet, lähdesisältö ja säilytetty keskustelu kuluttavat syötebudjettia, kun taas päättely ja vastauksen enimmäispituus vaikuttavat lopullisen tuloksen mahtumiseen. Valmistajan tälle profiilille on lueteltu välimuisti sekä Batch-, Flex- ja Priority-käsittely. Säilytä toistuvissa tehtävissä samat luokka- tai kenttämääritelmät ja vie tunnisteet tulokseen asti, jotta myöhempi tarkistus löytää alkuperäisen kohteen.\n\nTämä vakaa profiili on erillinen muualla perheen yhteydessä kuvatuista kesäkuun ja syyskuun Preview-muunnelmista. Yhteinen natiivi mallikortti merkitsee syyskuun Preview-parannukset, kuten ohjeiden noudattamisen ja tiiviyden, nimenomaan kyseiselle esiversiolle; niitä ei tule siirtää huomaamatta vakaan version tunnisteelle. Myöhemmät Flash-Lite-sukupolvet käyttävät myös erilaisia ajattelun säätimiä ja ominaisuustaulukoita. Säilytä versio ja valitse sille dokumentoidut asetukset sen sijaan, että korvaisit 2.5-budjetit Gemini 3:n ajattelutasosyntaksilla.\n\nMallikortti luettelee hallusinaatiot sekä kausaalisen ymmärtämisen, monimutkaisen loogisen deduktion ja kontrafaktuaalisen päättelyn rajoitukset ja ilmoittaa tietämyksen katkaisukohdaksi tammikuun 2025. Anna ajantasaista näyttöä tai käytä dokumentoitua ankkurointityönkulkua, kun uudemmilla tiedoilla on merkitystä. Tarkista käännösten merkitys, poimittujen kenttien lähdetuki ja litteroinnit ääntä vasten. Kohdennettu, pieni tulos tekee tarkistamisesta käytännöllistä ilman, että viimeisteltyä vastausta pidetään todisteena siitä, että lähde sisälsi väitetyn yksityiskohdan.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 1048576,
      "manufacturer_input": [
        "text",
        "image",
        "file",
        "audio",
        "video"
      ],
      "manufacturer_output": [
        "text"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000001",
            "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.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "Konfiguraation täydet hintatiedot lisätiedoissa."
      }
    ],
    "ctx": null,
    "formats": [
      "batches"
    ],
    "id": "google/gemini-2.5-flash-lite:batch",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": 0.02,
        "cache_write": null,
        "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": "Dokumentoitu pyyntöön sisältyvä kääre on virheellinen, avaimet ovat päällekkäisiä, alkion identiteetti on virheellinen tai määritetyt mallin ominaisuudet ovat ristiriidassa.",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät ennen uutta lähetystä.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Virheellinen API-avain.",
                "http_status": 401,
                "recovery": "Käytä valtuutettua Ailoot-avainta.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Eräajoryhmä ei ole käytettävissä.",
                "http_status": 403,
                "recovery": "Tarkista avaimen ja ryhmän käyttöoikeudet.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Eräajo laskutetaan saldosta; tilauspohjaisella laskutuksella tehty eräajon luontipyyntö hylätään.",
                "http_status": 422,
                "recovery": "Käytä valtuutettua saldosta laskutettavaa ryhmää.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Eräajon syötteelle ei voida laskea hinta-arviota.",
                "http_status": 422,
                "recovery": "Säilytä vastaus; käytä dokumentoitua API-perheen syötettä.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Eräajon varaus ei ole käytettävissä.",
                "http_status": 402,
                "recovery": "Poista pyynnön hyväksymisen esteet ennen uutta pyyntöä.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Eräajomenetelmän hinta tai natiivit hinnat eivät ole käytettävissä.",
                "http_status": 503,
                "recovery": "Säilytä vastaus; älä korvaa hintoja toisilla.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Täsmällinen toimittajan reitti ei ole käytettävissä.",
                "http_status": 503,
                "recovery": "Säilytä vastaus reitin korjaamista varten.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Alkuperäinen tulos edellyttää tarkistusta; X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Säilytä alkuperäinen operation_id/id ja lue sen tila; älä koskaan toista alkuperäistä POST-pyyntöä.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Eräajon tilan operaatiota ei ole tai se kuuluu toiselle identiteetille.",
                "http_status": 404,
                "recovery": "Käytä täsmälleen alkuperäistä id-arvoa sekä samaa käyttäjää, avainta ja ryhmää.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "google/gemini-2.5-flash-lite: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": "Säilytä koko alkuperäinen tilatiedot sisältävä JSON, jokainen tulos ja custom_id sekä täydellinen vastaus- tai virherunko. Tallenna valmistuneet results[]-tulokset JSONL-muodossa suodattamatta.",
              "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": "vastaukseen sisältyvä JSON kentässä 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-2.5-flash-lite: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-2.5-flash-lite:batch",
                  "google/gemini-2.5-flash-lite"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "google-ai-studio"
                  ]
                ],
                "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-ai-studio"
              ],
              "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-2.5-flash-lite:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "google-ai-studio"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "google-ai-studio"
                        ],
                        "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-2.5-flash-lite:batch",
                              "google/gemini-2.5-flash-lite"
                            ],
                            "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-2.5-flash-lite: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": "Kutsuja voi lukea todellisen UTF-8 JSONL -aineiston paikallisesti requests[]-taulukkoon. Latauksen purpose-arvoa, input_file_id-arvoa tai tiedostoviitettä ei käytetä. Puuttuva tai tyhjä asiakkaan aineisto keskeyttää valmistelun ennen POST-pyyntöä.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "pyyntöön sisältyvä requests[]; jokaisella alkiolla on custom_id ja body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Tekstimuotoiset Chat Completions -pyyntörungot dokumentoidussa pyyntöön sisältyvässä Batch-kääreessä.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (jos annettu)",
              "completion_window (jos annettu)",
              "requests viimeisenä"
            ]
          },
          "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": "alkuperäisen luontivastauksen todellinen response.id; sama käyttäjä, avain ja ryhmä",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Säilytä alkuperäinen operaation ID. 503 result_pending_check sisältää otsakkeen X-Should-Retry:false; älä koskaan lähetä uudelleen alkuperäistä eräajoa, jonka tila on tuntematon."
          },
          "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": "Tokenien perushinnat",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.00002000",
                "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.00000002",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Pyynnön pituusluokka 1",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.00002000",
                "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.00000002",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "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-2.5-flash-lite: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-2.5-flash-lite:batch', 'google/gemini-2.5-flash-lite']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"google/gemini-2.5-flash-lite: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.1,
        "input": [
          "text"
        ],
        "label": "Eräajo",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0.4,
        "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.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.00002000",
                "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.00000002",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.00002000",
                "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.00000002",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-2.5-flash-lite:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.02,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.1,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 0.4,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000001",
            "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.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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.00002000",
            "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.00000002",
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "google/gemini-2.5-flash-lite:batch",
        "request_model_id": "google/gemini-2.5-flash-lite:batch",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini 2.5 Flash Lite (batch)",
    "price": {
      "in": 0.1,
      "in_label": null,
      "out": 0.4,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.1,
      "sort_out": 0.4,
      "varies": true
    },
    "short": "Gemini 2.5 Flash-Lite on Googlen vakaa multimodaalinen tekstimalli usein toistuvaan luokitteluun, kääntämiseen ja yksinkertaiseen tiedonpoimintaan. Ajattelu on oletusarvoisesti pois käytöstä, ja sen voi ottaa käyttöön 512–24 576 tokenin päättelybudjetilla. Se hyväksyy tekstiä ja mediaa sekä tukee työkaluja ja rakenteista tulostetta; syöteraja on 1 048 576 tokenia."
  },
  "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 2.5 Flash-Lite on Googlen vakaa multimodaalinen tekstimalli usein toistuvaan luokitteluun, kääntämiseen ja yksinkertaiseen tiedonpoimintaan. Ajattelu on oletusarvoisesti pois käytöstä, ja sen voi ottaa käyttöön 512–24 576 tokenin päättelybudjetilla. Se hyväksyy tekstiä ja mediaa sekä tukee työkaluja ja rakenteista tulostetta; syöteraja on 1 048 576 tokenia.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "c0cf5a31b756356333e95c96bc36b4768f3b4b85f86be5383d9b417f26fb9b6e",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "9ecbfa22dbdafa2a59c9426d7d5852080ccd16cc2c2465913c8a62f38742bf0e"
}
