model guide
Nano Banana Pro
gemini-3-pro-image
A professional route configured for complex instructions, image editing, and high-resolution final assets.
- Model ID
- gemini-3-pro-image
- Configured estimate
- $0.09/ call
- Output sizes
- 1K · 2K · 4K
- API family
- Gemini native
Prompt presets
These controls are read directly from YingTu’s model registry.
Campaign key visual
A premium campaign key visual for a design-led audio product, precise industrial details, controlled studio reflections, cinematic depth.
Complex composition
A layered architectural scene with people, signage, landscaping, and coherent late-afternoon lighting, realistic material detail.
Final asset edit
Keep the product geometry and brand marks unchanged. Refine lighting, surface detail, and background into a polished commercial image.
Actual route configuration
Values on this page come from the same model registry used by the Image Studio.
Best for
- • Complex scenes and instructions
- • High-resolution final assets
- • Professional image editing
Review before use
- • Higher configured cost should be evaluated against the final task.
- • 4K output does not remove the need for visual review.
- • Very complex references may still need prompt iteration.
API quickstart
The sample is generated by the same code helper used in the existing Studio.
import requests
import base64
# Configuration
API_KEY = "sk-YOUR_API_KEY" # Replace with your API Key
API_URL = "https://api2.laozhang.ai/v1beta/models/gemini-3-pro-image:generateContent"
# Request headers
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Build request payload
payload = {
"contents": [{
"parts": [{"text": "A premium campaign key visual for a design-led audio product, precise industrial details, controlled studio reflections, cinematic depth."}]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {
"imageSize": "2K"
}
}
}
# Send request
print("Generating image...")
response = requests.post(API_URL, headers=headers, json=payload, timeout=180)
if response.status_code != 200:
print(f"Error: {response.status_code} - {response.text}")
exit(1)
# Extract and save image
result = response.json()
image_part = None
for candidate in result.get("candidates", []):
for part in candidate.get("content", {}).get("parts", []):
inline_data = part.get("inlineData") or part.get("inline_data")
if inline_data and inline_data.get("data"):
image_part = inline_data
break
if image_part:
break
if not image_part:
print("No image data in response")
print(result)
exit(1)
mime_type = image_part.get("mimeType") or image_part.get("mime_type") or "image/png"
extension = "jpg" if mime_type == "image/jpeg" else "webp" if mime_type == "image/webp" else "png"
output_path = f"output.{extension}"
with open(output_path, "wb") as f:
image_data = image_part["data"]
f.write(base64.b64decode(image_data))
print(f"✅ Image saved: {output_path}")
Existing Studio gallery
These legacy gallery images have no model or prompt provenance. They are visual examples only, not evidence for the route on this page.


