Python 88.3%
TypeScript 7.6%
Shell 4.1%
1#!/usr/bin/env python32"""Native image generation (Nano Banana) with the google-genai SDK: responseModalities TEXT+IMAGE, imageConfig.34STATUS: UNVERIFIED as a script (ACCOUNT_RESTRICTED): the identical raw request returned 429 RESOURCE_EXHAUSTED5 "free_tier_requests, limit: 0" on 2026-09-18 — image models have no free tier. Paid key: ≈ $0.034 per 1K image6 on gemini-3.1-flash-lite-image (1120 output image tokens at $30/M).7Run: .venv/bin/python examples/gemini/image-generation/generate.py "a plain white square"8"""9from __future__ import annotations1011import sys12from pathlib import Path1314ROOT = Path(__file__).resolve().parents[3]15sys.path.insert(0, str(ROOT))16from scripts import live # noqa: E402 loads .env1718from google import genai # noqa: E40219from google.genai import types # noqa: E4022021MODEL = "gemini-3.1-flash-lite-image"22prompt = sys.argv[1] if len(sys.argv) > 1 else "a plain white square"23client = genai.Client()24try:25 r = client.models.generate_content(26 model=MODEL, contents=prompt,27 config=types.GenerateContentConfig(response_modalities=["TEXT", "IMAGE"],28 image_config=types.ImageConfig(aspect_ratio="1:1", image_size="1K")))29except Exception as e: # noqa: BLE001 (ClientError 429 on free-tier keys)30 live.log_request("gemini", "POST", "/v1beta/models/{model}:generateContent", getattr(e, "code", 0), 0, "example image generate.py error")31 print("error:", live.mask(str(e))[:400]); sys.exit(1)32live.log_request("gemini", "POST", "/v1beta/models/{model}:generateContent", 200, 0.034, "example image generate.py")33for part in r.candidates[0].content.parts:34 if part.text:35 print("text:", part.text[:200])36 if part.inline_data:37 ext = part.inline_data.mime_type.split("/")[-1]38 out = ROOT / "tmp-live" / f"gemini-image.{ext}"39 out.write_bytes(part.inline_data.data)40 print("image:", part.inline_data.mime_type, len(part.inline_data.data), "bytes ->", out)41print("usage:", r.usage_metadata)42