API

Nano Banana 2 Lite API

Image

Nano Banana 2 Lite API delivers fast, efficient image generation with reliable character consistency, smooth multi-image blending, and natural language editing for everyday creative workflows. Integrate Nano Banana 2 Lite API for lightweight, high-quality visual generation.

Authorizations

Bearerstringheaderrequired

API key to authorize requests

Body

application/json
modelstringrequired
nano-banana-2-lite
input.promptstringrequired

Describe the image to create, or the changes to make to your reference images. Whitespace is trimmed.

Maximum length: 5,000 characters

input.imagesstring[]optional

Optional reference image URLs. Use publicly accessible HTTPS URLs only. Omit for text-to-image.

Maximum items: 14

input.aspect_ratiostringoptional

Output width-to-height ratio. Auto lets the model choose.

Default: auto

auto1:12:33:23:44:34:55:49:1616:921:91:44:11:88:1

Request examples

POST /api/v1/create
curl -X POST https://nanobanana.io/api/v1/create \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "nano-banana-2-lite",
  "input": {
    "prompt": "A cinematic product photo of a futuristic banana-shaped camera"
  }
}'
POST /api/v1/create · HTTP 201
{
  "data": {
    "task_id": "task_example",
    "model": "nano-banana-2-lite",
    "status": "processing",
    "credits": 18
  }
}

Poll this endpoint using the returned task ID until the task is completed or failed. We recommend polling every 5 seconds to check the latest task status.

POST /api/v1/check
{
  "task_id": "task_example"
}

Response

Task status returned by POST /api/v1/check. The IDs, URLs, and timestamps below are illustrative.

idstringrequired

Task identifier in data.id, matching the task_id used in the check request.

statusstringrequired
completed means generation succeeded and data.data contains the results. For other statuses, data.data is null.
failed_reasonstringoptional

Only returned when status is failed, to explain the failure. This field is omitted for completed and processing.

Completed · completed

The download URLs are in data.data.results.

POST /api/v1/check · HTTP 200
{
  "data": {
    "id": "task_example",
    "created_at": 1791244800,
    "model": "nano-banana-2-lite",
    "status": "completed",
    "data": {
      "results": [
        "https://example.com/generated.png"
      ],
      "processing_time": 18
    }
  }
}

Other statuses

For processing or failed, data.data is null. This example shows failed: only failed includes failed_reason. Continue polling for processing; stop polling for failed.

POST /api/v1/check · HTTP 200
{
  "data": {
    "id": "task_example",
    "created_at": 1791244800,
    "model": "nano-banana-2-lite",
    "status": "failed",
    "data": null,
    "failed_reason": "Generation failed."
  }
}

Credit usage

Credits consumed for a request generating one image.

Credits consumed for a request generating one image.
GenerationCredits per request
Single image18

Set the listed input parameters explicitly to use the corresponding rate. Requests generating multiple images may consume more credits.

The credits field returned by POST /api/v1/create shows the amount charged for the task.