Delivers high-fidelity images with advanced text rendering, consistent character identities, and precise prompt following for professional visual design and…
Use this file to discover all available pages before exploring further.
Try Nano Banana Pro in the Workbench
Run this model interactively, tune parameters, and compare outputs.
Model ID:google-nano-banana-proNano Banana Pro is an image generation model that excels in generating studio-quality visuals with advanced text rendering, high-fidelity 2K and 4K outputs, and superior character consistency across multiple images. It is built on Google’s Gemini 3 Pro Image architecture and leverages multimodal understanding for nuanced, context-aware creative direction rather than simple keyword matching.It is designed for professional creative workflows, making it particularly effective for marketing campaigns, product visualization, and educational content requiring precise, legible text directly embedded in images.
Nano Banana Pro supports complex editing tasks, such as multi-image fusion, localized edits, and maintaining branding consistency across diverse asset types.Some other noteworthy features of Nano Banana Pro include multi-image blending (up to 14 images per generation), accurate infographic and diagram creation, and advanced controls for scene lighting, camera angle, and color grading.
Metric
Value
Parameter Count
Unknown
Mixture of Experts
Unknown
Context Length
Unknown
Multilingual
Yes
Quantized*
Yes
*Quantization is specific to the inference provider and the model may be offered with different quantization levels by other providers.
curl -X POST https://hub.oxen.ai/api/ai/images/edit \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-nano-banana-pro", "prompt": "A botanist / researcher looking up at a banana tree in an Amazon rainforest. Photorealistic. It could be used for a National Geographic cover."}'
curl -X POST https://hub.oxen.ai/api/ai/images/edit \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-nano-banana-pro", "prompt": "A botanist / researcher looking up at a banana tree in an Amazon rainforest. Photorealistic. It could be used for a National Geographic cover.", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ]}'
curl -X POST https://hub.oxen.ai/api/ai/images/edit \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-nano-banana-pro", "prompt": "A botanist / researcher looking up at a banana tree in an Amazon rainforest. Photorealistic. It could be used for a National Geographic cover.", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "aspect_ratio": "auto", "resolution": "2K", "safety_tolerance": "6"}'
# Enqueue, capture the generation id.GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-nano-banana-pro", "prompt": "A botanist / researcher looking up at a banana tree in an Amazon rainforest. Photorealistic. It could be used for a National Geographic cover."}' | jq -r '.generations[0].generation_id')# Poll until the generation reaches a terminal status.while true; do STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') echo "Status: $STATUS" case $STATUS in succeeded|failed|cancelled) break;; esac sleep 5done# Print the result.curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq .
# Enqueue, capture the generation id.GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-nano-banana-pro", "prompt": "A botanist / researcher looking up at a banana tree in an Amazon rainforest. Photorealistic. It could be used for a National Geographic cover.", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ]}' | jq -r '.generations[0].generation_id')# Poll until the generation reaches a terminal status.while true; do STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') echo "Status: $STATUS" case $STATUS in succeeded|failed|cancelled) break;; esac sleep 5done# Print the result.curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq .
# Enqueue, capture the generation id.GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-nano-banana-pro", "prompt": "A botanist / researcher looking up at a banana tree in an Amazon rainforest. Photorealistic. It could be used for a National Geographic cover.", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "aspect_ratio": "auto", "resolution": "2K", "safety_tolerance": "6"}' | jq -r '.generations[0].generation_id')# Poll until the generation reaches a terminal status.while true; do STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') echo "Status: $STATUS" case $STATUS in succeeded|failed|cancelled) break;; esac sleep 5done# Print the result.curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq .
# Enqueue, capture the generation id.GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-nano-banana-pro", "prompt": "A botanist / researcher looking up at a banana tree in an Amazon rainforest. Photorealistic. It could be used for a National Geographic cover."}' | jq -r '.generations[0].generation_id')# Stream the SSE channel, grab the data line that follows a# media_generation_completed event for our id, and pretty-print it.curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ | awk -v id="$GEN_ID" ' /^event: media_generation_completed$/ { expect=1; next } /^data: / && expect { payload = substr($0, 7) if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } expect = 0 } ' | jq .
# Enqueue, capture the generation id.GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-nano-banana-pro", "prompt": "A botanist / researcher looking up at a banana tree in an Amazon rainforest. Photorealistic. It could be used for a National Geographic cover.", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ]}' | jq -r '.generations[0].generation_id')# Stream the SSE channel, grab the data line that follows a# media_generation_completed event for our id, and pretty-print it.curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ | awk -v id="$GEN_ID" ' /^event: media_generation_completed$/ { expect=1; next } /^data: / && expect { payload = substr($0, 7) if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } expect = 0 } ' | jq .
# Enqueue, capture the generation id.GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-nano-banana-pro", "prompt": "A botanist / researcher looking up at a banana tree in an Amazon rainforest. Photorealistic. It could be used for a National Geographic cover.", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "aspect_ratio": "auto", "resolution": "2K", "safety_tolerance": "6"}' | jq -r '.generations[0].generation_id')# Stream the SSE channel, grab the data line that follows a# media_generation_completed event for our id, and pretty-print it.curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ | awk -v id="$GEN_ID" ' /^event: media_generation_completed$/ { expect=1; next } /^data: / && expect { payload = substr($0, 7) if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } expect = 0 } ' | jq .
Input images to transform or use as reference (supports multiple image urls)
aspect_ratio
string
"auto"
Aspect ratio for the generated image One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3.
resolution
string
"2K"
Resolution of the generated image One of: 1K, 2K, 4K.
safety_tolerance
string
"6"
The safety tolerance level for content moderation. 1 is the most strict (blocks most content), 6 is the least strict. Default value: 4 One of: 1, 2, 3, 4, 5, 6.
⌘I
Assistant
Responses are generated using AI and may contain mistakes.