Nano Banana Pro
Googleimagelive~36sHigh-fidelity images with accurate multilingual text rendering.
avg$0.179/ run
An estimate, trued up after the run. Failed runs cost $0.00.
How this model is billed
Quoted before you run. A failed run costs $0.00.
Typical run ~36s: the measured mean, end to end.
Compare every priceRun Nano Banana Pro
Nano Banana Pro API
Async: the POST answers at once with a request id. Poll it, or take the webhook.
- 01
Submit
Parameters at the top level of the JSON body. Answers 202 with a request id.
curlPOST /v1/models/nano-banana-pro curl -X POST https://api.ezflows.io/v1/models/nano-banana-pro \ -H "Authorization: Bearer $EZFLOWS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Create a multi-panel GTA-style comic page featuring one woman and one man as office coworkers working on a new product launch. Use bold outlines, dramatic GTA loading-screen shading, expressive faces, modern tech office backgrounds.\n\nPanel 1 — Narration:\nThe woman enters the office early, holding a laptop. She looks stressed but determined.\nText: ‘Launch day. Weeks of work… all coming down to this.’\n\nPanel 2 — Dialogue:\nMan appears behind her with a calm, confident smile.\nMan: ‘You’re here early. Ready for the big ship?’\nWoman: ‘Trying to be.’\n\nPanel 3 — Action:\nBoth sit at a desk with screens showing graphs, bugs, and a countdown timer.\nText: ‘One critical bug left… time running out.’\n\nPanel 4 — Dialogue:\nClose-up of the man pointing at the screen.\nMan: ‘Wait—I see it. We can fix this.’\nWoman: ‘Let’s do it.’\n\nPanel 5 — Action:\nBoth typing fast, dramatic GTA-style lighting, code streaming across screens.\nText: ‘Two minds. One mission.’\n\nPanel 6 — Victory:\nThe laptop shows PRODUCT SHIPPED — SUCCESS. Both cheer and laugh in relief.\nWoman: ‘We did it!’\nMan: ‘Told you we’d make it.’\n\nPanel 7 — Narration:\nFinal shot: team walking out of the office at night, city lights behind them.\nText: ‘In tech, wins aren’t solo. They’re shared.’\n\nArt style: GTA loading-screen style, bold color blocks, high contrast shadows, confident comic composition, cinematic frames.", "system_prompt": "" }' # 202 Accepted, at once — it never waits for the model: # {"request_id": "req_8f2a41c9b70e4d15", "status": "queued", # "poll_url": "https://api.ezflows.io/v1/requests/req_8f2a41c9b70e4d15"} - 02
Poll
Same bearer header, every few seconds, until the status is final.
curlGET /v1/requests/:id REQUEST_ID=req_8f2a41c9b70e4d15 # from the POST while :; do BODY=$(curl -s https://api.ezflows.io/v1/requests/$REQUEST_ID \ -H "Authorization: Bearer $EZFLOWS_API_KEY") STATUS=$(echo "$BODY" | jq -r .data.status) case "$STATUS" in succeeded|failed|cancelled) break ;; esac sleep 3 done echo "$BODY" | jq -r '.data.output.artifacts[].url' # media.ezflows.io, kept 90 days - 03
Response
Files are on media.ezflows.io, kept 90 days. A failed run says why and costs nothing.
json200 · succeeded { "data": { "id": "req_8f2a41c9b70e4d15", "model_slug": "nano-banana-pro", "status": "succeeded", "http_status": 200, "cost": 0.178779, "auth_method": "api_key", "error": null, "submitted_at": "2026-09-12T18:07:21.114Z", "queue_started_at": "2026-09-12T18:07:21.402Z", "execution_started_at": "2026-09-12T18:07:22.010Z", "first_byte_at": "2026-09-12T18:07:52.871Z", "finished_at": "2026-09-12T18:07:55.203Z", "io_deleted_at": null, "canvas_id": null, "canvas_node_id": null, "client_attempt_id": null, "idempotency_key": null, "input": { "prompt": "Create a multi-panel GTA-style comic page featuring one woman and one man as office coworkers working on a new product launch. Use bold outlines, dramatic GTA loading-screen shading, expressive faces, modern tech office backgrounds.\n\nPanel 1 — Narration:\nThe woman enters the office early, holding a laptop. She looks stressed but determined.\nText: ‘Launch day. Weeks of work… all coming down to this.’\n\nPanel 2 — Dialogue:\nMan appears behind her with a calm, confident smile.\nMan: ‘You’re here early. Ready for the big ship?’\nWoman: ‘Trying to be.’\n\nPanel 3 — Action:\nBoth sit at a desk with screens showing graphs, bugs, and a countdown timer.\nText: ‘One critical bug left… time running out.’\n\nPanel 4 — Dialogue:\nClose-up of the man pointing at the screen.\nMan: ‘Wait—I see it. We can fix this.’\nWoman: ‘Let’s do it.’\n\nPanel 5 — Action:\nBoth typing fast, dramatic GTA-style lighting, code streaming across screens.\nText: ‘Two minds. One mission.’\n\nPanel 6 — Victory:\nThe laptop shows PRODUCT SHIPPED — SUCCESS. Both cheer and laugh in relief.\nWoman: ‘We did it!’\nMan: ‘Told you we’d make it.’\n\nPanel 7 — Narration:\nFinal shot: team walking out of the office at night, city lights behind them.\nText: ‘In tech, wins aren’t solo. They’re shared.’\n\nArt style: GTA loading-screen style, bold color blocks, high contrast shadows, confident comic composition, cinematic frames.", "system_prompt": "" }, "output": { "artifacts": [ { "index": 0, "kind": "image", "contentType": "image/png", "url": "https://media.ezflows.io/outputs/<account>/req_8f2a41c9b70e4d15/0.png" } ] } } } - 04
Webhook
Skip polling: we POST the result to your endpoint, at least once.
- Register
- Create an endpoint under Webhooks in the dashboard; the signing secret is shown once.
- Events
- request.succeeded · request.failed · request.cancelled
- Headers
- ezflows-event-id (dedupe on it) · ezflows-timestamp (unix seconds) · ezflows-signature t=<ts>,v1=<hex HMAC-SHA256 of "<ts>.<raw body>">
- Verify
- Over the exact bytes received, in constant time; reject anything older than five minutes.
- Respond
- Any 2xx within 10 s. Redirects are not followed.
- Retries
- Five, with backoff: 30 s · 60 s · 2 min · 4 min · 8 min. Disabled after five consecutive dead deliveries.
jsonDelivery body { "id": "82cf46a4-841e-41d6-b3c7-facc937d3252", "type": "request.succeeded", "created_at": "2026-09-12T18:07:55Z", "data": { "id": "req_8f2a41c9b70e4d15", "model_slug": "nano-banana-pro", "status": "succeeded", "cost": 0.178779, "output": { "artifacts": [ { "url": "https://media.ezflows.io/…/0.png" } ] } } }curlverify.sh # Create the endpoint under Webhooks in the dashboard; the signing secret is shown once. # ezflows-signature: t=<ts>,v1=<hex HMAC-SHA256 of "<ts>.<raw body>"> # body.json = the exact bytes received. Reject anything older than five minutes. EXPECTED=$({ printf '%s.' "$TS"; cat body.json; } \ | openssl dgst -sha256 -hmac "$EZFLOWS_WEBHOOK_SECRET" -r | cut -d' ' -f1) [ "$EXPECTED" = "$V1" ] && echo "valid" || echo "reject"
Parameters 10
| Name | Type | Default | Allowed | Description |
|---|---|---|---|---|
| promptrequired | string | Create a multi-panel GTA-style comic page featuring one woman and one man as office coworkers working on a new product launch. Use bold outlines, dramatic GTA loading-screen shading, expressive faces, modern tech office backgrounds. Panel 1 — Narration: The woman enters the office early, holding a laptop. She looks stressed but determined. Text: ‘Launch day. Weeks of work… all coming down to this.’ Panel 2 — Dialogue: Man appears behind her with a calm, confident smile. Man: ‘You’re here early. Ready for the big ship?’ Woman: ‘Trying to be.’ Panel 3 — Action: Both sit at a desk with screens showing graphs, bugs, and a countdown timer. Text: ‘One critical bug left… time running out.’ Panel 4 — Dialogue: Close-up of the man pointing at the screen. Man: ‘Wait—I see it. We can fix this.’ Woman: ‘Let’s do it.’ Panel 5 — Action: Both typing fast, dramatic GTA-style lighting, code streaming across screens. Text: ‘Two minds. One mission.’ Panel 6 — Victory: The laptop shows PRODUCT SHIPPED — SUCCESS. Both cheer and laugh in relief. Woman: ‘We did it!’ Man: ‘Told you we’d make it.’ Panel 7 — Narration: Final shot: team walking out of the office at night, city lights behind them. Text: ‘In tech, wins aren’t solo. They’re shared.’ Art style: GTA loading-screen style, bold color blocks, high contrast shadows, confident comic composition, cinematic frames. | — | Describe the image to generate or the changes to make to the reference images. |
| image_urls | string[] | [] | up to 14 image urls | Optional reference images used to guide generation. Nano Banana Pro accepts up to 14 images. |
| system_prompt | string | — | — | Optional high-level persona or style instructions applied to the generation. |
| aspect_ratio | enum | 1:1 | auto · 1:1 · 2:3 · 3:2 · 4:3 · 3:4 · 4:5 · 5:4 · 16:9 · 9:16 · 21:9 · 4:1 · 1:4 · 8:1 · 1:8 | Choose the proportions of the generated image. "Auto" lets the model pick. |
| output_resolution | enum | 4K | 1K · 2K · 4K | Output detail level. Also determines the price tier (1K/2K = $0.15, 4K = $0.25). |
| output_format | enum | jpg | jpg · png | File format of the generated image. |
| response_modalities | enum | TEXT_AND_IMAGE | TEXT_AND_IMAGE · IMAGE | Return only the generated image or include a text response alongside it. |
| seed | integer | 123456789 | 0–999999999999999 | Optional seed for reproducible results. Leave blank for a random seed on every request. |
| safety_tolerance | integer | 4 | 1–6 | Content-filter strictness, 1 (strictest) to 6 (most permissive). Leave blank for the default. |
| web_search | boolean | false | — | Ground generation in real-time web data. Recommended for news-related prompts. Also affects price. |
File inputs (image_urls: up to 14 image urls) take URLs. Upload the raw file to POST /v1/uploads with its own Content-Type and pass the url it returns. Inputs are kept 90 days.
Sign in to see your runs of Nano Banana Pro: status, cost, timings and outputs.
Sign inSign in to see what you spend on Nano Banana Pro, and how often runs succeed.
Sign in