# Nano Banana 2 | Text to Image Nano Banana 2 delivers next-generation text-to-image generation, producing ultra high quality visuals with enhanced detail, realism, and prompt accuracy. ## API Information - **Model Slug:** nano-banana-2-text-to-image - **Branded URL:** https://www.eachlabs.ai/google/nano-banana-2/nano-banana-2-text-to-image - **Provider:** Google - **Category:** Text to Image - **Output Type:** array - **Status:** active - **Base Cost:** 1K resolution: $0.08 per image (base rate) - **Estimated Processing Time:** 10 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/nano-banana-2-text-to-image ## Pricing - **Charge Type:** dynamic - **Estimated Price (default example):** $0.0800 - **Pricing Details:** 1K resolution: $0.08 per image (base rate) ### Pricing Rules | Condition | Pricing | | --- | --- | | resolution eq_i "4K" | 4K resolution: $0.16 per image (base $0.08 × 2x multiplier) | | resolution eq_i "2K" | 2K resolution: $0.12 per image (base $0.08 × 1.5x multiplier) | | resolution eq_i "1K" | 1K resolution: $0.08 per image (base rate) | | Default (fallback) | Default: $0.08 per image (1K base rate) | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text description of the image to generate. | | aspect_ratio | string | No | 1:1 | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 | The aspect ratio of the output image. | | resolution | string | No | 1K | 1K, 2K, 4K | Output image resolution. Higher resolution produces more detailed results but may increase generation time. | | output_format | string | No | png | jpeg, png, webp | Output image format. Gemini always returns PNG; the pipeline converts to the requested format before upload. | | num_images | integer | No | 1 | 1–4 | Number of images to generate. Each image is a separate API call. | | temperature | number | No | - | 0.1–2 | Controls randomness in generation (0.1–2.0). Lower values produce more deterministic results. | | top_p | number | No | - | 0.05–1 | Nucleus sampling threshold (0.05–1.0). Tokens are sampled from the smallest set whose cumulative probability exceeds this value. Leave unset to use the model default. | | thinking_level | string | No | - | minimal, high | Controls the model's internal reasoning depth. 'minimal' uses light reasoning; 'high' improves instruction-following on complex prompts at the cost of latency. Leave unset to use the model default. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "nano-banana-2-text-to-image", "input": { "prompt": "Ultra realistic photo of a modern summer greengrocery store, vibrant and colorful fruit display, ripe yellow bananas clearly visible on the counter, neatly arranged fresh fruits and vegetables in wooden and black metal crates, bright summer daylight filling the space, warm natural sunlight, soft realistic shadows, clean and stylish setup, contemporary market design, one greengrocer standing behind the counter wearing a light summer outfit, natural expression, cinematic depth of field, highly detailed textures on fruits and surfaces, true-to-life colors, professional photography, 8k resolution, HDR, documentary style, no text, no signs, no logos, no exaggerated saturation." } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "array", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview Nano Banana 2 (Gemini 3.1 Flash Image) is Google's latest text-to-image generation model that combines professional-grade image quality with exceptional speed and efficiency. It solves the traditional tradeoff between visual fidelity and generation latency by delivering Pro-level capabilities at Flash-tier performance. This model brings advanced world knowledge, precise text rendering, and subject consistency to rapid image generation workflows, making high-quality visual creation accessible to developers, designers, and creative teams at scale. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.