Google: Nano Banana (Gemini 2.5 Flash Image)
Nano Banana (Gemini 2.5 Flash Image) menjana dan menyunting gambar daripada teks serta imej. Gunakan aliran kerja perbualannya untuk menyusun adegan, mengubah elemen terpilih, menggabungkan rujukan visual atau memperhalus imej produk sambil menyatakan butiran yang perlu dikekalkan.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsgoogle/gemini-2.5-flash-image - Ailoot Ultra · Imej
POST /v1/images/generationsgoogle/gemini-2.5-flash-image - Ailoot Ultra · Anthropic Messages
POST /v1/messagesgoogle/gemini-2.5-flash-image
Tentang model
Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.
Gemini 2.5 Flash Image, turut dikenali sebagai Nano Banana, ialah model teks dan imej Google untuk penciptaan visual serta penyuntingan imej perbualan. Ia menerima arahan dengan rujukan imej pilihan dan boleh mengembalikan imej bersama teks pengiring. Edisi 2.5 Flash Image khusus ini berbeza daripada Nano Banana 2, Nano Banana Pro dan model imej Lite kemudian. Hasil bergunanya ialah aset visual terjana atau dipinda, bukannya respons model teks Gemini 2.5 umum.
Kad model khusus menyenaraikan 65,536 token input dan 32,768 token output. Imej serta arahan ialah sebahagian input, dan imej atau teks dikembalikan ialah sebahagian hasil. Jadual resolusi panduan memberikan output 1:1 pada 1024×1024, 3:4 pada 864×1184 dan 16:9 pada 1344×768, antara nisbah bidang disokongnya. Pilih bentuk paparan dimaksudkan sebelum mereka bentuk adegan. Pilihan resolusi tinggi edisi imej Gemini kemudian tidak sepatutnya dianggap kawalan yang didokumenkan untuk model khusus ini.
Untuk penciptaan teks ke imej, tetapkan subjek, tindakan, persekitaran, gaya, pencahayaan dan sudut pandangan. Ilustrasi produk mungkin menggunakan identiti visual dibekalkan dan meminta butiran bahan yang jelas kelihatan dalam persekitaran sesuai. Terangkan tujuan gambar supaya model boleh memperuntukkan ruang bagi subjek dan sebarang teks. Huraian fotografi seperti pandangan dekat, komposisi dari atas atau perspektif sudut rendah membantu menetapkan pembingkaian dengan lebih jelas daripada senarai perkataan gaya tidak berkaitan.
Untuk penyuntingan, bekalkan imej asal dan kenal pasti bahagian yang hendak diubah. Panduan pembuat menerangkan penambahan atau pembuangan elemen, penentuan kawasan suntingan secara semantik (semantic masking), pemindahan gaya dan komposisi menggunakan rujukan. Permintaan berguna menyatakan pindaan serta syarat yang perlu dikekalkan—contohnya, ubah latar belakang sambil mengekalkan bentuk, permukaan dan label produk. Labelkan peranan setiap input semasa menggabungkan rujukan, seperti rupa subjek, persekitaran atau gaya. Panduan menyatakan edisi ini paling berkesan dengan sehingga tiga imej input; ini ialah panduan praktikal, bukannya alasan menggabungkan set rujukan bercanggah tanpa had.
Pemurnian perbualan boleh mengekalkan subjek sama sambil mengubah keputusan visual khusus. Minta satu pindaan berkaitan pada satu masa dan simpan imej sumber serta hasil diterima yang digunakan untuk giliran itu. Terangkan perkara yang perlu konsisten dan perkara yang boleh berubah. Untuk urutan aset, kenal pasti subjek, warna dan peraturan visual dikongsi secara jelas daripada mengandaikan prom terpencil baharu akan memulihkannya. Bandingkan imej dipinda dengan rujukan sebelum menganggap arahan pengekalan berjaya dipatuhi.
Untuk teks dalam imej, putuskan ungkapan tepat dahulu dan kemudian minta gambar yang mengandungi teks itu, seperti disyorkan panduan. Nyatakan bahasa, turutan bacaan, penempatan dan penekanan relatif label. Permintaan infografik perlu mengenal pasti hubungan yang diterangkan setiap label dan elemen visual yang menyokongnya. Semak ejaan, tanda baca dan kaitan visual pada saiz paparan sebenar; label terjana yang kelihatan boleh dibaca masih boleh mengubah nama, nombor atau makna dimaksudkan.
Kad model tidak menyenaraikan pemikiran, pembumian carian, pemanggilan fungsi, pelaksanaan kod atau output berstruktur terkekang bagi edisi ini. Ia juga tidak mengiklankan penjanaan audio atau Live API. Input yang didokumenkan ialah teks dan imej, jadi ciri audio, video serta pemprosesan dokumen daripada model Gemini lain tidak sepatutnya dikaitkan dengan profil ini. Aplikasi perlu mengendalikan bahagian kandungan dikembalikan secara jelas daripada mengandaikan balasan prosa biasa mengandungi aset imej lengkap.
Panduan menyatakan bilangan imej diminta mungkin tidak sentiasa dipatuhi dan imej terjana mengandungi penandaan SynthID. Semak setiap imej dikembalikan untuk komposisi, kesetiaan subjek, bilangan objek dan ungkapan tepat. Jika adegan mempunyai beberapa komponen, terangkan susunan dimaksudkannya dalam turutan jelas dan nyatakan rupa yang diingini secara positif. Simpan identiti model tepat, prom dan rujukan bersama hasil. Ini menjadikan tugas penjanaan atau penyuntingan visual boleh disemak dan memberikan pindaan kemudian titik permulaan konkrit.
Tugas praktikal
Tugas praktikal
Contoh teknikal dalam bahasa Inggeris
Change a product photo background
Using the supplied product photograph, preserve the ceramic mug's shape, handle, glaze and existing logo exactly. Replace only the background with a pale stone tabletop and soft morning side light. Keep the camera angle and mug position. Remove unrelated background clutter and add no new lettering, props or decorative marks.Hasil yang dijangka
An edited image retaining the reference mug while changing its setting and light as requested.Semak hasil
Compare the result with the reference for mug geometry, logo fidelity, camera angle and removal of clutter.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-2.5-flash-image
google/gemini-2.5-flash-imagePengenalan
Nano Banana (Gemini 2.5 Flash Image) menjana dan menyunting gambar daripada teks serta imej. Gunakan aliran kerja perbualannya untuk menyusun adegan, mengubah elemen terpilih, menggabungkan rujukan visual atau memperhalus imej produk sambil menyatakan butiran yang perlu dikekalkan.
- Input yang diterima
- Teks
- Hasil
- Teks
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Input
text- Output
text- Format output
- json atau SSE
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had google/gemini-2.5-flash-image | Lalai— |
Medanmessages | Jenismessage[] | KeperluanDiperlukan | Nilai & had Item minimum: 1 | Lalai— |
Medanmessages[].role | Jenisstring | KeperluanDiperlukan | Nilai & had Contoh: system, user, assistant, tool, function Syarat: Peranan ini diwakili secara eksplisit oleh jenis keserasian dalam kod sumber; set peranan model yang tepat kekal khusus untuk setiap model. Bergantung pada model | Lalai— |
Medanmessages[].content | Jenisstring|content_part[]|null | KeperluanPilihan | Nilai & had | Lalai— |
Medanmessages[].tool_calls | Jenistool_call[] | KeperluanPilihan | Nilai & had | Lalai— |
Medanmessages[].tool_call_id | Jenisstring | KeperluanPilihan | Nilai & had Terpakai apabila: role=tool; gunakan ID sebenar yang dipulangkan | Lalai— |
Medanmessages[].name | Jenisstring | KeperluanPilihan | Nilai & had | Lalai— |
Medanmessages[].reasoning_content | Jenisstring | KeperluanPilihan | Nilai & had Terpakai apabila: Hantar semula penaakulan sebenar yang dipulangkan apabila model ini menggunakannya | Lalai— |
Medanmessages[].reasoning_details | Jenisobject|array | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanmax_tokens | Jenisinteger | KeperluanPilihan | Nilai & had Minimum: 1 Bergantung pada model | Lalai— |
Medanmax_completion_tokens | Jenisinteger | KeperluanPilihan | Nilai & had Minimum: 1 Bergantung pada model | Lalai— |
Medanstream | Jenisboolean | KeperluanPilihan | Nilai & had | Lalaifalse |
Medanstream_options.include_usage | Jenisboolean | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medantemperature | Jenisnumber | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medantop_p | Jenisnumber | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanstop | Jenisstring|string[] | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medantools | Jenisfunction_tool[] | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medantools[].type | Jenisstring | KeperluanPilihan | Nilai & had function Bergantung pada model | Lalai— |
Medantools[].function.name | Jenisstring | KeperluanDiperlukan | Nilai & had Terpakai apabila: alat fungsi dibekalkan | Lalai— |
Medantools[].function.description | Jenisstring | KeperluanPilihan | Nilai & had | Lalai— |
Medantools[].function.parameters | JenisJSON_schema | KeperluanPilihan | Nilai & had | Lalai— |
Medantool_choice | Jenisstring|object | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanparallel_tool_calls | Jenisboolean | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanresponse_format | Jenisobject | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanreasoning_effort | Jenisstring | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanreasoning | Jenisobject | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanservice_tier | Jenisstring | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medaninstructions | Jenisstring | KeperluanPilihan | Nilai & had Medan keserasian | Lalai— |
Medanfunctions | Jenisfunction[] | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanfunction_call | Jenisstring|object | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanprompt_cache_options | Jenisobject | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanmodalities | Jenisstring[] | KeperluanPilihan | Nilai & had text | Lalai— |
Medanprovider | Jenisobject | KeperluanPilihan | Nilai & had Syarat: provider.options ditolak pada laluan teks Ultra ini | Lalai— |
Medancache_control.ttl | Jenisstring | KeperluanPilihan | Nilai & had Syarat: 1h ditolak pada lokasi cache prompt yang digunakan | Lalai— |
Gabungan bahan input
Teks · Teks UTF8
messages[].content
Parameter kaedah dan kitar hayat
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakmodel, messages |
Parametermaterial_types | Kontraktext |
Parametermessages | Kontraktatasusunan mesej dengan struktur role/content |
Parameterfile_material | Kontrakdokumen UTF-8 sebenar dimasukkan sebagai teks literal; ID fail tidak diandaikan |
Parameteroptional_controls | Kontrakstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametercontrol_scope | Kontrakkhusus model; alat fungsi pengguna berbeza daripada alat yang dihoskan |
Parameteroutput_modalities | Kontraktext |
Parameterhosted_operations | Kontrakfalse |
Parametermultimodal_input_binding | Kontraknull |
Kitar hayat: synchronous_or_streamed
Hantar ID model yang tepat bersama messages.
Panjang konteks bukan had output.
Fail teks boleh membekalkan teks literal; input imej/audio/objek fail memerlukan pengikatan tepat.
Pelan harga
Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.
- Mod pantas
- Kadar standard Apabila mod pantas dipilih
- Mod flex
- Kadar standard Apabila mod flex dipilih
- Usaha penaakulan maksimum
- Kadar standard Apabila usaha penaakulan maksimum menggunakan pelarasan default
- Harga cache eksplisit
- Tidak diaktifkan Apabila cache eksplisit diminta
Kadar Ailoot
Harga mengikut konfigurasi
Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.
| Konfigurasi | Jadual kadar | Token konteks, melebihi | Token konteks, sehingga dan termasuk | Caj |
|---|---|---|---|---|
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Token konteks, melebihi— | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.0006 / 1K token Output · Token output $0.005 / 1K token Input · Bacaan cache $0.00006 / 1K token Input · Penulisan cache $0.0001666666666666666 / 1K token Input · Penulisan cache, 1 jam — / 1K token Output · Token keluaran imej $0.06 / 1K token imej |
| KonfigurasiTahap panjang permintaan 1 | Jadual kadar— | Token konteks, melebihi0 | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.0006 / 1K token Output · Token output $0.005 / 1K token Input · Bacaan cache $0.00006 / 1K token Input · Penulisan cache $0.0001666666666666666 / 1K token Input · Penulisan cache, 1 jam — / 1K token |
Butiran tarif rujukan
Jadual rujukan peringkat model tidak mengubah pemilihan kaedah, sebut harga atau caj. Caj aktif menggunakan kadar kaedah Ailoot yang dipilih.
google/gemini-2.5-flash-image
Harga mengikut konfigurasi
| Konfigurasi | Syarat pengebilan | Caj |
|---|---|---|
| Konfigurasigoogle/gemini-2.5-flash-image · Konfigurasi lalai | Syarat pengebilanKonfigurasi lalai | Caj Input · Input USD 0.0006 / 1K token Output · Output USD 0.06 / 1K token |
Google: Nano Banana (Gemini 2.5 Flash Image)
Harga mengikut konfigurasi
| Konfigurasi | Syarat pengebilan | Caj |
|---|---|---|
| KonfigurasiGoogle: Nano Banana (Gemini 2.5 Flash Image) · Konfigurasi lalai | Syarat pengebilanKonfigurasi lalai | Caj Input · Token input USD 0.0006 / 1K token Output · Token output USD 0.005 / 1K token Input · Imej input USD 0.0006 / 1K token Output · Imej keluaran USD 0.06 / 1K token Input · Input audio USD 0.002 / 1K token Input · Bacaan cache audio USD 0.0002 / 1K token Output · Carian web USD 0.028 setiap carian Output · Token penaakulan USD 0.005 / 1K token Input · Bacaan cache USD 0.00006 / 1K token Input · Penulisan cache · 5 minit ≈USD 0.000167 / 1K token |
Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →
Contoh permintaan
Ailoot Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-2.5-flash-image", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='google/gemini-2.5-flash-image',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
with client.chat.completions.stream(model='google/gemini-2.5-flash-image',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_completion()
save_result(final.to_dict(mode="json"),"stream-result")
Terima dan simpan hasil
Ailoot Ultra · OpenAI Chat
json atau SSE
Simpan semua hasil yang selesai
Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.
Kekalkan setiap pilihan jawapan bersama kandungan, panggilan alat dan penaakulannya. Dalam SSE, gabungkan delta mengikut indeks pilihan jawapan/alat dan kekalkan sebab penamatan akhir serta data penggunaan.
Jika respons asal perlu disemak
Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.
Medan respons
| Medan | Jenis |
|---|---|
Medanchoices[].index | Jenisinteger |
Medanchoices[].message.content | Jenisstring|null |
Medanchoices[].message.tool_calls | Jenistool_call[] |
Medanchoices[].message.reasoning_content | Jenisstring |
Medanchoices[].message.reasoning_details | Jenisobject|array |
Medanchoices[].finish_reason | Jenisstring|null |
Medanusage | Jenisobject |
Ralat dan langkah seterusnya
| Respons | Syarat | Langkah seterusnya |
|---|---|---|
Respons400 · invalid_request_error | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |
Alias
Alias model
Ailoot Ultra google/gemini-2.5-flash-image
Alias laluan kaedah
/v1/images
ID pemanggil berkaitan
Ailoot Ultra · Imej POST /v1/images/generations google/gemini-2.5-flash-image
google/gemini-2.5-flash-imagePengenalan
Nano Banana (Gemini 2.5 Flash Image) menjana dan menyunting gambar daripada teks serta imej. Gunakan aliran kerja perbualannya untuk menyusun adegan, mengubah elemen terpilih, menggabungkan rujukan visual atau memperhalus imej produk sambil menyatakan butiran yang perlu dikekalkan.
- Input yang diterima
- Teks · Imej
- Hasil
- Imej
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · Imej POST /v1/images/generations
- Input
text,image- Output
image
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had google/gemini-2.5-flash-image | Lalai— |
Medanprompt | Jenisstring | KeperluanDiperlukan | Nilai & had Panjang minimum: 1 | Lalai— |
Medanaspect_ratio | Jenisstring | KeperluanPilihan | Nilai & had 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 | Lalai— |
Medann | Jenisinteger | KeperluanPilihan | Nilai & had Minimum: 1 Maksimum: 1 | Lalai— |
Medaninput_references | Jenisarray | KeperluanPilihan | Nilai & had Item minimum: 0 Item maksimum: 3 | Lalai— |
Medanprovider | Jenisobject | KeperluanPilihan | Nilai & had | Lalai— |
Parameter kaedah dan kitar hayat
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakmodel, prompt |
Parametermaterial_types | Kontraktext, image |
Kitar hayat: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · task_id sebenar yang dikembalikan atau rekod pustaka media
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Pelan harga
Cara caj akhir dikira
Kadar yang dipaparkan menganggarkan kos sebelum penjanaan. Caj akhir dikira berdasarkan kos yang direkodkan untuk penjanaan asal. Tempoh output yang diukur dan kuantiti ramalan bukan kuantiti akhir yang boleh dibilkan.
Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.
- Mod pantas
- Tidak dinyatakan Apabila mod pantas dipilih
- Mod flex
- Tidak dinyatakan Apabila mod flex dipilih
- Usaha penaakulan maksimum
- Tidak dinyatakan Apabila usaha penaakulan maksimum menggunakan pelarasan default
Anggaran kadar untuk perbandingan
Harga mengikut konfigurasi
Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.
| Konfigurasi | Jadual kadar | Kuantiti ramalan | Caj |
|---|---|---|---|
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Kuantiti ramalan— | Caj Input · Token input · Anggaran untuk perbandingan sahaja — / 1K token Output · Token output · Anggaran untuk perbandingan sahaja — / 1K token Input · Bacaan cache · Anggaran untuk perbandingan sahaja — / 1K token Input · Penulisan cache · Anggaran untuk perbandingan sahaja — / 1K token Input · Penulisan cache, 1 jam · Anggaran untuk perbandingan sahaja — / 1K token |
| KonfigurasiAnggaran kos penjanaan | Jadual kadar— | Kuantiti ramalananggaran untuk satu penjanaan | Caj Output · Anggaran kos penjanaan · Anggaran untuk perbandingan sahaja $0.24576 anggaran sebelum penjanaan Anggaran ini bukan caj tambahan atau kadar tetap bagi penjanaan yang telah selesai. |
Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →
Contoh permintaan
Ailoot Ultra · Imej
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-2.5-flash-image', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
Terima dan simpan hasil
Ailoot Ultra · Imej
Muat turun setiap imej yang dikembalikan atau simpan kandungan Base64-nya
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Pembacaan kandungan lain
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.
Simpan semua hasil yang selesai
Simpan setiap imej yang selesai; dapatkan setiap URL yang dikembalikan atau nyahkod kandungan Base64-nya.
Simpan respons dan pengepala yang lengkap, setiap output sebenar, pengecam asal yang dikembalikan serta semua medan penggunaan. Pulihkan operasi asal tanpa menghantar permintaan penciptaan sekali lagi.
Jika respons asal perlu disemak
Simpan X-Client-Request-ID yang dikembalikan untuk penyelarasan rekod. Baca hanya nilai task_id/asset_id sebenar yang dikembalikan atau pustaka media milik anda; jangan sekali-kali bina URL tugas daripada ID operasi atau hantar semula permintaan penciptaan.
Medan respons
| Medan | Jenis |
|---|---|
Medancreated | Jenis |
Medandata[].url | Jenis |
Medandata[].b64_json | Jenis |
Medanusage | Jenis |
Alias
Alias model
Ailoot Ultra google/gemini-2.5-flash-image
Alias laluan kaedah
/v1/images
ID pemanggil berkaitan
Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-2.5-flash-image
google/gemini-2.5-flash-imagePengenalan
Nano Banana (Gemini 2.5 Flash Image) menjana dan menyunting gambar daripada teks serta imej. Gunakan aliran kerja perbualannya untuk menyusun adegan, mengubah elemen terpilih, menggabungkan rujukan visual atau memperhalus imej produk sambil menyatakan butiran yang perlu dikekalkan.
- Input yang diterima
- Teks
- Hasil
- json · sse
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Input
text- Output
json,sse- Format output
- JSON atau SSE
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had google/gemini-2.5-flash-image | Lalai— |
Medanmessages | Jenismessage[] | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanmessages[].role | Jenisstring | KeperluanDiperlukan | Nilai & had user, assistant | Lalai— |
Medanmessages[].content | Jenisstring | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanmax_tokens | Jenisinteger | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanstream | Jenisboolean | KeperluanPilihan | Nilai & had | Lalaifalse |
Gabungan bahan input
Teks · Teks UTF-8
rentetan messages[].content
Parameter kaedah dan kitar hayat
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakmodel, messages, max_tokens |
Parameteroptional_controls | Kontrakstream |
Parametermaterial_types | Kontraktext |
Parametertext_file_material | KontrakBaca dokumen UTF-8 sebenar dan letakkan teksnya dalam rentetan input atau kandungan mesej yang ditunjukkan. |
Kitar hayat: synchronous_or_streamed
Pelan harga
Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.
- Mod pantas
- Kadar standard Apabila mod pantas dipilih
- Mod flex
- Kadar standard Apabila mod flex dipilih
- Usaha penaakulan maksimum
- Kadar standard Apabila usaha penaakulan maksimum menggunakan pelarasan default
- Harga cache eksplisit
- Tidak diaktifkan Apabila cache eksplisit diminta
Kadar Ailoot
Harga mengikut konfigurasi
Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.
| Konfigurasi | Jadual kadar | Token konteks, melebihi | Token konteks, sehingga dan termasuk | Caj |
|---|---|---|---|---|
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Token konteks, melebihi— | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.0006 / 1K token Output · Token output $0.005 / 1K token Input · Bacaan cache $0.00006 / 1K token Input · Penulisan cache $0.0001666666666666666 / 1K token Input · Penulisan cache, 1 jam — / 1K token Output · Token keluaran imej $0.06 / 1K token imej |
| KonfigurasiTahap panjang permintaan 1 | Jadual kadar— | Token konteks, melebihi0 | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.0006 / 1K token Output · Token output $0.005 / 1K token Input · Bacaan cache $0.00006 / 1K token Input · Penulisan cache $0.0001666666666666666 / 1K token Input · Penulisan cache, 1 jam — / 1K token |
Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →
Contoh permintaan
Ailoot Ultra · Anthropic Messages
{
"model": "google/gemini-2.5-flash-image",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-2.5-flash-image', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-2.5-flash-image', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Terima dan simpan hasil
Ailoot Ultra · Anthropic Messages
JSON atau SSE
Simpan semua hasil yang selesai
Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.
Kekalkan semua blok kandungan, tandatangan penaakulan dan ID penggunaan alat sebenar. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan output.
Jika respons asal perlu disemak
Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.
Medan respons
| Medan | Jenis |
|---|---|
Medanid | Jenisstring |
Medanmodel | Jenisstring |
Medancontent[] | Jenistext|thinking|tool_use|other content block |
Medanstop_reason | Jenisstring|null |
Medanusage | Jenisobject |
Ralat dan langkah seterusnya
| Respons | Syarat | Langkah seterusnya |
|---|---|---|
Respons400 · invalid_request_error | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |
Alias
Alias model
Ailoot Ultra google/gemini-2.5-flash-image
Alias laluan kaedah
/v1/images
ID pemanggil berkaitan
FAQ · Google: Nano Banana (Gemini 2.5 Flash Image)
- Apakah input dan hasil yang tersedia?
POST /v1/chat/completions·google/gemini-2.5-flash-image:text→textPOST /v1/images/generations·google/gemini-2.5-flash-image:text,image→imagePOST /v1/messages·google/gemini-2.5-flash-image:text→json,sse- Apakah medan yang digunakan oleh permintaan?
POST /v1/chat/completions·google/gemini-2.5-flash-image:model,messages,stream,modalities,providerPOST /v1/images/generations·google/gemini-2.5-flash-image:model,prompt,aspect_ratio,n,input_references,providerPOST /v1/messages·google/gemini-2.5-flash-image:model,messages,max_tokens,stream- Apakah had yang terpakai?
POST /v1/chat/completions·google/gemini-2.5-flash-image:messages.min_items:1POST /v1/images/generations·google/gemini-2.5-flash-image:n.minimum:1;n.maximum:1