Source: https://ailoot.ai/models/hu/gemini-3-pro-image/
Canonical: https://ailoot.ai/models/hu/gemini-3-pro-image/
Language: hu

# Google: Nano Banana Pro (Gemini 3 Pro Image)

[Markdown](https://ailoot.ai/models/hu/gemini-3-pro-image/index.md) · [JSON](https://ailoot.ai/models/hu/gemini-3-pro-image/facts.json)

## [Google: Nano Banana Pro (Gemini 3 Pro Image)](https://ailoot.ai/models/hu/gemini-3-pro-image/)

A Nano Banana Pro (Gemini 3 Pro Image) a Google gondolkodással vezérelt képmodellje összetett designhoz, termék-látványtervekhez és tényalapú vizualizációkhoz. Szöveget és képi referenciákat fogad, és szöveget tartalmazó képeket generál, 1K–4K kimenettel és részletes kreatív vezérléssel.

- [**Ailoot · Képek** `POST /v1/images/generations` `gemini-3-pro-image`](https://ailoot.ai/models/hu/gemini-3-pro-image/#method-0)
- [**Ailoot · Képek** `POST /v1/images/generations` `gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/gemini-3-pro-image/#method-1)
- [**Ailoot · Képek** `POST /v1/images/generations` `nano-banana-pro`](https://ailoot.ai/models/hu/gemini-3-pro-image/#method-2)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `google/gemini-3-pro-image`](https://ailoot.ai/models/hu/gemini-3-pro-image/#method-3)
- [**Ailoot Ultra · Képek** `POST /v1/images/generations` `google/gemini-3-pro-image`](https://ailoot.ai/models/hu/gemini-3-pro-image/#method-4)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `google/gemini-3-pro-image`](https://ailoot.ai/models/hu/gemini-3-pro-image/#method-5)

A modellről

Ez a leírás a modell képességeit ismerteti. Az Ailootban elérhető bemenetek, kimenetek és lehetőségek alább, a kiválasztott metódusnál láthatók.

A Nano Banana Pro a Google Gemini 3 Pro Image modellje gondolkodással vezérelt képgeneráláshoz és szerkesztéshez. A fejlesztő az összetett grafikai tervezést, a nagy pontosságú termék-látványterveket és a tényalapú adatvizualizációt helyezi a tervezett felhasználás középpontjába. Szöveget és képeket fogad, és képet, valamint szöveget állít elő. Ez a névvel jelölt Pro képkiadás a Gemini 3 Pro modellre épül, miközben megtartja a képfeladatokra jellemző saját bemeneti és képességprofilját.

A modell 1K, 2K és 4K képeket támogat. A dokumentált formák között 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 és 21:9 szerepel. Egy négyzetes 4K kép 4096 × 4096; egy 16:9 arányú 4K kép 5504 × 3072. A felbontást és képarányt a szükséges anyaghoz válassza, legyen az álló poszter, termékjelenet vagy széles magyarázó grafika. A Gemini 3.1 Flash Image 0.5K lehetősége és további szélsőséges képarányai nem részei ennek a Pro-táblázatnak.

A szövegmegjelenítés támogatja a tisztán olvasható feliratokat posztereken, diagramokon és más tervezett anyagokon. Összetett infografikához adja meg az alapul szolgáló tényeket, a pontos szöveget, az olvasási sorrendet és a címkék, valamint a vizuális elemek kapcsolatát. Különítse el a közlendő információt a kívánt művészi stílustól. A Google a szöveg előzetes előkészítését, majd az azt tartalmazó kép generálását javasolja. Ez különösen hasznos, ha egy kompozíció címsort, diagramot és több rövid feliratot egyesít.

A többképes bemenet legfeljebb 14 referenciát támogat. A Google funkciótáblázata legfeljebb hat tárgyreferenciát ír le a hű megőrzéshez, legfeljebb öt karakterreferenciát az állandósághoz és legfeljebb három stílusreferenciát. E szerepek segítenek egy összetett vizuális anyag előkészítésében: egy termékfotó meghatározza a megjelenést, egy külön kép a környezetet, egy stíluskép pedig a megformálást. Mondja el a modellnek, mely részletek mérvadók és mely referenciák adnak inspirációt, ne kérje minden látható jellemző válogatás nélküli egyesítését.

A Google Search-alapú forráshoz kötés valós információt adhat tényalapú vizualizációhoz vagy aktuális körülményekre épülő jelenethez. A Pro képi munkafolyamata webes forráshoz kötést dokumentál; az Image Search kiterjesztés kifejezetten a Nano Banana 2.1 és Gemini 3.1 Flash Image modellekhez dokumentált. Adatgrafikához adja meg a bemutatni kívánt értékeket, vagy kérjen forráshoz kötött információt a fejlesztő munkafolyamatában, majd tegye egyértelművé a kapcsolatokat, címkéket és elrendezést. A kereséssel támogatott generálás továbbra is ellenőrizendő képet állít elő, nem helyettesíti az ábrázolt tények ellenőrzését.

A gondolkodás támogatja egy összetett prompt kompozíciójának kialakítását a végső megjelenítés előtt. A képi útmutató a kompozíció és logika tesztelésére használt köztes képeket ismertet, a végső eredménytől elkülönítve. Ne vigye át a Nano Banana 2 minimal/high vezérlőtáblázatát vagy a Nano Banana 2.1 medium alapértelmezésű táblázatát erre a Pro kiadásra. Igényes designhoz adjon teljes feladatleírást vizuális hierarchiával, szükséges tárgykapcsolatokkal és a későbbi szerkesztéseken át megőrzendő elemekkel.

A modellkártya jelentős fennmaradó korlátokat ír le: a nagyon apró szöveg és hosszú szövegrészek rosszul jelenhetnek meg, a karakter megjelenése változhat a referencia és az eredmény között, a maszkolt vagy vázlatos rajzokon alapuló szerkesztések pedig csak részben követhetik az utasítást vagy nyomot hagyhatnak. A modell összekeverheti a bal és jobb oldalt is, vagy egy forráselemet átmásolhat az új kompozícióba. Termékmódosításnál kifejezetten adja meg a megőrzendő geometriát és címkéket, és vizsgálja meg a szerkesztett területet; diagramnál vesse össze a nyilak irányát és a tárgyak egymáshoz viszonyított helyzetét.

A jelenlegi API-táblázat 65 536 tokenes bemeneti és 32 768 tokenes kimeneti korlátot ad meg. A képgenerálás, gondolkodás, keresésalapú forráshoz kötés és kötegelt feldolgozás támogatott; a hanggenerálás, függvényhívás, kódvégrehajtás, gyorsítótárazás, strukturált kimenetek, fájlkeresés, URL-kontextus és Live API nem támogatott. A képfeladat ebben a profilban sem hang-, sem videóbemenetet nem fogad. A generált képek SynthID-t tartalmaznak, és a modell nem mindig követi pontosan a kért kimeneti képszámot.

Egy gyakorlati termékfeladat egyesítheti a termék képét, egy világítási referenciát és a pontos címsort: „Őrizze meg a termék arányait és feliratait, mutassa halvány kőfelületen lágy oldalfényben, és hagyja üresen a felső harmadot a megadott címnek.” Tényalapú diagramhoz azonosítson minden entitást és kapcsolatot, és adja meg a jóváhagyott címkéket. Beszélgetésben finomítsa az eredményt egyetlen változtatás és a megőrzendő jellemzők megnevezésével, a kiválasztott képet és magyarázó szövegét együtt tartva meg tervezési anyagként.

Gyakorlati feladat

### Gyakorlati feladat

Technikai példa angolul

```
Visualize a supplied packaging cycle

Create one landscape explanatory graphic showing this packaging return cycle: customer returns an empty jar, store inspects it, accepted jars are washed, clean jars are refilled. Use four large illustrated stages connected clockwise. Add only these exact labels: 'RETURN', 'INSPECT', 'WASH', 'REFILL'. Make the arrow direction and stage order unmistakable.
```

#### Várt eredmény

```
One landscape image with four labeled stages and arrows matching the supplied cycle.
```

#### Az eredmény ellenőrzése

```
Inspect that arrows connect RETURN to INSPECT to WASH to REFILL in that order, with exact labels.
```

**Ailoot · Képek** `POST /v1/images/generations` `gemini-3-pro-image`

[`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image&fmt=images)

Google /`gemini-3-pro-image`

Modell ID-ja

- `gemini-3-pro-image`
- `gemini-3-pro-image-preview`
- `nano-banana-pro`

### Kezdő lépések

A Nano Banana Pro (Gemini 3 Pro Image) a Google gondolkodással vezérelt képmodellje összetett designhoz, termék-látványtervekhez és tényalapú vizualizációkhoz. Szöveget és képi referenciákat fogad, és szöveget tartalmazó képeket generál, 1K–4K kimenettel és részletes kreatív vezérléssel.

Elfogadott bemenetek

Szöveg

Eredmények

Képek

### Elérhető az Ailootban · bemenetek és metódusok

**Ailoot · Képek** `POST /v1/images/generations`

Bemenet

`text`

Kimenet

`image`

Kontextus

65 536 tokens

Maximális kimenet

32 768 tokens

Kimeneti formátum

Képfájl

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok gemini-3-pro-image | Alapértelmezett— |
| Mező`prompt` | Típus`string` | KövetelményKötelező | Értékek és korlátok Minimális hossz: 1 | Alapértelmezett— |
| Mező`n` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 | Alapértelmezett1 |
| Mező`response_format` | Típus`string` | KövetelményOpcionális | Értékek és korlátok url, b64\_json | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`size` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`quality` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`background` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_format` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_compression` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`moderation` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`input_fidelity` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`style` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`partial_images` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szövegből kép** · Kötelező: prompt

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`required` | Szerződésmodel, prompt |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |

Életciklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · A ténylegesen visszaadott task\_id vagy a médiatár bejegyzése

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

`GET /v1/media/assets`

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

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K képtoken*

Kimenet

0,134 USD *1K felbontású képenként*

Kimenet

0,134 USD *2K felbontású képenként*

Kimenet

0,24 USD *4K felbontású képenként*

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

| Beállítás | Díjtáblázat | Díj |
| --- | --- | --- |
| BeállításUltra | DíjtáblázatAlapdíj | Díj Bemenet · Bemeneti tokenek **$0.004000** / 1K token Kimenet · Kimeneti tokenek **$0.024000** / 1K token Bemenet · kép **$0.004000** / 1K token Kimenet · képkimenet **$0.24000** / 1K token Bemenet · hang **$0.004000** / 1K token Bemenet · bemeneti hang gyorsítótára **$0.0004000** / 1K token Kimenet · webes keresés **$0.028** webes keresésenként Kimenet · belső következtetés **$0.024000** / 1K token Bemenet · Gyorsítótár olvasása **$0.0004000** / 1K token Bemenet · Írás a gyorsítótárba **$0.000750000** / 1K token |

### Példakérések

#### Ailoot · Képek

curlPython SDKNode.js SDK

```bash
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-pro-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
```

```python
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-pro-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])
```

```js
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-pro-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");
```

### Eredmények fogadása és mentése

#### Ailoot · Képek

Töltsön le minden visszaadott képet, vagy mentse a Base64-tartalmat

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

##### Őrizzen meg minden elkészült eredményt

Mentsen minden elkészült képet; töltse le az összes visszaadott URL tartalmát, vagy dekódolja a Base64-tartalmat.

Mentsen minden adatelemet. Dekódoljon minden b64\_json értéket, vagy töltse le minden visszaadott, aláírt URL tartalmát. A fájlnév kiterjesztését a tényleges MIME-típus/bájtok alapján válassza ki.

##### Ha az eredeti választ ellenőrizni kell

Ha egy képgenerálási vagy képszerkesztési eredmény ellenőrzést igényel, őrizze meg az eredeti operation\_id/X-Client-Request-ID értéket és a visszaadott eredményadatokat. A saját, már meglévő eredményeket a médiatárból állítsa helyre a tényleges task\_id vagy asset\_id értékekkel. Ne küldje be újra a generálási/szerkesztési kérést, és ne állítson össze állapotlekérdezési URL-t az operation\_id értékéből.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`created` | Típusinteger |
| Mező`data[].url` | Típusstring |
| Mező`data[].b64_json` | Típusbase64 string |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
| Válasz`server_error` | FeltételA visszaadott válasz szerint a művelet vagy az eredmény ellenőrzést igényel | Következő lépésŐrizze meg az eredetileg visszaadott művelet- vagy feladatazonosítót, a kérés fejléceit és a választ; folytassa az eredeti művelet támogatott lekérdezéseit. Ne küldje be újra a létrehozási kérést. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image&fmt=images), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview&fmt=images), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro&fmt=images)
**Ailoot Ultra** [`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=images)

#### Metódusútvonalak álnevei

`/v1/images`

#### Kapcsolódó modellazonosítók

[`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=images), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview&fmt=images), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro&fmt=images), [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image&fmt=images)

**Ailoot · Képek** `POST /v1/images/generations` `gemini-3-pro-image-preview`

[`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview&fmt=images)

Google /`gemini-3-pro-image-preview`

Modell ID-ja

- `gemini-3-pro-image`
- `gemini-3-pro-image-preview`
- `nano-banana-pro`

### Kezdő lépések

A Nano Banana Pro (Gemini 3 Pro Image) a Google gondolkodással vezérelt képmodellje összetett designhoz, termék-látványtervekhez és tényalapú vizualizációkhoz. Szöveget és képi referenciákat fogad, és szöveget tartalmazó képeket generál, 1K–4K kimenettel és részletes kreatív vezérléssel.

Elfogadott bemenetek

Szöveg

Eredmények

Képek

### Elérhető az Ailootban · bemenetek és metódusok

**Ailoot · Képek** `POST /v1/images/generations`

Bemenet

`text`

Kimenet

`image`

Kontextus

65 536 tokens

Maximális kimenet

32 768 tokens

Kimeneti formátum

Képfájl

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok gemini-3-pro-image-preview | Alapértelmezett— |
| Mező`prompt` | Típus`string` | KövetelményKötelező | Értékek és korlátok Minimális hossz: 1 | Alapértelmezett— |
| Mező`n` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 | Alapértelmezett1 |
| Mező`response_format` | Típus`string` | KövetelményOpcionális | Értékek és korlátok url, b64\_json | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`size` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`quality` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`background` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_format` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_compression` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`moderation` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`input_fidelity` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`style` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`partial_images` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szövegből kép** · Kötelező: prompt

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`required` | Szerződésmodel, prompt |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |

Életciklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · A ténylegesen visszaadott task\_id vagy a médiatár bejegyzése

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

`GET /v1/media/assets`

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

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K képtoken*

Kimenet

0,134 USD *1K felbontású képenként*

Kimenet

0,134 USD *2K felbontású képenként*

Kimenet

0,24 USD *4K felbontású képenként*

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

| Beállítás | Díjtáblázat | Díj |
| --- | --- | --- |
| BeállításUltra | DíjtáblázatAlapdíj | Díj Bemenet · Bemeneti tokenek **$0.004000** / 1K token Kimenet · Kimeneti tokenek **$0.024000** / 1K token Bemenet · kép **$0.004000** / 1K token Kimenet · képkimenet **$0.24000** / 1K token Bemenet · hang **$0.004000** / 1K token Bemenet · bemeneti hang gyorsítótára **$0.0004000** / 1K token Kimenet · webes keresés **$0.028** webes keresésenként Kimenet · belső következtetés **$0.024000** / 1K token Bemenet · Gyorsítótár olvasása **$0.0004000** / 1K token Bemenet · Írás a gyorsítótárba **$0.000750000** / 1K token |

### Példakérések

#### Ailoot · Képek

curlPython SDKNode.js SDK

```bash
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-pro-image-preview", "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
```

```python
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-pro-image-preview', '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])
```

```js
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-pro-image-preview", "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");
```

### Eredmények fogadása és mentése

#### Ailoot · Képek

Töltsön le minden visszaadott képet, vagy mentse a Base64-tartalmat

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

##### Őrizzen meg minden elkészült eredményt

Mentsen minden elkészült képet; töltse le az összes visszaadott URL tartalmát, vagy dekódolja a Base64-tartalmat.

Mentsen minden adatelemet. Dekódoljon minden b64\_json értéket, vagy töltse le minden visszaadott, aláírt URL tartalmát. A fájlnév kiterjesztését a tényleges MIME-típus/bájtok alapján válassza ki.

##### Ha az eredeti választ ellenőrizni kell

Ha egy képgenerálási vagy képszerkesztési eredmény ellenőrzést igényel, őrizze meg az eredeti operation\_id/X-Client-Request-ID értéket és a visszaadott eredményadatokat. A saját, már meglévő eredményeket a médiatárból állítsa helyre a tényleges task\_id vagy asset\_id értékekkel. Ne küldje be újra a generálási/szerkesztési kérést, és ne állítson össze állapotlekérdezési URL-t az operation\_id értékéből.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`created` | Típusinteger |
| Mező`data[].url` | Típusstring |
| Mező`data[].b64_json` | Típusbase64 string |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
| Válasz`server_error` | FeltételA visszaadott válasz szerint a művelet vagy az eredmény ellenőrzést igényel | Következő lépésŐrizze meg az eredetileg visszaadott művelet- vagy feladatazonosítót, a kérés fejléceit és a választ; folytassa az eredeti művelet támogatott lekérdezéseit. Ne küldje be újra a létrehozási kérést. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image&fmt=images), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview&fmt=images), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro&fmt=images)
**Ailoot Ultra** [`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=images)

#### Metódusútvonalak álnevei

`/v1/images`

#### Kapcsolódó modellazonosítók

[`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=images), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview&fmt=images), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro&fmt=images), [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image&fmt=images)

**Ailoot · Képek** `POST /v1/images/generations` `nano-banana-pro`

[`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro&fmt=images)

Google /`nano-banana-pro`

Modell ID-ja

- `gemini-3-pro-image`
- `gemini-3-pro-image-preview`
- `nano-banana-pro`

### Kezdő lépések

A Nano Banana Pro (Gemini 3 Pro Image) a Google gondolkodással vezérelt képmodellje összetett designhoz, termék-látványtervekhez és tényalapú vizualizációkhoz. Szöveget és képi referenciákat fogad, és szöveget tartalmazó képeket generál, 1K–4K kimenettel és részletes kreatív vezérléssel.

Elfogadott bemenetek

Szöveg

Eredmények

Képek

### Elérhető az Ailootban · bemenetek és metódusok

**Ailoot · Képek** `POST /v1/images/generations`

Bemenet

`text`

Kimenet

`image`

Kontextus

65 536 tokens

Maximális kimenet

32 768 tokens

Kimeneti formátum

Képfájl

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok nano-banana-pro | Alapértelmezett— |
| Mező`prompt` | Típus`string` | KövetelményKötelező | Értékek és korlátok Minimális hossz: 1 | Alapértelmezett— |
| Mező`n` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 | Alapértelmezett1 |
| Mező`response_format` | Típus`string` | KövetelményOpcionális | Értékek és korlátok url, b64\_json | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`size` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`quality` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`background` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_format` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_compression` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`moderation` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`input_fidelity` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`style` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`partial_images` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szövegből kép** · Kötelező: prompt

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`required` | Szerződésmodel, prompt |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |

Életciklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · A ténylegesen visszaadott task\_id vagy a médiatár bejegyzése

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

`GET /v1/media/assets`

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

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K képtoken*

Kimenet

0,134 USD *1K felbontású képenként*

Kimenet

0,134 USD *2K felbontású képenként*

Kimenet

0,24 USD *4K felbontású képenként*

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

| Beállítás | Díjtáblázat | Díj |
| --- | --- | --- |
| BeállításUltra | DíjtáblázatAlapdíj | Díj Bemenet · Bemeneti tokenek **$0.004000** / 1K token Kimenet · Kimeneti tokenek **$0.024000** / 1K token Bemenet · kép **$0.004000** / 1K token Kimenet · képkimenet **$0.24000** / 1K token Bemenet · hang **$0.004000** / 1K token Bemenet · bemeneti hang gyorsítótára **$0.0004000** / 1K token Kimenet · webes keresés **$0.028** webes keresésenként Kimenet · belső következtetés **$0.024000** / 1K token Bemenet · Gyorsítótár olvasása **$0.0004000** / 1K token Bemenet · Írás a gyorsítótárba **$0.000750000** / 1K token |

### Példakérések

#### Ailoot · Képek

curlPython SDKNode.js SDK

```bash
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": "nano-banana-pro", "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
```

```python
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': 'nano-banana-pro', '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])
```

```js
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": "nano-banana-pro", "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");
```

### Eredmények fogadása és mentése

#### Ailoot · Képek

Töltsön le minden visszaadott képet, vagy mentse a Base64-tartalmat

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

##### Őrizzen meg minden elkészült eredményt

Mentsen minden elkészült képet; töltse le az összes visszaadott URL tartalmát, vagy dekódolja a Base64-tartalmat.

Mentsen minden adatelemet. Dekódoljon minden b64\_json értéket, vagy töltse le minden visszaadott, aláírt URL tartalmát. A fájlnév kiterjesztését a tényleges MIME-típus/bájtok alapján válassza ki.

##### Ha az eredeti választ ellenőrizni kell

Ha egy képgenerálási vagy képszerkesztési eredmény ellenőrzést igényel, őrizze meg az eredeti operation\_id/X-Client-Request-ID értéket és a visszaadott eredményadatokat. A saját, már meglévő eredményeket a médiatárból állítsa helyre a tényleges task\_id vagy asset\_id értékekkel. Ne küldje be újra a generálási/szerkesztési kérést, és ne állítson össze állapotlekérdezési URL-t az operation\_id értékéből.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`created` | Típusinteger |
| Mező`data[].url` | Típusstring |
| Mező`data[].b64_json` | Típusbase64 string |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
| Válasz`server_error` | FeltételA visszaadott válasz szerint a művelet vagy az eredmény ellenőrzést igényel | Következő lépésŐrizze meg az eredetileg visszaadott művelet- vagy feladatazonosítót, a kérés fejléceit és a választ; folytassa az eredeti művelet támogatott lekérdezéseit. Ne küldje be újra a létrehozási kérést. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image&fmt=images), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview&fmt=images), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro&fmt=images)
**Ailoot Ultra** [`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=images)

#### Metódusútvonalak álnevei

`/v1/images`

#### Kapcsolódó modellazonosítók

[`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=images), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview&fmt=images), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro&fmt=images), [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image&fmt=images)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `google/gemini-3-pro-image`

[`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=chat)

Google /`google/gemini-3-pro-image`

### Kezdő lépések

A Nano Banana Pro (Gemini 3 Pro Image) a Google gondolkodással vezérelt képmodellje összetett designhoz, termék-látványtervekhez és tényalapú vizualizációkhoz. Szöveget és képi referenciákat fogad, és szöveget tartalmazó képeket generál, 1K–4K kimenettel és részletes kreatív vezérléssel.

Elfogadott bemenetek

Szöveg

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`

Kimenet

`text`

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok google/gemini-3-pro-image | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok Példák: system, user, assistant, tool, function Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus. Modelltől függ | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_part[]\|null` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_calls` | Típus`tool_call[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t | Alapértelmezett— |
| Mező`messages[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].reasoning_content` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja | Alapértelmezett— |
| Mező`messages[].reasoning_details` | Típus`object\|array` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`max_completion_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`stream_options.include_usage` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop` | Típus`string\|string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`function_tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok function Modelltől függ | Alapértelmezett— |
| Mező`tools[].function.name` | Típus`string` | KövetelményKötelező | Értékek és korlátok Akkor alkalmazandó, ha: Függvényeszköz megadva | Alapértelmezett— |
| Mező`tools[].function.description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].function.parameters` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`response_format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning_effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Kompatibilitási mező | Alapértelmezett— |
| Mező`functions` | Típus`function[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`function_call` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`modalities` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok text | Alapértelmezett— |
| Mező`provider` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Feltételek: A provider.options elutasításra kerül ezen az Ultra szöveges útvonalon | Alapértelmezett— |
| Mező`cache_control.ttl` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Feltételek: Az 1h elutasításra kerül a tényleges prompt-gyorsítótárazási helyeken | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`required` | Szerződésmodel, messages |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`messages` | Szerződésüzenettömb role/content szerkezettel |
| Paraméter`file_material` | Szerződésa tényleges UTF-8 dokumentum szó szerinti szövegként beillesztve; nincs kikövetkeztetett fájlazonosító |
| Paraméter`optional_controls` | Szerződésstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Paraméter`control_scope` | Szerződésmodellspecifikus; a felhasználói függvényeszközök eltérnek a hosztolt eszközöktől |
| Paraméter`output_modalities` | Szerződéstext |
| Paraméter`hosted_operations` | Szerződésfalse |
| Paraméter`multimodal_input_binding` | Szerződésnull |

Életciklus: `synchronous_or_streamed`

Küldje el a pontos modellazonosítót a messages mellett.

A kontextushossz nem kimeneti felső korlát.

Egy szövegfájl szó szerinti szöveget adhat meg; a kép-/hang-/fájlobjektum-bemenetek pontos hozzárendelést igényelnek.

### Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód

Normál díjszabás Ha a gyors mód van kiválasztva

Flex mód

Normál díjszabás Ha a flex mód van kiválasztva

Maximális gondolkodási ráfordítás

Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Explicit gyorsítótárazás díjai

Nincs engedélyezve Ha explicit gyorsítótárazást kérnek

#### Ailoot-díjak

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.0004** / 1K token Bemenet · Írás a gyorsítótárba **$0.00075** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token Kimenet · Kimeneti képtokenek **$0.24** / 1K képtoken |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.0004** / 1K token Bemenet · Írás a gyorsítótárba **$0.00075** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Google: Nano Banana Pro (Gemini 3 Pro Image)

#### Árak beállításonként

| Beállítás | Elszámolási feltételek | Díj |
| --- | --- | --- |
| BeállításGoogle: Nano Banana Pro (Gemini 3 Pro Image) · Alapértelmezett beállítások | Elszámolási feltételekAlapértelmezett konfiguráció | Díj Bemenet · Bemeneti tokenek **0,004 USD** / 1K token Kimenet · Kimeneti tokenek **0,024 USD** / 1K token Bemenet · Bemeneti kép **0,004 USD** / 1K token Kimenet · Kimeneti kép **0,24 USD** / 1K token Bemenet · Hangbemenet **0,004 USD** / 1K token Bemenet · Hangadatok olvasása a gyorsítótárból **0,0004 USD** / 1K token Kimenet · Webes keresés **0,028 USD** keresésenként Kimenet · Következtetési tokenek **0,024 USD** / 1K token Bemenet · Gyorsítótár olvasása **0,0004 USD** / 1K token Bemenet · Gyorsítótárba írás · 5 perc **0,00075 USD** / 1K token |

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

### Példakérések

#### Ailoot Ultra · OpenAI Chat

curlPython SDKPython-adatfolyam

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-3-pro-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
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='google/gemini-3-pro-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"))
```

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

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

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

with client.chat.completions.stream(model='google/gemini-3-pro-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")
```

### Eredmények fogadása és mentése

#### Ailoot Ultra · OpenAI Chat

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`choices[].index` | Típusinteger |
| Mező`choices[].message.content` | Típusstring\|null |
| Mező`choices[].message.tool_calls` | Típustool\_call\[\] |
| Mező`choices[].message.reasoning_content` | Típusstring |
| Mező`choices[].message.reasoning_details` | Típusobject\|array |
| Mező`choices[].finish_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro)
**Ailoot Ultra** [`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=chat)

#### Metódusútvonalak álnevei

`/v1/images`

#### Kapcsolódó modellazonosítók

[`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=chat), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro), [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image)

**Ailoot Ultra · Képek** `POST /v1/images/generations` `google/gemini-3-pro-image`

[`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=images)

Google /`google/gemini-3-pro-image`

### Kezdő lépések

A Nano Banana Pro (Gemini 3 Pro Image) a Google gondolkodással vezérelt képmodellje összetett designhoz, termék-látványtervekhez és tényalapú vizualizációkhoz. Szöveget és képi referenciákat fogad, és szöveget tartalmazó képeket generál, 1K–4K kimenettel és részletes kreatív vezérléssel.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Képek

### Elérhető az Ailootban · bemenetek és metódusok

**Ailoot Ultra · Képek** `POST /v1/images/generations`

Bemenet

`text`, `image`

Kimenet

`image`

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok google/gemini-3-pro-image | Alapértelmezett— |
| Mező`prompt` | Típus`string` | KövetelményKötelező | Értékek és korlátok Minimális hossz: 1 | Alapértelmezett— |
| Mező`resolution` | Típus`string` | KövetelményOpcionális | Értékek és korlátok 1K, 2K, 4K | Alapértelmezett— |
| Mező`aspect_ratio` | Típus`string` | KövetelményOpcionális | Értékek és korlátok 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 | Alapértelmezett— |
| Mező`n` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Maximum: 1 | Alapértelmezett— |
| Mező`input_references` | Típus`array` | KövetelményOpcionális | Értékek és korlátok Minimális elemszám: 0 Maximális elemszám: 14 | Alapértelmezett— |
| Mező`provider` | Típus`object` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`required` | Szerződésmodel, prompt |
| Paraméter`material_types` | Szerződéstext, image |

Életciklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · A ténylegesen visszaadott task\_id vagy a médiatár bejegyzése

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

`GET /v1/media/assets`

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

### Díjcsomagok

##### A végső díj számítása

A megjelenített díjtételek a generálás előtti költségbecsléshez szolgálnak. A végleges díj az eredeti generáláshoz rögzített költségből számítódik. A kimenet mért időtartama és az előre jelzett mennyiségek nem azonosak a véglegesen elszámolandó mennyiséggel.

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód

Nincs megadva Ha a gyors mód van kiválasztva

Flex mód

Nincs megadva Ha a flex mód van kiválasztva

Maximális gondolkodási ráfordítás

Nincs megadva Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

#### Becsült díjak összehasonlításhoz

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Előre jelzett mennyiség | Díj |
| --- | --- | --- | --- |
| BeállításTokenek alapdíjai | DíjtáblázatAlapdíj | Előre jelzett mennyiség— | Díj Bemenet · Bemeneti tokenek · Becslés, csak összehasonlításra **—** / 1K token Kimenet · Kimeneti tokenek · Becslés, csak összehasonlításra **—** / 1K token Bemenet · Gyorsítótár olvasása · Becslés, csak összehasonlításra **—** / 1K token Bemenet · Írás a gyorsítótárba · Becslés, csak összehasonlításra **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra · Becslés, csak összehasonlításra **—** / 1K token |
| BeállításA generálás becsült költsége | Díjtáblázat— | Előre jelzett mennyiségbecslés egy generálásra | Díj Kimenet · Becsült generálási költség · Becslés, csak összehasonlításra **$0.98304** becslés a generálás előtt Ez a becslés nem jelent további díjat, és nem rögzített díjszabás az elkészült generálásra. |

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

### Példakérések

#### Ailoot Ultra · Képek

curl

```bash
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-pro-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
```

### Eredmények fogadása és mentése

#### Ailoot Ultra · Képek

Töltsön le minden visszaadott képet, vagy mentse a Base64-tartalmat

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

További tartalomlekérések

A meglévő, Önhöz tartozó médiafájlok lekérése

```bash
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.
```

##### Őrizzen meg minden elkészült eredményt

Mentsen minden elkészült képet; töltse le az összes visszaadott URL tartalmát, vagy dekódolja a Base64-tartalmat.

Őrizze meg a teljes választ és a fejléceket, minden tényleges kimenetet, az eredetileg visszaadott azonosítókat és az összes használati adatmezőt. Az eredeti műveletet állítsa helyre, a létrehozási kérés újbóli beküldése nélkül.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a visszaadott X-Client-Request-ID értéket az egyeztetéshez. Csak a ténylegesen visszaadott task\_id/asset\_id értékekkel kérdezzen le, vagy használja a saját médiatárat; soha ne állítson össze feladat-URL-t a műveletazonosítóból, és soha ne küldje be újra a létrehozási kérést.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`created` | Típus |
| Mező`data[].url` | Típus |
| Mező`data[].b64_json` | Típus |
| Mező`usage` | Típus |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image&fmt=images), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview&fmt=images), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro&fmt=images)
**Ailoot Ultra** [`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=images)

#### Metódusútvonalak álnevei

`/v1/images`

#### Kapcsolódó modellazonosítók

[`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=images), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview&fmt=images), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro&fmt=images), [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image&fmt=images)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `google/gemini-3-pro-image`

[`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=messages)

Google /`google/gemini-3-pro-image`

### Kezdő lépések

A Nano Banana Pro (Gemini 3 Pro Image) a Google gondolkodással vezérelt képmodellje összetett designhoz, termék-látványtervekhez és tényalapú vizualizációkhoz. Szöveget és képi referenciákat fogad, és szöveget tartalmazó képeket generál, 1K–4K kimenettel és részletes kreatív vezérléssel.

Elfogadott bemenetek

Szöveg

Eredmények

json · sse

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`

Kimenet

`json`, `sse`

Kimeneti formátum

JSON vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok google/gemini-3-pro-image | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
| Mező`messages[].content` | Típus`string` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |

Bemeneti anyagok kombinációi

**Szöveg** · UTF-8 szöveg

`messages[].content karakterlánc`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`required` | Szerződésmodel, messages, max\_tokens |
| Paraméter`optional_controls` | Szerződésstream |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`text_file_material` | SzerződésOlvassa el a tényleges UTF-8 dokumentumot, és tegye a szövegét a jelzett bemeneti karakterláncba vagy az üzenettartalom karakterláncába. |

Életciklus: `synchronous_or_streamed`

### Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód

Normál díjszabás Ha a gyors mód van kiválasztva

Flex mód

Normál díjszabás Ha a flex mód van kiválasztva

Maximális gondolkodási ráfordítás

Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Explicit gyorsítótárazás díjai

Nincs engedélyezve Ha explicit gyorsítótárazást kérnek

#### Ailoot-díjak

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.0004** / 1K token Bemenet · Írás a gyorsítótárba **$0.00075** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token Kimenet · Kimeneti képtokenek **$0.24** / 1K képtoken |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.0004** / 1K token Bemenet · Írás a gyorsítótárba **$0.00075** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

### Példakérések

#### Ailoot Ultra · Anthropic Messages

Teljes, minimális JSON-törzscurl · használd a saját UTF-8-dokumentumodatPython · mentsd el a teljes eredményt

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

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

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-3-pro-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
```

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

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-3-pro-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))
```

### Eredmények fogadása és mentése

#### Ailoot Ultra · Anthropic Messages

JSON vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`model` | Típusstring |
| Mező`content[]` | Típustext\|thinking\|tool\_use\|other content block |
| Mező`stop_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro)
**Ailoot Ultra** [`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=messages)

#### Metódusútvonalak álnevei

`/v1/images`

#### Kapcsolódó modellazonosítók

[`google/gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Ultra&caller=google%2Fgemini-3-pro-image&fmt=messages), [`gemini-3-pro-image-preview`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image-preview), [`nano-banana-pro`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=nano-banana-pro), [`gemini-3-pro-image`](https://ailoot.ai/models/hu/#m=google%2Fgemini-3-pro-image&route=Core&caller=gemini-3-pro-image)

FAQ · Google: Nano Banana Pro (Gemini 3 Pro Image)

Milyen bemenetek és eredmények érhetők el?

`POST /v1/images/generations` · `gemini-3-pro-image`: `text` → `image` `POST /v1/images/generations` · `gemini-3-pro-image-preview`: `text` → `image` `POST /v1/images/generations` · `nano-banana-pro`: `text` → `image` `POST /v1/chat/completions` · `google/gemini-3-pro-image`: `text` → `text` `POST /v1/images/generations` · `google/gemini-3-pro-image`: `text`, `image` → `image` `POST /v1/messages` · `google/gemini-3-pro-image`: `text` → `json`, `sse`

Mely mezőket használja a kérés?

`POST /v1/images/generations` · `gemini-3-pro-image`: `model`, `prompt`, `n`, `response_format`, `stream` `POST /v1/images/generations` · `gemini-3-pro-image-preview`: `model`, `prompt`, `n`, `response_format`, `stream` `POST /v1/images/generations` · `nano-banana-pro`: `model`, `prompt`, `n`, `response_format`, `stream` `POST /v1/chat/completions` · `google/gemini-3-pro-image`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/images/generations` · `google/gemini-3-pro-image`: `model`, `prompt`, `resolution`, `aspect_ratio`, `n`, `input_references`, `provider` `POST /v1/messages` · `google/gemini-3-pro-image`: `model`, `messages`, `max_tokens`, `stream`

Milyen korlátok érvényesek?

`POST /v1/images/generations` · `gemini-3-pro-image`: `ctx`: `65536`; `max_out`: `32768`; `n.minimum`: `1` `POST /v1/images/generations` · `gemini-3-pro-image-preview`: `ctx`: `65536`; `max_out`: `32768`; `n.minimum`: `1` `POST /v1/images/generations` · `nano-banana-pro`: `ctx`: `65536`; `max_out`: `32768`; `n.minimum`: `1` `POST /v1/chat/completions` · `google/gemini-3-pro-image`: `messages.min_items`: `1` `POST /v1/images/generations` · `google/gemini-3-pro-image`: `n.minimum`: `1`; `n.maximum`: `1`

Csatlakoztassa az Ailootot a Claude Code-hoz, OpenCode-hoz, Hermeshez vagy saját alkalmazásához.

## A vállalat és projektportfóliója

A vállalat és projektportfóliója: ügyfelek milliói; havi értékesítés milliárdos nagyságrendben.

## Vásároljon tokeneket kedvezménnyel.

Előfizetési kedvezmény rendszeres munkához. Promókódok — akár 50% tokenvásárlási kedvezmény.

Előfizetés

Válasszon kedvezményes tarifát a rendszeres kéréseihez.

Promókód akár 50%-ig

Vásárláskor adja meg a kódot. Az ár az érvényes akció szerint újraszámolódik.

Költségek az előzményekben

Minden kéréshez megmarad a modell, a tokenek és az összeg.

[Előfizetés kiválasztása](https://ailoot.ai/docs/hu/billing/subscriptions/) · [Modellárak megtekintése](https://ailoot.ai/models/hu/)

## Csatlakoztassa az API-t az értékesített termékéhez.

SaaS, alkalmazások és botok — az Ailoot ajánlati feltételei és licencszerződése alapján. Viszonteladáshoz kérjen viszonteladói licencet.

Kereskedelmi alkalmazás

Építsen szöveg-, kép-, videó- és hanggenerálást szolgáltatása fizetős funkcióiba.

Viszonteladói licenc

Küldje el a projekt leírását és a hozzáférés módját. Kérjen írásos használati és viszonteladási feltételeket.

Dokumentumok a weboldalon

Az ajánlati feltételek, licencszerződés és adatkezelési szabályzat már a csatlakoztatás előtt elérhető.

[Viszonteladói licenc kérése](mailto:support@ailoot.ai) · [Ajánlati feltételek és licencszerződés](https://ailoot.ai/legal/offer?lang=hu)

## Ailoot · A vállalat és projektportfóliója





Az Ailoot felhalmozott működési tapasztalatra, széles ügyfélkörre, stabil szolgáltatásra és folyamatos KPI-ellenőrzésre épít.





A vállalat és projektportfóliója: ügyfelek milliói; havi értékesítés milliárdos nagyságrendben.





Az Ailoot ezt a működési tapasztalatot használja az ügyfelek termékeiben, ágenseiben, alkalmazásaiban és automatizálásaiban elérhető AI-funkciók API-hozzáféréséhez.
