Skip to content
Immersive AI

Nano Banana Generation

Image by Henri Huotari · Sep 18, 2025

Generate Images with Google Nano Banana

This file couldn't be loaded. The link may have expired.
Output a7Lr9I0qhR8xQWKkR7qDAg0l3SFXWmvprnxm0Ikq.png

Run it yourself

Set IMMERSIVE_API_KEY to an API key from your account. Create a free account to get one.

curl -X POST 'https://ai.im.inc/api/v1/images/generate' \
  -H "Authorization: Bearer $IMMERSIVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prompt": "Futuristic cinematic artwork with deep dark tones and glowing neon accents, abstract digital waves flowing across a smooth gradient background. Subtle light streaks, holographic textures, and a modern high-tech atmosphere. Minimalistic composition with a sense of depth and motion, featuring the text “IMMERSIVE HENRI” in bold, sleek, futuristic typography at the center.",
  "generator": "nano_banana",
  "output_format": "png"
}'

# Set JOB_ID to the response's "id", then poll every few seconds until the job has finished:
curl "https://ai.im.inc/api/v1/images/$JOB_ID" \
  -H "Authorization: Bearer $IMMERSIVE_API_KEY"

# The finished response has the result at output.generated_image_url.
const headers = { Authorization: `Bearer ${process.env.IMMERSIVE_API_KEY}` };

const response = await fetch("https://ai.im.inc/api/v1/images/generate", {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({
    "prompt": "Futuristic cinematic artwork with deep dark tones and glowing neon accents, abstract digital waves flowing across a smooth gradient background. Subtle light streaks, holographic textures, and a modern high-tech atmosphere. Minimalistic composition with a sense of depth and motion, featuring the text “IMMERSIVE HENRI” in bold, sleek, futuristic typography at the center.",
    "generator": "nano_banana",
    "output_format": "png"
  }),
});
const job = await response.json();

// Poll every few seconds while the job is still running.
const running = ["pending", "queued", "submitted", "starting", "processing", "running", "streaming", "in_queue", "in_progress"];
let result;
do {
  await new Promise((resolve) => setTimeout(resolve, 5000));
  result = await (await fetch(`https://ai.im.inc/api/v1/images/${job.id}`, { headers })).json();
} while (running.includes(String(result.status).toLowerCase()));

console.log(result.output.generated_image_url);
import os
import time

import requests

headers = {"Authorization": f"Bearer {os.environ['IMMERSIVE_API_KEY']}"}

job = requests.post(
    "https://ai.im.inc/api/v1/images/generate",
    headers=headers,
    json={
        "prompt": "Futuristic cinematic artwork with deep dark tones and glowing neon accents, abstract digital waves flowing across a smooth gradient background. Subtle light streaks, holographic textures, and a modern high-tech atmosphere. Minimalistic composition with a sense of depth and motion, featuring the text “IMMERSIVE HENRI” in bold, sleek, futuristic typography at the center.",
        "generator": "nano_banana",
        "output_format": "png",
    },
    timeout=300,
).json()

# Poll every few seconds while the job is still running.
running = {"pending", "queued", "submitted", "starting", "processing", "running", "streaming", "in_queue", "in_progress"}
while True:
    time.sleep(5)
    result = requests.get(f"https://ai.im.inc/api/v1/images/{job['id']}", headers=headers, timeout=60).json()
    if str(result.get("status", "")).lower() not in running:
        break

print(result["output"]["generated_image_url"])
{
    "id": "rf85p4xg4xrmc0cs9kd8yqrb20",
    "meta": "{\"input\": {\"prompt\": \"Futuristic cinematic artwork with deep dark tones and glowing neon accents, abstract digital waves flowing across a smooth gradient background. Subtle light streaks, holographic textures, and a modern high-tech atmosphere. Minimalistic composition with a sense of depth and motion, featuring the text “IMMERSIVE HENRI” in bold, sleek, futuristic typography at the center.\", \"image_input\": [], \"output_format\": \"png\"}}",
    "seed": -1,
    "error": null,
    "output": {
        "prompt": "Futuristic cinematic artwork with deep dark tones and glowing neon accents, abstract digital waves flowing across a smooth gradient background. Subtle light streaks, holographic textures, and a modern high-tech atmosphere. Minimalistic composition with a sense of depth and motion, featuring the text “IMMERSIVE HENRI” in bold, sleek, futuristic typography at the center.",
        "generated_image_url": "https://s3.huotari.ai/images/a7Lr9I0qhR8xQWKkR7qDAg0l3SFXWmvprnxm0Ikq.png",
        "all_generated_image_urls": []
    },
    "status": "succeeded",
    "num_outputs": 0,
    "nsfw_detected": false,
    "generator_used": "nano_banana"
}

Your browser blocked the clipboard. Select the text and copy it by hand.

How the job runs

  1. POST returns the job's id and status right away.
  2. Poll GET /api/v1/images/{id} every few seconds while the job is running.
  3. When status is succeeded, download output.generated_image_url. Failed jobs are refunded automatically.
Endpoint
POST /api/v1/images/generate
Output
Image · PNG