Virtual staging

Stage empty rooms in the style that sells.

Send a photo of a vacant room and pick a style. Designer furniture, rugs, art and decor are placed with correct scale, light and shadow — while walls, doors, windows and trim stay exactly as shot.

POST/v1/studio/staging/stageasync · ~12s
Empty living room with light oak floors and a large window
The same living room virtually staged in scandinavian style
VacantStaged · Scandinavian
Style

Original photos on this page are AI-generated examples; every result is real Studio API output.

  • Architecture preserved
  • Natural shadows
  • 29 style presets
  • Custom instructions
Use cases

Stage every room buyers scroll past

Drag any slider to compare. Every example runs through the same endpoint.

Empty open-plan living room with a sliding glass door
The same living room staged in coastal style
VacantCoastal

Living rooms

Show scale and flow: a sofa, rug, coffee table and lighting that make an empty box read as a home.

Empty bedroom with an oak floor and one window
The same bedroom staged with a bed and nightstands
VacantStaged

Bedrooms

A made bed, nightstands and lamps tell buyers instantly whether a king fits.

Bare white kitchen with nothing on the counters
The same kitchen with lightly styled counters
BareStyled

Kitchens

Styled counters with greenery, a fruit bowl and a cutting board — warm, but never cluttered.

API

One request. That’s the integration.

Authenticate with x-api-key or Authorization: Bearer — the same key as the Listings API.

POST/v1/studio/staging/stagealias /v1/studio/staging/furnishAsync · ~12s
01POST the photo URL, room type and style. You get 202 Accepted and a job_id right away.
02Poll GET /v1/studio/jobs/:job_id, stream progress over SSE, or wait for your webhook.
03Download the finished image from the CDN — plus a before/after comparison where noted.
Body parameters7
photo_urlstringrequired
Public URL of the empty room photo.
room_typeenum
living_room · bedroom · primary_bedroom · kitchen · dining_room · bathroom · home_office · outdoor_patio · entryway · basement · commercial_lobby
styleenum
One of 29 presets — modern, scandinavian, luxury, coastal, farmhouse, japandi… or custom.
preserve_flooringboolean
Keep the existing floor finish untouched.
aspect_ratioenum
1:1 · 3:4 · 4:3 · 16:9 · 9:16
custom_staging_instructionsstring
Free-text direction for specific pieces, colors or materials.
webhook_urlstring
Called with the finished job when processing completes.
terminal
curl -X POST https://mlsapi.dev/v1/studio/staging/stage \
-H "x-api-key: $MLSAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"photo_url": "https://cdn.mlsapi.dev/photos/A12079565/01.webp",
"room_type": "living_room",
"style": "scandinavian",
"preserve_flooring": true,
"custom_staging_instructions": "Light oak coffee table, bouclé accent chair, neutral textured rug."
}'
202 Accepted
POST /v1/studio/staging/stage
{
"job_id": "job_studio_01JA0XQ4M9ZK7T",
"type": "staging_furnish",
"status": "processing",
"progress_percentage": 10,
"current_step": "initializing_pipeline",
"estimated_completion_seconds": 12,
"created_at": "2026-09-29T14:02:11.000Z",
"status_url": "/v1/studio/jobs/job_studio_01JA0XQ4M9ZK7T"
}

Try Virtual Staging in Studio.

Sign up or log in at studio.mlsapi.dev to run it on your own photos — then call the same endpoint from your code.