AI Automotive Photography API — Vehicle Color and Trim Variants

Sep 27, 2026·7 min read

A dealership's inventory system lists a sedan trim in six exterior colors, but the lot only has one unit on-site to photograph before it ships to a satellite location. The listing page needs all six color options live before the vehicle leaves, and reshooting the same trim later — after it's already sold — isn't an option once the physical car is gone. Generating the remaining color variants from the one on-site photo lets the full listing go live before the vehicle leaves the lot, rather than showing five color swatches next to a single real photo.

Direct answer: a reference-guided image generation API takes one vehicle photo as image input plus a prompt describing the target exterior color or trim finish, and outputs a new image that holds the body panel lines, wheel style, and badge placement consistent while changing only the paint or trim — no second vehicle or re-shoot required.

How Does an API Generate Vehicle Color Variants From One Photo?

Reference-guided generation anchors the output to the source photo's body shape, panel gaps, and wheel geometry, then applies the paint or trim change described in the prompt. This differs from text-to-image generation, which has no source vehicle to match and would produce a plausible-looking car rather than the exact trim on the lot — a real risk in automotive listings, where a shopper cross-checking wheel style or badge placement against the VIN sheet expects the image to match the actual unit.

Paint finish type changes how a color shift renders, so naming it precisely in the prompt matters: "pearl white metallic" scatters light differently than "matte gunmetal," and a trim prompt should name the target finish directly — "gloss black grille" versus "chrome grille" — rather than a vague "darker trim," which lets the model pick an arbitrary finish that may not match what's actually offered on that trim level.

Does the API Handle Both Exterior Paint and Trim Package Changes?

Yes, but each element responds differently to the same prompt structure. Exterior paint changes transfer cleanly across the body panels and hood since those surfaces are large, continuous, and evenly lit in most dealership lot photos. Trim package changes — wheel style, grille finish, badge color — need the specific finish named, since "sport wheels" alone is ambiguous but "five-spoke gloss black 19-inch wheels" produces a consistent result across every color variant in the same batch.

Interior shots are a separate operation from exterior paint swaps — generate the exterior color variant first, then run a second reference-guided pass on an interior photo if the listing also needs cabin color or upholstery options shown.

Which Model Fits Vehicle Listing Photography?

Nano Banana Pro's reference-guided mode holds panel lines, wheel geometry, and badge placement consistent across paint changes, which matters for dealership listings because a shifted body line or misaligned wheel reads as the wrong trim level to a shopper comparing the photo against the window sticker. GPT-image-2 fits smaller instruction-based touch-ups — background swap, reflection cleanup, or removing a dealer plate frame — 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 color and trim sets from one lot photo
Nano Banana 2 Reference-guided 1K $0.020 / 4K $0.036 Medium-high Lower-cost variant runs for internal inventory review
GPT-image-2 Instruction-based edit $0.014/image N/A (edits existing photo) Background swap or reflection cleanup on a near-final shot

For a listing-facing color launch, Nano Banana Pro's consistency at 2K resolution is worth the small premium over Nano Banana 2 — a shifted panel line or wrong wheel style reads as a trim mismatch to a shopper cross-checking against the VIN sheet, not a rendering quirk.

How Do I Generate a Vehicle Color Variant via API?

Submit the base lot photo as image input with a prompt describing the target paint or trim; 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, finish):
    r = requests.post(
        f"{BASE}/images/generations",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={
            "model": "nano-banana-pro",
            "prompt": f"same body panels, wheel style, and badge placement, "
                      f"{color} {finish} exterior paint, dealership lot shot, "
                      f"natural daylight, three-quarter front angle",
            "image": reference_url,
            "resolution": "2k",
        },
    )
    return r.json()["id"]

job_id = generate_variant(
    "https://cdn.example.com/sedan-silver.jpg",
    "deep blue",
    "pearl metallic",
)

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 Trim's Color Lineup?

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

colors = [
    ("deep blue", "pearl metallic"),
    ("crimson red", "gloss"),
    ("charcoal gray", "matte"),
    ("pearl white", "pearl metallic"),
    ("black", "gloss"),
]

jobs = []
for color, finish in colors:
    job_id = generate_variant(reference_url, color, finish)
    jobs.append((f"{color} {finish}", 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 Lineup Cost?

Five color variants at 2K resolution on Nano Banana Pro cost 5 × $0.030 = $0.15. A wider launch spanning three trim levels (base, sport, premium) in five colors each costs 15 × $0.030 = $0.45.

Launch size Images Model Cost
Single trim, 5 colors 5 Nano Banana Pro, 2K $0.15
Three trims, 5 colors each 15 Nano Banana Pro, 2K $0.45
Internal inventory review pass 15 Nano Banana 2, 1K $0.30

Running an internal inventory review pass on Nano Banana 2 before committing the final set to Nano Banana Pro keeps early-stage color decisions cheap without touching the listing-quality model until the lineup is finalized.

Internal Links

FAQ

Can the API change interior upholstery color as well as exterior paint?
Yes, but as a separate pass — submit an interior reference photo with a prompt describing the target upholstery color or material; exterior and interior changes don't combine in a single request.

Does it handle wheel style changes accurately, not just paint?
It applies wheel style changes when named specifically in the prompt — "five-spoke gloss black 19-inch wheels" produces a consistent result, while a vague "sport wheels" leaves the design ambiguous across a batch.

Can one API call generate both a color variant and a different background setting?
No — generate the color or trim variant first from the lot reference photo, then run a separate background pass if the listing also needs a showroom or outdoor lifestyle scene.

What resolution is needed for a dealership listing versus a print brochure?
2K covers most listing-page and zoom needs; 4K adds a $0.012 premium per image and is worth it mainly for print brochures or large showroom display graphics.

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


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

Related posts

Join our DiscordAI Automotive Photography API — Vehicle Color and Trim Variants — GenRelay