Virtual staging

Virtual staging API

Furnish empty rooms, empty furnished rooms, renovate spaces, and edit interiors with prompts or masks — all the room-content operations in one place.

The virtual staging endpoints cover everything that changes the contents of a room: adding furniture, removing it, renovating the space, surgical edits via prompt, and mask-based object removal. For photo cleanup (enhance, sky, blur), see Image enhancement.

Furnish an empty room

POST/api/furnish

Add realistic furniture to an empty room. Pedra preserves the room's architecture (walls, windows, doors, floors) and only adds furniture and decoration.

Interior staging examples
Before/after pairs across living rooms, bedrooms, kitchens, and offices in different furniture styles.
See examples →

Parameters

apiKeystringrequired
Your API key.
imageUrlstringrequired
URL of the empty room photo, or a base64 data URI (data:image/png;base64,...).
roomTypestringrequired
Type of room to furnish. The eight values below have hand-tuned prompts; any other string (e.g. "Kitchen", "Closet") works too via auto-generated prompts.
Values: Living room Dining + Living room Bedroom Dining room Terrace Entrance Office Bathroom
stylestringrequired
Furniture style. Pass one of the named styles below, or a public URL to a reference image (e.g. a Pinterest photo or product shot) — Pedra will match the look from the reference.
Values: Minimalist Modern Scandinavian Industrial Bohemian Mid-century modern Traditional Mediterranean Coastal Rustic Farmhouse Contemporary
creativitystring
How much liberty the AI takes with the design. Medium is the recommended default; High runs on a lighter, faster model. Medium costs 2 credits per image, High costs 1 — see Pricing.
Values: Medium High
Default: Medium

Example request

curl -X POST https://app.pedra.ai/api/furnish \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "imageUrl": "https://example.com/empty-bedroom.jpg",
    "roomType": "Bedroom",
    "style": "Minimalist",
    "creativity": "Medium"
  }'

Example response

JSON
{
  "message": "Success",
  "output": [
    { "url": "https://pedraimages.s3.eu-west-3.amazonaws.com/<generated-id>" }
  ]
}

Response time: ~30 seconds per image.

Empty a furnished room

POST/api/empty_room

Remove furniture and objects from a room, leaving the architecture intact. Useful when listing photos are taken with the previous owner's belongings still in place.

Decluttering & empty room examples
See real listings transformed from cluttered to clean-slate empty in seconds.
See examples →

Parameters

apiKeystringrequired
Your API key.
imageUrlstringrequired
URL of the furnished room photo, or a base64 data URI.

Example request

curl -X POST https://app.pedra.ai/api/empty_room \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "imageUrl": "https://example.com/furnished-room.jpg"
  }'

Example response

JSON
{
  "message": "Success",
  "output": [
    { "url": "https://pedraimages.s3.eu-west-3.amazonaws.com/<generated-id>" }
  ]
}

Response time: ~30 seconds per image.

Renovate a room

POST/api/renovation

Show what a room could look like after renovation: new finishes, updated kitchens, refreshed bathrooms. Optionally keep windows in place and re-furnish in the same call.

Virtual renovation examples
Real renovation renders — dated kitchens, tired bathrooms, and refreshed interiors across styles.
See examples →

Parameters

apiKeystringrequired
Your API key.
imageUrlstringrequired
URL of the room photo to renovate.
stylestringrequired
Renovation style. Pass one of the named styles below, or a public URL to a reference image — Pedra matches finishes, palette, and overall look from the reference.
Values: Minimalist Modern Scandinavian Industrial Bohemian Mid-century modern Traditional Mediterranean Coastal Rustic Farmhouse Contemporary
preserveWindowsboolean
Keep windows in their original position. Recommended for accurate listings.
Default: false
furnishboolean
Add furniture to the renovated room in the same call. When true, roomType is required.
Default: false
roomTypestring
Used when furnish is true. Defaults to "Auto" (Pedra detects the room from the image). Same value set as the furnish endpoint.
Values: Living room Dining + Living room Bedroom Dining room Terrace Entrance Office Bathroom Auto
Default: Auto
creativitystring
How aggressive the renovation is. Medium is the recommended default; High runs on a lighter, faster model. Medium costs 2 credits per image, High costs 1 — see Pricing.
Values: Medium High
Default: Medium

Example request

curl -X POST https://app.pedra.ai/api/renovation \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "imageUrl": "https://example.com/dated-kitchen.jpg",
    "style": "Modern",
    "preserveWindows": true,
    "furnish": true,
    "roomType": "Kitchen",
    "creativity": "Medium"
  }'

Example response

JSON
{
  "message": "Success",
  "output": [
    { "url": "https://pedraimages.s3.eu-west-3.amazonaws.com/<generated-id>" }
  ]
}

Response time: ~30 seconds per image.

Edit via prompt

POST/api/edit_via_prompt

Make targeted edits described in plain English: "Add a modern chandelier", "Repaint the walls white", "Remove the rug". Best for one-off fixes that don't map to the other endpoints.

Parameters

apiKeystringrequired
Your API key.
imageUrlstringrequired
URL of the photo to edit, or a base64 data URI.
promptstringrequired
Plain-English editing instruction. Be specific — "add a beige sofa against the back wall" works better than "add furniture".

Example request

curl -X POST https://app.pedra.ai/api/edit_via_prompt \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "imageUrl": "https://example.com/living-room.jpg",
    "prompt": "Add a modern chandelier to the ceiling"
  }'

Example response

JSON
{
  "message": "Success",
  "output": {
    "url": "https://pedraimages.s3.eu-west-3.amazonaws.com/<generated-id>"
  }
}

Response time: ~15 seconds per image. Cost: 2 credits per call. output is a single object.

Remove object

POST/api/remove_object

Removes specific objects from an image using a mask. The mask is a separate image where white pixels mark what to remove and black pixels mark what to keep. Use this when you need surgical control vs. edit_via_prompt.

Object removal examples
Same gallery as /api/empty_room — clutter, furniture, and objects removed from real listing photos.
See examples →

Parameters

apiKeystringrequired
Your API key.
imageUrlstringrequired
URL of the source photo.
maskUrlstringrequired
URL of the mask image. White areas are removed; black areas are preserved.

Example request

curl -X POST https://app.pedra.ai/api/remove_object \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "imageUrl": "https://example.com/cluttered-room.jpg",
    "maskUrl": "https://example.com/mask.png"
  }'

Example response

JSON
{
  "message": "Success",
  "output": {
    "url": "https://pedraimages.s3.eu-west-3.amazonaws.com/<generated-id>"
  }
}

Response time: ~15 seconds per image. output is a single object.

Next

See Image enhancement for sharpening, sky replacement, and blurring — or Errors & limits for failure handling.