Airbnb listing photo size: 1024x683 landscape, then a Reel

Airbnb says listing photos should be at least 1024 x 683 px and landscape. Keep the listing real, then turn the same photos into a 9:16 promo with Sume.

5 min readSume
All posts

Airbnb's help page says to use photos at least 1024 px by 683 px and to use landscape format: "Photos in search results are all displayed in landscape", so vertical photos will not showcase your space as well. That is the whole size rule on the page I read, which means a modern phone photo already clears it. The more useful question is what to do with the same photos beyond the listing, and that is where a short vertical clip made with Sume fits.

The page is Airbnb's Taking great photos of your listing, read on 2026-10-02. It does not state a file-size limit, a photo count, or any rule on AI or editing tools, so this post does not guess at them.

What does Airbnb's photo page actually say?

Only two things are stated as requirements or instructions. The table keeps them next to what the page leaves open.

Airbnb listing photo guidance, read 2026-10-02 from Airbnb Help Center.
TopicOn the page?What it says
Minimum resolutionYesAt least 1024 px x 683 px; a bigger photo is better
OrientationYesLandscape; search results display photos in landscape
File size limitNoNot stated
Photo countNoNot stated on this page
AI or editing rulesNoNot stated on this page

Keep the listing photos real

A guest books a specific room. Whatever you put in the listing gallery should be the room as it is, shot landscape and sharp, with a 3:2 frame at or above 1024 x 683. Since Airbnb's page is silent on AI, treat generated or heavily edited images as a risk to the listing, not a shortcut, and keep them out of the gallery.

Marketing is different. A Reel, a Story or a pinned post can use the same real photos as raw material, and nobody is promised a pixel-accurate room in a promo. The same rule of honesty still applies: do not invent a view, a pool or a bed that is not there.

How do I make a 9:16 promo from a real listing photo?

Sume's video API accepts a first-frame image for image-to-video and a 9:16 aspect ratio. Send a public HTTPS link to your landscape photo as the first frame, ask for slow, gentle camera movement, and keep the clip short. The call is asynchronous: you submit, receive a polling URL, and poll until the status is completed, then read unsigned_urls.

Use one photo per clip and join them later, which keeps each clip faithful to a single real room. After each clip finishes, scrub it frame by frame; if furniture appears or disappears, regenerate or drop it.

import os, time, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
job = requests.post(
    "https://api.sume.com/v1/videos",
    headers=H,
    json={
        "model": "seedance-2",
        "prompt": "Slow push-in on the living room, soft daylight, no people, nothing added or removed from the room",
        "frame_images": [{
            "type": "image_url",
            "image_url": {"url": "https://example.com/listing/living-room.jpg"},
            "frame_type": "first_frame",
        }],
        "aspect_ratio": "9:16",
        "duration": 5,
        "resolution": "720p",
    },
    timeout=60,
).json()
while True:
    time.sleep(20)
    st = requests.get(job["polling_url"], headers=H, timeout=60).json()
    if st["status"] in ("completed", "failed", "cancelled"):
        break
print(st["status"], st.get("unsigned_urls"))

Cost and retries

Sume reserves the cost on submit at provider list times 1.25, according to the docs' differences table, and a failed job is not a completed one. Send an Idempotency-Key on retries so a replay returns the original job instead of a second charge, and check the model's supported_durations in GET /v1/videos/models before you pin a length.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume