Nano Banana 2
Nano Banana 2 is a general-purpose image generation and editing model with fast 0.5K previews, resolutions up to 4K, multiple reference images, and both OpenAI Images and Gemini generateContent request styles. It is suited to creative exploration, product experiences, marketing assets, and automated content workflows that need dependable API access. Use the playground below with representative prompts and input media, then adjust the parameters available for this model to evaluate results against your actual use case. Before a production rollout, compare output quality, subject consistency, processing time, failure handling, and estimated cost. The input methods, parameter ranges, and output options shown on this page describe the currently supported integration surface.

- Model ID
- nano-banana-2
- Provider
- API endpoint
- /v1/images/generations
- Pricing
- 0.029411764706
- Last updated
- 2026-09-11
Capabilities
- Image generation through the current public endpoint
- Editing or reference-image controls when exposed by the live schema
- Current parameters including prompt, images, resolution
Limitations
- Capabilities and parameter ranges can change; pin and validate the parameter set used in production
- Do not assume support for parameters absent from the live request schema
- Asynchronous jobs require explicit polling, failure, timeout, and safety-status handling
Use cases
- Product prototypes and automated content workflows
- Batch media generation and programmatic creative tooling
- Multi-model applications that need unified authentication, billing, and usage records
Pricing and billing examples
- 0.5K image | 0.029411764706 | output_images | {"resolution_tier":"0.5k"}
- 1K image | 0.029411764706 | output_images | {"resolution_tier":"1k"}
- 2K image | 0.044117647059 | output_images | {"resolution_tier":"2k"}
- 4K image | 0.058823529412 | output_images | {"resolution_tier":"4k"}
Request parameters
| Parameter | Type | Required | Default | Options |
|---|---|---|---|---|
| model | string | Yes | ||
| prompt | textarea | Yes | ||
| images | asset_list | No | ||
| resolution | select | Yes | 1k | 0.5k, 1k, 2k, 4k |
| aspect_ratio | select | No | 1:1 | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
| n | integer | Yes | 1 | |
| output_format | select | No | png | png |
API examples
cURL
curl -X POST 'https://api.uniall.ai/v1/images/generations' \
-H 'Authorization: Bearer $UNIALL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"aspect_ratio":"1:1","model":"nano-banana-2","n":1,"output_format":"png","prompt":"Describe the output you want","resolution":"1k"}'Python
import json
import requests
payload = json.loads(r'''{"aspect_ratio":"1:1","model":"nano-banana-2","n":1,"output_format":"png","prompt":"Describe the output you want","resolution":"1k"}''')
response = requests.post(
"https://api.uniall.ai/v1/images/generations",
headers={"Authorization": "Bearer " + UNIALL_API_KEY},
json=payload,
)
response.raise_for_status()
result = response.json()JavaScript
const response = await fetch("https://api.uniall.ai/v1/images/generations", {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.UNIALL_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({"aspect_ratio":"1:1","model":"nano-banana-2","n":1,"output_format":"png","prompt":"Describe the output you want","resolution":"1k"}),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const result = await response.json();Frequently asked questions
What API endpoint does nano-banana-2 use?
The endpoint is resolved from the current model capabilities and request schema and shown on this page.
How is nano-banana-2 priced?
The pricing section reads the current structured billing configuration, so editorial text does not need a rewrite after a price change.
Can I use Python?
Yes. The example uses the current endpoint and exact model identifier.
Are JavaScript and cURL examples included?
Yes. All examples share the same live request structure.
Which resolution, duration, or reference-image controls are supported?
Supported controls come from the current request schema. Do not assume fields that are not listed.
What should I validate before production use?
Validate parameters, timeouts, error handling, and asynchronous generation status behavior after model updates.