PointAPI
AI image generation API

Nano Banana 2.1 API — pricing and integration

Nano Banana 2.1: AI image generation API. Use this model through Point API with its exact model ID and the supported parameters below. Compare the published price tiers before submitting a generation.

Model ID: nanobanano-2-1

Enabled in the published configuration

Open in playground

API pricing in USD

Creator −10% prices are 10% lower than Studio Creator generation costs converted to USD. Models available only through the API have separate API pricing. A request or character-range tier is the full cost for its exact settings; image and second units are multiplied by count or duration. Token rates apply only where explicitly listed. Missing or expired prices are unavailable, not free.

Creator −10%

Nano Banana 2.1 — API pricing in USD
PriceAPI pricing in USDParameter tier
0.010955 USDper request{"count": 1}
0.021911 USDper request{"count": 2}
0.043821 USDper request{"count": 4}

Supported API parameters

Nano Banana 2.1 — Supported API parameters
ParameterTypeAccepted values
promptstring
Required
Minimum (minLength): 1
Maximum (maxLength): 32000
ratiostring
Optional
Accepted values ["1:1", "16:9", "9:16", "2:3", "3:2"]
Default (default): "1:1"
stylestring
Optional
Accepted values ["standard", "realistic", "artistic", "anime", "cinematic"]
Default (default): "standard"
countinteger
Optional
Accepted values [1, 2, 4]
Default (default): 1
Minimum (minimum): 1
Maximum (maximum): 4
imagesarray
Optional
Maximum items (maxItems): 4
items: {"format": "data-url", "type": "string"}
preserve_reference_identitiesboolean
Optional
Default (default): false
capabilities
{
  "additionalProperties": false,
  "max_reference_images": 4
}

The published contract allows up to 4 image references. Use only the reference fields and roles documented for this model; this limit does not imply support for other media types.

Integrate this model

Point API uses its own REST JSON contract and asynchronous generation resources. Keep API keys on your server, not in public frontend code.

  1. Read GET /v1/models and select the exact model ID, supported input fields and published price tier.
  2. Create a model-authorized API key in your workspace and ensure your USD balance covers the request.
  3. Send REST JSON to POST /v1/generations with Authorization: Bearer and an Idempotency-Key. Reuse that key only with the same request body when retrying the same operation.
  4. Poll GET /v1/generations/{id} using the same returned generation ID. An accepted request is asynchronous; if its state is unknown, keep checking that ID instead of creating a new paid generation.
POST https://pointgpt.io/v1/generations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: YOUR_UNIQUE_REQUEST_ID

{
  "model": "nanobanano-2-1",
  "input": {
    "prompt": "A ceramic teapot on a wooden table, soft morning light, simple background."
  }
}

The initial response confirms acceptance, not a completed result. Inspect the returned state and result on the same generation resource. Supported output and media access depend on the model and your account permissions.

API documentation

cURL / Python

POINT_API_KEY · POINT_REQUEST_ID

cURL

curl https://pointgpt.io/v1/generations \
  -H "Authorization: Bearer $POINT_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $POINT_REQUEST_ID" \
  --data-raw '{
  "model": "nanobanano-2-1",
  "input": {
    "prompt": "A ceramic teapot on a wooden table, soft morning light, simple background."
  }
}'

Python

import json
import os
from urllib.request import Request, urlopen

payload = json.loads('{\n  "model": "nanobanano-2-1",\n  "input": {\n    "prompt": "A ceramic teapot on a wooden table, soft morning light, simple background."\n  }\n}')
request = Request('https://pointgpt.io/v1/generations', method='POST',
    data=json.dumps(payload).encode('utf-8'),
    headers={
        'Authorization': 'Bearer ' + os.environ['POINT_API_KEY'],
        'Content-Type': 'application/json',
        'Idempotency-Key': os.environ['POINT_REQUEST_ID'],
    })
with urlopen(request, timeout=60) as response:
    job = json.load(response)
print(job['id'])

API questions

How is the API request priced?

Creator −10% prices are 10% lower than Studio Creator generation costs converted to USD. Models available only through the API have separate API pricing. A request or character-range tier is the full cost for its exact settings; image and second units are multiplied by count or duration. Token rates apply only where explicitly listed. Missing or expired prices are unavailable, not free. The price is fixed when a request is accepted.

Can I use an OpenAI-compatible client or streaming?

Integrate the documented Point API REST JSON endpoints. This contract does not advertise OpenAI-compatible endpoints or streaming. Use the request and response formats in the API documentation.

How do I receive the generated result?

Submission creates an asynchronous generation resource. Save its ID and poll GET /v1/generations/{id} for its state and result. A state of unknown is not an instruction to submit again: continue checking the same ID.

Related models