AI Bedding Photography API — Color and Fabric Variants
A linen brand is launching one duvet cover set in eight colors, each with a plain and a piped-edge version. That is sixteen combinations, and the studio has styled and shot exactly one: the oatmeal set on a made bed. Styling a bedroom set sixteen times means steaming, ironing, and re-dressing the bed for every shot. Generating the other combinations from the one reference photo lets the product page, the retailer feed, and the launch email go out together while physical samples are still in transit.
Direct answer: a reference-guided image generation API takes one bedding photo as image input plus a prompt describing the target color, pattern, or edge detail, and returns a new image that keeps the bed layout, pillow arrangement, and camera angle consistent while changing the requested elements.
How Does an API Generate Color Variants From One Photo?
Reference-guided generation anchors the output to the composition of the source image, then applies the change described in the prompt. Reference-guided generation means the model receives an existing image as input alongside the text prompt, rather than starting from text alone. For bedding, that anchoring preserves the bed frame, pillow count, and fold structure of the real styled shot, where a text-only prompt would invent a generic bedroom that does not match your catalog photography.
Describe color in visual terms ("muted sage green, washed linen, soft matte weave") rather than an internal code like "Colorway 07", which the model cannot map to a hue.
Can the Generated Fabric Be Trusted as Accurate?
No, treat generated bedding images as a visual placeholder, not a color-matched swatch. Fabric is the hardest material for image models: weave texture, wrinkle depth, and the way light falls across folds can drift in generated output, and shoppers compare shades closely, so a listing that differs from the shipped item invites returns.
Two practical rules:
- Use generated images for the colorway grid, internal review, and pre-order pages, then swap in real photography once units exist.
- Compare each generated image with the physical fabric sample or approved color reference before it reaches a customer-facing page.
Which Model Fits Bedding Photography?
Nano Banana Pro's reference-guided mode holds the bed composition consistent across color and pattern changes, which matters when shoppers scroll through colorways side by side. GPT-image-2 suits instruction-based touch-ups on an image that is otherwise final, such as removing a stray crease or swapping the background wall color.
| Model | Mode | Resolution / price | Composition consistency | Best for |
|---|---|---|---|---|
| Nano Banana Pro | Reference-guided | 1K $0.030 / 2K $0.030 / 4K $0.042 | High | Full colorway sets from one styled bed photo |
| Nano Banana 2 | Reference-guided | 1K $0.020 / 4K $0.036 | Medium-high | Lower-cost drafts for internal color review |
| GPT-image-2 | Instruction-based edit | $0.014/image | N/A (edits existing photo) | Crease cleanup or wall swap on a near-final shot |
Nano Banana Pro at 2K costs the same $0.030 as 1K, so a retail-facing set gains resolution at no extra cost.
How Do I Generate a Color Variant via API?
Submit the base photo as image input with a prompt describing the target color and edge detail; the endpoint returns a job ID to poll for the finished image.
import requests, time
API_KEY = "YOUR_KEY"
BASE = "https://genrelay.ai/v1"
def generate_variant(reference_url, color, edge):
r = requests.post(
f"{BASE}/images/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "nano-banana-pro",
"prompt": f"same made bed layout and pillow arrangement, {color} "
f"washed linen duvet cover, {edge} edge, soft natural "
f"window light, bedroom product shot",
"image": reference_url,
"resolution": "2k",
},
)
return r.json()["id"]
job_id = generate_variant(
"https://cdn.example.com/duvet-oatmeal.jpg",
"muted sage green",
"plain",
)
Reference-guided generation is asynchronous, so poll the job until it completes:
def wait_for_result(job_id, timeout=90):
start = time.time()
while time.time() - start < timeout:
status = requests.get(
f"{BASE}/images/generations/{job_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
).json()
if status["status"] == "completed":
return status["output_url"]
if status["status"] == "failed":
raise RuntimeError(status.get("error"))
time.sleep(2)
raise TimeoutError(f"Job {job_id} did not finish in {timeout}s")
image_url = wait_for_result(job_id)
How Do I Batch a Full Color Range?
Loop over the color and edge list and submit each as its own job. The batch image generation guide covers the concurrency and retry pattern this scales to.
combos = [
("oatmeal", "plain"),
("muted sage green", "plain"),
("charcoal", "piped"),
("terracotta", "piped"),
]
jobs = [(c, e, generate_variant(reference_url, c, e)) for c, e in combos]
for color, edge, job in jobs:
print(f"{color} / {edge}: {wait_for_result(job)}")
What Does a Full Colorway Set Cost?
Sixteen combinations (8 colors × 2 edge styles) at 2K on Nano Banana Pro cost 16 × $0.030 = $0.48. A brand adding a close-up of the weave for each color (8 more images) pays 24 × $0.030 = $0.72 in total.
| Launch size | Images | Model | Cost |
|---|---|---|---|
| 8 colors × 2 edge styles | 16 | Nano Banana Pro, 2K | $0.48 |
| Plus weave close-up per color | 24 | Nano Banana Pro, 2K | $0.72 |
| Internal color review pass | 8 | Nano Banana 2, 1K | $0.16 |
Running the internal review on Nano Banana 2 first keeps early color decisions inexpensive, and approved colorways then move to Nano Banana Pro. Once stills are approved, the same photos can feed the bedding showcase video guide for texture-pan and light-shift clips.
FAQ
Can the API change the color without changing the bed layout?
Yes. Describe the target color and state that the bed layout and pillow arrangement stay the same; the reference image keeps the composition anchored.
Will the model reproduce a printed pattern or woven label?
Not reliably. Fine prints and small labels often blur or repeat incorrectly. Generate solid colors and composite real pattern swatches or label artwork afterward.
Can I use the output for a retailer listing?
That is a decision for your own brand and retailer guidelines. Many retailers require images to match the shipped item, so verify each colorway against the real fabric before publishing.
How long does a generation take?
Jobs are asynchronous. The polling loop above uses a 90-second timeout, which is a conservative ceiling rather than a typical time.
Can I generate matching clips from the same photos?
Yes. The bedding video guide shows how to animate each colorway into a short texture-pan clip.
See the Nano Banana Pro model page for parameter docs.