---
title: Editing images — Nano Banana 2.1 | Runware Docs
url: https://runware.ai/docs/models/google-nano-banana-2-1/guides/editing-images
description: "How to edit an image with Nano Banana 2.1: one reference and a written instruction, keep lists, removals and additions, numbered changes, and chained edits."
---
### [Introduction](https://runware.ai/docs/models/google-nano-banana-2-1/guides/editing-images#introduction)

Pass one image in `inputs.referenceImages` with an instruction in `positivePrompt`, and Nano Banana 2.1 returns **the same image with that change applied**. The instruction is the whole interface: it says what changes, and the model works out where.

**Summer**:

![A three-story alpine hotel with dark timber balconies and red geraniums seen across a calm lake in summer, with green meadows, a wooden jetty with a rowboat, and a rocky peak behind](https://runware.ai/docs/assets/source-lakehotel.DawzroQb_16P1x5.jpg)

> **Prompt**: A tourism photograph of a three-story alpine lakeside hotel with dark timber balconies and red geraniums in window boxes, seen from across a small calm lake on a clear summer afternoon. Green meadow on both sides, a wooden jetty with a rowboat in the foreground on the left, forested slopes and a rocky peak behind the hotel. Photoreal travel photography, wide shot, no people, no text.

**Winter**:

![The same hotel, jetty, and peak in midwinter, with deep snow on the roofs, balconies, and meadows, a frozen lake, and a low sun casting long blue shadows](https://runware.ai/docs/assets/output-hero.Bpu8RLsg_1M6psp.jpg)

> **Prompt**: Turn this summer scene into midwinter. Cover the meadow, the roofs, the balconies, the jetty, and the forest in deep fresh snow, freeze the lake surface with a dusting of snow on the ice, replace the geraniums with snow on the window boxes, and change the light to a low cold sun with long blue shadows. Keep the hotel's architecture, the jetty, the rowboat, the mountains, and the camera position exactly as they are.

Drag the slider across the hotel. The building and the ridge line **stay registered** while every surface changes season, because the instruction, shown in the request below, listed them as fixed. A tourism board gets its winter campaign out of the summer shoot.

This guide covers the request, scoping an instruction, removing and adding objects, putting **several changes in one request**, and **chaining edits**.

### [The request](https://runware.ai/docs/models/google-nano-banana-2-1/guides/editing-images#the-request)

An edit is a generation with one reference attached:

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'google:nano-banana@2.1',
  positivePrompt: 'Turn this summer scene into midwinter. Cover the meadow, the roofs, the balconies, the jetty, and the forest in deep fresh snow, freeze the lake surface with a dusting of snow on the ice, replace the geraniums with snow on the window boxes, and change the light to a low cold sun with long blue shadows. Keep the hotel\'s architecture, the jetty, the rowboat, the mountains, and the camera position exactly as they are.',
  resolution: '2K',
  inputs: {
    referenceImages: [
      'https://im.runware.ai/image/os/a14d18/ws/2/ii/8e3b5c70-2d94-4a6f-b1e8-05c7a9d3f612.jpg'
    ]
  }
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "google:nano-banana@2.1",
            "positivePrompt": "Turn this summer scene into midwinter. Cover the meadow, the roofs, the balconies, the jetty, and the forest in deep fresh snow, freeze the lake surface with a dusting of snow on the ice, replace the geraniums with snow on the window boxes, and change the light to a low cold sun with long blue shadows. Keep the hotel's architecture, the jetty, the rowboat, the mountains, and the camera position exactly as they are.",
            "resolution": "2K",
            "inputs": {
                "referenceImages": [
                    "https://im.runware.ai/image/os/a14d18/ws/2/ii/8e3b5c70-2d94-4a6f-b1e8-05c7a9d3f612.jpg"
                ]
            }
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "imageInference",
      "taskUUID": "4d9f2a61-c3b8-4e07-9a15-8b6e0d7c2f43",
      "model": "google:nano-banana@2.1",
      "positivePrompt": "Turn this summer scene into midwinter. Cover the meadow, the roofs, the balconies, the jetty, and the forest in deep fresh snow, freeze the lake surface with a dusting of snow on the ice, replace the geraniums with snow on the window boxes, and change the light to a low cold sun with long blue shadows. Keep the hotel's architecture, the jetty, the rowboat, the mountains, and the camera position exactly as they are.",
      "resolution": "2K",
      "inputs": {
        "referenceImages": [
          "https://im.runware.ai/image/os/a14d18/ws/2/ii/8e3b5c70-2d94-4a6f-b1e8-05c7a9d3f612.jpg"
        ]
      }
    }
  ]'
```

**CLI**:

```bash
runware run google:nano-banana@2.1 \
  positivePrompt="Turn this summer scene into midwinter. Cover the meadow, the roofs, the balconies, the jetty, and the forest in deep fresh snow, freeze the lake surface with a dusting of snow on the ice, replace the geraniums with snow on the window boxes, and change the light to a low cold sun with long blue shadows. Keep the hotel's architecture, the jetty, the rowboat, the mountains, and the camera position exactly as they are." \
  resolution=2K \
  inputs.referenceImages.0=https://im.runware.ai/image/os/a14d18/ws/2/ii/8e3b5c70-2d94-4a6f-b1e8-05c7a9d3f612.jpg
```

**JSON**:

```json
{
  "taskType": "imageInference",
  "taskUUID": "4d9f2a61-c3b8-4e07-9a15-8b6e0d7c2f43",
  "model": "google:nano-banana@2.1",
  "positivePrompt": "Turn this summer scene into midwinter. Cover the meadow, the roofs, the balconies, the jetty, and the forest in deep fresh snow, freeze the lake surface with a dusting of snow on the ice, replace the geraniums with snow on the window boxes, and change the light to a low cold sun with long blue shadows. Keep the hotel's architecture, the jetty, the rowboat, the mountains, and the camera position exactly as they are.",
  "resolution": "2K",
  "inputs": {
    "referenceImages": [
      "https://im.runware.ai/image/os/a14d18/ws/2/ii/8e3b5c70-2d94-4a6f-b1e8-05c7a9d3f612.jpg"
    ]
  }
}
```

With a reference in the request, `resolution` becomes available. It picks the tier, `1K`, `2K`, or `4K`, and the output takes **the aspect ratio of the reference**. That is the setting for an edit, since the result has to fit where the original was. To reframe into a different shape, send a `width` and `height` pair instead. A request carries one or the other, never both.

### [Naming what changes and what holds](https://runware.ai/docs/models/google-nano-banana-2-1/guides/editing-images#naming-what-changes-and-what-holds)

Write an edit as two sentences. The first names **one change, with its before and its after**. The second is **a keep list** drawn from what is in the frame:

```text
Change the armchair's upholstery from light gray boucle to rust orange velvet. Keep the walnut frame, the legs, the shape of the cushions, the chair's position and angle, the floor, the wall, the shadow, and the lighting unchanged.
```

**Gray boucle**:

![A mid-century armchair with a curved walnut frame and light gray boucle upholstery, angled to the left on a pale oak floor against a white wall](https://runware.ai/docs/assets/source-armchair.Ct4hjJQK_ZqkMuf.jpg)

> **Prompt**: A furniture catalog photograph of a mid-century armchair with a curved walnut frame, tapered legs, and light gray boucle upholstery, angled three-quarters to the left on a pale oak floor against a warm white wall. A soft shadow falls to the right. Even daylight from a window on the left, photoreal, centered, no text.

**Rust velvet**:

![The same armchair at the same angle with rust orange velvet upholstery, the walnut frame, floor, and shadow unchanged](https://runware.ai/docs/assets/output-colorway.C-WEqnz8_Z10K8S1.jpg)

> **Prompt**: Change the armchair's upholstery from light gray boucle to rust orange velvet. Keep the walnut frame, the legs, the shape of the cushions, the chair's position and angle, the floor, the wall, the shadow, and the lighting unchanged.

The keep list is specific on purpose. "Keep everything else the same" names nothing, while "the walnut frame, the legs, the shape of the cushions" gives the model **parts to check against**. For a furniture store, every fabric in the range becomes a product image from one photographed chair.

### [Removing and adding](https://runware.ai/docs/models/google-nano-banana-2-1/guides/editing-images#removing-and-adding)

A removal needs **the object and what takes its place**. Name each thing to remove by what it is and where it sits, then say what the cleared area shows:

```text
Remove the yellow wet-floor sign near the pool steps and the crumpled striped towel on the nearest lounger. Fill the space with the same stone tiles and the lounger's clean white cushion. Keep the pool, the other loungers and their rolled towels, the balustrade, the skyline, and the lighting unchanged.
```

**Source**:

![A rooftop pool deck with a turquoise pool on the right, a row of white loungers on the left, a city skyline behind a glass balustrade, a yellow wet-floor sign by the pool steps, and a crumpled striped towel on the nearest lounger](https://runware.ai/docs/assets/source-pooldeck.wd8CXYoh_12F9cS.jpg)

> **Prompt**: A hotel listing photograph of a rooftop pool deck on a sunny morning. A rectangular pool with turquoise water runs along the right side, a row of four white sun loungers with rolled gray towels lines the left side, and a glass balustrade at the far end overlooks a city skyline. A yellow wet-floor sign stands on the deck near the pool steps in the foreground, and a crumpled striped towel is left on the nearest lounger. Pale stone tiles, clear blue sky, photoreal, wide shot, no people, no text.

**Cleaned**:

![The same pool deck with the wet-floor sign and the striped towel gone, clean stone tiles by the steps and a bare white cushion on the nearest lounger](https://runware.ai/docs/assets/output-removed.D708VL18_ZiCPt8.jpg)

> **Prompt**: Remove the yellow wet-floor sign near the pool steps and the crumpled striped towel on the nearest lounger. Fill the space with the same stone tiles and the lounger's clean white cushion. Keep the pool, the other loungers and their rolled towels, the balustrade, the skyline, and the lighting unchanged.

The fill sentence matters when the removed object **covered something specific**. Without it, the model decides what was behind the sign.

An addition needs a place and a reason to belong there: where the object sits and **how the scene's light meets it**.

```text
Add a matte black desk lamp with a slim arched arm on the left side of the desk, switched on, with its head angled toward the laptop. Let it cast a warm pool of light on the desk surface and a soft glow on the wall behind it. Keep the desk, the laptop, the pen cup, the fern, the chair, the wall color, and the camera position unchanged.
```

**Source**:

![A birch desk against a sage green wall in dim evening light with no lamp, holding a silver laptop with a plain lid, a notebook, a phone, a ceramic pen cup, and a small fern, with a black mesh chair behind it](https://runware.ai/docs/assets/source-desk.D5ub7TTP_1WaSAr.jpg)

> **Prompt**: A product lifestyle photograph of a home office desk in the early evening. A light birch desk against a sage green wall holds a closed plain silver laptop with no logo in the center, a ceramic pen cup on the right, and a small potted fern at the far right. A black mesh office chair is pushed in. There is no lamp anywhere in the room, and the only light is dim cool daylight from a window out of frame on the right. Photoreal, straight-on view, no logos, no people, no text.

**Lamp added**:

![The same desk with a matte black desk lamp with an arched arm switched on at the left, casting a warm pool of light on the desk and a soft glow on the green wall](https://runware.ai/docs/assets/output-added.B0350QAt_LE4p8.jpg)

> **Prompt**: Add a matte black desk lamp with a slim arched arm on the left side of the desk, switched on, with its head angled toward the laptop. Let it cast a warm pool of light on the desk surface and a soft glow on the wall behind it. Keep the desk, the laptop, the pen cup, the fern, the chair, the wall color, and the camera position unchanged.

The instruction describes the lamp together with **the light it throws**: the pool on the desk and the glow on the wall. An added object that changes nothing around it reads as pasted in.

### [Several changes in one instruction](https://runware.ai/docs/models/google-nano-banana-2-1/guides/editing-images#several-changes-in-one-instruction)

One request can carry several changes. **Number them**, give each its own sentence, and close with a single keep list:

```text
Make four changes. 1. Change the blazer from cream to emerald green, keeping its cut. 2. Replace the blue jeans with black tailored trousers. 3. Add a pair of slim gold-rimmed sunglasses. 4. Change the backdrop from light gray to a warm terracotta. Keep her face, her hair, her stride, the white T-shirt, the white sneakers, the framing, and the lighting unchanged.
```

**Source**:

![A woman with shoulder-length black hair walking toward the camera in a cream blazer, white T-shirt, blue jeans, and white sneakers against a light gray studio backdrop](https://runware.ai/docs/assets/source-lookbook.DhNvqso-_Z21RO8P.jpg)

> **Prompt**: A fashion lookbook photograph of a woman in her late twenties with shoulder-length black hair, walking toward the camera mid-stride against a plain light gray studio backdrop. She wears a cream blazer over a white T-shirt, straight blue jeans, and white leather sneakers. Soft even studio lighting with a faint floor shadow, full length, photoreal, no text.

**Restyled**:

![The same woman in the same stride wearing an emerald green blazer, black tailored trousers, and gold-rimmed sunglasses against a terracotta backdrop, with the white T-shirt and sneakers unchanged](https://runware.ai/docs/assets/output-restyle.3dgktFdz_2d4BNR.jpg)

> **Prompt**: Make four changes. 1. Change the blazer from cream to emerald green, keeping its cut. 2. Replace the blue jeans with black tailored trousers. 3. Add a pair of slim gold-rimmed sunglasses. 4. Change the backdrop from light gray to a warm terracotta. Keep her face, her hair, her stride, the white T-shirt, the white sneakers, the framing, and the lighting unchanged.

Four changes in one request cost **one pass over the image**. Sent as four requests, the same changes would redraw the whole frame four times. Fold in every change you already know, and keep chaining for the ones that depend on seeing a result.

### [Chaining edits](https://runware.ai/docs/models/google-nano-banana-2-1/guides/editing-images#chaining-edits)

Each edit returns an ordinary image, so one result can be the reference for the next request. Chaining fits work that is **decided one step at a time**, like staging an empty room for a listing:

**Original**:

![An empty living room with pale oak floorboards, white walls, and a large window on the left wall letting in daylight](https://runware.ai/docs/assets/source-room.K4pNv2zn_1avyGG.jpg)

> **Prompt**: A real estate listing photograph of an empty living room in a new apartment. Pale oak floorboards, plain white walls, a large window on the left wall with daylight coming in, a white ceiling with recessed lights switched off. Wide shot from the doorway at chest height, photoreal, no furniture, no people, no text.

**1 · Sofa**:

![The same room with an oatmeal linen three-seat sofa and two rust orange cushions against the back wall](https://runware.ai/docs/assets/output-chain-1.Bl0A8Ajh_2l0oIs.jpg)

> **Prompt**: Add a low three-seat sofa in oatmeal linen against the back wall, centered, facing the camera, with two rust orange cushions. Keep the floor, the walls, the window, the ceiling, the daylight, and the camera position unchanged.

**2 · Table and rug**:

![The same room and sofa with a round walnut coffee table and a cream wool rug in front of it](https://runware.ai/docs/assets/output-chain-2.CYEKeu3A_Zaapty.jpg)

> **Prompt**: Add a round walnut coffee table in front of the sofa and a large cream wool rug under both. Keep the sofa and its cushions, the floor, the walls, the window, the daylight, and the camera position unchanged.

**3 · Print and plant**:

![The same furnished room with a large framed abstract print above the sofa and a fiddle-leaf fig in a white pot in the right corner](https://runware.ai/docs/assets/output-chain-3.CMBPXEs3_Z27NqLL.jpg)

> **Prompt**: Hang one large framed abstract print in muted earth tones on the wall above the sofa, and add a tall fiddle-leaf fig in a white pot in the corner to the right of the sofa. Keep the sofa, the cushions, the coffee table, the rug, the floor, the window, the daylight, and the camera position unchanged.

**4 · Evening**:

![The same furnished room at dusk, with deep blue light outside the window and the recessed ceiling lights casting a warm glow](https://runware.ai/docs/assets/output-chain-4.CMORIHv5_VIEKC.jpg)

> **Prompt**: Change the time of day to early evening: deep blue dusk outside the window, the recessed ceiling lights switched on with a warm glow, and soft shadows under the furniture. Keep the sofa, the cushions, the coffee table, the rug, the print, the plant, the floor, the walls, and the camera position unchanged.

Step through the rounds, and go back to Original to compare. Every instruction **restates the full keep list**, including what the earlier rounds added. An edit only sees its reference image and its own prompt, so nothing carries over from the previous request.

When a chain grows past a few rounds, go back to the original and replay the approved changes as **one numbered instruction**.

### [Tips](https://runware.ai/docs/models/google-nano-banana-2-1/guides/editing-images#tips)

1. **Let the reference set the frame.** Send `resolution` on an edit, and the result keeps the aspect ratio of the source.
    
2. **Name the before and the after.** "From light gray boucle to rust orange velvet" tells the model which part of the image the change applies to.
    
3. **Write the keep list from the frame.** Name the objects that are in the image. A generic "keep everything else" gives the model nothing to hold.
    
4. **Say what fills a removal.** Describe the surface that the removed object was covering.
    
5. **Describe an added object with its light.** A lamp comes with a pool of light, and a vase comes with a contact shadow.
    
6. **Number several changes in one instruction.** One pass redraws the frame once.
    
7. **Restate the keep list in every round of a chain.** Each request starts from its reference and its own prompt.