plugin: nanobanana updated: 2026-01-20
Gemini Image API Reference
Quick Start
# Set API key
export GEMINI_API_KEY="your-key"
# Generate image
uv run python main.py output.png "A minimal 3D cube"
API Key Setup
- Visit: https://makersuite.google.com/app/apikey
- Create new API key
- Set environment variable:
export GEMINI_API_KEY="your-api-key"
Supported Models
| Model | Resolution | Best For | |-------|------------|----------| | gemini-3-pro-image-preview | Up to 4K | High quality | | gemini-2.5-flash-image | Up to 1K | Quick iterations |
Aspect Ratios
| Ratio | Use Case | |-------|----------| | 1:1 | Social media, icons | | 3:4 | Portrait photos | | 4:3 | Traditional photos | | 4:5 | Instagram portrait | | 5:4 | Landscape photos | | 9:16 | Mobile, stories | | 16:9 | YouTube, desktop | | 21:9 | Cinematic, ultrawide |
CLI Flags
| Flag | Description | Example |
|------|-------------|---------|
| --style | Apply style template | --style styles/glass.md |
| --edit | Edit existing image | --edit photo.jpg |
| --ref | Reference image | --ref style.png |
| --aspect | Aspect ratio | --aspect 16:9 |
| --model | Model ID | --model gemini-2.5-flash-image |
| --max-retries | Retry attempts | --max-retries 5 |
Error Codes
| Code | Meaning | Recovery |
|------|---------|----------|
| SUCCESS | Operation completed | N/A |
| API_KEY_MISSING | GEMINI_API_KEY not set | Export the variable |
| FILE_NOT_FOUND | Referenced file missing | Check path |
| INVALID_INPUT | Bad prompt or argument | Fix input |
| RATE_LIMITED | Too many requests | Wait, uses auto-retry |
| NETWORK_ERROR | Connection failed | Check network, auto-retry |
| API_ERROR | Gemini API error | Check logs |
| CONTENT_POLICY | Blocked prompt | Adjust content |
| TIMEOUT | Request timed out | Retry |
| PARTIAL_FAILURE | Some batch items failed | Check individual results |
Retry Behavior
The script automatically retries on transient errors:
- Rate limits (429)
- Server errors (502, 503)
- Connection timeouts
- Network errors
Retry uses exponential backoff: 1s, 2s, 4s, 8s, etc.
Maximum retries configurable with --max-retries (default: 3)
Best Practices
- Prompts: Be specific about style, lighting, composition
- Styles: Use markdown templates for consistent results
- References: Provide visual examples for style matching
- Batch: Generate variations to pick the best
- Iteration: Edit results to refine
- Retries: Increase
--max-retriesfor unreliable connections