models

Google: Gemini 2.5 Pro

Markdown · JSON

Google: Gemini 2.5 Pro

Gemini 2.5 Pro is Googles stabiele denkmodel voor complexe code, wiskunde, STEM en analyse met lange context. Het accepteert tekst, afbeeldingen, audio, video en PDF en geeft tekst terug, met tools en gestructureerde uitvoer. Het dynamische redeneerbudget ondersteunt 128–32.768 tokens en kan niet volledig worden uitgeschakeld.

Over het model

Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.

Gemini 2.5 Pro is Googles stabiele denkprofiel voor geavanceerd programmeerwerk, wiskunde, STEM en analyse met lange context. Het kan tekst, audio, afbeeldingen, video en volledige coderepositories begrijpen; het Gemini API-profiel accepteert ook PDF-invoer. De uitvoer is tekst, waaronder code, een geschreven analyse of een gestructureerd record. Een bruikbare opdracht levert het bewijsmateriaal en vraagt om een controleerbaar resultaat, zoals een toegelichte oplossing, een bevinding in een codebase of een vergelijking van meerdere documenten.

Lever voor programmeerwerk de relevante bestanden, het waargenomen gedrag en de wijziging of vraag die ertoe doet. Lange context kan het model helpen verbanden tussen modules te leggen in plaats van vanuit één los fragment te redeneren. Vraag bij onderzoek van een codepad om een identifier vanaf een invoerformulier via verwerking en opslag te volgen, vast te stellen waar een contract verandert en een gerichte correctie voor te stellen. Behoud de randvoorwaarden en vraag om onderbouwende verwijzingen. Een voorgestelde aanpassing moet worden vergeleken met de werkelijke code en met eventuele validatie via de aangesloten tools.

Beschrijf bij wiskunde of wetenschappelijke analyse het probleem, de aannames, eenheden en vereiste antwoordvorm. Lever de gegevens of figuren waarvan de berekening afhangt. Vraag om het onderbouwde resultaat en de controles die het beoordeelbaar maken, zoals grensgevallen of een vergelijking met de oorspronkelijke waarden. Het redeneervermogen van het model neemt onduidelijkheid in de probleemstelling niet weg. Houd een onbekende grootheid of ongefundeerde aanname zichtbaar in plaats van die door een handige waarde te vervangen.

Dynamisch denken is de gedocumenteerde standaard. De Gemini 2.5 GenerateContent-gids ondersteunt voor Pro een expliciet redeneerbudget van 128 tot 32.768 tokens, of -1 voor adaptief denken. Deze editie kan het denken niet volledig uitschakelen. Deze instellingen verschillen van Flashs optie voor een nulbudget en van de denkniveaus van Gemini 3. Het denkbudget stuurt het redeneren zonder een exact aantal interne tokens te garanderen; een antwoordlimiet moet ook ruimte overlaten voor het uiteindelijke resultaat.

Benoem bij multimodaal documentwerk welke pagina's, grafiek, beeldregio of gebeurtenis in een opname het antwoord moeten ondersteunen. Een praktische synthesetaak kan vragen om de concurrerende beweringen in meerdere brondocumenten, de passages die ze ondersteunen en de verschillen die voor één beslissing van belang zijn. Vraag het model om een vermeld feit van een gevolgtrekking te onderscheiden. Definieer bij video of audio of het resultaat een beschrijving, transcript, samenvatting of vergelijking moet zijn. Beeld en geluid vormen in dit profiel het bewijsmateriaal voor een tekstresultaat.

De modelspecifieke API-pagina documenteert function calling, code-uitvoering, bestandszoekfuncties, search grounding, Maps grounding, URL-context en gestructureerde uitvoer. Definieer het doel en de parametervelden van functies en behoud de werkelijke resultaten in volgende gespreksbeurten. Geef voor een record met een verplicht schema de vereiste velden aan en beschrijf hoe ontbrekende informatie moet worden weergegeven. De native architectuur is een multimodale sparse mixture-of-experts-transformer; dat modelontwerp levert op zichzelf geen externe tooluitvoering of voltooide toepassing bovenop de teruggegeven tekst of code.

De native kaart vermeldt 1M invoercontext en 64K tekstuitvoer; de API-tabel specificeert 1.048.576 invoertokens en 65.536 uitvoertokens. Instructies, broninhoud en behouden geschiedenis tellen mee bij de voorbereiding van de invoer. Een maximale antwoordruimte omvat redeneertokens, waardoor een te kleine limiet het uiteindelijke antwoord kan onderbreken. Caching en batchverwerking zijn gedocumenteerd, samen met de opties Flex en Priority. Behoud elke bronidentifier en de gevraagde eindvorm bij het voorbereiden van onafhankelijke taken met lange context.

De stabiele identifier verschilt van de Experimental- en Preview-edities die afzonderlijk in de gedeelde Pro-modelkaart worden besproken. Schrijf hun versiegebonden resultaten niet aan dit profiel toe alleen omdat ze de naam Pro delen. De kaart noemt mogelijke hallucinaties en beperkingen in causaal begrip, complexe deductie en contrafeitelijk redeneren, met januari 2025 als kennisgrens. Lever actuele onderbouwing waar dat relevant is en controleer bronverwijzingen, berekeningen en voorgestelde wijzigingen. De bruikbare uitvoer is het onderbouwde tekst- of coderesultaat waarom de taak vroeg.

Praktische taak

Praktische taak

Technisch voorbeeld in het Engels

Trace an identifier through storage

Trace this identifier through three excerpts: form sends {customer_id:'0017'}; service computes id=Number(body.customer_id); repository stores String(id). Requirement: preserve leading zeros. Identify where the contract changes, propose a minimal consistent correction and give tests for '0017', '17' and a missing ID. Do not claim the tests were executed.

Verwacht resultaat

A source-path explanation, a proposed patch and a three-case regression-test plan.

Resultaat controleren

Check that the proposed path preserves distinct strings 0017 and 17 while specifying missing-ID behavior.
Ailoot · Anthropic Messages POST /v1/messages gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro

Aan de slag

Gemini 2.5 Pro is Googles stabiele denkmodel voor complexe code, wiskunde, STEM en analyse met lange context. Het accepteert tekst, afbeeldingen, audio, video en PDF en geeft tekst terug, met tools en gestructureerde uitvoer. Het dynamische redeneerbudget ondersteunt 128–32.768 tokens en kan niet volledig worden uitgeschakeld.

Toegestane invoer
Tekst · Afbeeldingen
Resultaten
Tekst

Beschikbaar in Ailoot · invoer en methoden

Ailoot · Anthropic Messages POST /v1/messages
Invoer
text, image
Uitvoer
text
Context
1.048.576 tokens
Maximale uitvoer
65.536 tokens
Uitvoerformaat
json of SSE
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
gemini-2.5-pro
Standaard—
VeldmessagesTypemessage[]VereisteVereistWaarden en limieten
Minimumaantal items: 1
Standaard—
Veldmessages[].roleTypestringVereisteVereistWaarden en limieten
user, assistant
Standaard—
Veldmessages[].contentTypestring|content_block[]VereisteVereistWaarden en limietenStandaard—
VeldsystemTypestring|content_block[]VereisteOptioneelWaarden en limietenStandaard—
Veldmax_tokensTypeintegerVereisteVereistWaarden en limieten
Minimum: 1
Limiet geldt voor: exacte bovengrens van het gekozen model/de gekozen modelkaart
Standaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
VeldtemperatureTypenumberVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldtop_pTypenumberVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldstop_sequencesTypestring[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldtoolsTypetool[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldtools[].nameTypestringVereisteOptioneelWaarden en limieten
Geldt wanneer: tool opgegeven
Standaard—
Veldtools[].descriptionTypestringVereisteOptioneelWaarden en limietenStandaard—
Veldtools[].input_schemaTypeJSON_schemaVereisteOptioneelWaarden en limietenStandaard—
Veldtool_choiceTypeobjectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldthinking.typeTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldthinking.budget_tokensTypeintegerVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldoutput_config.effortTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldmetadataTypeobjectVereisteOptioneelWaarden en limietenStandaard—
Veldcache_controlTypeobjectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Combinaties van invoermaterialen

Tekst · UTF8-tekst

messages[].content of een blok met type=text

Tekst + afbeelding

{type:image,source:{type:base64,media_type,data}} of bron met type=url

Methodeparameters en levenscyclus
ParameterContract
Parametermaterial_typesContracttext, image
ParameterrequiredContractmodel, messages, max_tokens
Parameteroptional_controlsContractnull
Parametercontent_typeContractapplication/json
Parametertext_file_materialContractwerkelijke UTF-8-inhoud ingevoegd als tekst; bestands-ID’s/URLs vereisen afzonderlijke exacte ondersteuning

Levenscyclus: exact retained published method

De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.

Tarieven

Ailoot-methodetarieven

Ailoot Anthropic MessagesPOST /v1/messages
Invoer
US$ 0,00125 / 1K
Uitvoer
US$ 0,01 / 1K
Cache lezen
US$ 0,000125 / 1K

Prijzen per verzoeklengte · Anthropic Messages

Verzoekgrootte, tokensInvoerUitvoerCache lezenCache schrijvenCache 5 minCache 1 uur
Verzoekgrootte, tokens(0; 200.000]InvoerUS$ 0,00125UitvoerUS$ 0,01Cache lezenUS$ 0,000125Cache schrijvenBasis: —Cache 5 minBasis: —Cache 1 uurBasis: —
Verzoekgrootte, tokens(200.000; ∞)InvoerUS$ 0,0025UitvoerUS$ 0,015Cache lezenUS$ 0,00025Cache schrijvenBasis: —Cache 5 minBasis: —Cache 1 uurBasis: —

Tarieven in USD per 1K tokens. Als geen tarief is ingesteld, wordt het basistarief voor deze methode overgenomen; «—» betekent dat geen basistarief is ingesteld.

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Details van het referentietarief

Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.

Referentiestaffels van het model

Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

ConfiguratieTariefstaffelContexttokens, meer danContexttokens, tot en metKosten
ConfiguratieOpenAI Chat · Basistarieven per tokenTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.02 / 1K tokens
ConfiguratieOpenAI Chat · Tariefniveau 1 op basis van aanvraaglengteTariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieOpenAI Chat · Tariefniveau 2 op basis van aanvraaglengteTariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.005 / 1K tokens
Uitvoer · Uitvoertokens $0.03 / 1K tokens
Invoer · Cache lezen $0.0005 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieAnthropic Messages · Basistarieven per tokenTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.02 / 1K tokens
ConfiguratieAnthropic Messages · Tariefniveau 1 op basis van aanvraaglengteTariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieAnthropic Messages · Tariefniveau 2 op basis van aanvraaglengteTariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.005 / 1K tokens
Uitvoer · Uitvoertokens $0.03 / 1K tokens
Invoer · Cache lezen $0.0005 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens

Voorbeeldverzoeken

Ailoot · Anthropic Messages

TekstvoorbeeldInvoer, afbeeldingPython SDKNode.js SDKPython-stream
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-pro", "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
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-pro", "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
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-pro",
    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"))
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-pro",
  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);
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-pro',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")

Resultaten ophalen en opslaan

Ailoot · Anthropic Messages

json of SSE

Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar alle inhoudsblokken, handtekeningen van redeneringen en werkelijke toolgebruik-ID’s. Voeg alle SSE-blokdelta’s samen; het eerste tekstblok is niet de volledige uitvoer.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden
VeldType
VeldidTypestring
VeldmodelTypestring
Veldcontent[]Typetext|thinking|tool_use|other content block
Veldstop_reasonTypestring|null
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.

Aliasnamen

Modelaliasnamen

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliasnamen voor methodepaden

/chat/completions

Gerelateerde aanroeper-ID’s

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro

Aan de slag

Gemini 2.5 Pro is Googles stabiele denkmodel voor complexe code, wiskunde, STEM en analyse met lange context. Het accepteert tekst, afbeeldingen, audio, video en PDF en geeft tekst terug, met tools en gestructureerde uitvoer. Het dynamische redeneerbudget ondersteunt 128–32.768 tokens en kan niet volledig worden uitgeschakeld.

Toegestane invoer
Tekst · Afbeeldingen
Resultaten
Tekst

Beschikbaar in Ailoot · invoer en methoden

Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent
Invoer
text, image
Uitvoer
text
Context
1.048.576 tokens
Maximale uitvoer
65.536 tokens
Uitvoerformaat
json of ondersteunde streaming
VeldTypeVereisteWaarden en limietenStandaard
Veldpath.modelTypestringVereisteVereistWaarden en limieten
gemini-2.5-pro
Standaard—
VeldcontentsTypecontent[]VereisteVereistWaarden en limieten
Minimumaantal items: 1
Standaard—
Veldcontents[].roleTypestringVereisteOptioneelWaarden en limieten
user, model
Standaard—
Veldcontents[].partsTypepart[]VereisteVereistWaarden en limietenStandaard—
VeldsystemInstructionTypecontentVereisteOptioneelWaarden en limietenStandaard—
VeldgenerationConfig.maxOutputTokensTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Afhankelijk van het model
Standaard—
VeldgenerationConfig.temperatureTypenumberVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldgenerationConfig.topPTypenumberVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldgenerationConfig.topKTypeintegerVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldgenerationConfig.stopSequencesTypestring[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldgenerationConfig.thinkingConfig.includeThoughtsTypebooleanVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldgenerationConfig.thinkingConfig.thinkingBudgetTypeintegerVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldtools[].functionDeclarationsTypefunction_declaration[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldtoolConfig.functionCallingConfig.modeTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldsafetySettingsTypeobject[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldsessionIdTypestringVereisteOptioneelWaarden en limietenStandaard—
Combinaties van invoermaterialen

Tekst · UTF8-tekst

contents[].parts[].text

Tekst + afbeelding

parts[].inlineData={mimeType,data}

Methodeparameters en levenscyclus
ParameterContract
Parametermaterial_typesContracttext, image
ParameterrequiredContractcontents
Parameteroptional_controlsContractnull
Parametercontent_typeContractapplication/json
Parametertext_file_materialContractwerkelijke UTF-8-inhoud ingevoegd als tekst; bestands-ID’s/URLs vereisen afzonderlijke exacte ondersteuning

Levenscyclus: exact retained published method

De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.

Tarieven

Ailoot-methodetarieven

Ailoot Gemini generateContentPOST /v1beta/models/{model}:generateContent
Invoer
US$ 0,00125 / 1K
Uitvoer
US$ 0,01 / 1K
Cache lezen
US$ 0,000125 / 1K

Prijzen per verzoeklengte · Gemini generateContent

Verzoekgrootte, tokensInvoerUitvoerCache lezenCache schrijvenCache 5 minCache 1 uur
Verzoekgrootte, tokens(0; 200.000]InvoerUS$ 0,00125UitvoerUS$ 0,01Cache lezenUS$ 0,000125Cache schrijvenBasis: —Cache 5 minBasis: —Cache 1 uurBasis: —
Verzoekgrootte, tokens(200.000; ∞)InvoerUS$ 0,0025UitvoerUS$ 0,015Cache lezenUS$ 0,00025Cache schrijvenBasis: —Cache 5 minBasis: —Cache 1 uurBasis: —

Tarieven in USD per 1K tokens. Als geen tarief is ingesteld, wordt het basistarief voor deze methode overgenomen; «—» betekent dat geen basistarief is ingesteld.

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Details van het referentietarief

Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.

Referentiestaffels van het model

Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

ConfiguratieTariefstaffelContexttokens, meer danContexttokens, tot en metKosten
ConfiguratieOpenAI Chat · Basistarieven per tokenTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.02 / 1K tokens
ConfiguratieOpenAI Chat · Tariefniveau 1 op basis van aanvraaglengteTariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieOpenAI Chat · Tariefniveau 2 op basis van aanvraaglengteTariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.005 / 1K tokens
Uitvoer · Uitvoertokens $0.03 / 1K tokens
Invoer · Cache lezen $0.0005 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieAnthropic Messages · Basistarieven per tokenTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.02 / 1K tokens
ConfiguratieAnthropic Messages · Tariefniveau 1 op basis van aanvraaglengteTariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieAnthropic Messages · Tariefniveau 2 op basis van aanvraaglengteTariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.005 / 1K tokens
Uitvoer · Uitvoertokens $0.03 / 1K tokens
Invoer · Cache lezen $0.0005 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens

Voorbeeldverzoeken

Ailoot · Gemini generateContent

TekstvoorbeeldInvoer, afbeeldingPython SDKNode.js SDKPython-stream
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-pro: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
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-pro: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
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-pro", 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())
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-pro", 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);
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-pro',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

Resultaten ophalen en opslaan

Ailoot · Gemini generateContent

json of ondersteunde streaming

Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar alle kandidaten en onderdelen, inclusief functieaanroepen, handtekeningen van redeneringen en verbruiksgegevens; voeg streamingfragmenten in de juiste volgorde samen.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden
VeldType
VeldresponseIdTypestring
VeldmodelVersionTypestring
Veldcandidates[].content.parts[]Typetext|inlineData|functionCall|other part
Veldcandidates[].finishReasonTypestring
VeldusageMetadataTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.

Aliasnamen

Modelaliasnamen

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliasnamen voor methodepaden

/chat/completions

Gerelateerde aanroeper-ID’s

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro
Model-ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Aan de slag

Gemini 2.5 Pro is Googles stabiele denkmodel voor complexe code, wiskunde, STEM en analyse met lange context. Het accepteert tekst, afbeeldingen, audio, video en PDF en geeft tekst terug, met tools en gestructureerde uitvoer. Het dynamische redeneerbudget ondersteunt 128–32.768 tokens en kan niet volledig worden uitgeschakeld.

Toegestane invoer
Tekst
Resultaten
Tekst

Beschikbaar in Ailoot · invoer en methoden

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Invoer
text
Uitvoer
text
Uitvoerformaat
json of SSE
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
gemini-2.5-pro
Standaard—
VeldmessagesTypemessage[]VereisteVereistWaarden en limieten
Minimumaantal items: 1
Standaard—
Veldmessages[].roleTypestringVereisteVereistWaarden en limieten
Afhankelijk van het model
Standaard—
Veldmessages[].contentTypestringVereisteOptioneelWaarden en limieten
Geldt wanneer: Tekstgesprek
Standaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
Combinaties van invoermaterialen

Tekst · UTF8-tekst

messages[].content

Methodeparameters en levenscyclus
ParameterContract
Parametercontent_typeContractapplication/json
ParameterrequiredContractmodel, messages
Parametermaterial_typesContracttext
ParametermessagesContractberichtenarray met de structuur role/content
Parameterfile_materialContractwerkelijk UTF-8-document ingevoegd als letterlijke tekst; er wordt geen bestands-ID afgeleid
Parameteroptional_controlsContractstream
Parametercontrol_scopeContractTekstgesprek; stream is een booleaanse waarde en is standaard false.
Parameteroutput_modalitiesContracttext
Parameterhosted_operationsContractfalse
Parametermultimodal_input_bindingContractnull

Methodealiasnamen: /chat/completions

Levenscyclus: synchronous_or_streamed

Stuur het exacte model-ID mee met messages.

Contextlengte is geen uitvoerlimiet.

Een tekstbestand kan letterlijke tekst aanleveren; beeld-, audio- en bestandsobjectinvoer vereisen een exacte koppeling.

Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus
Standaardtarief Wanneer de snelle modus geselecteerd is
Flex-modus
Standaardtarief Wanneer de flex-modus geselecteerd is
Maximale redeneerinspanning
Standaardtarief Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt
Tarieven voor expliciete caching
Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd
Redeneeruitvoer
Redeneertokens worden binnen de totale uitvoer tegen het vermelde deeltarief aangerekend; tel die tokens niet dubbel. Wanneer de uitvoer redeneertokens bevat

Ailoot-tarieven

Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

ConfiguratieTariefstaffelContexttokens, meer danContexttokens, tot en metKosten
ConfiguratieBasistarieven voor tokensTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.02 / 1K tokens
ConfiguratieAanvraaglengte · niveau 1Tariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieAanvraaglengte · niveau 2Tariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.005 / 1K tokens
Uitvoer · Uitvoertokens $0.03 / 1K tokens
Invoer · Cache lezen $0.0005 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Voorbeeldverzoeken

Ailoot Ultra · OpenAI Chat

curlPython SDK
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-pro","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
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-pro", 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"))

Resultaten ophalen en opslaan

Ailoot Ultra · OpenAI Chat

json of SSE

Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar elke keuze en de bijbehorende inhoud, toolaanroepen en redeneringen. Voeg in SSE delta’s samen per keuze-/toolindex en bewaar de uiteindelijke reden van beëindiging en de verbruiksgegevens.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden
VeldType
Veldchoices[].indexTypeinteger
Veldchoices[].message.contentTypestring|null
Veldchoices[].message.tool_callsTypetool_call[]
Veldchoices[].message.reasoning_contentTypestring
Veldchoices[].message.reasoning_detailsTypeobject|array
Veldchoices[].finish_reasonTypestring|null
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.

Aliasnamen

Modelaliasnamen

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliasnamen voor methodepaden

/chat/completions

Gerelateerde aanroeper-ID’s

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · Anthropic Messages POST /v1/messages gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro
Model-ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Aan de slag

Gemini 2.5 Pro is Googles stabiele denkmodel voor complexe code, wiskunde, STEM en analyse met lange context. Het accepteert tekst, afbeeldingen, audio, video en PDF en geeft tekst terug, met tools en gestructureerde uitvoer. Het dynamische redeneerbudget ondersteunt 128–32.768 tokens en kan niet volledig worden uitgeschakeld.

Toegestane invoer
Tekst
Resultaten
json · sse

Beschikbaar in Ailoot · invoer en methoden

Ailoot Ultra · Anthropic Messages POST /v1/messages
Invoer
text
Uitvoer
json, sse
Uitvoerformaat
JSON of SSE
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
gemini-2.5-pro
Standaard—
VeldmessagesTypemessage[]VereisteVereistWaarden en limietenStandaard—
Veldmessages[].roleTypestringVereisteVereistWaarden en limieten
user, assistant
Standaard—
Veldmessages[].contentTypestringVereisteVereistWaarden en limietenStandaard—
Veldmax_tokensTypeintegerVereisteVereistWaarden en limietenStandaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
Combinaties van invoermaterialen

Tekst · UTF-8-tekst

messages[].content als tekenreeks

Methodeparameters en levenscyclus
ParameterContract
Parametercontent_typeContractapplication/json
ParameterrequiredContractmodel, messages, max_tokens
Parameteroptional_controlsContractstream
Parametermaterial_typesContracttext
Parametertext_file_materialContractLees het werkelijke UTF-8-document en plaats de tekst ervan in de aangegeven invoer of in de inhoudstekenreeks van een bericht.

Levenscyclus: synchronous_or_streamed

Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus
Standaardtarief Wanneer de snelle modus geselecteerd is
Flex-modus
Standaardtarief Wanneer de flex-modus geselecteerd is
Maximale redeneerinspanning
Standaardtarief Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt
Tarieven voor expliciete caching
Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd
Redeneeruitvoer
Redeneertokens worden binnen de totale uitvoer tegen het vermelde deeltarief aangerekend; tel die tokens niet dubbel. Wanneer de uitvoer redeneertokens bevat

Ailoot-tarieven

Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

ConfiguratieTariefstaffelContexttokens, meer danContexttokens, tot en metKosten
ConfiguratieBasistarieven voor tokensTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.02 / 1K tokens
ConfiguratieAanvraaglengte · niveau 1Tariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieAanvraaglengte · niveau 2Tariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.005 / 1K tokens
Uitvoer · Uitvoertokens $0.03 / 1K tokens
Invoer · Cache lezen $0.0005 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Voorbeeldverzoeken

Ailoot Ultra · Anthropic Messages

Volledige minimale JSON-bodycurl · gebruik je UTF-8-documentPython · sla het volledige resultaat op
{
  "model": "gemini-2.5-pro",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
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-pro', '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
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-pro', '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))

Resultaten ophalen en opslaan

Ailoot Ultra · Anthropic Messages

JSON of SSE

Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar alle inhoudsblokken, handtekeningen van redeneringen en werkelijke toolgebruik-ID’s. Voeg alle SSE-blokdelta’s samen; het eerste tekstblok is niet de volledige uitvoer.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden
VeldType
VeldidTypestring
VeldmodelTypestring
Veldcontent[]Typetext|thinking|tool_use|other content block
Veldstop_reasonTypestring|null
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.

Aliasnamen

Modelaliasnamen

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliasnamen voor methodepaden

/chat/completions

Gerelateerde aanroeper-ID’s

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-2.5-pro

google/gemini-2.5-pro

Google /google/gemini-2.5-pro
Model-ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Aan de slag

Gemini 2.5 Pro is Googles stabiele denkmodel voor complexe code, wiskunde, STEM en analyse met lange context. Het accepteert tekst, afbeeldingen, audio, video en PDF en geeft tekst terug, met tools en gestructureerde uitvoer. Het dynamische redeneerbudget ondersteunt 128–32.768 tokens en kan niet volledig worden uitgeschakeld.

Toegestane invoer
Tekst
Resultaten
Tekst

Beschikbaar in Ailoot · invoer en methoden

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Invoer
text
Uitvoer
text
Uitvoerformaat
json of SSE
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
google/gemini-2.5-pro
Standaard—
VeldmessagesTypemessage[]VereisteVereistWaarden en limieten
Minimumaantal items: 1
Standaard—
Veldmessages[].roleTypestringVereisteVereistWaarden en limieten
Voorbeelden: system, user, assistant, tool, function
Voorwaarden: Deze rollen worden expliciet weergegeven door compatibiliteitstypen in de broncode; de exacte rollenverzameling van het model blijft modelspecifiek.
Afhankelijk van het model
Standaard—
Veldmessages[].contentTypestring|content_part[]|nullVereisteOptioneelWaarden en limietenStandaard—
Veldmessages[].tool_callsTypetool_call[]VereisteOptioneelWaarden en limietenStandaard—
Veldmessages[].tool_call_idTypestringVereisteOptioneelWaarden en limieten
Geldt wanneer: role=tool; gebruik het werkelijk teruggegeven ID
Standaard—
Veldmessages[].nameTypestringVereisteOptioneelWaarden en limietenStandaard—
Veldmessages[].reasoning_contentTypestringVereisteOptioneelWaarden en limieten
Geldt wanneer: Stuur de werkelijk teruggegeven redeneringen terug wanneer dit model ze gebruikt
Standaard—
Veldmessages[].reasoning_detailsTypeobject|arrayVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldmax_tokensTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Afhankelijk van het model
Standaard—
Veldmax_completion_tokensTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Afhankelijk van het model
Standaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
Veldstream_options.include_usageTypebooleanVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldtemperatureTypenumberVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldtop_pTypenumberVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldstopTypestring|string[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldtoolsTypefunction_tool[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldtools[].typeTypestringVereisteOptioneelWaarden en limieten
function
Afhankelijk van het model
Standaard—
Veldtools[].function.nameTypestringVereisteVereistWaarden en limieten
Geldt wanneer: functietool opgegeven
Standaard—
Veldtools[].function.descriptionTypestringVereisteOptioneelWaarden en limietenStandaard—
Veldtools[].function.parametersTypeJSON_schemaVereisteOptioneelWaarden en limietenStandaard—
Veldtool_choiceTypestring|objectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldparallel_tool_callsTypebooleanVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldresponse_formatTypeobjectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldreasoning_effortTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldreasoningTypeobjectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldservice_tierTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldinstructionsTypestringVereisteOptioneelWaarden en limieten
Compatibiliteitsveld
Standaard—
VeldfunctionsTypefunction[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldfunction_callTypestring|objectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldprompt_cache_optionsTypeobjectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldmodalitiesTypestring[]VereisteOptioneelWaarden en limieten
text
Standaard—
VeldproviderTypeobjectVereisteOptioneelWaarden en limieten
Voorwaarden: provider.options wordt op deze Ultra-tekstroute geweigerd
Standaard—
Veldcache_control.ttlTypestringVereisteOptioneelWaarden en limieten
Voorwaarden: 1h wordt op de daadwerkelijke locaties voor promptcaching geweigerd
Standaard—
Combinaties van invoermaterialen

Tekst · UTF8-tekst

messages[].content

Methodeparameters en levenscyclus
ParameterContract
Parametercontent_typeContractapplication/json
ParameterrequiredContractmodel, messages
Parametermaterial_typesContracttext
ParametermessagesContractberichtenarray met de structuur role/content
Parameterfile_materialContractwerkelijk UTF-8-document ingevoegd als letterlijke tekst; er wordt geen bestands-ID afgeleid
Parameteroptional_controlsContractstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeContractmodelspecifiek; functietools van de gebruiker verschillen van gehoste tools
Parameteroutput_modalitiesContracttext
Parameterhosted_operationsContractfalse
Parametermultimodal_input_bindingContractnull

Levenscyclus: synchronous_or_streamed

Stuur het exacte model-ID mee met messages.

Contextlengte is geen uitvoerlimiet.

Een tekstbestand kan letterlijke tekst aanleveren; beeld-, audio- en bestandsobjectinvoer vereisen een exacte koppeling.

Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus
Standaardtarief Wanneer de snelle modus geselecteerd is
Flex-modus
Standaardtarief Wanneer de flex-modus geselecteerd is
Maximale redeneerinspanning
Standaardtarief Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt
Tarieven voor expliciete caching
Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd
Redeneeruitvoer
Redeneertokens worden binnen de totale uitvoer tegen het vermelde deeltarief aangerekend; tel die tokens niet dubbel. Wanneer de uitvoer redeneertokens bevat

Ailoot-tarieven

Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

ConfiguratieTariefstaffelContexttokens, meer danContexttokens, tot en metKosten
ConfiguratieBasistarieven voor tokensTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.02 / 1K tokens
ConfiguratieAanvraaglengte · niveau 1Tariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieAanvraaglengte · niveau 2Tariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.005 / 1K tokens
Uitvoer · Uitvoertokens $0.03 / 1K tokens
Invoer · Cache lezen $0.0005 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Voorbeeldverzoeken

Ailoot Ultra · OpenAI Chat

curlPython SDKPython-stream
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-pro", "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
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-pro',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"))
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-pro',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")

Resultaten ophalen en opslaan

Ailoot Ultra · OpenAI Chat

json of SSE

Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar elke keuze en de bijbehorende inhoud, toolaanroepen en redeneringen. Voeg in SSE delta’s samen per keuze-/toolindex en bewaar de uiteindelijke reden van beëindiging en de verbruiksgegevens.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden
VeldType
Veldchoices[].indexTypeinteger
Veldchoices[].message.contentTypestring|null
Veldchoices[].message.tool_callsTypetool_call[]
Veldchoices[].message.reasoning_contentTypestring
Veldchoices[].message.reasoning_detailsTypeobject|array
Veldchoices[].finish_reasonTypestring|null
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.

Aliasnamen

Modelaliasnamen

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliasnamen voor methodepaden

/chat/completions

Gerelateerde aanroeper-ID’s

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-2.5-pro

google/gemini-2.5-pro

Google /google/gemini-2.5-pro
Model-ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Aan de slag

Gemini 2.5 Pro is Googles stabiele denkmodel voor complexe code, wiskunde, STEM en analyse met lange context. Het accepteert tekst, afbeeldingen, audio, video en PDF en geeft tekst terug, met tools en gestructureerde uitvoer. Het dynamische redeneerbudget ondersteunt 128–32.768 tokens en kan niet volledig worden uitgeschakeld.

Toegestane invoer
Tekst
Resultaten
json · sse

Beschikbaar in Ailoot · invoer en methoden

Ailoot Ultra · Anthropic Messages POST /v1/messages
Invoer
text
Uitvoer
json, sse
Uitvoerformaat
JSON of SSE
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
google/gemini-2.5-pro
Standaard—
VeldmessagesTypemessage[]VereisteVereistWaarden en limietenStandaard—
Veldmessages[].roleTypestringVereisteVereistWaarden en limieten
user, assistant
Standaard—
Veldmessages[].contentTypestringVereisteVereistWaarden en limietenStandaard—
Veldmax_tokensTypeintegerVereisteVereistWaarden en limietenStandaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
Combinaties van invoermaterialen

Tekst · UTF-8-tekst

messages[].content als tekenreeks

Methodeparameters en levenscyclus
ParameterContract
Parametercontent_typeContractapplication/json
ParameterrequiredContractmodel, messages, max_tokens
Parameteroptional_controlsContractstream
Parametermaterial_typesContracttext
Parametertext_file_materialContractLees het werkelijke UTF-8-document en plaats de tekst ervan in de aangegeven invoer of in de inhoudstekenreeks van een bericht.

Levenscyclus: synchronous_or_streamed

Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus
Standaardtarief Wanneer de snelle modus geselecteerd is
Flex-modus
Standaardtarief Wanneer de flex-modus geselecteerd is
Maximale redeneerinspanning
Standaardtarief Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt
Tarieven voor expliciete caching
Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd
Redeneeruitvoer
Redeneertokens worden binnen de totale uitvoer tegen het vermelde deeltarief aangerekend; tel die tokens niet dubbel. Wanneer de uitvoer redeneertokens bevat

Ailoot-tarieven

Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

ConfiguratieTariefstaffelContexttokens, meer danContexttokens, tot en metKosten
ConfiguratieBasistarieven voor tokensTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.02 / 1K tokens
ConfiguratieAanvraaglengte · niveau 1Tariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.0025 / 1K tokens
Uitvoer · Uitvoertokens $0.02 / 1K tokens
Invoer · Cache lezen $0.00025 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieAanvraaglengte · niveau 2Tariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.005 / 1K tokens
Uitvoer · Uitvoertokens $0.03 / 1K tokens
Invoer · Cache lezen $0.0005 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Voorbeeldverzoeken

Ailoot Ultra · Anthropic Messages

Volledige minimale JSON-bodycurl · gebruik je UTF-8-documentPython · sla het volledige resultaat op
{
  "model": "google/gemini-2.5-pro",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
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-pro', '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
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-pro', '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))

Resultaten ophalen en opslaan

Ailoot Ultra · Anthropic Messages

JSON of SSE

Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar alle inhoudsblokken, handtekeningen van redeneringen en werkelijke toolgebruik-ID’s. Voeg alle SSE-blokdelta’s samen; het eerste tekstblok is niet de volledige uitvoer.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden
VeldType
VeldidTypestring
VeldmodelTypestring
Veldcontent[]Typetext|thinking|tool_use|other content block
Veldstop_reasonTypestring|null
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.

Aliasnamen

Modelaliasnamen

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliasnamen voor methodepaden

/chat/completions

Gerelateerde aanroeper-ID’s

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

FAQ · Google: Gemini 2.5 Pro
Welke invoer en resultaten zijn beschikbaar?

POST /v1/messages · gemini-2.5-pro: text, image → text

POST /v1beta/models/{model}:generateContent · gemini-2.5-pro: text, image → text

POST /v1/chat/completions · gemini-2.5-pro: text → text

POST /v1/messages · gemini-2.5-pro: text → json, sse

POST /v1/chat/completions · google/gemini-2.5-pro: text → text

POST /v1/messages · google/gemini-2.5-pro: text → json, sse

Welke velden gebruikt het verzoek?

POST /v1/messages · gemini-2.5-pro: model, messages, system, max_tokens, stream, metadata

POST /v1beta/models/{model}:generateContent · gemini-2.5-pro: contents, systemInstruction, sessionId

POST /v1/chat/completions · gemini-2.5-pro: model, messages, stream

POST /v1/messages · gemini-2.5-pro: model, messages, max_tokens, stream

POST /v1/chat/completions · google/gemini-2.5-pro: model, messages, stream, modalities, provider

POST /v1/messages · google/gemini-2.5-pro: model, messages, max_tokens, stream

Welke limieten gelden?

POST /v1/messages · gemini-2.5-pro: ctx: 1048576; max_out: 65536; messages.min_items: 1; max_tokens.minimum: 1

POST /v1beta/models/{model}:generateContent · gemini-2.5-pro: ctx: 1048576; max_out: 65536; contents.min_items: 1

POST /v1/chat/completions · gemini-2.5-pro: messages.min_items: 1

POST /v1/chat/completions · google/gemini-2.5-pro: messages.min_items: 1

Meer details

Verbind Ailoot met Claude Code, OpenCode, Hermes of je eigen applicatie.

Het bedrijf en zijn projectenportefeuille

Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.

Koop tokens met korting.

Abonnementsvoordeel voor regelmatig gebruik. Promotiecodes geven tot 50% korting op tokens.

Abonnement
Kies een abonnement met korting voor je terugkerende verzoeken.
Promotiecode tot 50%
Vul de code bij aankoop in. De prijs wordt volgens de lopende actie herberekend.
Kosten in de geschiedenis
Model, tokens en bedrag worden per verzoek bewaard.

Kies een abonnement · Bekijk modelprijzen

Verbind de API met het product dat je verkoopt.

SaaS, apps en bots volgens de openbare aanbodvoorwaarden en licentieovereenkomst van Ailoot. Vraag voor doorverkoop een resellerlicentie aan.

Commerciële applicatie
Voeg tekst-, beeld-, video- en geluidsgeneratie aan betaalde functies van je service toe.
Resellerlicentie
Stuur een projectbeschrijving en toegangsschema. Vraag schriftelijke voorwaarden voor gebruik en doorverkoop.
Documenten op de site
Aanbodvoorwaarden, licentieovereenkomst en gegevensbeleid zijn vóór het verbinden beschikbaar.

Vraag een resellerlicentie aan · Aanbodvoorwaarden en licentieovereenkomst