AI Candle and Home Fragrance Photography API — Vessel and Wax Variants
A home fragrance brand has one clean studio photo of its signature jar candle — matte black vessel, cream label, visible soy wax — and the holiday catalog calls for a frosted-glass version, a smaller travel-tin size, and a seasonal red-and-gold label, weeks before any of those vessels actually exist on a shelf. Booking a product photographer for every vessel finish, size, and label variant costs more than most indie fragrance brands spend on a full wax batch, and a limited seasonal run often sells out before a reshoot could even be scheduled. Generating the vessel and label variants from the one candle already photographed answers "what does the holiday shelf look like" without ordering a single test vessel.
Direct answer: a reference-guided image generation API takes the existing studio candle or diffuser photo as input plus a prompt describing the new vessel finish, label, or size, and returns a new image that holds the vessel's shape and proportions fixed while changing only the described detail — no reshoot per variant, no waiting on a glass or tin order.
How Does an API Generate Candle Vessel Variants From One Studio Photo?
Reference-guided generation anchors the output to the product's fixed geometry — a jar's shoulder and lip, a tin's lid profile, a diffuser bottle's neck — then renders the described vessel finish, label, or wax-tint change around it. This differs from plain text-to-image generation, which has no source vessel to match and produces a plausible-looking candle rather than the exact jar shipping to the customer, a real risk when a product page photo needs to match what actually arrives at someone's door.
As of October 2026, GenRelay exposes three image models through one endpoint for this workflow:
| Model | Best for | 1K price | 4K price | Editing support |
|---|---|---|---|---|
| Nano Banana Pro | Reference-guided vessel, label, and wax-tint swaps | $0.030 | $0.042 | Yes, strong consistency |
| Nano Banana 2 | Faster batch variants, slightly lower consistency | $0.020 | $0.036 | Yes |
| GPT-image-2 | Instruction-based edits (recolor a lid, swap a label) | $0.014/image | $0.014/image | Yes, instruction-driven |
Nano Banana Pro holds a jar's shoulder line and lid profile most reliably across a full vessel-and-label change, which matters when a frosted-glass variant needs to catch light differently than the original matte black jar while still reading as the same product. GPT-image-2 fits small, targeted edits — recoloring a lid or swapping a label graphic — better than a full vessel restyle.
How Do I Call the API to Generate a Vessel Variant?
Authenticate with a bearer token and send the source photo plus a prompt describing the vessel change. Here's a minimal working request using Nano Banana Pro:
import requests
API_KEY = "YOUR_KEY"
BASE = "https://genrelay.ai/v1"
with open("candle_studio.jpg", "rb") as f:
r = requests.post(
f"{BASE}/images/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"reference_image": f},
data={
"model": "nano-banana-pro",
"prompt": (
"Same candle jar, same shape and lid profile, "
"vessel recolored to frosted glass, label swapped to a "
"holiday design in red and gold foil, studio "
"lighting unchanged."
),
"resolution": "2k",
},
)
job = r.json()
image_url = job["data"][0]["url"]
For a full vessel lineup, batch the same reference image against a list of prompts rather than calling the endpoint one at a time:
import concurrent.futures
variants = [
"vessel recolored to frosted glass, holiday red-and-gold label",
"travel-tin proportions, same label design, smaller lid",
"limited-edition matte white vessel, seasonal foil label accent",
]
def generate(prompt):
with open("candle_studio.jpg", "rb") as f:
r = requests.post(
f"{BASE}/images/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"reference_image": f},
data={"model": "nano-banana-pro", "prompt": prompt, "resolution": "2k"},
)
return r.json()["data"][0]["url"]
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as pool:
results = list(pool.map(generate, variants))
Both calls are synchronous — image generation returns a URL directly in the response rather than requiring a polling loop, unlike video generation jobs.
What Does a Full Vessel Launch Cost?
Cost scales with resolution and image count, not with how different each variant looks from the studio original. A fragrance brand launching 3 vessel variants from one candle photo — 3 images — at Nano Banana Pro's 2K price of $0.030 per image costs $0.09 for the full set. Running the same 3 images at 4K for print catalog use costs $0.126 at $0.042 per image. A brand generating a seasonal vessel-and-label variant across 6 SKUs — 6 images — costs $0.18 at 2K.
| Scope | Images | Model/resolution | Total cost |
|---|---|---|---|
| Single candle, 3 vessel variants | 3 | Nano Banana Pro, 2K | $0.09 |
| Same set, print-quality catalog | 3 | Nano Banana Pro, 4K | $0.126 |
| 6 SKUs × seasonal vessel/label variant | 6 | Nano Banana Pro, 2K | $0.18 |
| 6 SKUs, instruction-only lid recolor | 6 | GPT-image-2 | $0.084 |
At this price point, generating a full seasonal vessel lineup costs less than the shipping label for a single sample unit, which is why most fragrance brands generate the vessel variants first and reserve an actual production run for the versions that sell well enough to justify a new glass or tin order.
How Do I Keep the Vessel Recognizable Across Variants?
Keep every prompt change scoped to the vessel finish, label, size, or background — never the jar's shoulder shape, lid profile, or tin silhouette — since those are exactly the elements reference-guided generation is designed to hold fixed. If a variant starts drifting (the jar gets taller, the lid shape changes), the fix is almost always a prompt that's too aggressive about "reimagining" the product rather than repackaging it; rephrase toward "same vessel, same shape and proportions, change only the finish, label, and surface color."
FAQ
Does the API support video, not just photos, for candle product showcases?
Yes — GenRelay's video models (Veo 3.1 Lite, Grok Imagine) can turn a still jar or diffuser photo into a short flame, pour, or mist clip. See the candle and home fragrance video API guide for pricing and code.
Can I edit a specific detail instead of restyling the whole vessel?
Yes — GPT-image-2 handles instruction-based edits like "recolor the lid" or "swap the label" at $0.014 per image, cheaper than a full Nano Banana Pro restyle when the change is small.
Will the generated vessel pass as the real product to a customer comparing it to the one they receive?
It should match the real shape and proportions closely enough for marketing use, but disclose AI-generated marketing images per your local advertising rules — this is a legal, not technical, requirement.
What image formats does the API accept as a reference?
JPEG and PNG, up to 10MB. Larger source files should be downsized before upload; resolution of the output is controlled by the resolution parameter, not the input file size.
Is there a rate limit on reference-guided generation calls?
Yes, scoped per API key — check response headers for your current limit, and use a thread pool with a small max_workers count (3–5) for batch jobs rather than firing all requests simultaneously.
Explore the Nano Banana Pro model page for full parameter docs, or read the visual consistency guide for more on reference-guided generation across a product line.