AI Hospitality Photography API — Room and Amenity Variants

Sep 30, 2026·6 min read

A boutique hotel group refreshing its listing photos before peak season has one professional shoot of each room type from two years ago — daylight, empty of seasonal styling, shot before a lobby renovation — and the booking team wants a warm-lit evening version, a version staged for a winter promotion, and a version showing the renovated lobby furniture, all before the next listing sync. Rebooking a photographer for every room type across every seasonal variant costs more than most independent properties budget for photo refreshes between full renovations, and the shoot backlog means the listing runs stale photos through the exact weeks booking intent peaks.

Direct answer: a reference-guided image generation API takes one existing room or amenity photo as image input plus a prompt describing the target lighting, season, or furniture change, and returns a new image that holds the room's layout, windows, and fixed architecture consistent while altering only the requested attribute — no second shoot required.

How Does an API Generate Property Photo Variants From One Shoot?

Reference-guided generation anchors the output to the room's fixed architecture — window placement, ceiling height, wall layout, built-in fixtures — then applies the lighting, season, or furniture change described in the prompt. This differs from text-to-image generation, which has no source room to match and would produce a plausible-looking hotel room rather than the exact unit a guest books, a real risk in hospitality where a mismatched layout between the listing photo and the actual room drives review complaints and refund requests.

Warm evening lighting, daylight, and winter staging each shift color temperature and shadow direction differently, so naming both the lighting and the season in the prompt matters: "warm 3000K evening lighting, lamps on" reads differently from "bright daylight through open curtains," and leaving either unstated lets the model default to whichever lighting condition the reference photo already shows — wrong for an evening-ambiance variant generated from a daylight reference or the reverse.

Which Model Fits Hospitality Photography?

Nano Banana Pro's reference-guided mode holds window placement, ceiling lines, and fixed furniture consistent across lighting and staging changes, which matters for hospitality because a shifted window or resized bed reads as a different room entirely to a guest comparing the listing photo against check-in reality. GPT-image-2 fits smaller instruction-based touch-ups — a linen color swap, a decluttered nightstand, or a brightness correction — on a photo that's otherwise already final.

Model Mode Resolution / price Layout consistency Best for
Nano Banana Pro Reference-guided 1K $0.030 / 2K $0.030 / 4K $0.042 High Full seasonal or lighting variant sets from one base shoot
Nano Banana 2 Reference-guided 1K $0.020 / 4K $0.036 Medium-high Lower-cost variant drafts for internal marketing review
GPT-image-2 Instruction-based edit $0.014/image N/A (edits existing photo) Linen swap, decluttering, or brightness fix on a near-final shot

For a listing-facing seasonal refresh, Nano Banana Pro's consistency at 2K resolution is worth the small premium over Nano Banana 2 — a warped window frame or duplicated headboard reads as a defect to a guest comparing photos against the room they booked, not a rendering quirk.

How Do I Generate a Room Variant via API?

Submit the base room photo as image input with a prompt describing the target lighting and season; 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, lighting, season_note):
    r = requests.post(
        f"{BASE}/images/generations",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={
            "model": "nano-banana-pro",
            "prompt": f"same room layout, windows, and fixed furniture, "
                      f"{lighting}, {season_note}, "
                      f"professional hotel photography, wide angle",
            "image": reference_url,
            "resolution": "2k",
        },
    )
    return r.json()["id"]

job_id = generate_variant(
    "https://cdn.example.com/rooms/deluxe-king-daylight.jpg",
    "warm 3000K evening lighting, lamps on",
    "winter throw blanket and seasonal accent pillows",
)

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 Property Refresh?

Loop over the room-type and variant 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.

variants = [
    ("deluxe-king", "warm evening lighting, lamps on", "no seasonal styling"),
    ("deluxe-king", "bright daylight, curtains open", "winter throw blanket and accent pillows"),
    ("suite-lobby-view", "warm evening lighting, lamps on", "renovated lobby furniture visible"),
]

jobs = []
for room, lighting, season_note in variants:
    ref = f"https://cdn.example.com/rooms/{room}-daylight.jpg"
    job_id = generate_variant(ref, lighting, season_note)
    jobs.append((room, lighting, job_id))

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

What Does a Full Property Refresh Cost?

Six room types across two lighting variants each at 2K resolution on Nano Banana Pro cost 12 × $0.030 = $0.36. A larger property spanning ten room types plus four shared amenity spaces (lobby, pool, gym, restaurant), each with two variants, costs 28 × $0.030 = $0.84.

Refresh size Images Model Cost
Six room types, 2 variants each 12 Nano Banana Pro, 2K $0.36
Ten room types + four amenities, 2 variants each 28 Nano Banana Pro, 2K $0.84
Internal marketing review pass 28 Nano Banana 2, 1K $0.56

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

Internal Links

FAQ

Can the API add or remove furniture, not just change lighting?
Yes — describe the target furniture change explicitly in the prompt (a renovated lobby sofa, a removed accent chair), since leaving it unstated causes the model to keep the reference photo's existing furniture as-is.

Does it preserve small architectural details like crown molding or window trim?
It approximates fine architectural detail based on the reference photo's resolution; for listings where exact trim or molding must match a recent renovation precisely, plan on a manual review pass before publishing.

Can one API call generate both a daylight and an evening version together?
No — each lighting condition needs its own generation call from the same reference photo. Generate the daylight and evening versions as separate jobs.

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

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


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

Related posts

Join our DiscordAI Hospitality Photography API — Room and Amenity Variants — GenRelay