AI Video Generation API for Real Estate Listings (2026)

Sep 11, 2026·6 min read

A listing with a video gets more engagement than one with static photos alone, but sending a videographer to every property isn't realistic at volume — a brokerage with 300 active listings can't schedule 300 shoots a month. What's practical is generating short walkthrough-style clips from the photos already taken during a standard listing shoot, via API, at listing-creation time.

This guide covers model selection for property clips, image-to-video code for turning listing photos into motion, batch processing for a full listing catalog, and cost math using GenRelay.

Which Video Model Fits Real Estate Listing Clips?

Veo 3.1 Lite's image-to-video mode is the strongest fit for real estate — it produces the most convincing camera motion (slow pans, dolly-in effects) from a static photo, which matters for a genre where the shot itself is the product. Grok Imagine 1.5 is a lower-cost image-to-video alternative when budget per listing matters more than motion realism.

Model Mode 8s clip cost (1080p) Motion quality Native audio
Veo 3.1 Lite (i2v) Image-to-video 8 × $0.120 = $0.960 Cinematic pans, dolly effects Yes
Grok Imagine 1.5 (i2v) Image-to-video 8 × $0.022 = $0.176 Simpler motion, faster turnaround No
Gemini Omni Flash (i2v) Image-to-video Flat $0.15/gen Moderate motion No

Definition: image-to-video (i2v) takes a static image as input and generates a short clip that animates it — panning across the frame, simulating camera movement, or adding subtle environmental motion (curtains shifting, light changing) — without needing a text-only prompt to describe the scene from scratch.

For a listing's hero shot (living room or exterior), Veo 3.1 Lite's native audio is a genuine advantage — a subtle ambient audio track (room tone, light exterior sound) makes the clip feel less like a slideshow. For interior detail shots (kitchen counters, bathroom fixtures) where subtlety matters less than volume, Grok 1.5's lower cost makes it the better fit.

How Do I Turn a Listing Photo Into a Walkthrough Clip?

Submit the property photo with a motion-describing prompt to the video generation endpoint, then poll for the completed clip.

import requests
import time

API_KEY = "YOUR_GENRELAY_KEY"
BASE_URL = "https://genrelay.ai/v1"

def submit_i2v_job(image_url, prompt, model="veo-3.1-lite", duration=8, resolution="1080p"):
    response = requests.post(
        f"{BASE_URL}/videos/generations",
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json"
        },
        json={
            "model": model,
            "mode": "image-to-video",
            "image_url": image_url,
            "prompt": prompt,
            "duration": duration,
            "resolution": resolution
        }
    )
    return response.json()["id"]

job_id = submit_i2v_job(
    image_url="https://cdn.example.com/listings/123/living-room.jpg",
    prompt="Slow cinematic pan across a bright living room, "
           "natural afternoon light, subtle camera dolly forward"
)
print(f"Job submitted: {job_id}")

Then poll the job status until the clip is ready:

def wait_for_clip(job_id, timeout=180, interval=10):
    elapsed = 0
    while elapsed < timeout:
        status = requests.get(
            f"{BASE_URL}/videos/generations/{job_id}",
            headers={"Authorization": f"Bearer {API_KEY}"}
        ).json()
        if status["status"] == "completed":
            return status["output_url"]
        if status["status"] == "failed":
            raise RuntimeError(f"Generation failed: {status.get('error')}")
        time.sleep(interval)
        elapsed += interval
    raise TimeoutError("Clip generation timed out")

clip_url = wait_for_clip(job_id)

Veo 3.1 Lite i2v jobs typically complete in 60–120 seconds at 1080p — for the full per-model polling interval and timeout reference, see the async video API polling guide.

How Do I Process a Full Listing Catalog in Batch?

A brokerage onboarding photo sets for 50 active listings needs a queue, not sequential calls. Submit jobs concurrently, cap concurrency to stay under rate limits, and track results per listing ID.

from concurrent.futures import ThreadPoolExecutor, as_completed

def process_listing_batch(listings, max_workers=5):
    """listings: dict of {listing_id: (image_url, prompt)}"""
    results = {}
    with ThreadPoolExecutor(max_workers=max_workers) as pool:
        futures = {
            pool.submit(submit_i2v_job, image_url, prompt): listing_id
            for listing_id, (image_url, prompt) in listings.items()
        }
        for future in as_completed(futures):
            listing_id = futures[future]
            try:
                job_id = future.result()
                results[listing_id] = wait_for_clip(job_id)
            except Exception as e:
                print(f"Listing {listing_id} failed: {e}")
    return results

For a hero shot per listing (one clip each), 50 listings costs 50 × $0.960 = $48 at Veo 3.1 Lite 1080p, or 50 × $0.176 = $8.80 at Grok 1.5. Many brokerages generate 2–3 clips per listing (exterior, living space, kitchen) to assemble into a single walkthrough — multiply accordingly.

What Does This Cost at Listing-Catalog Scale?

Listings/month Clips per listing Veo 3.1 Lite (1080p) Grok Imagine 1.5
50 1 $48.00 $8.80
50 3 $144.00 $26.40
300 1 $288.00 $52.80
300 3 $864.00 $158.40

A practical tier structure: use Veo 3.1 Lite for the primary listing hero clip (the one prospective buyers see first in search results or a listing card), and Grok Imagine 1.5 for supplementary room-by-room clips assembled into a fuller walkthrough. This keeps the highest-visibility asset at the highest quality while controlling cost on volume. For a general per-second vs per-generation cost breakdown across all three video models, see how much does AI video generation cost via API.

Internal Links

FAQ

Can the API animate an exterior property photo the same way as an interior shot?
Yes — image-to-video works from any static photo. Exterior shots typically work best with a slow pan or slight zoom prompt rather than a dolly-forward motion, since there's less foreground detail to move through.

Does the generated clip preserve the exact room shown in the photo?
Yes. Image-to-video generation animates the input image rather than generating a new scene — walls, furniture, and layout stay as photographed. The model adds camera movement and subtle environmental motion, not new objects.

What's the minimum photo resolution needed for good i2v results?
There's no hard minimum enforced by the API, but listing photos taken at typical real estate camera resolution (12MP+) produce noticeably cleaner motion than heavily compressed web thumbnails. Use the original shoot files, not a pre-resized web version, as the image_url input.

How long should each clip be for a listing walkthrough?
5–8 seconds per room is typical — long enough to convey the space, short enough to keep a multi-room walkthrough under 30–40 seconds total when clips are stitched together. Veo 3.1 Lite supports up to 8 seconds per generation.

Is there a free tier to test this before committing to a listing catalog integration?
Yes. GenRelay includes free credits on signup — enough to test image-to-video generation on a handful of listing photos across both Veo 3.1 Lite and Grok Imagine 1.5 before deciding on a per-listing model strategy.


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

Related posts

Join our DiscordAI Video Generation API for Real Estate Listings (2026) — GenRelay