Model chooser  /  Generate or edit images  /  Recurring

For images at volume, generate them with Nano Banana 2.

Product shots, ad variants and article images at scale need good quality at a predictable cost per image. Nano Banana 2 ranks sixth on the text-to-image arena at roughly a third of the leader's price per image, from a vendor with stable API terms.

Why Nano Banana 2 (Gemini 3.1 Flash Image)

The reasons it wins for this job.

  • It scores Elo 1122 on Artificial Analysis's text-to-image arena, 64 points behind first place, at a fraction of GPT Image 2.5's cost per image.
  • It is priced per image by resolution, which makes a campaign's cost a multiplication rather than an estimate.
  • It is part of the Gemini API, so the same key and SDK you might already use for text also generates and edits images.
  • It edits from reference images, so product and brand consistency across hundreds of variants is a prompt, not a retouching job.

How to use it

4 steps to a first result.

  1. 1Build a prompt templateFixed style, lighting and brand rules; variables only for the subject and placement.
  2. 2Generate a small batch and reviewTwenty images, rated by whoever owns the brand. Tighten the template until 80% pass.
  3. 3Keep a human approval stepImages go to a review queue before publishing, at least until the pass rate is stable.
  4. 4Store prompts with imagesSave the exact prompt and model ID next to each image, so you can regenerate or audit it later.

Gemini API, TypeScript

Start from this.

Edit the parts in capitals, then run it.

import { GoogleGenAI } from "@google/genai";
import { writeFileSync } from "node:fs";

const ai = new GoogleGenAI({}); // reads GEMINI_API_KEY

const prompt = `Product photo of PRODUCT on a light oak table, soft window light,
50mm, shallow depth of field, muted palette with one BRAND COLOUR accent. No text.`;

const interaction = await ai.interactions.create({
  model: "gemini-3.1-flash-image",
  input: prompt,
});

writeFileSync("product.png", Buffer.from(interaction.output_image.data, "base64"));
Nothing is sent anywhere. It copies to your clipboard.

Alternatives that also work

If Nano Banana 2 (Gemini 3.1 Flash Image) is not an option.

GPT Image 2.5Official page →

OpenAI · closed · cost: high

Pick it when quality outweighs cost, such as hero images for a launch. Flare is the default for most apps and ranks first.

Ideogram 4.0Hugging Face →

Ideogram · open weights · cost: low · 64K HF downloads/mo

Pick it when the images carry text, such as ad variants with headlines in several languages.

Qwen-Image 2512Hugging Face →

Alibaba Qwen · open weights · cost: free weights; you pay for the hardware · 53K HF downloads/mo

Pick it when volume is large enough that a GPU costs less than per-image pricing. Apache 2.0.

Watch out for

Doing this just once? For a one-off image, make it with GPT Image 2.5 in ChatGPT. GPT Image 2.5 is first on Artificial Analysis's text-to-image arena and first on image editing, as of 17 September 2026. In ChatGPT you can generate, then fix it in conversation.

Sources

Checked . Models change monthly; we re-check this page when they do.

Picking the model is the easy part.

Wiring it into a workflow that runs every week, with evals, fallbacks and a cost you can predict, is the work. Fifteen minutes, no deck.

Book fifteen minutes →