modeller

Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)

Markdown · JSON

Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)

Nano Banana 2 (Gemini 3.1 Flash Image Preview) skaber og redigerer billeder ud fra tekst og visuelle referencer. Dens dokumenterede styrker omfatter motivkonsistens, tekst i billeder og lokalisering, samtalebaserede ændringer og kreativ styring af komposition, billedformat og opløsning.

Om modellen

Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.

Nano Banana 2 er Googles Gemini 3.1 Flash Image-model til billedgenerering og samtalebaseret redigering. Denne post bevarer den præcise Preview-identitet. En skriftlig beskrivelse kan definere en ny visualisering, mens et inputbillede kan fastlægge det motiv, udseende eller den komposition, der skal ændres. Resultatet kan indeholde et billede og ledsagende tekst. Googles lanceringsmateriale fremhæver verdensviden, tekstgengivelse og motivkonsistens sammen med muligheden for at forfine en scene gennem relaterede ture.

Den dokumenterede model kan bruge oplysninger fra web- og billedsøgning til at understøtte kildebaseret visuel generering. Det understøtter opgaver som en lokationsinspireret illustration eller et diagram baseret på leverede oplysninger. Definér de kildefakta, der skal repræsenteres, og adskil dem fra kunstneriske valg. Søgeunderstøttet generering gør ikke hver detalje i det endelige billede til et verificeret udsagn. Giv den autoritative reference, og undersøg outputtet mod den, hvis et produkt, vartegn eller diagram skal være præcist.

Lanceringen beskriver forbedret tekstgengivelse og lokalisering i billeder. Giv den præcise ordlyd, sproget og rollen for hvert tekstelement ved en plakat, infografik eller et marketingdesign. Fastlæg først teksten, og bed derefter om visualiseringen med den, som billedvejledningen anbefaler. Forklar læserækkefølgen og den relative vægt, så en overskrift, billedtekst og diagrambetegnelse ikke forveksles. Gennemgå stavning, tegnsætning og forbindelsen mellem en betegnelse og det illustrerede element, før billedet bruges i en publikation.

Kreative indstillinger omfatter billedformat og opløsning. Lanceringen tilføjer output på 512 pixels sammen med valgene 1K, 2K og 4K og tilføjer billedformaterne 4:1, 1:4, 8:1 og 1:8. Udviklervejledningen identificerer minimal tænkning som standard og high tænkning som en mulighed til mere krævende kompositioner. Vælg den tilsigtede anvendelse før kompositionen: En lodret story, et bredt banner og et kompakt diagram kræver forskellig plads til motiv og eventuel tekst. Disse indstillinger beskriver producentens genereringsforløb for denne linje frem for automatisk størrelsesændring af et eksisterende færdigt aktiv.

Mærk hver references rolle for at bevare motivkonsistens: produktudseende, figuridentitet, baggrund eller visuel stil. Angiv de detaljer, der skal bevares, og derefter de elementer, der skal ændres. En original opgave kan placere et leveret produktfoto i en ny scene med bevarelse af form, materiale og synlige mærkekendetegn. Brug de samme referencer til en illustreret sekvens, og definér, hvilke scenespecifikke detaljer der varierer. Flere referencer erstatter ikke en klar instruktion om, hvad hvert billede bidrager med.

Samtalebaseret redigering er nyttig til en bestemt revision. Bed om at tilpasse ét objekt, en baggrund eller belysningen med bevarelse af den accepterede komposition. Producentens vejledning beskriver semantisk maskering, hvor det redigerede område identificeres med ord. Bevar samtalen og de nødvendige metadata for ræsonneringskontekst i den valgte grænseflade ved arbejde over flere ture; Gemini 3-vejledningen forklarer, at tankesignaturer hjælper med at overføre den kontekst. En beskrivelse af et uændret område er en instruktion, der skal kontrolleres mod originalen, ikke en garanti for, at hver pixel forbliver identisk.

Gemini 3-udviklertabellen navngiver eksplicit gemini-3.1-flash-image-preview med en inputramme på 128K og en outputramme på 32K. Bevar det præcise Preview-modelnavn, når en generering registreres. De tilgængelige reference-, output- og opløsningsindstillinger skal gemmes sammen med kildebillederne og anmodningen, så en revision kan reproduceres ensartet. Brug de samme kildereferencer til en revision, og angiv den præcise visuelle ændring med bevarelse af den accepterede rolle for hvert input.

Billedvejledningen advarer om, at det ønskede antal billeder ikke altid følges, og angiver SynthID-mærkning af genererede billeder. Kontrollér alle returnerede billeder og eventuel ledsagende tekst frem for at antage, at resultatet er ét fast billede. Undersøg motividentitet, objektantal, tekst i billedet, komposition og referencetrofasthed ved den tilsigtede visningsstørrelse. Angiv komponenterne i en logisk rækkefølge ved en kompleks scene, og beskriv det ønskede udseende positivt. Det nyttige resultat er et gennemgået visuelt aktiv med kildereferencer og præcis modelidentitet bevaret til næste redigering.

Praktisk opgave

Praktisk opgave

Teknisk eksempel på engelsk

Create a four-stage growing guide

Create a friendly flat illustration for a gardening guide showing four tomato-growing stages from left to right: seed in soil, small seedling, leafy plant, mature plant with red tomatoes. Use a warm cream background, consistent pots and simple green shapes. Keep each stage clearly separated. Include no text, numbers, labels or decorative extra plants.

Forventet resultat

An image with four distinct growing stages in the specified order and a consistent illustration style.

Kontrollér resultatet

Inspect the actual image for exactly four stages, the left-to-right progression and absence of text or extra plants.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-3.1-flash-image-preview

google/gemini-3.1-flash-image-preview

Google /google/gemini-3.1-flash-image-preview

Start

Nano Banana 2 (Gemini 3.1 Flash Image Preview) skaber og redigerer billeder ud fra tekst og visuelle referencer. Dens dokumenterede styrker omfatter motivkonsistens, tekst i billeder og lokalisering, samtalebaserede ændringer og kreativ styring af komposition, billedformat og opløsning.

Accepterede input
Tekst
Resultater
Tekst

Tilgængelig i Ailoot · input og metoder

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Inputtyper
text
Outputtyper
text
Outputformat
json eller SSE
FeltTypeKravVærdier og grænserStandard
FeltmodelTypestringKravPåkrævetVærdier og grænser
google/gemini-3.1-flash-image-preview
Standard—
FeltmessagesTypemessage[]KravPåkrævetVærdier og grænser
Minimumsantal elementer: 1
Standard—
Feltmessages[].roleTypestringKravPåkrævetVærdier og grænser
Eksempler: system, user, assistant, tool, function
Betingelser: Disse roller er eksplicit repræsenteret i kildekodens kompatibilitetstyper; modellens præcise rollesæt er fortsat modelspecifikt.
Afhænger af modellen
Standard—
Feltmessages[].contentTypestring|content_part[]|nullKravValgfritVærdier og grænserStandard—
Feltmessages[].tool_callsTypetool_call[]KravValgfritVærdier og grænserStandard—
Feltmessages[].tool_call_idTypestringKravValgfritVærdier og grænser
Gælder når: role=tool; brug det faktisk returnerede ID
Standard—
Feltmessages[].nameTypestringKravValgfritVærdier og grænserStandard—
Feltmessages[].reasoning_contentTypestringKravValgfritVærdier og grænser
Gælder når: Send det faktisk returnerede ræsonnement tilbage, når modellen bruger det
Standard—
Feltmessages[].reasoning_detailsTypeobject|arrayKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltmax_tokensTypeintegerKravValgfritVærdier og grænser
Minimum: 1
Afhænger af modellen
Standard—
Feltmax_completion_tokensTypeintegerKravValgfritVærdier og grænser
Minimum: 1
Afhænger af modellen
Standard—
FeltstreamTypebooleanKravValgfritVærdier og grænserStandardfalse
Feltstream_options.include_usageTypebooleanKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FelttemperatureTypenumberKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Felttop_pTypenumberKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltstopTypestring|string[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FelttoolsTypefunction_tool[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Felttools[].typeTypestringKravValgfritVærdier og grænser
function
Afhænger af modellen
Standard—
Felttools[].function.nameTypestringKravPåkrævetVærdier og grænser
Gælder når: funktionsværktøj angivet
Standard—
Felttools[].function.descriptionTypestringKravValgfritVærdier og grænserStandard—
Felttools[].function.parametersTypeJSON_schemaKravValgfritVærdier og grænserStandard—
Felttool_choiceTypestring|objectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltparallel_tool_callsTypebooleanKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltresponse_formatTypeobjectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltreasoning_effortTypestringKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltreasoningTypeobjectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltservice_tierTypestringKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltinstructionsTypestringKravValgfritVærdier og grænser
Kompatibilitetsfelt
Standard—
FeltfunctionsTypefunction[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltfunction_callTypestring|objectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltprompt_cache_optionsTypeobjectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltmodalitiesTypestring[]KravValgfritVærdier og grænser
text
Standard—
FeltproviderTypeobjectKravValgfritVærdier og grænser
Betingelser: provider.options afvises på denne Ultra-tekstrute
Standard—
Feltcache_control.ttlTypestringKravValgfritVærdier og grænser
Betingelser: 1h afvises på de faktiske placeringer for promptcaching
Standard—
Kombinationer af inputmaterialer

Tekst · UTF8-tekst

messages[].content

Metodeparametre og livscyklus
ParameterKontrakt
Parametercontent_typeKontraktapplication/json
ParameterrequiredKontraktmodel, messages
Parametermaterial_typesKontrakttext
ParametermessagesKontraktbeskedarray med strukturen role/content
Parameterfile_materialKontraktfaktisk UTF-8-dokument indsat som bogstavelig tekst; intet fil-ID udledes
Parameteroptional_controlsKontraktstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeKontraktmodelspecifikt; brugerens funktionsværktøjer er forskellige fra hostede værktøjer
Parameteroutput_modalitiesKontrakttext
Parameterhosted_operationsKontraktfalse
Parametermultimodal_input_bindingKontraktnull

Livscyklus: synchronous_or_streamed

Send det præcise model-ID med messages.

Kontekstlængde er ikke et outputloft.

En tekstfil kan levere bogstavelig tekst; billed-, lyd- og filobjektinput kræver en præcis binding.

Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand
Standardpris Når hurtig tilstand er valgt
flex-tilstand
Standardpris Når flex-tilstanden er valgt
Maksimal ræsonneringsindsats
Standardpris Når default-justeringen anvendes ved maksimal ræsonneringsindsats
Ræsonneringsindsats · high
Standardpris Når ræsonneringsindsatsen er sat til high
Ræsonneringsindsats · minimal
Standardpris Når ræsonneringsindsatsen er minimal
Priser for eksplicit caching
Ikke aktiveret Når der anmodes om eksplicit caching

Ailoot-takster

Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

KonfigurationTakstplanKonteksttokens, mere endKonteksttokens, op til og medBeløb
KonfigurationGrundtakster for tokensTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.001 / 1K tokens
Output · Outputtokens $0.006 / 1K tokens
Input · Cachelæsning — / 1K tokens
Input · Cacheskrivning — / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Billedoutputtokens $0.12 / 1K billedtokens
KonfigurationAnmodningslængde · niveau 1Takstplan—Konteksttokens, mere end0Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.001 / 1K tokens
Output · Outputtokens $0.006 / 1K tokens
Input · Cachelæsning — / 1K tokens
Input · Cacheskrivning — / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens

Detaljer om referencetariffen

Referenceplaner på modelniveau ændrer ikke metodevalg, prisoverslag eller opkrævninger. Ved den aktive afregning anvendes taksterne for den valgte Ailoot-metode.

google/gemini-3.1-flash-image-preview

Priser efter konfiguration

KonfigurationAfregningsbetingelserBeløb
Konfigurationgoogle/gemini-3.1-flash-image-preview · StandardkonfigurationAfregningsbetingelserStandardkonfigurationBeløb
Input · Input 0,001 US$ / 1K tokens
Output · Output 0,12 US$ / 1K tokens
google/gemini-3.1-flash-image-preview

Priser efter konfiguration

KonfigurationAfregningsbetingelserBeløb
Konfigurationgoogle/gemini-3.1-flash-image-preview · StandardkonfigurationAfregningsbetingelserStandardkonfigurationBeløb
Input · Input 0,001 US$ / 1K tokens
Output · Output 0,12 US$ / 1K tokens
google/gemini-3.1-flash-image-preview

Priser efter konfiguration

KonfigurationAfregningsbetingelserBeløb
Konfigurationgoogle/gemini-3.1-flash-image-preview · StandardkonfigurationAfregningsbetingelserStandardkonfigurationBeløb
Input · Input 0,00 US$ pr. kald
Output · Output 0,16 US$ pr. kald
google/gemini-3.1-flash-image-preview

Priser efter konfiguration

KonfigurationAfregningsbetingelserBeløb
Konfigurationgoogle/gemini-3.1-flash-image-preview · StandardkonfigurationAfregningsbetingelserStandardkonfigurationBeløb
Input · Input 0,00 US$ pr. kald
Output · Output 0,32 US$ pr. kald
google/gemini-3.1-flash-image-preview

Priser efter konfiguration

KonfigurationAfregningsbetingelserBeløb
Konfigurationgoogle/gemini-3.1-flash-image-preview · StandardkonfigurationAfregningsbetingelserStandardkonfigurationBeløb
Input · Input 0,00 US$ pr. kald
Output · Output 0,00 US$ pr. kald
Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)

Priser efter konfiguration

KonfigurationAfregningsbetingelserBeløb
KonfigurationGoogle: Nano Banana 2 (Gemini 3.1 Flash Image Preview) · StandardkonfigurationAfregningsbetingelserStandardkonfigurationBeløb
Input · Inputtokens 0,001 US$ / 1K tokens
Output · Outputtokens 0,006 US$ / 1K tokens
Output · Outputbillede 0,12 US$ / 1K tokens
Output · Websøgning 0,028 US$ pr. søgning

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →

Eksempelanmodninger

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-3.1-flash-image-preview", "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-preview',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-preview',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")

Hent og gem resultater

Ailoot Ultra · OpenAI Chat

json eller SSE

Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar hvert valg og dets indhold, værktøjskald og ræsonnement. Saml i SSE deltaer efter valg-/værktøjsindeks, og bevar den endelige afslutningsårsag og forbrugsoplysningerne.

Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter
FeltType
Feltchoices[].indexTypeinteger
Feltchoices[].message.contentTypestring|null
Feltchoices[].message.tool_callsTypetool_call[]
Feltchoices[].message.reasoning_contentTypestring
Feltchoices[].message.reasoning_detailsTypeobject|array
Feltchoices[].finish_reasonTypestring|null
FeltusageTypeobject
Fejl og næste trin
SvarBetingelseNæste trin
Svar400 · invalid_request_errorBetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdiNæste trinRet de angivne felter før en ny oprettelsesanmodning.

Aliaser

Modelaliaser

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

Aliaser for metodestier

/v1/images

Relaterede kalder-ID’er

google/gemini-3.1-flash-image-preview

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

google/gemini-3.1-flash-image-preview

Google /google/gemini-3.1-flash-image-preview

Start

Nano Banana 2 (Gemini 3.1 Flash Image Preview) skaber og redigerer billeder ud fra tekst og visuelle referencer. Dens dokumenterede styrker omfatter motivkonsistens, tekst i billeder og lokalisering, samtalebaserede ændringer og kreativ styring af komposition, billedformat og opløsning.

Accepterede input
Tekst · Billeder
Resultater
Billeder

Tilgængelig i Ailoot · input og metoder

Ailoot Ultra · Billeder POST /v1/images/generations
Inputtyper
text, image
Outputtyper
image
FeltTypeKravVærdier og grænserStandard
FeltmodelTypestringKravPåkrævetVærdier og grænser
google/gemini-3.1-flash-image-preview
Standard—
FeltpromptTypestringKravPåkrævetVærdier og grænser
Minimumslængde: 1
Standard—
FeltresolutionTypestringKravValgfritVærdier og grænser
512, 1K, 2K, 4K
Standard—
Feltaspect_ratioTypestringKravValgfritVærdier og grænser
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
Standard—
FeltnTypeintegerKravValgfritVærdier og grænser
Minimum: 1
Maksimum: 1
Standard—
Feltinput_referencesTypearrayKravValgfritVærdier og grænser
Minimumsantal elementer: 0
Maksimalt antal elementer: 14
Standard—
FeltproviderTypeobjectKravValgfritVærdier og grænserStandard—
Metodeparametre og livscyklus
ParameterKontrakt
Parametercontent_typeKontraktapplication/json
ParameterrequiredKontraktmodel, prompt
Parametermaterial_typesKontrakttext, image

Livscyklus: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · det faktisk returnerede task_id eller posten i mediebiblioteket

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Priser

Sådan beregnes det endelige beløb

De viste satser bruges til at anslå omkostningen før genereringen. Det endelige beløb beregnes ud fra den registrerede omkostning for den oprindelige generering. Den målte varighed af outputtet og de anslåede mængder er ikke den endelige fakturerbare mængde.

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand
Ikke angivet Når hurtig tilstand er valgt
flex-tilstand
Ikke angivet Når flex-tilstanden er valgt
Maksimal ræsonneringsindsats
Ikke angivet Når default-justeringen anvendes ved maksimal ræsonneringsindsats

Estimerede takster til sammenligning

Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

KonfigurationTakstplanForventet mængdeBeløb
KonfigurationGrundpriser for tokensTakstplanGrundtakstForventet mængde—Beløb
Input · Inputtokens · Estimat kun til sammenligning — / 1K tokens
Output · Outputtokens · Estimat kun til sammenligning — / 1K tokens
Input · Cachelæsning · Estimat kun til sammenligning — / 1K tokens
Input · Cacheskrivning · Estimat kun til sammenligning — / 1K tokens
Input · Cacheskrivning, 1 time · Estimat kun til sammenligning — / 1K tokens
KonfigurationAnslået genereringsomkostningTakstplan—Forventet mængdeestimat for én genereringBeløb
Output · Anslået genereringsomkostning · Estimat kun til sammenligning $0.49152 estimat før generering

Dette estimat er hverken et ekstra gebyr eller en fast pris for den færdige generering.

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →

Eksempelanmodninger

Ailoot Ultra · Billeder

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-preview', '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

Hent og gem resultater

Ailoot Ultra · Billeder

Hent hvert returneret billede, eller gem dets Base64-indhold

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Læsning af andet indhold
Hent eksisterende filer, du ejer
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.
Behold alle færdige resultater

Gem hvert færdigt billede; hent hver returneret URL eller afkod dets Base64-indhold.

Gem hele svaret og alle headere, alle faktisk returnerede output, de oprindeligt returnerede identifikatorer og alle felter med forbrugsdata. Gendan den oprindelige operation uden at sende oprettelsesanmodningen igen.

Hvis det oprindelige svar skal kontrolleres

Gem det returnerede X-Client-Request-ID til afstemning. Brug kun faktisk returnerede task_id/asset_id-værdier eller dit eget mediebibliotek til læseanmodninger; opbyg aldrig en opgave-URL ud fra operations-ID’et, og send aldrig oprettelsesanmodningen igen.

Svarfelter
FeltType
FeltcreatedType
Feltdata[].urlType
Feltdata[].b64_jsonType
FeltusageType

Aliaser

Modelaliaser

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

Aliaser for metodestier

/v1/images

Relaterede kalder-ID’er

google/gemini-3.1-flash-image-preview

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

google/gemini-3.1-flash-image-preview

Google /google/gemini-3.1-flash-image-preview

Start

Nano Banana 2 (Gemini 3.1 Flash Image Preview) skaber og redigerer billeder ud fra tekst og visuelle referencer. Dens dokumenterede styrker omfatter motivkonsistens, tekst i billeder og lokalisering, samtalebaserede ændringer og kreativ styring af komposition, billedformat og opløsning.

Accepterede input
Tekst
Resultater
json · sse

Tilgængelig i Ailoot · input og metoder

Ailoot Ultra · Anthropic Messages POST /v1/messages
Inputtyper
text
Outputtyper
json, sse
Outputformat
JSON eller SSE
FeltTypeKravVærdier og grænserStandard
FeltmodelTypestringKravPåkrævetVærdier og grænser
google/gemini-3.1-flash-image-preview
Standard—
FeltmessagesTypemessage[]KravPåkrævetVærdier og grænserStandard—
Feltmessages[].roleTypestringKravPåkrævetVærdier og grænser
user, assistant
Standard—
Feltmessages[].contentTypestringKravPåkrævetVærdier og grænserStandard—
Feltmax_tokensTypeintegerKravPåkrævetVærdier og grænserStandard—
FeltstreamTypebooleanKravValgfritVærdier og grænserStandardfalse
Kombinationer af inputmaterialer

Tekst · UTF-8-tekst

messages[].content som streng

Metodeparametre og livscyklus
ParameterKontrakt
Parametercontent_typeKontraktapplication/json
ParameterrequiredKontraktmodel, messages, max_tokens
Parameteroptional_controlsKontraktstream
Parametermaterial_typesKontrakttext
Parametertext_file_materialKontraktLæs det faktiske UTF-8-dokument, og indsæt teksten i det angivne input eller beskedens indholdsstreng.

Livscyklus: synchronous_or_streamed

Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand
Standardpris Når hurtig tilstand er valgt
flex-tilstand
Standardpris Når flex-tilstanden er valgt
Maksimal ræsonneringsindsats
Standardpris Når default-justeringen anvendes ved maksimal ræsonneringsindsats
Ræsonneringsindsats · high
Standardpris Når ræsonneringsindsatsen er sat til high
Ræsonneringsindsats · minimal
Standardpris Når ræsonneringsindsatsen er minimal
Priser for eksplicit caching
Ikke aktiveret Når der anmodes om eksplicit caching

Ailoot-takster

Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

KonfigurationTakstplanKonteksttokens, mere endKonteksttokens, op til og medBeløb
KonfigurationGrundtakster for tokensTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.001 / 1K tokens
Output · Outputtokens $0.006 / 1K tokens
Input · Cachelæsning — / 1K tokens
Input · Cacheskrivning — / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Billedoutputtokens $0.12 / 1K billedtokens
KonfigurationAnmodningslængde · niveau 1Takstplan—Konteksttokens, mere end0Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.001 / 1K tokens
Output · Outputtokens $0.006 / 1K tokens
Input · Cachelæsning — / 1K tokens
Input · Cacheskrivning — / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →

Eksempelanmodninger

Ailoot Ultra · Anthropic Messages

Komplet minimalt requestbody i JSONcurl · brug dit UTF-8-dokumentPython · gem hele resultatet
{
  "model": "google/gemini-3.1-flash-image-preview",
  "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-preview', '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-preview', '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))

Hent og gem resultater

Ailoot Ultra · Anthropic Messages

JSON eller SSE

Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar alle indholdsblokke, ræsonnementssignaturer og faktiske værktøjsbrugs-ID’er. Saml alle SSE-blokdeltaer; den første tekstblok er ikke hele outputtet.

Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter
FeltType
FeltidTypestring
FeltmodelTypestring
Feltcontent[]Typetext|thinking|tool_use|other content block
Feltstop_reasonTypestring|null
FeltusageTypeobject
Fejl og næste trin
SvarBetingelseNæste trin
Svar400 · invalid_request_errorBetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdiNæste trinRet de angivne felter før en ny oprettelsesanmodning.

Aliaser

Modelaliaser

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

Aliaser for metodestier

/v1/images

Relaterede kalder-ID’er

google/gemini-3.1-flash-image-preview

FAQ · Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)
Hvilke input og resultater er tilgængelige?

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

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

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

Hvilke felter bruger anmodningen?

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

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

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

Hvilke grænser gælder?

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

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

Flere oplysninger

Tilslut Ailoot til Claude Code, OpenCode, Hermes eller din egen applikation.

Virksomheden og dens projektportefølje

Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.

Køb tokens med rabat.

Abonnementsrabat til regelmæssigt arbejde. Rabatkoder giver op til 50% på tokenkøb.

Abonnement
Vælg et abonnement med rabat til dine regelmæssige anmodninger.
Rabatkode på op til 50%
Indtast koden ved købet. Prisen genberegnes efter den aktuelle kampagne.
Udgifter i historikken
Model, tokens og beløb gemmes for hver anmodning.

Vælg abonnement · Se modelpriser

Tilslut API’et til produktet, du sælger.

SaaS, apps og bots efter Ailoots tilbudsvilkår og licensaftale. Anmod om en forhandlerlicens til videresalg.

Kommerciel applikation
Byg generering af tekst, billeder, video og lyd ind i tjenestens betalte funktioner.
Licens til forhandlere
Send projektbeskrivelse og adgangsmodel. Bed om skriftlige vilkår for anvendelse og videresalg.
Dokumenter på websitet
Tilbudsvilkår, licensaftale og politik for behandling af data kan læses før tilslutning.

Anmod om forhandlerlicens · Tilbudsvilkår og licensaftale