AI Drinkware Photography API — Color and Finish Variants

Oct 16, 2026·5 min read

A drinkware brand is releasing one insulated tumbler in eight body colors, each with a choice of straw lid or flip lid. That is sixteen combinations, and the studio has shot exactly one: the sage green with a straw lid. The product page, the marketplace listing, and the pre-order email all need the full lineup before the remaining samples clear customs. Generating the other combinations from the one reference photo lets the page launch on schedule while physical samples catch up.

Direct answer: a reference-guided image generation API takes one drinkware photo as image input plus a prompt describing the target body color, lid style, or surface finish, and returns a new image that keeps the bottle silhouette consistent while changing only the requested elements.

How Does an API Generate Color Variants From One Photo?

Reference-guided generation anchors the output to the geometry of the source image, then applies the change 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 drinkware, that anchoring keeps the body taper, handle shape, and base diameter of the real product, where a text-only prompt would invent a generic bottle that does not match the SKU.

Describe color in visual terms ("dusty navy, matte powder-coat finish, black straw lid") rather than an internal code like "Colorway 07", which the model cannot map to a hue.

Can the Generated Color Be Trusted as Accurate?

No, treat generated colors as a visual placeholder, not a color-matched swatch. Powder-coat texture, gloss level, and exact hue can drift in generated output, and shoppers compare colors closely, so a listing that shows a different shade than the shipped item invites returns.

Two practical rules:

  1. Use generated images for the lineup grid, internal review, and pre-order pages, then swap in real photography once samples exist.
  2. Compare each generated image with the physical sample or approved color reference before it reaches a customer-facing page.

Which Model Fits Drinkware Photography?

Nano Banana Pro's reference-guided mode holds the bottle geometry consistent across color and lid changes, which matters when shoppers view colors side by side. GPT-image-2 suits instruction-based touch-ups on an image that is otherwise final, such as a background swap or removing a stray reflection.

Model Mode Resolution / price Geometry consistency Best for
Nano Banana Pro Reference-guided 1K $0.030 / 2K $0.030 / 4K $0.042 High Full color-line sets from one base studio 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) Background swap or cleanup 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 lid; 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, lid):
    r = requests.post(
        f"{BASE}/images/generations",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={
            "model": "nano-banana-pro",
            "prompt": f"same insulated tumbler shape and proportions, {color} "
                      f"powder-coat body, matte finish, {lid} lid, "
                      f"studio product shot, light neutral background",
            "image": reference_url,
            "resolution": "2k",
        },
    )
    return r.json()["id"]

job_id = generate_variant(
    "https://cdn.example.com/tumbler-sample.jpg",
    "dusty navy",
    "black straw",
)

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 lid list and submit each as its own job. The batch image generation guide covers the concurrency and retry pattern this scales to.

combos = [
    ("sage green", "black straw"),
    ("dusty navy", "black straw"),
    ("cream", "flip"),
    ("coral", "flip"),
]

jobs = [(c, l, generate_variant(reference_url, c, l)) for c, l in combos]

for color, lid, job in jobs:
    print(f"{color} / {lid}: {wait_for_result(job)}")

What Does a Full Color Range Cost?

Sixteen combinations (8 colors × 2 lids) at 2K on Nano Banana Pro cost 16 × $0.030 = $0.48. A brand adding a 12-ounce and a 30-ounce size (32 images) pays 32 × $0.030 = $0.96.

Launch size Images Model Cost
8 colors × 2 lids 16 Nano Banana Pro, 2K $0.48
Two sizes, 8 colors × 2 lids 32 Nano Banana Pro, 2K $0.96
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 only the approved set moves to Nano Banana Pro. Once stills are approved, the same photos can feed the drinkware showcase video guide for lid-flip and condensation clips.

FAQ

Can the API change the color without changing the bottle shape?
Yes. Describe the target color and state that the shape and proportions stay the same; the reference image keeps the geometry anchored.

Will the model reproduce my logo and printed graphics?
Not reliably at small sizes. Request a plain surface and composite the real logo afterward.

Can I use the output for a marketplace listing?
That is a decision for your own brand and marketplace guidelines. Many marketplaces require images to match the shipped item, so verify each color against the real product 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.


See the Nano Banana Pro model page for parameter docs.

Related posts

Join our DiscordAI Drinkware Photography API — Color and Finish Variants — GenRelay