API

Nano Banana 2 API

Image

Nano Banana 2 API combines real-time world knowledge with advanced reasoning to deliver stronger prompt understanding and more accurate visual results. Generate consistent multi-subject images in native 4K, support flexible aspect ratios, and create polished global typography across complex compositions. Integrate Nano Banana 2 API to build smarter, high-quality image workflows at scale.

Authorizations

Bearerstringheaderrequired

API key to authorize requests

Body

application/json
modelstringrequired
nano-banana-2
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
input.resolutionstringoptional

Output resolution tier; Omit or leave empty to use the default.

Default: 2k

1k2k4k

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",
  "input": {
    "prompt": "A cinematic product photo of a futuristic banana-shaped camera",
    "aspect_ratio": "1:1",
    "resolution": "2k"
  }
}'
POST /api/v1/create · HTTP 201
{
  "data": {
    "task_id": "task_example",
    "model": "nano-banana-2",
    "status": "processing",
    "credits": 30
  }
}

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",
    "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",
    "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.
Resolution1K2K4K
Single image203040

Optional parameters omitted: 20 credits

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.