AI Jewelry Photography API — Product Shots for Rings and Watches
A jewelry brand relaunching 40 rings in three new metal finishes needs a clean product photo for each variant on its storefront, but booking a macro photographer for 120 individual shots — each requiring careful lighting to avoid glare off polished metal and stones — turns a catalog update into a multi-week shoot. Generating each variant from one reference photo of the base design removes the reshoot entirely.
Direct answer: a reference-guided image generation API can take one photo of a jewelry piece and output consistent product shots across metal finishes, backgrounds, and framing by passing the source image alongside a style prompt, without re-shooting each variant.
How Does an API Generate Jewelry Product Photos From One Reference?
Reference-guided generation takes an existing product photo as image input plus a text prompt describing the target change, then outputs a new image that keeps the piece's shape and stone placement consistent while altering the requested attributes — metal tone, background, or angle. This differs from text-to-image generation, which has no source object to anchor geometry and would produce a plausible-looking ring rather than the exact design being cataloged.
Glare and reflection control is a prompt-level detail, not a separate feature: describing "soft diffused studio lighting, no harsh reflections" in the prompt steers the model away from the blown-out highlights that make macro jewelry shots hard to get right optically.
Which Model Fits Jewelry Product Photography?
Nano Banana Pro's reference-guided mode holds a piece's geometry and stone placement consistent across background and lighting changes, which matters more for jewelry than for most product categories because small shape drift is immediately visible on a symmetric object like a ring or pendant. GPT-image-2 fits smaller instruction-based touch-ups — cropping, background swap, or color correction — on a photo that's otherwise already final.
| Model | Mode | Resolution / price | Shape consistency | Best for |
|---|---|---|---|---|
| Nano Banana Pro | Reference-guided | 1K $0.030 / 2K $0.030 / 4K $0.042 | High | Metal-finish and background variants from one base photo |
| Nano Banana 2 | Reference-guided | 1K $0.020 / 4K $0.036 | Medium-high | Lower-cost variant runs where near-identical consistency is enough |
| GPT-image-2 | Instruction-based edit | $0.014/image | N/A (edits existing photo) | Background swap, crop, or color correction on a near-final shot |
For a full catalog relaunch across metal finishes, Nano Banana Pro's consistency at 2K resolution is worth the small premium over Nano Banana 2 — a slightly warped band or shifted stone reads as a design error to a customer, not a rendering quirk.
How Do I Generate a Jewelry Product Shot via API?
Submit the base product photo as image input with a prompt describing the metal finish and lighting; the endpoint returns a job ID to poll for the finished image.
import requests
import time
API_KEY = "YOUR_GENRELAY_KEY"
BASE_URL = "https://genrelay.ai/v1"
def submit_job(image_url, prompt, model="nano-banana-pro", resolution="2k"):
r = requests.post(
f"{BASE_URL}/images/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": model,
"mode": "reference-guided",
"image_url": image_url,
"prompt": prompt,
"resolution": resolution,
},
timeout=30,
)
return r.json()["id"]
def poll_job(job_id, interval=3, timeout=60):
elapsed = 0
while elapsed < timeout:
r = requests.get(
f"{BASE_URL}/images/generations/{job_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
)
data = r.json()
if data["status"] in ("completed", "failed"):
return data
time.sleep(interval)
elapsed += interval
raise TimeoutError(f"job {job_id} did not finish in {timeout}s")
job_id = submit_job(
"https://cdn.example.com/rings/band-01-yellow-gold.jpg",
"Same ring design in polished rose gold finish, soft diffused studio lighting, "
"no harsh reflections, white seamless background, macro product shot",
)
result = poll_job(job_id)
print(result.get("output_url"))
How Do I Generate an Entire Finish Set Across a Catalog?
Loop each base design against the metal finishes it ships in, submitting with bounded concurrency so a 40-design catalog doesn't queue sequentially.
from concurrent.futures import ThreadPoolExecutor
BASE_DESIGNS = [
"band-01-yellow-gold", "band-02-yellow-gold", "band-03-yellow-gold",
]
FINISHES = ["rose gold", "white gold", "polished platinum"]
def build_prompt(finish):
return (
f"Same ring design in {finish} finish, soft diffused studio lighting, "
"no harsh reflections, white seamless background, macro product shot"
)
def generate_variant(args):
design, finish = args
image_url = f"https://cdn.example.com/rings/{design}.jpg"
job_id = submit_job(image_url, build_prompt(finish))
return design, finish, poll_job(job_id)
jobs = [(design, finish) for design in BASE_DESIGNS for finish in FINISHES]
with ThreadPoolExecutor(max_workers=4) as pool:
results = list(pool.map(generate_variant, jobs))
for design, finish, r in results:
print(f"{design} [{finish}]: {r.get('output_url')}")
See the batch image generation guide for retry and concurrency patterns at larger catalog sizes.
How Do I Keep Backgrounds Consistent Across the Whole Catalog?
Reusing the same background and lighting phrasing across every prompt in a batch is what keeps a storefront grid looking shot in one session rather than assembled from different sources — the model has no memory between calls, so consistency comes entirely from the prompt text staying fixed while only the varying attribute (finish, angle) changes. See the visual consistency guide for prompt-structuring patterns that extend beyond jewelry to any repeated-object catalog.
What Does a Full Catalog Relaunch Cost?
As of September 2026, GenRelay per-image pricing: Nano Banana Pro $0.030 at 1K/2K resolution, Nano Banana 2 $0.020 at 1K, GPT-image-2 $0.014.
A 40-design catalog across 3 finishes at 2K via Nano Banana Pro is 40 × 3 × $0.030 = $3.60. Adding a lower-cost first pass with Nano Banana 2 for internal review before the final Nano Banana Pro render costs an extra 120 × $0.020 = $2.40, for a combined workflow total of $3.60 + $2.40 = $6.00.
| Approach | Composition | Cost |
|---|---|---|
| Nano Banana Pro only (2K) | 40 designs × 3 finishes | $3.60 |
| Nano Banana 2 review pass + Pro final | 120 draft + 120 final | $6.00 |
| GPT-image-2 touch-ups only | 120 images | $1.68 |
At $3.60 for a 120-shot finish set, generating the full relaunch catalog costs less than a single macro photography session for one ring, and every variant ships from the same lighting setup by construction rather than by matching separate shoots.
Internal Links
- Nano Banana Pro on GenRelay
- E-commerce product image generation API
- How to maintain visual consistency in AI-generated images
FAQ
Can the API generate a jewelry design that doesn't exist yet from a text description alone?
Text-to-image can produce a plausible-looking piece, but for cataloging an actual product, reference-guided generation from a real photo is what keeps geometry and stone placement accurate to what ships.
Does it handle gemstone reflections and facets accurately?
It approximates facet reflections based on the reference photo and lighting prompt; for extreme close-up facet detail beyond typical e-commerce thumbnail sizes, a macro photograph remains more reliable.
Can one API call generate multiple angles of the same piece?
No — each angle requires its own reference photo as input. The model varies the requested attribute (finish, background) around a given angle rather than synthesizing new viewpoints from a single photo.
What resolution is needed for a zoomable product page?
2K is sufficient for most storefront zoom interactions; 4K adds a $0.012 premium per image and is worth it only for print catalogs or very aggressive pinch-zoom UX.
Is there a free tier to test consistency before running a full catalog?
Yes. GenRelay includes free credits on signup, enough to generate a handful of finish variants from one design before committing to a full relaunch batch.
As of September 2026. Pricing subject to change — verify current rates at genrelay.ai.