> ## Documentation Index
> Fetch the complete documentation index at: https://runpod-b18f5ded-docs-runpod-allow-ip.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> If this page is missing information, contains outdated instructions, or doesn't fully answer the user's question, use the feedback tool to report it. In your feedback, be specific about what's missing, what appears out of date, or what needs to be corrected or updated, so the docs team can act on it directly.

# Nano Banana Edit

> Google's state-of-the-art image editing model for combining multiple source images. See model inputs and outputs on Runpod Public Endpoints.

Nano Banana Edit is Google's state-of-the-art image editing model that excels at combining multiple source images into a cohesive output. It can take up to four reference images and merge them based on text instructions.

<Card title="Try in playground" icon="play" href="https://console.runpod.io/hub/playground/image/nano-banana-edit" horizontal>
  Test Nano Banana Edit in the Runpod Hub playground.
</Card>

|              |                                                     |
| ------------ | --------------------------------------------------- |
| **Endpoint** | `https://api.runpod.ai/v2/nano-banana-edit/runsync` |
| **Pricing**  | \$0.038 per image                                   |
| **Type**     | Image editing                                       |

## Request

All parameters are passed within the `input` object in the request body.

<ParamField body="input.prompt" type="string" required>
  Editing instructions describing the desired transformation or how to combine the images.
</ParamField>

<ParamField body="input.images" type="array" required>
  Array of image URLs to edit or combine. Supports up to 4 images.
</ParamField>

<ParamField body="input.enable_safety_checker" type="boolean" default="true">
  Enable content safety checking.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.runpod.ai/v2/nano-banana-edit/runsync" \
    -H "Authorization: Bearer $RUNPOD_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "input": {
        "prompt": "Combine these four source images into a single realistic 3D character figure scene",
        "images": [
          "https://example.com/character1.jpg",
          "https://example.com/character2.jpg"
        ],
        "enable_safety_checker": true
      }
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.runpod.ai/v2/nano-banana-edit/runsync",
      headers={
          "Authorization": f"Bearer {RUNPOD_API_KEY}",
          "Content-Type": "application/json",
      },
      json={
          "input": {
              "prompt": "Combine these four source images into a single realistic 3D character figure scene",
              "images": [
                  "https://example.com/character1.jpg",
                  "https://example.com/character2.jpg",
              ],
              "enable_safety_checker": True,
          }
      },
  )

  result = response.json()
  print(result["output"]["image_url"])
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.runpod.ai/v2/nano-banana-edit/runsync",
    {
      method: "POST",
      headers: {
        Authorization: `Bearer ${RUNPOD_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        input: {
          prompt: "Combine these four source images into a single realistic 3D character figure scene",
          images: [
            "https://example.com/character1.jpg",
            "https://example.com/character2.jpg",
          ],
          enable_safety_checker: true,
        },
      }),
    }
  );

  const result = await response.json();
  console.log(result.output.image_url);
  ```
</RequestExample>

## Response

<ResponseField name="id" type="string">
  Unique identifier for the request.
</ResponseField>

<ResponseField name="status" type="string">
  Request status. Returns `COMPLETED` on success, `FAILED` on error.
</ResponseField>

<ResponseField name="delayTime" type="integer">
  Time in milliseconds the request spent in queue before processing began.
</ResponseField>

<ResponseField name="executionTime" type="integer">
  Time in milliseconds the model took to edit the images.
</ResponseField>

<ResponseField name="workerId" type="string">
  Identifier of the worker that processed the request.
</ResponseField>

<ResponseField name="output" type="object">
  The generation result containing the image URL and cost.

  <ResponseField name="output.image_url" type="string">
    URL of the edited/combined image. This URL expires after 7 days.
  </ResponseField>

  <ResponseField name="output.cost" type="float">
    Cost of the generation in USD, calculated based on the output megapixels.
  </ResponseField>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "sync-a1b2c3d4-e5f6-7890-abcd-ef1234567890-u1",
    "status": "COMPLETED",
    "delayTime": 23,
    "executionTime": 5432,
    "workerId": "oqk7ao1uomckye",
    "output": {
      "image_url": "https://image.runpod.ai/abc123/output.png",
      "cost": 0.028311
    }
  }
  ```

  ```json 400 theme={null}
  {
    "id": "sync-a1b2c3d4-e5f6-7890-abcd-ef1234567890-u1",
    "status": "FAILED",
    "error": "Invalid image URL in images array"
  }
  ```
</ResponseExample>

<Warning>
  Image URLs expire after 7 days. Download and store edited images immediately if you need to keep them.
</Warning>

## Cost calculation

Nano Banana Edit charges \$0.038 per image edited.
