Source: https://ailoot.ai/models/nb/gemini-2-5-flash-lite/
Canonical: https://ailoot.ai/models/nb/gemini-2-5-flash-lite/
Language: nb

# Google: Gemini 2.5 Flash Lite

[Markdown](https://ailoot.ai/models/nb/gemini-2-5-flash-lite/index.md) · [JSON](https://ailoot.ai/models/nb/gemini-2-5-flash-lite/facts.json)

## [Google: Gemini 2.5 Flash Lite](https://ailoot.ai/models/nb/gemini-2-5-flash-lite/)

Gemini 2.5 Flash-Lite er Googles stabile multimodale tekstmodell for hyppig klassifisering, oversettelse og enkel uthenting. Tenking er avslått som standard og kan aktiveres med et resonneringsbudsjett på 512–24,576 tokener. Den tar imot tekst og medier, med verktøy, strukturerte utdata og en inndatagrense på 1,048,576 tokener.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/gemini-2-5-flash-lite/#method-0)
- [**Ailoot · Gemini generateContent** `POST /v1beta/models/{model}:generateContent` `gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/gemini-2-5-flash-lite/#method-1)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/gemini-2-5-flash-lite/#method-2)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/gemini-2-5-flash-lite/#method-3)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/gemini-2-5-flash-lite/#method-4)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/gemini-2-5-flash-lite/#method-5)

Om modellen

Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.

Gemini 2.5 Flash-Lite er Googles stabile lettvektsprofil for oversettelse, klassifisering og enkel datauthenting i store volumer. Den hybride resonneringen kan bruke eller utelate tenking etter oppgaven. Den tar imot tekst, bilder, lyd, video og PDF og produserer tekst. Et nyttig resultat er en kategori, en kortfattet oversettelse, en oppføring hentet fra innsendt materiale eller en avgrenset skriftlig forklaring.

Ved klassifisering bør du definere kategoriene, beslutningsregelen og svarformen. Behold kildeidentifikatoren i resultatet når flere uavhengige elementer behandles. Ved klassifisering av kundestøttemeldinger kan du klassifisere en melding etter problemtype og returnere setningen som underbygger kategorien. Ta med en regel for manglende eller tvetydig underlag, slik at et velformulert svar ikke fyller et obligatorisk felt med en gjetning. Modellens lettvektsrolle er mest nyttig når inndataene og det påkrevde resultatet er tydelig angitt.

Tenking er avslått som standard i den dokumenterte konfigurasjonen for 2.5 Flash-Lite. Googles GenerateContent-veiledning for tenking tillater et eksplisitt tenkebudsjett fra 512 til 24,576 tokener, null for å beholde tenking avslått og -1 for å be om dynamisk tenking. Dette er innstillinger for resonneringsbudsjett, atskilt fra rammen for sluttsvaret. Aktiver ekstra resonnering når en uthenting har gjensidig avhengige betingelser eller en klassifisering har unntak; en enkel konvertering kan beholde standardvirkemåten uten tenking. Veiledningen bemerker at modellen kan bruke flere eller færre tenketokener enn det forespurte budsjettet.

Ved oversettelse bør du oppgi målspråket, målgruppen og termene som skal beholdes. Angi om resultatet bare skal inneholde oversettelsen eller en merket oppføring. Ved uthenting fra dokumenter bør du definere feltene og be om kildeavsnitt som gjør det mulig å kontrollere utdataene. For et opptak bør du skille mellom transkripsjon og oppsummering og angi passasjen som er viktig. Bilder eller video kan bidra med underlag for et tekstsvar. Den ønskede leveransen bør være tydelig også når inndataene kombinerer flere medietyper.

Den konkrete tabellen for den stabile utgaven oppgir funksjonskall, kodekjøring, filsøk, søkeforankring, Maps-forankring, URL-kontekst og strukturerte utdata. Funksjoner trenger et tydelig formål og definerte parametere; den tilkoblede applikasjonen utfører operasjonen og leverer resultatet. Ved skjemabasert uthenting bør du validere den returnerte strukturen og sammenligne verdiene med originalmaterialet. Et verktøyvalg eller en velformet oppføring er bare nyttig i sammenheng med kilden og det faktiske returnerte underlaget.

Det underliggende modellkortet oppgir et kontekstvindu på 1M og tekstutdata på 64K. API-modellsiden angir 1,048,576 inndatatokener og 65,536 utdatatokener. Instruksjoner, kildeinnhold og bevart samtale bruker av inndatabudsjettet, mens resonnering og en svargrense påvirker om sluttresultatet får plass. Hurtigbufring og behandling med batch, Flex og Priority er oppgitt for denne produsentprofilen. Ved gjentatte oppgaver bør du beholde de samme kategori- eller feltdefinisjonene og føre identifikatorene videre i resultatet, slik at en senere gjennomgang kan finne det opprinnelige elementet.

Denne stabile profilen er atskilt fra Preview-variantene fra juni og september som beskrives andre steder i familien. Det felles underliggende modellkortet knytter forbedringene i September Preview, blant annet instruksjonsfølging og kortfattethet, uttrykkelig til den forhåndsversjonen; de bør ikke stilltiende overføres til den stabile identifikatoren. Senere Flash-Lite-generasjoner bruker også andre tenkeinnstillinger og egenskapstabeller. Bevar utgaven og velg innstillingene som er dokumentert for den, i stedet for å erstatte 2.5-budsjetter med syntaks for tenkenivå i Gemini 3.

Kortet oppgir hallusinasjoner og begrensninger i årsaksforståelse, kompleks logisk deduksjon og kontrafaktisk resonnering, og har en kunnskapsgrense i januar 2025. Tilfør oppdaterte kilder eller bruk en dokumentert forankringsflyt når nyere fakta er viktige. Gjennomgå oversettelser for meningsinnhold, uthentede felt for kildegrunnlag og transkripsjoner mot lyden. Et avgrenset, lite resultat gjør denne kontrollen praktisk uten å behandle et polert svar som bevis på at kilden inneholdt den påståtte detaljen.

Praktisk oppgave

### Praktisk oppgave

Teknisk eksempel på engelsk

```
Translate a pickup instruction

Translate this pickup instruction into French for a customer: "Collect order AR-62 at reception between 14:00 and 17:00. Bring the pickup code. Do not send the code by email." Keep AR-62 and the time range unchanged. Return only the translation, preserving both the required action and the warning.
```

#### Forventet resultat

```
One French translation with the original order ID and time range, without commentary.
```

#### Kontroller resultatet

```
Check the order ID, both times and the prohibition on emailing the code against the source.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `gemini-2.5-flash-lite`

[`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=messages)

Google /`gemini-2.5-flash-lite`

### Start

Gemini 2.5 Flash-Lite er Googles stabile multimodale tekstmodell for hyppig klassifisering, oversettelse og enkel uthenting. Tenking er avslått som standard og kan aktiveres med et resonneringsbudsjett på 512–24,576 tokener. Den tar imot tekst og medier, med verktøy, strukturerte utdata og en inndatagrense på 1,048,576 tokener.

Godkjente inndata

Tekst · Bilder

Resultater

Tekst

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot · Anthropic Messages** `POST /v1/messages`

Inndatatyper

`text`, `image`

Utdatatyper

`text`

Kontekst

1 048 576 tokens

Maksimale utdata

65 535 tokens

Utdataformat

json eller SSE

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser gemini-2.5-flash-lite | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrevd | Verdier & grenser Minste antall elementer: 1 | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrevd | Verdier & grenser user, assistant | Standard— |
| Felt`messages[].content` | Type`string\|content_block[]` | KravPåkrevd | Verdier & grenser | Standard— |
| Felt`system` | Type`string\|content_block[]` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`max_tokens` | Type`integer` | KravPåkrevd | Verdier & grenser Minimum: 1 Grensen gjelder for: den eksakte øvre grensen for valgt modell/kort | Standard— |
| Felt`stream` | Type`boolean` | KravValgfritt | Verdier & grenser | Standardfalse |
| Felt`temperature` | Type`number` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`top_p` | Type`number` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`stop_sequences` | Type`string[]` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`tools` | Type`tool[]` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`tools[].name` | Type`string` | KravValgfritt | Verdier & grenser Gjelder når: verktøy oppgitt | Standard— |
| Felt`tools[].description` | Type`string` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`tools[].input_schema` | Type`JSON_schema` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`tool_choice` | Type`object` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`thinking.type` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`thinking.budget_tokens` | Type`integer` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`output_config.effort` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`metadata` | Type`object` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`cache_control` | Type`object` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |

Kombinasjoner av inngående materialer

**Tekst** · UTF8-tekst

`messages[].content eller type=text-blokk`

**Tekst + bilde**

`{type:image,source:{type:base64,media_type,data}} eller en kilde med type=url`

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`material_types` | Avtaletext, image |
| Parameter`required` | Avtalemodel, messages, max\_tokens |
| Parameter`optional_controls` | Avtalenull |
| Parameter`content_type` | Avtaleapplication/json |
| Parameter`text_file_material` | Avtalefaktisk UTF-8-innhold satt inn som tekst; fil-ID-er eller URL-adresser (URLs) trenger separat, eksakt støtte |

Livssyklus: `exact retained published method`

Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen.

### Priser

#### Satser for Ailoot-metoder

Inndata

0,0001 USD */ 1K*

Utdata

0,0004 USD */ 1K*

Lesing fra hurtigbuffer

0,00001 USD */ 1K*

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

#### Detaljer om referansetariffen

Referanseprisplaner på modellnivå endrer ikke metodevalg, prisoverslag eller kostnader. Aktive kostnader bruker satsene til den valgte Ailoot-metoden.

Modellens referanseprisplaner

#### Priser etter konfigurasjon

Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.

| Konfigurasjon | Prisplan | Konteksttokener, mer enn | Konteksttokener, opptil og med | Kostnad |
| --- | --- | --- | --- | --- |
| KonfigurasjonOpenAI Chat · Grunnsatser for tokener | PrisplanGrunnsats | Konteksttokener, mer enn— | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonOpenAI Chat · Nivå 1 etter forespørselslengde | Prisplan— | Konteksttokener, mer enn0 | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonAnthropic Messages · Grunnsatser for tokener | PrisplanGrunnsats | Konteksttokener, mer enn— | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonAnthropic Messages · Nivå 1 etter forespørselslengde | Prisplan— | Konteksttokener, mer enn0 | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |

### Eksempelforespørsler

#### Ailoot · Anthropic Messages

TeksteksempelInndata, bildePython SDKNode.js SDKPython-strømming

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gemini-2.5-flash-lite", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gemini-2.5-flash-lite", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="gemini-2.5-flash-lite",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
```

```js
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "gemini-2.5-flash-lite",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
```

```python
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='gemini-2.5-flash-lite',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Motta og lagre resultater

#### Ailoot · Anthropic Messages

json eller SSE

##### Behold alle ferdige resultater

Behold alle fullstendige returnerte svar, filer og innholdsdeler.

Behold alle innholdsblokker, resonneringssignaturer og faktiske ID-er for verktøybruk. Sett sammen alle SSE-blokkendringer; den første tekstblokken er ikke hele resultatet.

##### Hvis det opprinnelige svaret må kontrolleres

Behold forespørsels-/svar-ID-er og headere. Ingen generell URL for henting av tekstjobber oppgis.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`id` | Typestring |
| Felt`model` | Typestring |
| Felt`content[]` | Typetext\|thinking\|tool\_use\|other content block |
| Felt`stop_reason` | Typestring\|null |
| Felt`usage` | Typeobject |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |

### Aliaser

#### Modellaliaser

<strong>Ailoot</strong> [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=messages)
**Ailoot Ultra** [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=messages), [`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=messages)

#### Aliaser for metodestier

`/chat/completions`

#### Tilknyttede anroper-ID-er

[`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=messages), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=messages), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=messages)

**Ailoot · Gemini generateContent** `POST /v1beta/models/{model}:generateContent` `gemini-2.5-flash-lite`

[`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=gemini)

Google /`gemini-2.5-flash-lite`

### Start

Gemini 2.5 Flash-Lite er Googles stabile multimodale tekstmodell for hyppig klassifisering, oversettelse og enkel uthenting. Tenking er avslått som standard og kan aktiveres med et resonneringsbudsjett på 512–24,576 tokener. Den tar imot tekst og medier, med verktøy, strukturerte utdata og en inndatagrense på 1,048,576 tokener.

Godkjente inndata

Tekst · Bilder

Resultater

Tekst

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot · Gemini generateContent** `POST /v1beta/models/{model}:generateContent`

Inndatatyper

`text`, `image`

Utdatatyper

`text`

Utdataformat

json eller støttet strømming

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`path.model` | Type`string` | KravPåkrevd | Verdier & grenser gemini-2.5-flash-lite | Standard— |
| Felt`contents` | Type`content[]` | KravPåkrevd | Verdier & grenser Minste antall elementer: 1 | Standard— |
| Felt`contents[].role` | Type`string` | KravValgfritt | Verdier & grenser user, model | Standard— |
| Felt`contents[].parts` | Type`part[]` | KravPåkrevd | Verdier & grenser | Standard— |
| Felt`systemInstruction` | Type`content` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`generationConfig.maxOutputTokens` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 1 Avhenger av modellen | Standard— |
| Felt`generationConfig.temperature` | Type`number` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`generationConfig.topP` | Type`number` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`generationConfig.topK` | Type`integer` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`generationConfig.stopSequences` | Type`string[]` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`generationConfig.thinkingConfig.includeThoughts` | Type`boolean` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`generationConfig.thinkingConfig.thinkingBudget` | Type`integer` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`tools[].functionDeclarations` | Type`function_declaration[]` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`toolConfig.functionCallingConfig.mode` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`safetySettings` | Type`object[]` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`sessionId` | Type`string` | KravValgfritt | Verdier & grenser | Standard— |

Kombinasjoner av inngående materialer

**Tekst** · UTF8-tekst

`contents[].parts[].text`

**Tekst + bilde**

`parts[].inlineData={mimeType,data}`

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`material_types` | Avtaletext, image |
| Parameter`required` | Avtalecontents |
| Parameter`optional_controls` | Avtalenull |
| Parameter`content_type` | Avtaleapplication/json |
| Parameter`text_file_material` | Avtalefaktisk UTF-8-innhold satt inn som tekst; fil-ID-er eller URL-adresser (URLs) trenger separat, eksakt støtte |

Livssyklus: `exact retained published method`

Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen.

### Priser

#### Satser for Ailoot-metoder

Inndata

0,0001 USD */ 1K*

Utdata

0,0004 USD */ 1K*

Lesing fra hurtigbuffer

0,00001 USD */ 1K*

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

#### Detaljer om referansetariffen

Referanseprisplaner på modellnivå endrer ikke metodevalg, prisoverslag eller kostnader. Aktive kostnader bruker satsene til den valgte Ailoot-metoden.

Modellens referanseprisplaner

#### Priser etter konfigurasjon

Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.

| Konfigurasjon | Prisplan | Konteksttokener, mer enn | Konteksttokener, opptil og med | Kostnad |
| --- | --- | --- | --- | --- |
| KonfigurasjonOpenAI Chat · Grunnsatser for tokener | PrisplanGrunnsats | Konteksttokener, mer enn— | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonOpenAI Chat · Nivå 1 etter forespørselslengde | Prisplan— | Konteksttokener, mer enn0 | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonAnthropic Messages · Grunnsatser for tokener | PrisplanGrunnsats | Konteksttokener, mer enn— | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonAnthropic Messages · Nivå 1 etter forespørselslengde | Prisplan— | Konteksttokener, mer enn0 | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |

### Eksempelforespørsler

#### Ailoot · Gemini generateContent

TeksteksempelInndata, bildePython SDKNode.js SDKPython-strømming

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"contents": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["contents"]=[{"role":"user","parts":[{"text":"Summarize this material and quote supporting source passages.\n\n"+text}]}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1beta/models/gemini-2.5-flash-lite:generateContent \
  -H "x-goog-api-key: $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"contents": [{"role": "user", "parts": [{"text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["contents"][0]["parts"].append({"inlineData":{"mimeType":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1beta/models/gemini-2.5-flash-lite:generateContent \
  -H "x-goog-api-key: $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```python
from google import genai
from google.genai import types
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = genai.Client(
    api_key=os.environ["AILOOT_API_KEY"],
    http_options=types.HttpOptions(base_url="https://api.ailoot.ai"),
)
resp = client.models.generate_content(model="gemini-2.5-flash-lite", contents="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_json_dict())
```

```js
import { GoogleGenAI } from "@google/genai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const ai = new GoogleGenAI({ apiKey: process.env.AILOOT_API_KEY, httpOptions: { baseUrl: "https://api.ailoot.ai" } });
const resp = await ai.models.generateContent({ model: "gemini-2.5-flash-lite", contents: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
```

```python
from google import genai
from google.genai import types
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=genai.Client(api_key=os.environ["AILOOT_API_KEY"],http_options=types.HttpOptions(base_url="https://api.ailoot.ai"))
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

count=0
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
    for chunk in client.models.generate_content_stream(model='gemini-2.5-flash-lite',contents="Explain observations and hypotheses in three sentences."):
        payload=chunk.to_json_dict()
        log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
        save_result(payload,"stream-chunk-"+str(count))
        count+=1
```

### Motta og lagre resultater

#### Ailoot · Gemini generateContent

json eller støttet strømming

##### Behold alle ferdige resultater

Behold alle fullstendige returnerte svar, filer og innholdsdeler.

Behold alle kandidater og deler, inkludert funksjonskall, resonneringssignaturer og bruksdata; sett sammen strømmens biter i rekkefølge.

##### Hvis det opprinnelige svaret må kontrolleres

Behold forespørsels-/svar-ID-er og headere. Ingen generell URL for henting av tekstjobber oppgis.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`responseId` | Typestring |
| Felt`modelVersion` | Typestring |
| Felt`candidates[].content.parts[]` | Typetext\|inlineData\|functionCall\|other part |
| Felt`candidates[].finishReason` | Typestring |
| Felt`usageMetadata` | Typeobject |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |

### Aliaser

#### Modellaliaser

<strong>Ailoot</strong> [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=gemini)
**Ailoot Ultra** [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite), [`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite)

#### Aliaser for metodestier

`/chat/completions`

#### Tilknyttede anroper-ID-er

[`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=gemini), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gemini-2.5-flash-lite`

[`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=chat)

Google /`gemini-2.5-flash-lite`

Modell-ID

- `gemini-2.5-flash-lite`
- `google/gemini-2.5-flash-lite`

### Start

Gemini 2.5 Flash-Lite er Googles stabile multimodale tekstmodell for hyppig klassifisering, oversettelse og enkel uthenting. Tenking er avslått som standard og kan aktiveres med et resonneringsbudsjett på 512–24,576 tokener. Den tar imot tekst og medier, med verktøy, strukturerte utdata og en inndatagrense på 1,048,576 tokener.

Godkjente inndata

Tekst

Resultater

Tekst

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

Inndatatyper

`text`

Utdatatyper

`text`

Utdataformat

json eller SSE

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser gemini-2.5-flash-lite | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrevd | Verdier & grenser Minste antall elementer: 1 | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrevd | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`messages[].content` | Type`string` | KravValgfritt | Verdier & grenser Gjelder når: Tekstsamtale | Standard— |
| Felt`stream` | Type`boolean` | KravValgfritt | Verdier & grenser | Standardfalse |

Kombinasjoner av inngående materialer

**Tekst** · UTF8-tekst

`messages[].content`

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`content_type` | Avtaleapplication/json |
| Parameter`required` | Avtalemodel, messages |
| Parameter`material_types` | Avtaletext |
| Parameter`messages` | Avtalemeldingstabell med role/content-struktur |
| Parameter`file_material` | Avtalefaktisk UTF-8-dokument satt inn som bokstavelig tekst; ingen fil-ID utledes |
| Parameter`optional_controls` | Avtalestream |
| Parameter`control_scope` | AvtaleTekstsamtale; stream er en boolsk verdi med false som standard. |
| Parameter`output_modalities` | Avtaletext |
| Parameter`hosted_operations` | Avtalefalse |
| Parameter`multimodal_input_binding` | Avtalenull |

Metodealiaser: `/chat/completions`

Livssyklus: `synchronous_or_streamed`

Send eksakt modell-ID sammen med messages.

Kontekstlengde er ikke en outputgrense.

En tekstfil kan levere bokstavelig tekst; bilde-, lyd- og filobjektinput trenger eksakt binding.

### Priser

Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.

Hurtigmodus

Standardpris Når hurtigmodus er valgt

Flex-modus

Standardpris Når flex-modus er valgt

Maksimal resonneringsinnsats

Standardpris Når justeringen «default» brukes for maksimal resonneringsinnsats

Priser for eksplisitt mellomlagring

Ikke aktivert Når eksplisitt mellomlagring forespørres

#### Ailoot-satser

#### Priser etter konfigurasjon

Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.

| Konfigurasjon | Prisplan | Konteksttokener, mer enn | Konteksttokener, opptil og med | Kostnad |
| --- | --- | --- | --- | --- |
| KonfigurasjonGrunnpriser for tokener | PrisplanGrunnsats | Konteksttokener, mer enn— | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonNivå 1 for forespørselslengde | Prisplan— | Konteksttokener, mer enn0 | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

### Eksempelforespørsler

#### Ailoot Ultra · OpenAI Chat

curlPython SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gemini-2.5-flash-lite","messages":[{"role":"user","content":"hello"}],"stream":false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="gemini-2.5-flash-lite", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

### Motta og lagre resultater

#### Ailoot Ultra · OpenAI Chat

json eller SSE

##### Behold alle ferdige resultater

Behold alle fullstendige returnerte svar, filer og innholdsdeler.

Behold hvert svaralternativ med innhold, verktøykall og resonnering. Sett sammen endringer i SSE etter svaralternativets/verktøyets indeks, og behold endelig avslutningsgrunn og bruksdata.

##### Hvis det opprinnelige svaret må kontrolleres

Behold forespørsels-/svar-ID-er og headere. Ingen generell URL for henting av tekstjobber oppgis.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`choices[].index` | Typeinteger |
| Felt`choices[].message.content` | Typestring\|null |
| Felt`choices[].message.tool_calls` | Typetool\_call\[\] |
| Felt`choices[].message.reasoning_content` | Typestring |
| Felt`choices[].message.reasoning_details` | Typeobject\|array |
| Felt`choices[].finish_reason` | Typestring\|null |
| Felt`usage` | Typeobject |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |

### Aliaser

#### Modellaliaser

<strong>Ailoot</strong> [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite)
**Ailoot Ultra** [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=chat), [`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=chat)

#### Aliaser for metodestier

`/chat/completions`

#### Tilknyttede anroper-ID-er

[`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=chat), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gemini-2.5-flash-lite`

[`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=messages)

Google /`gemini-2.5-flash-lite`

Modell-ID

- `gemini-2.5-flash-lite`
- `google/gemini-2.5-flash-lite`

### Start

Gemini 2.5 Flash-Lite er Googles stabile multimodale tekstmodell for hyppig klassifisering, oversettelse og enkel uthenting. Tenking er avslått som standard og kan aktiveres med et resonneringsbudsjett på 512–24,576 tokener. Den tar imot tekst og medier, med verktøy, strukturerte utdata og en inndatagrense på 1,048,576 tokener.

Godkjente inndata

Tekst

Resultater

json · sse

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Inndatatyper

`text`

Utdatatyper

`json`, `sse`

Utdataformat

JSON eller SSE

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser gemini-2.5-flash-lite | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrevd | Verdier & grenser | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrevd | Verdier & grenser user, assistant | Standard— |
| Felt`messages[].content` | Type`string` | KravPåkrevd | Verdier & grenser | Standard— |
| Felt`max_tokens` | Type`integer` | KravPåkrevd | Verdier & grenser | Standard— |
| Felt`stream` | Type`boolean` | KravValgfritt | Verdier & grenser | Standardfalse |

Kombinasjoner av inngående materialer

**Tekst** · UTF-8-tekst

`messages[].content-streng`

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`content_type` | Avtaleapplication/json |
| Parameter`required` | Avtalemodel, messages, max\_tokens |
| Parameter`optional_controls` | Avtalestream |
| Parameter`material_types` | Avtaletext |
| Parameter`text_file_material` | AvtaleLes det faktiske UTF-8-dokumentet og legg teksten i den angitte input- eller meldingsinnholdsstrengen. |

Livssyklus: `synchronous_or_streamed`

### Priser

Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.

Hurtigmodus

Standardpris Når hurtigmodus er valgt

Flex-modus

Standardpris Når flex-modus er valgt

Maksimal resonneringsinnsats

Standardpris Når justeringen «default» brukes for maksimal resonneringsinnsats

Priser for eksplisitt mellomlagring

Ikke aktivert Når eksplisitt mellomlagring forespørres

#### Ailoot-satser

#### Priser etter konfigurasjon

Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.

| Konfigurasjon | Prisplan | Konteksttokener, mer enn | Konteksttokener, opptil og med | Kostnad |
| --- | --- | --- | --- | --- |
| KonfigurasjonGrunnpriser for tokener | PrisplanGrunnsats | Konteksttokener, mer enn— | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonNivå 1 for forespørselslengde | Prisplan— | Konteksttokener, mer enn0 | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

### Eksempelforespørsler

#### Ailoot Ultra · Anthropic Messages

Komplett, minimal JSON-kroppcurl · bruk UTF-8-dokumentet dittPython · lagre hele resultatet

```json
{
  "model": "gemini-2.5-flash-lite",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-2.5-flash-lite', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-2.5-flash-lite', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Motta og lagre resultater

#### Ailoot Ultra · Anthropic Messages

JSON eller SSE

##### Behold alle ferdige resultater

Behold alle fullstendige returnerte svar, filer og innholdsdeler.

Behold alle innholdsblokker, resonneringssignaturer og faktiske ID-er for verktøybruk. Sett sammen alle SSE-blokkendringer; den første tekstblokken er ikke hele resultatet.

##### Hvis det opprinnelige svaret må kontrolleres

Behold forespørsels-/svar-ID-er og headere. Ingen generell URL for henting av tekstjobber oppgis.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`id` | Typestring |
| Felt`model` | Typestring |
| Felt`content[]` | Typetext\|thinking\|tool\_use\|other content block |
| Felt`stop_reason` | Typestring\|null |
| Felt`usage` | Typeobject |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |

### Aliaser

#### Modellaliaser

<strong>Ailoot</strong> [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=messages)
**Ailoot Ultra** [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=messages), [`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=messages)

#### Aliaser for metodestier

`/chat/completions`

#### Tilknyttede anroper-ID-er

[`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=messages), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=messages), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=messages)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `google/gemini-2.5-flash-lite`

[`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=chat)

Google /`google/gemini-2.5-flash-lite`

Modell-ID

- `gemini-2.5-flash-lite`
- `google/gemini-2.5-flash-lite`

### Start

Gemini 2.5 Flash-Lite er Googles stabile multimodale tekstmodell for hyppig klassifisering, oversettelse og enkel uthenting. Tenking er avslått som standard og kan aktiveres med et resonneringsbudsjett på 512–24,576 tokener. Den tar imot tekst og medier, med verktøy, strukturerte utdata og en inndatagrense på 1,048,576 tokener.

Godkjente inndata

Tekst

Resultater

Tekst

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

Inndatatyper

`text`

Utdatatyper

`text`

Utdataformat

json eller SSE

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser google/gemini-2.5-flash-lite | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrevd | Verdier & grenser Minste antall elementer: 1 | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrevd | Verdier & grenser Eksempler: system, user, assistant, tool, function Vilkår: Disse rollene representeres eksplisitt av kompatibilitetstyper i kildekoden; det eksakte rollesettet for modellen er fortsatt modellspesifikt. Avhenger av modellen | Standard— |
| Felt`messages[].content` | Type`string\|content_part[]\|null` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`messages[].tool_calls` | Type`tool_call[]` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`messages[].tool_call_id` | Type`string` | KravValgfritt | Verdier & grenser Gjelder når: role=tool; bruk faktisk returnert ID | Standard— |
| Felt`messages[].name` | Type`string` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`messages[].reasoning_content` | Type`string` | KravValgfritt | Verdier & grenser Gjelder når: Send den faktisk returnerte resonneringen tilbake der denne modellen bruker den | Standard— |
| Felt`messages[].reasoning_details` | Type`object\|array` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`max_tokens` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 1 Avhenger av modellen | Standard— |
| Felt`max_completion_tokens` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 1 Avhenger av modellen | Standard— |
| Felt`stream` | Type`boolean` | KravValgfritt | Verdier & grenser | Standardfalse |
| Felt`stream_options.include_usage` | Type`boolean` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`temperature` | Type`number` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`top_p` | Type`number` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`stop` | Type`string\|string[]` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`tools` | Type`function_tool[]` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`tools[].type` | Type`string` | KravValgfritt | Verdier & grenser function Avhenger av modellen | Standard— |
| Felt`tools[].function.name` | Type`string` | KravPåkrevd | Verdier & grenser Gjelder når: funksjonsverktøy oppgitt | Standard— |
| Felt`tools[].function.description` | Type`string` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`tools[].function.parameters` | Type`JSON_schema` | KravValgfritt | Verdier & grenser | Standard— |
| Felt`tool_choice` | Type`string\|object` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`parallel_tool_calls` | Type`boolean` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`response_format` | Type`object` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`reasoning_effort` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`reasoning` | Type`object` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`service_tier` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`instructions` | Type`string` | KravValgfritt | Verdier & grenser Kompatibilitetsfelt | Standard— |
| Felt`functions` | Type`function[]` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`function_call` | Type`string\|object` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`prompt_cache_options` | Type`object` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`modalities` | Type`string[]` | KravValgfritt | Verdier & grenser text | Standard— |
| Felt`provider` | Type`object` | KravValgfritt | Verdier & grenser Vilkår: provider.options avvises på denne Ultra-tekstruten | Standard— |
| Felt`cache_control.ttl` | Type`string` | KravValgfritt | Verdier & grenser Vilkår: 1h avvises på faktiske steder for mellomlagring av ledetekster | Standard— |

Kombinasjoner av inngående materialer

**Tekst** · UTF8-tekst

`messages[].content`

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`content_type` | Avtaleapplication/json |
| Parameter`required` | Avtalemodel, messages |
| Parameter`material_types` | Avtaletext |
| Parameter`messages` | Avtalemeldingstabell med role/content-struktur |
| Parameter`file_material` | Avtalefaktisk UTF-8-dokument satt inn som bokstavelig tekst; ingen fil-ID utledes |
| Parameter`optional_controls` | Avtalestream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parameter`control_scope` | Avtalemodellspesifikt; brukerens funksjonsverktøy skiller seg fra driftede verktøy |
| Parameter`output_modalities` | Avtaletext |
| Parameter`hosted_operations` | Avtalefalse |
| Parameter`multimodal_input_binding` | Avtalenull |

Livssyklus: `synchronous_or_streamed`

Send eksakt modell-ID sammen med messages.

Kontekstlengde er ikke en outputgrense.

En tekstfil kan levere bokstavelig tekst; bilde-, lyd- og filobjektinput trenger eksakt binding.

### Priser

Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.

Hurtigmodus

Standardpris Når hurtigmodus er valgt

Flex-modus

Standardpris Når flex-modus er valgt

Maksimal resonneringsinnsats

Standardpris Når justeringen «default» brukes for maksimal resonneringsinnsats

Priser for eksplisitt mellomlagring

Ikke aktivert Når eksplisitt mellomlagring forespørres

#### Ailoot-satser

#### Priser etter konfigurasjon

Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.

| Konfigurasjon | Prisplan | Konteksttokener, mer enn | Konteksttokener, opptil og med | Kostnad |
| --- | --- | --- | --- | --- |
| KonfigurasjonGrunnpriser for tokener | PrisplanGrunnsats | Konteksttokener, mer enn— | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonNivå 1 for forespørselslengde | Prisplan— | Konteksttokener, mer enn0 | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

### Eksempelforespørsler

#### Ailoot Ultra · OpenAI Chat

curlPython SDKPython-strømming

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-2.5-flash-lite", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='google/gemini-2.5-flash-lite',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='google/gemini-2.5-flash-lite',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Motta og lagre resultater

#### Ailoot Ultra · OpenAI Chat

json eller SSE

##### Behold alle ferdige resultater

Behold alle fullstendige returnerte svar, filer og innholdsdeler.

Behold hvert svaralternativ med innhold, verktøykall og resonnering. Sett sammen endringer i SSE etter svaralternativets/verktøyets indeks, og behold endelig avslutningsgrunn og bruksdata.

##### Hvis det opprinnelige svaret må kontrolleres

Behold forespørsels-/svar-ID-er og headere. Ingen generell URL for henting av tekstjobber oppgis.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`choices[].index` | Typeinteger |
| Felt`choices[].message.content` | Typestring\|null |
| Felt`choices[].message.tool_calls` | Typetool\_call\[\] |
| Felt`choices[].message.reasoning_content` | Typestring |
| Felt`choices[].message.reasoning_details` | Typeobject\|array |
| Felt`choices[].finish_reason` | Typestring\|null |
| Felt`usage` | Typeobject |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |

### Aliaser

#### Modellaliaser

<strong>Ailoot</strong> [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite)
**Ailoot Ultra** [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=chat), [`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=chat)

#### Aliaser for metodestier

`/chat/completions`

#### Tilknyttede anroper-ID-er

[`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=chat), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `google/gemini-2.5-flash-lite`

[`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=messages)

Google /`google/gemini-2.5-flash-lite`

Modell-ID

- `gemini-2.5-flash-lite`
- `google/gemini-2.5-flash-lite`

### Start

Gemini 2.5 Flash-Lite er Googles stabile multimodale tekstmodell for hyppig klassifisering, oversettelse og enkel uthenting. Tenking er avslått som standard og kan aktiveres med et resonneringsbudsjett på 512–24,576 tokener. Den tar imot tekst og medier, med verktøy, strukturerte utdata og en inndatagrense på 1,048,576 tokener.

Godkjente inndata

Tekst

Resultater

json · sse

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Inndatatyper

`text`

Utdatatyper

`json`, `sse`

Utdataformat

JSON eller SSE

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser google/gemini-2.5-flash-lite | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrevd | Verdier & grenser | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrevd | Verdier & grenser user, assistant | Standard— |
| Felt`messages[].content` | Type`string` | KravPåkrevd | Verdier & grenser | Standard— |
| Felt`max_tokens` | Type`integer` | KravPåkrevd | Verdier & grenser | Standard— |
| Felt`stream` | Type`boolean` | KravValgfritt | Verdier & grenser | Standardfalse |

Kombinasjoner av inngående materialer

**Tekst** · UTF-8-tekst

`messages[].content-streng`

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`content_type` | Avtaleapplication/json |
| Parameter`required` | Avtalemodel, messages, max\_tokens |
| Parameter`optional_controls` | Avtalestream |
| Parameter`material_types` | Avtaletext |
| Parameter`text_file_material` | AvtaleLes det faktiske UTF-8-dokumentet og legg teksten i den angitte input- eller meldingsinnholdsstrengen. |

Livssyklus: `synchronous_or_streamed`

### Priser

Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.

Hurtigmodus

Standardpris Når hurtigmodus er valgt

Flex-modus

Standardpris Når flex-modus er valgt

Maksimal resonneringsinnsats

Standardpris Når justeringen «default» brukes for maksimal resonneringsinnsats

Priser for eksplisitt mellomlagring

Ikke aktivert Når eksplisitt mellomlagring forespørres

#### Ailoot-satser

#### Priser etter konfigurasjon

Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.

| Konfigurasjon | Prisplan | Konteksttokener, mer enn | Konteksttokener, opptil og med | Kostnad |
| --- | --- | --- | --- | --- |
| KonfigurasjonGrunnpriser for tokener | PrisplanGrunnsats | Konteksttokener, mer enn— | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |
| KonfigurasjonNivå 1 for forespørselslengde | Prisplan— | Konteksttokener, mer enn0 | Konteksttokener, opptil og medIngen øvre grense | Kostnad Inndata · Inngående tokener **$0.0002** / 1K tokener Utdata · Utgående tokener **$0.0008** / 1K tokener Inndata · Lesing fra hurtigbuffer **$0.00002** / 1K tokener Inndata · Skriving til hurtigbuffer **$0.0001666666666666666** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time **—** / 1K tokener |

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

### Eksempelforespørsler

#### Ailoot Ultra · Anthropic Messages

Komplett, minimal JSON-kroppcurl · bruk UTF-8-dokumentet dittPython · lagre hele resultatet

```json
{
  "model": "google/gemini-2.5-flash-lite",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-2.5-flash-lite', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-2.5-flash-lite', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Motta og lagre resultater

#### Ailoot Ultra · Anthropic Messages

JSON eller SSE

##### Behold alle ferdige resultater

Behold alle fullstendige returnerte svar, filer og innholdsdeler.

Behold alle innholdsblokker, resonneringssignaturer og faktiske ID-er for verktøybruk. Sett sammen alle SSE-blokkendringer; den første tekstblokken er ikke hele resultatet.

##### Hvis det opprinnelige svaret må kontrolleres

Behold forespørsels-/svar-ID-er og headere. Ingen generell URL for henting av tekstjobber oppgis.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`id` | Typestring |
| Felt`model` | Typestring |
| Felt`content[]` | Typetext\|thinking\|tool\_use\|other content block |
| Felt`stop_reason` | Typestring\|null |
| Felt`usage` | Typeobject |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |

### Aliaser

#### Modellaliaser

<strong>Ailoot</strong> [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=messages)
**Ailoot Ultra** [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=messages), [`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=messages)

#### Aliaser for metodestier

`/chat/completions`

#### Tilknyttede anroper-ID-er

[`google/gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=google%2Fgemini-2.5-flash-lite&fmt=messages), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Core&caller=gemini-2.5-flash-lite&fmt=messages), [`gemini-2.5-flash-lite`](https://ailoot.ai/models/nb/#m=google%2Fgemini-2.5-flash-lite&route=Ultra&caller=gemini-2.5-flash-lite&fmt=messages)

FAQ · Google: Gemini 2.5 Flash Lite

Hvilke inndata og resultater er tilgjengelige?

`POST /v1/messages` · `gemini-2.5-flash-lite`: `text`, `image` → `text` `POST /v1beta/models/{model}:generateContent` · `gemini-2.5-flash-lite`: `text`, `image` → `text` `POST /v1/chat/completions` · `gemini-2.5-flash-lite`: `text` → `text` `POST /v1/messages` · `gemini-2.5-flash-lite`: `text` → `json`, `sse` `POST /v1/chat/completions` · `google/gemini-2.5-flash-lite`: `text` → `text` `POST /v1/messages` · `google/gemini-2.5-flash-lite`: `text` → `json`, `sse`

Hvilke felt bruker forespørselen?

`POST /v1/messages` · `gemini-2.5-flash-lite`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1beta/models/{model}:generateContent` · `gemini-2.5-flash-lite`: `contents`, `systemInstruction`, `sessionId` `POST /v1/chat/completions` · `gemini-2.5-flash-lite`: `model`, `messages`, `stream` `POST /v1/messages` · `gemini-2.5-flash-lite`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/chat/completions` · `google/gemini-2.5-flash-lite`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `google/gemini-2.5-flash-lite`: `model`, `messages`, `max_tokens`, `stream`

Hvilke grenser gjelder?

`POST /v1/messages` · `gemini-2.5-flash-lite`: `ctx`: `1048576`; `max_out`: `65535`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1beta/models/{model}:generateContent` · `gemini-2.5-flash-lite`: `contents.min_items`: `1` `POST /v1/chat/completions` · `gemini-2.5-flash-lite`: `messages.min_items`: `1` `POST /v1/chat/completions` · `google/gemini-2.5-flash-lite`: `messages.min_items`: `1`

Koble Ailoot til Claude Code, OpenCode, Hermes eller egen applikasjon.

## Selskapet og dets prosjektportefølje

Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.

## Kjøp tokener med rabatt.

Abonnementsrabatt for jevnlig bruk. Kampanjekoder gir opptil 50% på tokenkjøp.

Abonnement

Velg et rabattabonnement for faste forespørsler.

Kampanjekode opptil 50%

Oppgi kode ved kjøp. Prisen beregnes på nytt etter gjeldende kampanje.

Kostnader i historikken

Modell, tokener og beløp lagres for hver forespørsel.

[Velg abonnement](https://ailoot.ai/docs/nb/billing/subscriptions/) · [Se modellpriser](https://ailoot.ai/models/nb/)

## Koble API-et til produktet du selger.

SaaS, apper og boter etter Ailoots offentlige tilbud og lisensavtale. Be om forhandlerlisens for videresalg.

Kommersiell applikasjon

Bygg tekst-, bilde-, video- og lydgenerering inn i betalte funksjoner i tjenesten.

Forhandlerlisens

Send prosjektbeskrivelse og tilgangsopplegg. Be om skriftlige vilkår for bruk og videresalg.

Dokumenter på nettstedet

Offentlig tilbud, lisensavtale og retningslinjer for databehandling er tilgjengelige før tilkobling.

[Be om forhandlerlisens](mailto:support@ailoot.ai) · [Offentlig tilbud og lisensavtale](https://ailoot.ai/legal/offer?lang=nb)

## Ailoot · Selskapet og dets prosjektportefølje





Ailoot bygger på etablert driftserfaring, en stor kundebase, stabil tjeneste og løpende KPI-kontroll.





Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.





Ailoot bruker denne driftserfaringen til API-tilgang til AI-funksjoner i kundenes produkter, agenter, applikasjoner og automatiseringer.
