AI Toy Product Photography API — Colorway Variants at Scale

Sep 24, 2026·6 min read

A toy brand launching a plush character in six colorways has one studio photo of the sample unit, but the storefront and retail deck both need a clean product shot for every colorway before the line ships. Re-shooting six versions of the same plush — matching the same angle, the same soft-box lighting, the same slight fabric sheen — usually means waiting on a second sample run from the factory before a single new photo can be taken. Generating each colorway from the one reference photo removes that dependency entirely: the listing images can exist before the second-run samples do.

Direct answer: a reference-guided image generation API takes one toy product photo as image input plus a prompt describing the target color or pattern change, and outputs a new image that holds the toy's shape, proportions, and material texture consistent while altering only the requested attribute — no second sample shoot required.

How Does an API Generate Toy Colorway Variants From One Photo?

Reference-guided generation anchors the output to the shape, stitching lines, and surface texture of the source image, then applies the color or pattern change described in the prompt. This differs from text-to-image generation, which has no source object to match and would produce a plausible-looking toy rather than the exact product shipping to shelves — a real risk for a category where a slightly different ear shape or eye placement reads as a different SKU to a returning customer.

Fabric and plastic behave differently under a color swap, so naming the material in the prompt matters: "matte plastic shell" holds specular highlights differently than "brushed plush fabric," and leaving the material unstated lets the model default to whichever finish the reference photo already shows, which is wrong for a hard-shell toy variant generated from a plush reference or vice versa.

Which Model Fits Toy Product Photography?

Nano Banana Pro's reference-guided mode holds stitching detail, proportions, and safety-label placement consistent across colorway changes, which matters for toys because a shifted seam or resized limb reads as a manufacturing defect rather than a rendering artifact on a product category parents already scrutinize closely. GPT-image-2 fits smaller instruction-based touch-ups — background swap, packaging box crop, or a shadow cleanup — 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 Full colorway sets from one base studio photo
Nano Banana 2 Reference-guided 1K $0.020 / 4K $0.036 Medium-high Lower-cost variant runs for internal buyer review
GPT-image-2 Instruction-based edit $0.014/image N/A (edits existing photo) Packaging crop or background swap on a near-final shot

For a retail-facing colorway launch, Nano Banana Pro's consistency at 2K resolution is worth the small premium over Nano Banana 2 — a warped limb or mismatched pattern reads as a defect to a parent comparing colorways on a product page, not a rendering quirk.

How Do I Generate a Toy Colorway Variant via API?

Submit the base product photo as image input with a prompt describing the target color and material finish; 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, material):
    r = requests.post(
        f"{BASE}/images/generations",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={
            "model": "nano-banana-pro",
            "prompt": f"same shape, proportions, and stitching, "
                      f"{color} {material}, studio product shot, "
                      f"45-degree angle, white background",
            "image": reference_url,
            "resolution": "2k",
        },
    )
    return r.json()["id"]

job_id = generate_variant(
    "https://cdn.example.com/plush-sample.jpg",
    "mint green",
    "brushed plush fabric",
)

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 Toy Line Launch?

Loop over the colorway 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.

colorways = [
    ("mint green", "brushed plush fabric"),
    ("coral pink", "brushed plush fabric"),
    ("sunshine yellow", "brushed plush fabric"),
    ("sky blue", "brushed plush fabric"),
]

jobs = []
for color, material in colorways:
    job_id = generate_variant(reference_url, color, material)
    jobs.append((color, job_id))

results = [(color, wait_for_result(j)) for color, j in jobs]
for color, url in results:
    print(f"{color}: {url}")

What Does a Full Launch Cost?

Six colorways at 2K resolution on Nano Banana Pro cost 6 × $0.030 = $0.18. A wider twelve-SKU line spanning two toy molds in six colorways each costs 12 × $0.030 = $0.36.

Launch size Images Model Cost
Single mold, 6 colorways 6 Nano Banana Pro, 2K $0.18
Two molds, 6 colorways each 12 Nano Banana Pro, 2K $0.36
Internal buyer review pass 12 Nano Banana 2, 1K $0.24

Running an internal buyer review pass on Nano Banana 2 before committing the final set to Nano Banana Pro keeps early-stage colorway decisions cheap without touching the launch-quality model until the line is finalized.

Internal Links

FAQ

Can the API change a toy's pattern (stripes, polka dots) without changing its base color?
Yes — describe the pattern separately from the base color in the prompt, and the two attributes can be varied independently across a single reference photo.

Does it preserve small details like embroidered eyes or printed labels?
It approximates fine embroidery and printed labels based on the reference photo's resolution; for label text that must stay pixel-exact (safety certifications, size tags), plan on a manual overlay pass rather than relying on the model to reproduce small text precisely.

Can one API call generate a packaging shot and a loose-toy shot together?
No — each shot type needs its own reference photo and prompt. Generate the packaged version and the loose-toy version as separate jobs from separate reference images.

What resolution is needed for a retail listing versus a print catalog?
2K covers most e-commerce listing and zoom needs; 4K adds a $0.012 premium per image and is worth it mainly for print catalogs or large in-store display graphics.

Is there a free tier to test colorway consistency before a full line launch?
Yes. GenRelay includes free credits on signup, enough to generate a handful of colorway variants from one reference photo before committing to a full line batch.


As of September 2026. Pricing subject to change — verify current rates at genrelay.ai.

Related posts

Join our DiscordAI Toy Product Photography API — Colorway Variants at Scale — GenRelay