modeli

Google: Nano Banana 2 (Gemini 3.1 Flash Image)

Markdown · JSON

Google: Nano Banana 2 (Gemini 3.1 Flash Image)

Nano Banana 2 (Gemini 3.1 Flash Image) ustvarja in ureja slike v pogovoru. Podpira besedilne in vizualne vire, izhod 0.5K–4K, kompozicijo z referenčnimi slikami in utemeljevanje z iskanjem za prizore z izdelki, infografike in iterativno vizualno delo.

O modelu

Ta opis zajema zmožnosti modela. Vhodi, izhodi in možnosti, ki so na voljo v Ailoot, so spodaj navedeni za izbrano metodo.

Nano Banana 2 je Googlov model Gemini 3.1 Flash Image za neposredno ustvarjanje slik in urejanje skozi pogovor. Njegova zasnova poudarja učinkovito vizualno ustvarjanje in ponavljajoče se spremembe. Dokumentirani profil API sprejema besedilo, slike, video in PDF ter vrača sliko in besedilo. Gre za ločeno poimenovano izdajo glede na Gemini Nano Banana 2.1, ne za oznako vsake poznejše posodobitve Nano Banana.

Izhodne velikosti vključujejo 0.5K, 1K, 2K in 4K, pri čemer je 1K privzeta. Manjša možnost 0.5K je značilna za ta profil in je lahko primerna za začetno kompozicijo; večje stopnje zagotavljajo več slikovnih pik za izbrano obliko izhoda. Dokumentirana razmerja pokrivajo kvadratne, pokončne in ležeče oblike, vključno z 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 in 21:9, ter dodatne oblike 1:4, 4:1, 1:8 in 8:1. Kvadratni izhodi na primer segajo od 512 × 512 pri 0.5K do 4096 × 4096 pri 4K. Pred izpopolnjevanjem majhnih podrobnosti izberite obliko za predvideno umestitev.

Google med izboljšavami te izdaje navaja boljše upoštevanje razmerja stranic, vizualno doslednost in izris večjezičnega besedila. Pri plakatu, jedilniku ali infografiki uporabite natančno ubeseditev in določite, katera oznaka pripada kateremu predmetu. Pri majhnem besedilu ali dolgem odlomku kartica modela navaja preostale omejitve berljivosti, zlasti pri 1K. Pripisi naj bodo jedrnati, njihovo relativno velikost pa izrecno določite; pri gostem daljšem besedilu sliko obravnavajte kot referenco vizualne postavitve in dejanski izris črk natančno preverite.

V delovnem postopku je mogoče združiti do 14 referenčnih slik. Vodnik za slike opisuje zvestobo pri največ desetih predmetih in podobnost pri največ štirih likih. Reference označite in določite, kaj zagotavlja vsaka. Pri prizoru z izdelkom lahko ena slika določa predmet, druga okolje in tretja osvetlitev. Pri zaporedju z likom prenesite prejšnje izhode v naslednji poziv in navedite značilnosti, ki morajo ostati enake ob spremembi pogleda ali poze.

Utemeljevanje z Web Search in Image Search lahko ustvarjanje podpre z aktualnimi informacijami in pridobljenimi vizualnimi referencami. Image Search dodaja vizualni kontekst, ne zgolj pisnega opisa rezultata iskanja. Proizvajalec podpira funkcijo iskanja pri vseh dokumentiranih nastavitvah razmišljanja. Njegov postopek slikovnega iskanja iz referenc, pridobljenih z iskanjem, izključuje resnične fotografije ljudi in z utemeljenimi rezultati vrača metapodatke o navedbi virov; te metapodatke ohranite pri uporabi rezultata v aplikaciji.

Dokumentirani nastavitvi razmišljanja za Gemini 3.1 Flash Image sta minimal in high, privzeta pa je minimal. To se razlikuje od tristopenjskega profila Nano Banana 2.1 s privzeto ravnjo medium. Razmišljanje podpira zahtevnejšo kompozicijo in obravnavo navodil. Model temelji na Gemini 3 Flash, vendar zaradi te povezave ne postane splošni model za izvajanje kode ali klicanje funkcij: ti zmožnosti sta v preglednici te slikovne izdaje označeni kot nepodprti.

Urejanje skozi pogovor podpira spreminjanje priložene slike ali izpopolnjevanje prejšnjega ustvarjenega rezultata. Konkretna navodila se lahko glasijo: »Ohrani obliko stekleničke, besedilo etikete in kot kamere. Ozadje zamenjaj s svetlo kamnito površino in dodaj mehkejše sence.« Ohranjene elemente opišite enako skrbno kot spremenjene. Kartica modela opozarja, da lahko doslednost likov, umeščanje levo/desno in urejanje na podlagi skic ostajajo nepopolni, zato pred nadaljevanjem vizualnega zaporedja primerjajte prav te podrobnosti.

Preglednica modela API navaja 131,072 vhodnih žetonov in 32,768 izhodnih žetonov. Podpira ustvarjanje slik, utemeljevanje z iskanjem, razmišljanje in paketno obdelavo, medtem ko ustvarjanje zvoka, predpomnjenje, strukturirani izhodi, iskanje po datotekah, Live API in kontekst URL niso podprti. Slikovni delovni postopek ne sprejema zvočnega vhoda. Video ali PDF lahko v tem profilu API prispevata k nalogi ustvarjanja statične slike; izhod ostaja slika in besedilo. Ustvarjene slike vključujejo SynthID, zahtevano število slik pa ni vedno natančno upoštevano.

Za praktično infografiko priložite potrjene oznake, predvideno občinstvo, vrstni red branja, referenčno gradivo in ciljno razmerje stranic. Zahtevajte eno jasno vizualno razlago, nato pa v naslednji izmenjavi popravite ubeseditev ali razmike ob ohranitvi vzpostavljene kompozicije. Pri maketi izdelka določite geometrijo, površino, svetlobo in vizualne podrobnosti, ki opredeljujejo izdelek. Uporaben rezultat je slika s pripadajočim besedilom, ki jo je mogoče pregledati, izbrati in izpopolnjevati v nadzorovanem zaporedju.

Praktična naloga

Praktična naloga

Tehnični primer v angleščini

Create a simple bicycle-care infographic

Create one portrait infographic teaching three bicycle checks before a short ride: tires, brakes and chain. Use three large illustrated steps in that order, a warm ivory background and dark green accents. Include only these headings: 'TIRES', 'BRAKES', 'CHAIN'. Leave generous space around each heading and keep the illustrations clearly separated.

Pričakovani rezultat

One portrait image with three ordered illustrated steps and the three exact, readable headings.

Preverjanje rezultata

Inspect the rendered image for heading spelling, order and clear separation of the three checks.
Ailoot · Slike POST /v1/images/generations gemini-3.1-flash-image

gemini-3.1-flash-image

Google /gemini-3.1-flash-image

Začetek

Nano Banana 2 (Gemini 3.1 Flash Image) ustvarja in ureja slike v pogovoru. Podpira besedilne in vizualne vire, izhod 0.5K–4K, kompozicijo z referenčnimi slikami in utemeljevanje z iskanjem za prizore z izdelki, infografike in iterativno vizualno delo.

Dovoljeni vhodi
Besedilo
Rezultati
Slike · Besedilo

Na voljo v Ailoot · vhodi in metode

Ailoot · Slike POST /v1/images/generations
Vhod
text
Izhod
image, text
Kontekst
131.072 tokens
Največji izhod
32.768 tokens
Izhodni format
Slikovna datoteka
PoljeVrstaZahtevaVrednosti in omejitvePrivzeto
PoljemodelVrstastringZahtevaObveznoVrednosti in omejitve
gemini-3.1-flash-image
Privzeto—
PoljepromptVrstastringZahtevaObveznoVrednosti in omejitve
Najmanjša dolžina: 1
Privzeto—
PoljenVrstaintegerZahtevaIzbirnoVrednosti in omejitve
Najmanj: 1
Privzeto1
Poljeresponse_formatVrstastringZahtevaIzbirnoVrednosti in omejitve
url, b64_json
Privzeto—
PoljestreamVrstabooleanZahtevaIzbirnoVrednosti in omejitvePrivzetofalse
PoljesizeVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljequalityVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljebackgroundVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeoutput_formatVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeoutput_compressionVrstaintegerZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljemoderationVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeinput_fidelityVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljestyleVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljepartial_imagesVrstaintegerZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Kombinacije vhodnih gradiv

Iz besedila v sliko · Obvezno: prompt

Parametri in življenjski cikel metode
ParameterSpecifikacija
Parametermaterial_typesSpecifikacijatext
ParameterrequiredSpecifikacijamodel, prompt
Parameteroptional_controlsSpecifikacijanull
Parametercontent_typeSpecifikacijaapplication/json

Življenjski cikel: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · Dejansko vrnjeni task_id ali zapis v medijski knjižnici

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve.

Cenik

Cene metod Ailoot

Ailoot SlikePOST /v1/images/generations
Besedilni vhod
0,0005 $ / 1K
Besedilni izhod
0,003 $ / 1K
Izhod, slika
0,06 $ / 1K tokens
Vhod
0,0005 $ / 1K slikovnih žetonov
Izhod
≈0,0448 $ na sliko 0.5K
Izhod
0,0672 $ na sliko 1K
Izhod
≈0,101 $ na sliko 2K
Izhod
≈0,151 $ na sliko 4K

Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. Kako delujeta rezervacija in obračun →

Podrobnosti referenčne tarife

Referenčne lestvice modela ne spreminjajo izbire metode, ocen cen ali stroškov. Veljavni stroški uporabljajo cene izbrane metode Ailoot.

Referenčne lestvice modela

Cene po nastavitvah

NastavitevCenovna lestvicaStrošek
NastavitevUltraCenovna lestvicaOsnovna cenaStrošek
Vhod · Vhodni žetoni $0.0010000 / 1K žetonov
Izhod · Izhodni žetoni $0.006000 / 1K žetonov
Izhod · izhod slike $0.12000 / 1K žetonov
Izhod · iskanje po spletu $0.028 na spletno iskanje

Primeri zahtev

Ailoot · Slike

curlPython SDKNode.js SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gemini-3.1-flash-image", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain 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/images/generations \
  -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 base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gemini-3.1-flash-image', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gemini-3.1-flash-image", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");

Prejmi in shrani rezultate

Ailoot · Slike

Prenesite vsako vrnjeno sliko ali shranite njeno vsebino Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Ohrani vse dokončane rezultate

Shranite vsako dokončano sliko; pridobite vsebino z vsake vrnjene URL ali dekodirajte njeno vsebino Base64.

Shranite vsak podatkovni element. Dekodirajte vsak b64_json ali pridobite vsebino z vsakega vrnjenega podpisanega URL. Končnico imena datoteke izberite glede na dejanski tip MIME oziroma bajte.

Če je treba preveriti izvirni odgovor

Če je treba preveriti rezultat generiranja ali urejanja slike, shranite izvirni operation_id/X-Client-Request-ID in vrnjene podatke o rezultatu. Obstoječe rezultate, ki vam pripadajo, pridobite prek medijske knjižnice z dejanskimi vrednostmi task_id ali asset_id. Zahteve za generiranje/urejanje ne pošiljajte znova in iz operation_id ne sestavljajte URL za periodično preverjanje stanja.

Polja odgovora
PoljeVrsta
PoljecreatedVrstainteger
Poljedata[].urlVrstastring
Poljedata[].b64_jsonVrstabase64 string
PoljeusageVrstaobject
Napake in naslednji koraki
OdgovorPogojNaslednji korak
Odgovor400 · invalid_request_errorPogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametraNaslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja.
Odgovorserver_errorPogojVrnjeni odgovor navaja, da je treba operacijo ali rezultat preveritiNaslednji korakShranite izvirni vrnjeni ID operacije/opravila, glave zahteve in odgovor; nadaljujte s podprtimi branji te izvirne operacije. Zahteve za ustvarjanje ne pošiljajte znova.

Druga imena

Druga imena modelov

Ailoot gemini-3.1-flash-image
Ailoot Ultra google/gemini-3.1-flash-image

Druga imena poti metod

/v1/images

Povezani ID-ji za klic

google/gemini-3.1-flash-image, gemini-3.1-flash-image

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-3.1-flash-image

google/gemini-3.1-flash-image

Google /google/gemini-3.1-flash-image

Začetek

Nano Banana 2 (Gemini 3.1 Flash Image) ustvarja in ureja slike v pogovoru. Podpira besedilne in vizualne vire, izhod 0.5K–4K, kompozicijo z referenčnimi slikami in utemeljevanje z iskanjem za prizore z izdelki, infografike in iterativno vizualno delo.

Dovoljeni vhodi
Besedilo
Rezultati
Besedilo

Na voljo v Ailoot · vhodi in metode

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Vhod
text
Izhod
text
Izhodni format
json ali SSE
PoljeVrstaZahtevaVrednosti in omejitvePrivzeto
PoljemodelVrstastringZahtevaObveznoVrednosti in omejitve
google/gemini-3.1-flash-image
Privzeto—
PoljemessagesVrstamessage[]ZahtevaObveznoVrednosti in omejitve
Najmanjše število elementov: 1
Privzeto—
Poljemessages[].roleVrstastringZahtevaObveznoVrednosti in omejitve
Primeri: system, user, assistant, tool, function
Pogoji: Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.
Odvisno od modela
Privzeto—
Poljemessages[].contentVrstastring|content_part[]|nullZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljemessages[].tool_callsVrstatool_call[]ZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljemessages[].tool_call_idVrstastringZahtevaIzbirnoVrednosti in omejitve
Velja, ko: role=tool; uporabite dejansko vrnjeni ID
Privzeto—
Poljemessages[].nameVrstastringZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljemessages[].reasoning_contentVrstastringZahtevaIzbirnoVrednosti in omejitve
Velja, ko: Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja
Privzeto—
Poljemessages[].reasoning_detailsVrstaobject|arrayZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljemax_tokensVrstaintegerZahtevaIzbirnoVrednosti in omejitve
Najmanj: 1
Odvisno od modela
Privzeto—
Poljemax_completion_tokensVrstaintegerZahtevaIzbirnoVrednosti in omejitve
Najmanj: 1
Odvisno od modela
Privzeto—
PoljestreamVrstabooleanZahtevaIzbirnoVrednosti in omejitvePrivzetofalse
Poljestream_options.include_usageVrstabooleanZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljetemperatureVrstanumberZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljetop_pVrstanumberZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljestopVrstastring|string[]ZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljetoolsVrstafunction_tool[]ZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljetools[].typeVrstastringZahtevaIzbirnoVrednosti in omejitve
function
Odvisno od modela
Privzeto—
Poljetools[].function.nameVrstastringZahtevaObveznoVrednosti in omejitve
Velja, ko: podano je funkcijsko orodje
Privzeto—
Poljetools[].function.descriptionVrstastringZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljetools[].function.parametersVrstaJSON_schemaZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljetool_choiceVrstastring|objectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeparallel_tool_callsVrstabooleanZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeresponse_formatVrstaobjectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljereasoning_effortVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljereasoningVrstaobjectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeservice_tierVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljeinstructionsVrstastringZahtevaIzbirnoVrednosti in omejitve
Polje združljivosti
Privzeto—
PoljefunctionsVrstafunction[]ZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljefunction_callVrstastring|objectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeprompt_cache_optionsVrstaobjectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljemodalitiesVrstastring[]ZahtevaIzbirnoVrednosti in omejitve
text
Privzeto—
PoljeproviderVrstaobjectZahtevaIzbirnoVrednosti in omejitve
Pogoji: provider.options je na tej besedilni poti Ultra zavrnjen
Privzeto—
Poljecache_control.ttlVrstastringZahtevaIzbirnoVrednosti in omejitve
Pogoji: 1h je zavrnjen na dejanskih mestih za predpomnjenje pozivov
Privzeto—
Kombinacije vhodnih gradiv

Besedilo · Besedilo UTF8

messages[].content

Parametri in življenjski cikel metode
ParameterSpecifikacija
Parametercontent_typeSpecifikacijaapplication/json
ParameterrequiredSpecifikacijamodel, messages
Parametermaterial_typesSpecifikacijatext
ParametermessagesSpecifikacijapolje sporočil s strukturo role/content
Parameterfile_materialSpecifikacijadejanski dokument UTF-8 je vstavljen kot dobesedno besedilo; ID datoteke se ne izpeljuje
Parameteroptional_controlsSpecifikacijastream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeSpecifikacijaodvisno od modela; uporabniška funkcijska orodja se razlikujejo od orodij, ki jih izvaja storitev
Parameteroutput_modalitiesSpecifikacijatext
Parameterhosted_operationsSpecifikacijafalse
Parametermultimodal_input_bindingSpecifikacijanull

Življenjski cikel: synchronous_or_streamed

Pošljite natančen ID modela skupaj z messages.

Dolžina konteksta ni zgornja meja izhoda.

Besedilna datoteka lahko poda dobesedno besedilo; slikovni, zvočni vhodi in vhodi z datotečnimi objekti potrebujejo natančno vezavo.

Cenik

Tarifni podatki ne dodajajo možnosti zahteve. Podprti parametri so navedeni pri izbrani metodi.

Hitri način
Standardna tarifa Ko je izbran hitri način
Način flex
Standardna tarifa Ko je izbran način flex
Najvišja raven razmišljanja
Standardna tarifa Ko najvišja raven razmišljanja uporablja privzeto prilagoditev (default)
Raven razmišljanja · visoka
Standardna tarifa Ko je raven razmišljanja visoka
Raven razmišljanja · minimalna
Standardna tarifa Ko je raven razmišljanja minimalna
Cene izrecnega predpomnjenja
Ni omogočeno Ko je zahtevano eksplicitno predpomnjenje

Cene Ailoot

Cene po nastavitvah

Vsak strošek povežite s prikazanimi pogoji. Za vsak nabor alternativnih nastavitev uporabite eno ceno.

NastavitevCenovna lestvicaŽetonov konteksta več kotŽetonov konteksta do vključnoStrošek
NastavitevOsnovne cene za žetoneCenovna lestvicaOsnovna cenaŽetonov konteksta več kot—Žetonov konteksta do vključnoBrez zgornje mejeStrošek
Vhod · Vhodni žetoni $0.001 / 1K žetonov
Izhod · Izhodni žetoni $0.006 / 1K žetonov
Vhod · Branje predpomnilnika — / 1K žetonov
Vhod · Zapis v predpomnilnik — / 1K žetonov
Vhod · Zapis v predpomnilnik, 1 ura — / 1K žetonov
Izhod · Izhodni žetoni slike $0.12 / 1K slikovnih žetonov
NastavitevRazred 1 glede na dolžino zahteveCenovna lestvica—Žetonov konteksta več kot0Žetonov konteksta do vključnoBrez zgornje mejeStrošek
Vhod · Vhodni žetoni $0.001 / 1K žetonov
Izhod · Izhodni žetoni $0.006 / 1K žetonov
Vhod · Branje predpomnilnika — / 1K žetonov
Vhod · Zapis v predpomnilnik — / 1K žetonov
Vhod · Zapis v predpomnilnik, 1 ura — / 1K žetonov

Podrobnosti referenčne tarife

Referenčne lestvice modela ne spreminjajo izbire metode, ocen cen ali stroškov. Veljavni stroški uporabljajo cene izbrane metode Ailoot.

Google: Nano Banana 2 (Gemini 3.1 Flash Image)

Cene po nastavitvah

NastavitevObračunski pogojiStrošek
NastavitevGoogle: Nano Banana 2 (Gemini 3.1 Flash Image) · Privzeta konfiguracijaObračunski pogojiPrivzeta konfiguracijaStrošek
Vhod · Vhodni žetoni 0,001 $ / 1K žetonov
Izhod · Izhodni žetoni 0,006 $ / 1K žetonov
Izhod · Izhodna slika 0,12 $ / 1K žetonov
Izhod · Iskanje po spletu 0,028 $ na iskanje

Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. Kako delujeta rezervacija in obračun →

Primeri zahtev

Ailoot Ultra · OpenAI Chat

curlPython SDKTok Python
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-3.1-flash-image", "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-3.1-flash-image',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-3.1-flash-image',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")

Prejmi in shrani rezultate

Ailoot Ultra · OpenAI Chat

json ali SSE

Ohrani vse dokončane rezultate

Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.

Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.

Če je treba preveriti izvirni odgovor

Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.

Polja odgovora
PoljeVrsta
Poljechoices[].indexVrstainteger
Poljechoices[].message.contentVrstastring|null
Poljechoices[].message.tool_callsVrstatool_call[]
Poljechoices[].message.reasoning_contentVrstastring
Poljechoices[].message.reasoning_detailsVrstaobject|array
Poljechoices[].finish_reasonVrstastring|null
PoljeusageVrstaobject
Napake in naslednji koraki
OdgovorPogojNaslednji korak
Odgovor400 · invalid_request_errorPogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametraNaslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja.

Druga imena

Druga imena modelov

Ailoot gemini-3.1-flash-image
Ailoot Ultra google/gemini-3.1-flash-image

Druga imena poti metod

/v1/images

Povezani ID-ji za klic

google/gemini-3.1-flash-image, gemini-3.1-flash-image

Ailoot Ultra · Slike POST /v1/images/generations google/gemini-3.1-flash-image

google/gemini-3.1-flash-image

Google /google/gemini-3.1-flash-image

Začetek

Nano Banana 2 (Gemini 3.1 Flash Image) ustvarja in ureja slike v pogovoru. Podpira besedilne in vizualne vire, izhod 0.5K–4K, kompozicijo z referenčnimi slikami in utemeljevanje z iskanjem za prizore z izdelki, infografike in iterativno vizualno delo.

Dovoljeni vhodi
Besedilo · Slike
Rezultati
Slike

Na voljo v Ailoot · vhodi in metode

Ailoot Ultra · Slike POST /v1/images/generations
Vhod
text, image
Izhod
image
PoljeVrstaZahtevaVrednosti in omejitvePrivzeto
PoljemodelVrstastringZahtevaObveznoVrednosti in omejitve
google/gemini-3.1-flash-image
Privzeto—
PoljepromptVrstastringZahtevaObveznoVrednosti in omejitve
Najmanjša dolžina: 1
Privzeto—
PoljeresolutionVrstastringZahtevaIzbirnoVrednosti in omejitve
512, 1K, 2K, 4K
Privzeto—
Poljeaspect_ratioVrstastringZahtevaIzbirnoVrednosti in omejitve
1:1, 1:4, 1:8, 2:3, 3:2, 3:4, 4:1, 4:3, 4:5, 5:4, 8:1, 9:16, 16:9, 21:9
Privzeto—
PoljenVrstaintegerZahtevaIzbirnoVrednosti in omejitve
Najmanj: 1
Največ: 1
Privzeto—
Poljeinput_referencesVrstaarrayZahtevaIzbirnoVrednosti in omejitve
Najmanjše število elementov: 0
Največ elementov: 14
Privzeto—
PoljeproviderVrstaobjectZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Parametri in življenjski cikel metode
ParameterSpecifikacija
Parametercontent_typeSpecifikacijaapplication/json
ParameterrequiredSpecifikacijamodel, prompt
Parametermaterial_typesSpecifikacijatext, image

Življenjski cikel: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · Dejansko vrnjeni task_id ali zapis v medijski knjižnici

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Cenik

Kako se izračuna končni strošek

Prikazane cene so namenjene oceni stroškov pred generiranjem. Končni znesek se izračuna na podlagi stroška, zabeleženega za izvirno generiranje. Izmerjeno trajanje izhoda in napovedane količine niso končna obračunska količina.

Tarifni podatki ne dodajajo možnosti zahteve. Podprti parametri so navedeni pri izbrani metodi.

Hitri način
Ni navedeno Ko je izbran hitri način
Način flex
Ni navedeno Ko je izbran način flex
Najvišja raven razmišljanja
Ni navedeno Ko najvišja raven razmišljanja uporablja privzeto prilagoditev (default)

Ocenjene cene za primerjavo

Cene po nastavitvah

Vsak strošek povežite s prikazanimi pogoji. Za vsak nabor alternativnih nastavitev uporabite eno ceno.

NastavitevCenovna lestvicaPredvidena količinaStrošek
NastavitevOsnovne cene žetonovCenovna lestvicaOsnovna cenaPredvidena količina—Strošek
Vhod · Vhodni žetoni · Ocena samo za primerjavo — / 1K žetonov
Izhod · Izhodni žetoni · Ocena samo za primerjavo — / 1K žetonov
Vhod · Branje predpomnilnika · Ocena samo za primerjavo — / 1K žetonov
Vhod · Zapis v predpomnilnik · Ocena samo za primerjavo — / 1K žetonov
Vhod · Zapis v predpomnilnik, 1 ura · Ocena samo za primerjavo — / 1K žetonov
NastavitevOcenjeni strošek ustvarjanjaCenovna lestvica—Predvidena količinaocena za eno generiranjeStrošek
Izhod · Ocenjeni stroški ustvarjanja · Ocena samo za primerjavo $0.49152 ocena pred ustvarjanjem

Ta ocena ni dodatno plačilo ali fiksna cena za dokončano generiranje.

Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. Kako delujeta rezervacija in obračun →

Primeri zahtev

Ailoot Ultra · Slike

curl
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'google/gemini-3.1-flash-image', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

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/images/generations \
  -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 base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT

Prejmi in shrani rezultate

Ailoot Ultra · Slike

Prenesite vsako vrnjeno sliko ali shranite njeno vsebino Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Branje druge vsebine
Preberi obstoječa gradiva, ki vam pripadajo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Ohrani vse dokončane rezultate

Shranite vsako dokončano sliko; pridobite vsebino z vsake vrnjene URL ali dekodirajte njeno vsebino Base64.

Shranite celoten odgovor in glave, vse dejanske izhode, izvirne vrnjene identifikatorje in vsa polja s podatki o porabi. Pridobite podatke izvirne operacije brez ponovnega pošiljanja zahteve za ustvarjanje.

Če je treba preveriti izvirni odgovor

Shranite vrnjeni X-Client-Request-ID za uskladitev evidenc. Berite samo dejansko vrnjene vrednosti task_id/asset_id ali svojo medijsko knjižnico; iz ID operacije nikoli ne sestavite URL opravila in zahteve za ustvarjanje nikoli ne pošljite znova.

Polja odgovora
PoljeVrsta
PoljecreatedVrsta
Poljedata[].urlVrsta
Poljedata[].b64_jsonVrsta
PoljeusageVrsta

Druga imena

Druga imena modelov

Ailoot gemini-3.1-flash-image
Ailoot Ultra google/gemini-3.1-flash-image

Druga imena poti metod

/v1/images

Povezani ID-ji za klic

google/gemini-3.1-flash-image, gemini-3.1-flash-image

Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-3.1-flash-image

google/gemini-3.1-flash-image

Google /google/gemini-3.1-flash-image

Začetek

Nano Banana 2 (Gemini 3.1 Flash Image) ustvarja in ureja slike v pogovoru. Podpira besedilne in vizualne vire, izhod 0.5K–4K, kompozicijo z referenčnimi slikami in utemeljevanje z iskanjem za prizore z izdelki, infografike in iterativno vizualno delo.

Dovoljeni vhodi
Besedilo
Rezultati
json · sse

Na voljo v Ailoot · vhodi in metode

Ailoot Ultra · Anthropic Messages POST /v1/messages
Vhod
text
Izhod
json, sse
Izhodni format
JSON ali SSE
PoljeVrstaZahtevaVrednosti in omejitvePrivzeto
PoljemodelVrstastringZahtevaObveznoVrednosti in omejitve
google/gemini-3.1-flash-image
Privzeto—
PoljemessagesVrstamessage[]ZahtevaObveznoVrednosti in omejitvePrivzeto—
Poljemessages[].roleVrstastringZahtevaObveznoVrednosti in omejitve
user, assistant
Privzeto—
Poljemessages[].contentVrstastringZahtevaObveznoVrednosti in omejitvePrivzeto—
Poljemax_tokensVrstaintegerZahtevaObveznoVrednosti in omejitvePrivzeto—
PoljestreamVrstabooleanZahtevaIzbirnoVrednosti in omejitvePrivzetofalse
Kombinacije vhodnih gradiv

Besedilo · Besedilo UTF-8

niz messages[].content

Parametri in življenjski cikel metode
ParameterSpecifikacija
Parametercontent_typeSpecifikacijaapplication/json
ParameterrequiredSpecifikacijamodel, messages, max_tokens
Parameteroptional_controlsSpecifikacijastream
Parametermaterial_typesSpecifikacijatext
Parametertext_file_materialSpecifikacijaPreberite dejanski dokument UTF-8 in njegovo besedilo vstavite v navedeni vhodni niz ali niz vsebine sporočila.

Življenjski cikel: synchronous_or_streamed

Cenik

Tarifni podatki ne dodajajo možnosti zahteve. Podprti parametri so navedeni pri izbrani metodi.

Hitri način
Standardna tarifa Ko je izbran hitri način
Način flex
Standardna tarifa Ko je izbran način flex
Najvišja raven razmišljanja
Standardna tarifa Ko najvišja raven razmišljanja uporablja privzeto prilagoditev (default)
Raven razmišljanja · visoka
Standardna tarifa Ko je raven razmišljanja visoka
Raven razmišljanja · minimalna
Standardna tarifa Ko je raven razmišljanja minimalna
Cene izrecnega predpomnjenja
Ni omogočeno Ko je zahtevano eksplicitno predpomnjenje

Cene Ailoot

Cene po nastavitvah

Vsak strošek povežite s prikazanimi pogoji. Za vsak nabor alternativnih nastavitev uporabite eno ceno.

NastavitevCenovna lestvicaŽetonov konteksta več kotŽetonov konteksta do vključnoStrošek
NastavitevOsnovne cene za žetoneCenovna lestvicaOsnovna cenaŽetonov konteksta več kot—Žetonov konteksta do vključnoBrez zgornje mejeStrošek
Vhod · Vhodni žetoni $0.001 / 1K žetonov
Izhod · Izhodni žetoni $0.006 / 1K žetonov
Vhod · Branje predpomnilnika — / 1K žetonov
Vhod · Zapis v predpomnilnik — / 1K žetonov
Vhod · Zapis v predpomnilnik, 1 ura — / 1K žetonov
Izhod · Izhodni žetoni slike $0.12 / 1K slikovnih žetonov
NastavitevRazred 1 glede na dolžino zahteveCenovna lestvica—Žetonov konteksta več kot0Žetonov konteksta do vključnoBrez zgornje mejeStrošek
Vhod · Vhodni žetoni $0.001 / 1K žetonov
Izhod · Izhodni žetoni $0.006 / 1K žetonov
Vhod · Branje predpomnilnika — / 1K žetonov
Vhod · Zapis v predpomnilnik — / 1K žetonov
Vhod · Zapis v predpomnilnik, 1 ura — / 1K žetonov

Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. Kako delujeta rezervacija in obračun →

Primeri zahtev

Ailoot Ultra · Anthropic Messages

Popolno minimalno telo zahteve JSONcurl · uporabite svoj dokument UTF-8Python · shranite celoten rezultat
{
  "model": "google/gemini-3.1-flash-image",
  "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-3.1-flash-image', '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-3.1-flash-image', '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))

Prejmi in shrani rezultate

Ailoot Ultra · Anthropic Messages

JSON ali SSE

Ohrani vse dokončane rezultate

Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.

Ohranite vse vsebinske bloke, podpise sklepanja in dejanske ID uporabe orodij. Sestavite vse delne spremembe blokov SSE; prvi besedilni blok ni celoten izhod.

Če je treba preveriti izvirni odgovor

Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.

Polja odgovora
PoljeVrsta
PoljeidVrstastring
PoljemodelVrstastring
Poljecontent[]Vrstatext|thinking|tool_use|other content block
Poljestop_reasonVrstastring|null
PoljeusageVrstaobject
Napake in naslednji koraki
OdgovorPogojNaslednji korak
Odgovor400 · invalid_request_errorPogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametraNaslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja.

Druga imena

Druga imena modelov

Ailoot gemini-3.1-flash-image
Ailoot Ultra google/gemini-3.1-flash-image

Druga imena poti metod

/v1/images

Povezani ID-ji za klic

google/gemini-3.1-flash-image, gemini-3.1-flash-image

FAQ · Google: Nano Banana 2 (Gemini 3.1 Flash Image)
Kateri vhodi in rezultati so na voljo?

POST /v1/images/generations · gemini-3.1-flash-image: text → image, text

POST /v1/chat/completions · google/gemini-3.1-flash-image: text → text

POST /v1/images/generations · google/gemini-3.1-flash-image: text, image → image

POST /v1/messages · google/gemini-3.1-flash-image: text → json, sse

Katera polja uporablja zahteva?

POST /v1/images/generations · gemini-3.1-flash-image: model, prompt, n, response_format, stream

POST /v1/chat/completions · google/gemini-3.1-flash-image: model, messages, stream, modalities, provider

POST /v1/images/generations · google/gemini-3.1-flash-image: model, prompt, resolution, aspect_ratio, n, input_references, provider

POST /v1/messages · google/gemini-3.1-flash-image: model, messages, max_tokens, stream

Katere omejitve veljajo?

POST /v1/images/generations · gemini-3.1-flash-image: ctx: 131072; max_out: 32768; n.minimum: 1

POST /v1/chat/completions · google/gemini-3.1-flash-image: messages.min_items: 1

POST /v1/images/generations · google/gemini-3.1-flash-image: n.minimum: 1; n.maximum: 1

Več podrobnosti

Ailoot povežite s Claude Code, OpenCode, Hermes ali svojo aplikacijo.

Podjetje in njegov portfelj projektov

Podjetje in njegov portfelj projektov: milijoni strank; mesečna prodaja v milijardah.

Žetone kupujte s popustom.

Naročniški popust za redno delo. Promocijske kode prinesejo do 50% popusta na nakup žetonov.

Naročnina
Za redne zahteve izberite paket s popustom.
Promocijska koda do 50%
Kodo vnesite ob nakupu. Cena se preračuna po veljavni akciji.
Poraba v zgodovini
Za vsako zahtevo se shranijo model, žetoni in znesek.

Izberite naročnino · Oglejte si cene modelov

API povežite z izdelkom, ki ga prodajate.

SaaS, aplikacije in boti po ponudbi in licenčni pogodbi Ailoot. Za nadaljnjo prodajo zaprosite za preprodajno licenco.

Komercialna aplikacija
Ustvarjanje besedila, slik, videa in zvoka vključite v plačljive funkcije svoje storitve.
Licenca za preprodajalca
Pošljite opis projekta in shemo dostopa. Zahtevajte pisne pogoje uporabe in nadaljnje prodaje.
Dokumenti na strani
Ponudba, licenčna pogodba in politika obdelave podatkov so dostopne pred povezavo.

Zaprosite za preprodajno licenco · Ponudba in licenčna pogodba