Qwen Image 3 — a study in glass and light
Image
10 credits
by Henri Huotari · Oct 28, 2026
A contemporary still life using the Immersive palette: translucent pink glass, charcoal blocks, ivory surfaces and refracted light. Demonstrates material rendering and a tightly specified composition from text alone. The returned original is 2048 × 1536.
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/generate' \
-H "Authorization: Bearer $IMMERSIVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "One exceptional contemporary still-life photograph for a design-led creative technology brand whose signature colour is warm pink #FF3377. A single thick-walled translucent pink glass vessel with a sculptural wavy silhouette stands on a dark charcoal block. A precise shaft of warm white sunlight passes through it and creates an intricate pink caustic pool across an ivory tabletop. A second low charcoal slab partly enters the lower-left corner; no other props. Near-black spacious backdrop with subtle tangible architectural texture. The hero vessel sits just right of centre, the left side offers generous quiet space. The fascination comes from real refraction, glass thickness, a few tiny believable imperfections, material detail and crisply composed light. Restrained gallery-quality product photography, sophisticated contemporary composition, medium-format camera, realistic physics. No words, no labels, no logos, no abstract glowing blobs, no neon, no watermarks, no collage.",
"generator": "qwen_image_3",
"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/generate", {
method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({
"prompt": "One exceptional contemporary still-life photograph for a design-led creative technology brand whose signature colour is warm pink #FF3377. A single thick-walled translucent pink glass vessel with a sculptural wavy silhouette stands on a dark charcoal block. A precise shaft of warm white sunlight passes through it and creates an intricate pink caustic pool across an ivory tabletop. A second low charcoal slab partly enters the lower-left corner; no other props. Near-black spacious backdrop with subtle tangible architectural texture. The hero vessel sits just right of centre, the left side offers generous quiet space. The fascination comes from real refraction, glass thickness, a few tiny believable imperfections, material detail and crisply composed light. Restrained gallery-quality product photography, sophisticated contemporary composition, medium-format camera, realistic physics. No words, no labels, no logos, no abstract glowing blobs, no neon, no watermarks, no collage.",
"generator": "qwen_image_3",
"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/generate",
headers=headers,
json={
"prompt": "One exceptional contemporary still-life photograph for a design-led creative technology brand whose signature colour is warm pink #FF3377. A single thick-walled translucent pink glass vessel with a sculptural wavy silhouette stands on a dark charcoal block. A precise shaft of warm white sunlight passes through it and creates an intricate pink caustic pool across an ivory tabletop. A second low charcoal slab partly enters the lower-left corner; no other props. Near-black spacious backdrop with subtle tangible architectural texture. The hero vessel sits just right of centre, the left side offers generous quiet space. The fascination comes from real refraction, glass thickness, a few tiny believable imperfections, material detail and crisply composed light. Restrained gallery-quality product photography, sophisticated contemporary composition, medium-format camera, realistic physics. No words, no labels, no logos, no abstract glowing blobs, no neon, no watermarks, no collage.",
"generator": "qwen_image_3",
"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": "01a18196-28f3-7591-8082-113bd5c93e58",
"url": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/outputs/ec8c6fe8-6a68-4407-9c85-0634c7039e8b/result.png",
"seed": "1944137043",
"output": {
"seed": 1944137043,
"images": [
{
"url": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/outputs/ec8c6fe8-6a68-4407-9c85-0634c7039e8b/result.png",
"file_name": "YjoTVsankASgkJED3JY78_FxSQChWH.png",
"file_size": null,
"content_type": "image/png"
}
]
},
"status": "succeeded",
"image_id": "01a18196-28f3-7591-8082-113bd5c93e58",
"estimated_cost": 10
}
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/generate
- Cost
- 10 credits · $0.10
- Output
- Image · PNG