Skip to main content

Documentation Index

Fetch the complete documentation index at: https://developers.heygen.com/llms.txt

Use this file to discover all available pages before exploring further.

The Problem

Listings with video consistently get more inquiries than those without. But professional property tour videos cost thousands of dollars each — making them viable only for luxury properties. Most agents have great photos but no video.

How It Works

Property photos + listing data → Video Agent prompt → Narrated property tour → Post to listing sites
Attach your property photos as file inputs and describe the property in your prompt. Video Agent creates a narrated walkthrough with an avatar presenting the property highlights.

Build It

1

Structure your listing data

listing = {
    "address": "742 Evergreen Terrace, Springfield",
    "price": "$485,000",
    "bedrooms": 4,
    "bathrooms": 2.5,
    "sqft": 2200,
    "highlights": [
        "Renovated chef's kitchen with quartz countertops and stainless appliances",
        "Primary suite with walk-in closet and spa-like bathroom",
        "Landscaped backyard with covered patio and fire pit",
        "Walking distance to top-rated schools",
    ],
    "neighborhood": "Quiet, family-friendly street with mature trees",
    "photos": [
        "https://cdn.realty.com/photos/exterior.jpg",
        "https://cdn.realty.com/photos/kitchen.jpg",
        "https://cdn.realty.com/photos/primary-suite.jpg",
        "https://cdn.realty.com/photos/backyard.jpg",
    ],
}
2

Build the tour prompt

def build_listing_prompt(listing):
    highlights = "\n".join(f"- {h}" for h in listing["highlights"])

    return f"""Create a 45-second property tour video for a real estate listing.

Property: {listing['address']}
Price: {listing['price']} | {listing['bedrooms']} bed / {listing['bathrooms']} bath | {listing['sqft']} sq ft

Tour structure using the attached property photos:
- Opening (5s): Presenter stands in front of the home. "Welcome to {listing['address']}
  — let me show you why this {listing['bedrooms']}-bedroom home is something special."
- Kitchen & living (15s): Walk through the main living areas, highlighting:
  {highlights[0] if len(listing['highlights']) > 0 else ''}
- Primary suite (10s): Showcase the bedroom and bathroom
- Outdoor space (10s): Show the backyard and patio
- Closing (5s): "{listing['price']}. Schedule your private showing today."

Tone: Warm, professional, inviting — like a top-producing agent
who genuinely loves this home. Not salesy.
Neighborhood note: {listing['neighborhood']}
"""

prompt = build_listing_prompt(listing)
3

Submit with property photos

import requests

files = [{"type": "url", "url": url} for url in listing["photos"]]

resp = requests.post(
    "https://api.heygen.com/v3/video-agents",
    headers={
        "X-Api-Key": HEYGEN_API_KEY,
        "Content-Type": "application/json",
    },
    json={
        "prompt": prompt,
        "files": files,
    },
)
video_id = resp.json()["data"]["video_id"]
Then poll for completion — see Video Agent docs.
4

Batch generate for your portfolio

Generate videos for all your active listings in one run.
import time

listings = load_from_mls()  # Your listing data source

for listing in listings:
    prompt = build_listing_prompt(listing)
    files = [{"type": "url", "url": url} for url in listing["photos"]]

    resp = requests.post(
        "https://api.heygen.com/v3/video-agents",
        headers={
            "X-Api-Key": HEYGEN_API_KEY,
            "Content-Type": "application/json",
        },
        json={"prompt": prompt, "files": files},
    )
    listing["video_id"] = resp.json()["data"]["video_id"]
    time.sleep(5)  # Rate limit spacing

Video Styles by Property Type

Property typeDurationStyleFocus
Starter home30sFriendly, energeticValue, neighborhood, schools
Luxury60–90sElegant, cinematicDesign details, materials, views
Investment30sNumbers-drivenROI, rental income, location
Commercial45sProfessionalSquare footage, traffic, zoning
New construction45sExciting, forward-lookingCustomization options, builder quality

Cost Comparison

ApproachCost per videoTimeScalability
Professional videographer$1,000+Days–weeksLow
DIY with phone + editing$0 (your time)2–4 hoursVery low
Video Agent from photos~$2–5MinutesHigh

Variations

  • Neighborhood spotlight: Generate a separate video about the area — schools, dining, parks, commute times
  • Open house invite: Short 15-second teaser: “Open house this Saturday at [address]. Here’s a sneak peek.”
  • Multi-language: Translate for international buyers using Video Translation
  • Agent branding: Use the same avatar and style across all listings for consistent personal brand

Next Steps

Product Demos

Same screenshot-to-video pattern, applied to software.

E-commerce Product Videos

Same catalog-to-video pattern, applied to products.