Models in the current catalog
The catalog checked on October 4, 2026 returned these image IDs:
| Model ID | First test | Record in the result |
|---|---|---|
gpt-image-2 | A general generation and edit set | Prompt, dimensions, format, and output time |
gpt-image-2-5 | A quality or revision comparison | Changes from the same seed or reference |
nano-banana | A baseline for the Nano Banana family | Layout, text rendering, and failure cases |
nano-banana-2 | A newer family route | Fidelity to the brief and edit consistency |
nano-banana-pro | A quality-first candidate | Detail, latency, and rejection rate |
The table deliberately avoids invented resolution limits, prices, or benchmark scores. Use the models documentation and the API response for the current contract.
Write the image contract first
“Make a good image” is not a test. Write down the subject, aspect ratio, file type, text that must appear, prohibited elements, and what counts as a failed result. For a Telegram bot, also define the maximum file size and the time the user can wait.
If the image is an edit, keep the original asset with the test case. A model can look strong at generation and weak at preserving a product logo or a person's pose. Those are different tasks.
A comparison matrix
| Scenario | What to keep fixed | Pass condition |
|---|---|---|
| Product card | Prompt, source packshot, canvas size | Product shape and required text remain correct |
| Social post | Prompt, aspect ratio, brand colors | Layout fits the channel without manual cropping |
| Background edit | Source image and edit instruction | Subject edges stay usable |
| Text in image | Exact text and font direction | No missing words or unreadable glyphs |
| Bot thumbnail | Input prompt and file-size limit | Output arrives inside the bot timeout |
Generate each case more than once. Save the raw response beside the rendered image so a failed request can be reproduced and traced.
Keep the API boundary small
Store the model ID in configuration and keep the application contract independent from it. Your image service should return a URL or binary result, a model ID, dimensions, MIME type, and an error that your caller can understand.
const imageModel = process.env.IMAGE_MODEL ?? "gpt-image-2";
const result = await client.images.generate({
model: imageModel,
prompt: request.prompt,
size: request.size,
});
return {
model: imageModel,
image: result.data?.[0],
};
The exact method and fields depend on the SDK route you use. Validate the response before you send it to a user or store it in a CMS.
Image generation in a Telegram bot
Send a short progress message, enforce a request timeout, and make retries idempotent. If generation fails, tell the user what happened and keep the prompt available for another attempt. Never charge a user's balance twice because a webhook or network retry repeated the same request.
Moderation needs its own test cases. A generated image can be unsuitable even when the prompt looks harmless, and a rejected request is still a product state your bot must handle.
A practical rollout
Start with one model and a small traffic slice. Log model ID, request duration, response size, and whether a human accepted the result. Compare the same fields for a second model. Only then change the default.
Keep an explicit fallback for outages. A fallback should use a prompt format that the second model accepts, or the adapter should translate it. Do not assume that a parameter accepted by one image family will be accepted by another.
FAQ
Which image model should I use first?
Start with gpt-image-2 as a baseline and compare it with gpt-image-2-5 or a Nano Banana ID on your real prompts. The live catalog and your acceptance checks decide the final route.
Is Nano Banana Pro always higher quality?
The name does not replace an evaluation. Test detail, text rendering, edit fidelity, response time, and rejection behavior on the images you actually need.
Can I switch image models without changing the whole application?
Yes, if your image service keeps model-specific fields behind an adapter and validates the output. Keep the model ID in configuration rather than scattering it through UI code.
Should I store generated images forever?
Set retention from the product requirement. Images can contain user data, references, or personal information. Store only what you need and protect access to originals.
Where do I check current image model IDs?
Use the models documentation and the API catalog. Model availability and request fields should be checked again before a production rollout.