Nano Banana 2.1 — the same product, a new colourway
Image
Nano Banana 2.1
8 credits
by Henri Huotari · Oct 28, 2026
Change the headphone concept from pink to warm ivory while keeping the composition, geometry and studio lighting. The small wave mark changes to pink. Includes the before image and the actual result, generated through fal.
This file couldn't be loaded. The link may have expired.
This file couldn't be loaded. The link may have expired.
This file couldn't be loaded. The link may have expired.
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/image/edit' \
-H "Authorization: Bearer $IMMERSIVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image": [
"https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/inputs/a1ca8a60-3a3c-4649-a0ff-2506cf6f158a/input_image.png"
],
"model": "nano-banana-2-1",
"prompt": "Make one precisely scoped commercial retouch of the supplied product photograph. Change ONLY the warm pink finish of the headphones to a premium warm ivory/off-white colourway: the headband, ear cushions, visible ear cup and yoke all become warm ivory, retaining their distinct matte, leather-like and metal material properties and all their fine detail. Recolour the existing small wave symbol on the visible ear cup to saturated warm brand pink #FF3377, preserving its exact shape, size and placement. Keep the exact headphone geometry, angle, framing, circular pale plinth, dark charcoal room, diagonal white light beam, shadows and exposure. The environment remains unchanged; any pink floor bounce becomes a faint neutral bounce consistent with ivory headphones. No additional logo, no writing, no new objects. A realistic colourway variation of the same photograph, not a different product or a reimagined scene.",
"provider": "fal",
"resolution": "2K",
"aspect_ratio": "16:9",
"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/image/$JOB_ID" \
-H "Authorization: Bearer $IMMERSIVE_API_KEY"
# The finished response has the result at url.
const headers = { Authorization: `Bearer ${process.env.IMMERSIVE_API_KEY}` };
const response = await fetch("https://ai.im.inc/api/v1/image/edit", {
method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({
"image": [
"https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/inputs/a1ca8a60-3a3c-4649-a0ff-2506cf6f158a/input_image.png"
],
"model": "nano-banana-2-1",
"prompt": "Make one precisely scoped commercial retouch of the supplied product photograph. Change ONLY the warm pink finish of the headphones to a premium warm ivory/off-white colourway: the headband, ear cushions, visible ear cup and yoke all become warm ivory, retaining their distinct matte, leather-like and metal material properties and all their fine detail. Recolour the existing small wave symbol on the visible ear cup to saturated warm brand pink #FF3377, preserving its exact shape, size and placement. Keep the exact headphone geometry, angle, framing, circular pale plinth, dark charcoal room, diagonal white light beam, shadows and exposure. The environment remains unchanged; any pink floor bounce becomes a faint neutral bounce consistent with ivory headphones. No additional logo, no writing, no new objects. A realistic colourway variation of the same photograph, not a different product or a reimagined scene.",
"provider": "fal",
"resolution": "2K",
"aspect_ratio": "16:9",
"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/image/${job.id}`, { headers })).json();
} while (running.includes(String(result.status).toLowerCase()));
console.log(result.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/image/edit",
headers=headers,
json={
"image": [
"https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/inputs/a1ca8a60-3a3c-4649-a0ff-2506cf6f158a/input_image.png",
],
"model": "nano-banana-2-1",
"prompt": "Make one precisely scoped commercial retouch of the supplied product photograph. Change ONLY the warm pink finish of the headphones to a premium warm ivory/off-white colourway: the headband, ear cushions, visible ear cup and yoke all become warm ivory, retaining their distinct matte, leather-like and metal material properties and all their fine detail. Recolour the existing small wave symbol on the visible ear cup to saturated warm brand pink #FF3377, preserving its exact shape, size and placement. Keep the exact headphone geometry, angle, framing, circular pale plinth, dark charcoal room, diagonal white light beam, shadows and exposure. The environment remains unchanged; any pink floor bounce becomes a faint neutral bounce consistent with ivory headphones. No additional logo, no writing, no new objects. A realistic colourway variation of the same photograph, not a different product or a reimagined scene.",
"provider": "fal",
"resolution": "2K",
"aspect_ratio": "16:9",
"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/image/{job['id']}", headers=headers, timeout=60).json()
if str(result.get("status", "")).lower() not in running:
break
print(result["url"])
{
"id": "01a18185-b507-7da3-a88a-0a2ecaa89bae",
"url": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/outputs/a1ca8a60-3a3c-4649-a0ff-2506cf6f158a/result.png",
"output": {
"images": [
{
"url": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/outputs/a1ca8a60-3a3c-4649-a0ff-2506cf6f158a/result.png",
"width": 2752,
"height": 1536,
"file_name": "jNFp73PQ_WY31V7cwfBXY_CwGSHlMO.png",
"file_size": null,
"content_type": "image/png"
}
],
"description": ""
},
"status": "succeeded",
"image_id": "01a18185-b507-7da3-a88a-0a2ecaa89bae",
"estimated_cost": 8
}
Your browser blocked the clipboard. Select the text and copy it by hand.
How the job runs
- POST returns the job's id and status right away.
- Poll GET /api/v1/image/{id} every few seconds while the job is running.
- When status is succeeded, download url. Failed jobs are refunded automatically.
- Endpoint
- POST /api/v1/image/edit
- Model
- nano-banana-2-1
- Cost
- 8 credits · $0.08
- Output
- Image · PNG