diff --git a/skill/reference/image-api.md b/skill/reference/image-api.md index d5abda749..6a58846a9 100644 --- a/skill/reference/image-api.md +++ b/skill/reference/image-api.md @@ -33,7 +33,7 @@ Run it from the project root (that is where it finds `.impeccable/.env`). It pri **gemini** (Nano Banana): -- **Model**: `gemini-3-pro-image` (Nano Banana Pro, the strongest tier) by default; a `IMAGE_GEN_MODEL` line in `.impeccable/.env` overrides it (e.g. `gemini-3.1-flash-image` for the cheaper high-volume tier), and the wrapper retries the `-preview` sibling once when Google's model naming drifts. +- **Model**: `gemini-3.1-flash-image` by default; a `IMAGE_GEN_MODEL` line in `.impeccable/.env` overrides it, and the wrapper retries the `-preview` sibling once when Google's model naming drifts. - **Size**: the wrapper pins aspect ratio 1:1, so output is always square; Gemini picks the pixel size for its tier (1024 by default) and ignores `--width`/`--height`. A 1024 square passes the pipelines' square gate as a "nearest supported square"; do not upscale it. - **Format**: Gemini frequently returns JPEG bytes regardless of the `--out` filename; the wrapper converts them, so the written file is always a real PNG. Do not re-check or re-convert it. - **Protocol**: synchronous; one call returns the image inline, no polling. Moderation arrives as an imageless response, which the wrapper turns into a clear error, not as an HTTP failure. diff --git a/skill/scripts/image-gen.mjs b/skill/scripts/image-gen.mjs index d306bb652..2f4bc2cfc 100644 --- a/skill/scripts/image-gen.mjs +++ b/skill/scripts/image-gen.mjs @@ -237,9 +237,9 @@ async function generateBfl({ apiKey, prompt, ref, width, height, out }) { // only requires square). Moderation shows up as a response with no image // part plus a block reason, not as an HTTP error. async function generateGemini({ apiKey, prompt, ref, out }) { - // IMAGE_GEN_MODEL overrides for users on a cheaper tier; the default is - // Nano Banana Pro, Google's strongest image model. - let model = loadEnv("IMAGE_GEN_MODEL") || "gemini-3-pro-image"; + // IMAGE_GEN_MODEL overrides for users on a different tier; the default + // is the high-volume Nano Banana model. + let model = loadEnv("IMAGE_GEN_MODEL") || "gemini-3.1-flash-image"; const parts = [{ text: prompt }]; if (ref) parts.push({ inlineData: { mimeType: "image/png", data: fs.readFileSync(ref).toString("base64") } }); const body = JSON.stringify({