AI Furniture Photography API — Fabric and Finish Variants
A furniture brand has one studio photo of a sofa upholstered in oatmeal linen, but the catalog page needs the same sofa in five more fabric options before the collection launches — and the upholstery mill won't ship swatched samples of the remaining fabrics for another three weeks. Re-shooting five more sofas once the samples finally arrive pushes the launch date back by the length of the shoot schedule, and a shopper comparing fabric options from a mix of real photos and flat swatch chips is less likely to commit to a color before checkout. Generating each fabric variant from the one reference photo lets the full catalog page go live on day one, with real product photos standing in for upholstery that hasn't been cut yet.
Direct answer: a reference-guided image generation API takes one furniture photo as image input plus a prompt describing the target fabric, upholstery color, or wood finish, and outputs a new image that holds the piece's silhouette, leg style, and cushion structure consistent while changing only the surface material — no second sample or re-shoot required.
How Does an API Generate Furniture Finish Variants From One Photo?
Reference-guided generation anchors the output to the source photo's frame shape, cushion seams, and leg proportions, then applies the material change described in the prompt. This differs from text-to-image generation, which has no source piece to match and would produce a plausible-looking sofa rather than the exact SKU shipping to customers — a real risk in furniture, where a slightly different arm curve or leg height reads as a different product to a shopper measuring it against their room.
Material type changes how a finish shift renders, so naming it precisely in the prompt matters: "boucle upholstery" holds texture and light scatter differently than "smooth top-grain leather," and a wood finish prompt should name the target wood tone directly — "walnut" versus "white oak" — rather than a vague "darker wood," which lets the model pick an arbitrary tone that may not match the mill's actual finish options.
Does the API Handle Both Upholstery and Wood Finish Changes?
Yes, but each material type responds differently to the same prompt structure. Upholstery changes (fabric type, color, weave) transfer cleanly onto cushions and seat backs since those surfaces are large and evenly lit in most studio photos. Wood finish changes on legs, frames, or tabletops need the material named specifically — "walnut" or "white oak" rather than "wood" — since grain direction and stain depth vary enough between finishes that an unspecified prompt produces an inconsistent result across a batch of variants.
Room-styled scene changes (placing the same piece against a different wall color or in a different room type) are a separate operation from a material swap — generate the fabric or finish variant first, then run a second pass for background staging if the catalog also needs lifestyle scenes.
Which Model Fits Furniture Product Photography?
Nano Banana Pro's reference-guided mode holds frame geometry, cushion seams, and tufting pattern consistent across material changes, which matters for furniture because a warped armrest or misaligned seam reads as a manufacturing defect on a product category where customers zoom in on stitching and joinery before buying. GPT-image-2 fits smaller instruction-based touch-ups — background swap, shadow adjustment, or removing a stray reflection — on a photo that's otherwise already final.
| Model | Mode | Resolution / price | Structural consistency | Best for |
|---|---|---|---|---|
| Nano Banana Pro | Reference-guided | 1K $0.030 / 2K $0.030 / 4K $0.042 | High | Full fabric or finish sets from one reference photo |
| Nano Banana 2 | Reference-guided | 1K $0.020 / 4K $0.036 | Medium-high | Lower-cost variant runs for internal merchandising review |
| GPT-image-2 | Instruction-based edit | $0.014/image | N/A (edits existing photo) | Background swap or shadow cleanup on a near-final shot |
For a catalog-facing fabric launch, Nano Banana Pro's consistency at 2K resolution is worth the small premium over Nano Banana 2 — a shifted seam or distorted leg reads as a defect to a shopper comparing fabric options side by side, not a rendering quirk.
How Do I Generate a Furniture Finish Variant via API?
Submit the base product photo as image input with a prompt describing the target material; 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, material, color):
r = requests.post(
f"{BASE}/images/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "nano-banana-pro",
"prompt": f"same frame, cushion seams, and leg proportions, "
f"{color} {material} upholstery, studio product shot, "
f"soft directional lighting, white background",
"image": reference_url,
"resolution": "2k",
},
)
return r.json()["id"]
job_id = generate_variant(
"https://cdn.example.com/sofa-oatmeal-linen.jpg",
"boucle",
"sage green",
)
Poll the job until it completes, since reference-guided generation is asynchronous:
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 Fabric Line?
Loop over the fabric list and submit each as its own job, holding concurrency low enough to stay under the account's rate limit — see the batch image generation guide for the concurrency and retry pattern this scales to.
fabrics = [
("boucle", "sage green"),
("boucle", "charcoal"),
("performance velvet", "terracotta"),
("performance velvet", "navy"),
("linen blend", "oatmeal"),
]
jobs = []
for material, color in fabrics:
job_id = generate_variant(reference_url, material, color)
jobs.append((f"{color} {material}", job_id))
results = [(label, wait_for_result(j)) for label, j in jobs]
for label, url in results:
print(f"{label}: {url}")
What Does a Full Launch Cost?
Five fabric variants at 2K resolution on Nano Banana Pro cost 5 × $0.030 = $0.15. A wider launch spanning three pieces (sofa, armchair, ottoman) in five fabrics each costs 15 × $0.030 = $0.45.
| Launch size | Images | Model | Cost |
|---|---|---|---|
| Single piece, 5 fabrics | 5 | Nano Banana Pro, 2K | $0.15 |
| Three pieces, 5 fabrics each | 15 | Nano Banana Pro, 2K | $0.45 |
| Internal merchandising review pass | 15 | Nano Banana 2, 1K | $0.30 |
Running an internal merchandising review pass on Nano Banana 2 before committing the final set to Nano Banana Pro keeps early-stage fabric decisions cheap without touching the launch-quality model until the collection is finalized.
Internal Links
- Nano Banana Pro on GenRelay
- AI video generation API for furniture and home decor
- How to maintain visual consistency in AI-generated images via API
FAQ
Can the API change fabric texture, not just color — velvet to linen, for example?
Yes — name both the target material and color in the prompt; the two attributes vary independently across a single reference photo.
Does it handle wood finish changes on legs and frames accurately?
It approximates wood tone and grain based on the finish named in the prompt — naming a specific finish like "walnut" or "white oak" produces more consistent results across a batch than a vague "darker wood."
Can one API call generate both a fabric variant and a new room background?
No — generate the fabric or finish variant first from the product reference, then run a separate background-staging pass if the catalog also needs the piece placed in different room scenes.
What resolution is needed for a catalog listing versus a print lookbook?
2K covers most e-commerce listing and zoom needs; 4K adds a $0.012 premium per image and is worth it mainly for print lookbooks or large in-store display graphics.
Is there a free tier to test fabric consistency before a full collection launch?
Yes. GenRelay includes free credits on signup, enough to generate a handful of fabric variants from one reference photo before committing to a full collection batch.
As of September 2026. Pricing subject to change — verify current rates at genrelay.ai.