AI Video Generation API for Real Estate Listings (2026)
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
- Veo 3.1 on GenRelay
- How to build an image-to-video pipeline with API
- AI video generation API for e-commerce
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.