# Nano Banana Pro Google's gemini-3-pro-image model for text-to-image generation, with readable in-image typography and output up to 4096x4096. ## API Information - **Provider:** google - **Model Slug:** google/nano-banana-pro/text-to-image - **Category:** text-to-image - **Status:** active - **Base Cost:** $0.075 per request - **List Price:** $0.15 per request - **Active Discount:** 50% off — already reflected in Base Cost above - **Estimated Processing Time:** 30 seconds ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | walking cat | max 50000 chars | - | | aspect_ratio | string | No | 9:16 | 9:16, 16:9, 1:1, 2:3, 3:2, 21:9, 3:4, 4:3, 4:5, 5:4 | - | | resolution | string | No | 1k | 1k, 2k, 4k | Resolution | ### Parameter Details #### `resolution` - Type: `string` - Required: No - Description: Resolution ## Required Parameters Example ```bash curl -X POST https://api.e2x.ai/v1/jobs/submit \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "google/nano-banana-pro/text-to-image", "input": { "prompt": "walking cat" } }' ``` ## Full Example ```bash curl -X POST https://api.e2x.ai/v1/jobs/submit \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "google/nano-banana-pro/text-to-image", "input": { "prompt": "walking cat", "aspect_ratio": "9:16", "resolution": "1k" } }' ``` ## JavaScript Fetch Example ```javascript const response = await fetch('https://api.e2x.ai/v1/jobs/submit', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ "model": "google/nano-banana-pro/text-to-image", "input": { "prompt": "walking cat", "aspect_ratio": "9:16", "resolution": "1k" } }) }); const result = await response.json(); console.log(result); ``` ## Output Schema Output varies by model configuration. ## Job Polling After submitting, poll for the job status: ```bash curl https://api.e2x.ai/v1/jobs/{JOB_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` ### Status Values | Status | Description | |--------|-------------| | `pending` | Job submitted, waiting in queue | | `processing` | Job is being processed by a worker | | `completed` | Job finished - check `data.outputs[0].url` | | `failed` | Job failed - check `data.error.message` | | `cancelled` | Job was cancelled | ### Python Polling Example ```python import time, requests job_id = submit_response.json()["data"]["jobId"] while True: resp = requests.get(f"https://api.e2x.ai/v1/jobs/{job_id}", headers={"Authorization": "Bearer YOUR_API_KEY"}) data = resp.json()["data"] if data["status"] == "completed": print("Done!", data["outputs"][0]["url"]) break elif data["status"] == "failed": raise Exception(f"Job failed: {data['error']['message']}") time.sleep(2) ``` ## Usage Notes - All monetary values are in micro-cents (1,000,000 = $1 USD) - For structured parameters such as `elements` or `shots`, send real JSON arrays/objects, not quoted strings. - Use `webhookUrl` parameter in your submit request to receive completion callbacks instead of polling - API Base URL: `https://api.e2x.ai/v1`