# Nano Banana Pro

> The same subject from different angles and in different places. Our choice for keeping a look across a series.

Source: https://docs.nocamclub.com/models/nano-banana-pro

- **Model id:** `nano-banana-pro`
- **Makes:** photos
- **From:** 5 credits ($0.05)
- **Routes:** 2

## Writing prompts

- Repeat the same description of the subject, word for word, in every prompt of a series.
- Make each frame from the original photo, not from the previous result.
- See [the same character across many photos](https://docs.nocamclub.com/guides/same-character.md).


## A real result: A banner for the MCP page

![A purple character plugs a glowing lime green cable into a small white robot, whose eyes light up.](https://docs.nocamclub.com/examples/mcp-banner.jpg)

Made through this API: 2752×1536, 5 credits, 41 seconds, from [this photo](https://docs.nocamclub.com/examples/mascot.jpg). The call below is the one that made it.

## Call it

**cURL**

```bash
# A new Idempotency-Key for each new thing you want made, the same one when you retry it.
curl https://api.nocamclub.com/v1/generations \
  -H "Authorization: Bearer $NOCAM_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Prefer: wait=60" \
  -H "Idempotency-Key: nano-banana-pro-$(date +%s)" \
  -d '{
  "model": "nano-banana-pro",
  "input": {
    "prompt": "Keep the purple character from img1, with the same black cap, yellow sunglasses, black hoodie, cargo pants and sneakers. He plugs a glowing lime green cable into the back of a small friendly white robot, and the robot'\''s eyes light up. Dark studio, purple rim light, polished 3D render. No words or letters anywhere.",
    "resolution": "2K",
    "aspect_ratio": "16:9",
    "images": [
      "https://docs.nocamclub.com/examples/mascot.jpg"
    ]
  }
}'
```

**JavaScript**

```js
const res = await fetch("https://api.nocamclub.com/v1/generations", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.NOCAM_API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
    Prefer: "wait=60",
  },
  body: JSON.stringify({
    "model": "nano-banana-pro",
    "input": {
      "prompt": "Keep the purple character from img1, with the same black cap, yellow sunglasses, black hoodie, cargo pants and sneakers. He plugs a glowing lime green cable into the back of a small friendly white robot, and the robot's eyes light up. Dark studio, purple rim light, polished 3D render. No words or letters anywhere.",
      "resolution": "2K",
      "aspect_ratio": "16:9",
      "images": [
        "https://docs.nocamclub.com/examples/mascot.jpg"
      ]
    }
  }),
});
const generation = await res.json();
```

**Python**

```python
import os, uuid, requests

res = requests.post(
    "https://api.nocamclub.com/v1/generations",
    headers={"Authorization": f"Bearer {os.environ['NOCAM_API_KEY']}", "Prefer": "wait=60", "Idempotency-Key": str(uuid.uuid4())},
    json={
        "model": "nano-banana-pro",
        "input": {
            "prompt": "Keep the purple character from img1, with the same black cap, yellow sunglasses, black hoodie, cargo pants and sneakers. He plugs a glowing lime green cable into the back of a small friendly white robot, and the robot's eyes light up. Dark studio, purple rim light, polished 3D render. No words or letters anywhere.",
            "resolution": "2K",
            "aspect_ratio": "16:9",
            "images": [
                "https://docs.nocamclub.com/examples/mascot.jpg"
            ]
        }
    },
    timeout=90,
)
generation = res.json()
```

**MCP tool**

```json
{
  "name": "generate",
  "arguments": {
    "model": "nano-banana-pro",
    "prompt": "Keep the purple character from img1, with the same black cap, yellow sunglasses, black hoodie, cargo pants and sneakers. He plugs a glowing lime green cable into the back of a small friendly white robot, and the robot's eyes light up. Dark studio, purple rim light, polished 3D render. No words or letters anywhere.",
    "resolution": "2K",
    "aspect_ratio": "16:9",
    "images": [
      "https://docs.nocamclub.com/examples/mascot.jpg"
    ]
  }
}
```


## Options

| Field | Takes | Default | What it is |
|---|---|---|---|
| `prompt` (required) | Up to 10000 characters |  | What to make. Refer to files by order: img1, img2, video1, audio1. |
| `aspect_ratio` | `1:1`, `16:9`, `9:16`, `4:3`, `3:4` | `1:1` |  |
| `resolution` | `1K`, `2K`, `4K` | `1K` |  |
| `output_format` | `png`, `jpeg` |  |  |
| `images` | Up to 5 |  | Photos: file ids from /v1/uploads, or https addresses. |

Any other field is refused. How files work: [Uploads](https://docs.nocamclub.com/api/uploads.md) and [Files in prompts](https://docs.nocamclub.com/api/files-in-prompts.md).

## Prices

In credits (1 credit = $0.01), as of 2026-11-07. For the current list: `GET /v1/models/nano-banana-pro`.

| Size | Credits |
|---|---|
| 1K | 5 |
| 2K | 5 |
| 4K | 7 |
