Skip to main content

Fill an Empty Room API

roomix/fill-empty-room

Furnish an empty or bare room from a single photo — complete, realistic staging in a chosen style.

Starts from $0.039 /run
2 model optionspublicpublished

Wrapper Input

Input

External URL of the uploaded photo of the empty or bare room to furnish.

Controls how strongly the staging should preserve the photographed room versus reinterpret it artistically.

The type of interior space to furnish.

The desired furnishing and decor style for the staged room.

Preferred color palette for the furnishings and decor.

Min: 0.5 - Max: 1

Fine-grained creativity value used only when creativity is precise.

Additional user instructions for the furnishing.

You need to be logged in to run this model and view results.
Log in

Wrapper Output

Output

Loading
Generated in 15.651 seconds
Logs (1 lines)

Wrapper Examples

Examples

Example output 1Example output 2Example output 3

Pricing

Base ModelPricing ModeEffective Cost
nano-banana-2/editdefaultmegapixel tieredTiered pricing
nano-bananaper output$0.039

Fill an Empty Room API

Fill an Empty Room is a image-to-image AI wrapper by roomix. On ModelRunner it runs through a REST API or via MCP from any AI assistant with pay-per-use pricing.

POST https://queue.modelrunner.run/roomix/fill-empty-room

cURL

# Submit a request to the queue. Input fields go at the top level of the
# body. The optional reserved "metadata" object holds your own flat string
# tags — stored on the request, never sent to the model; filter later with
# GET https://queue.modelrunner.run/requests?metadata=<url-encoded JSON>.
curl -X POST https://queue.modelrunner.run/roomix/fill-empty-room \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "dining-room",
    "color": "auto",
    "style": "modern-fusion",
    "file_url": "https://media.modelrunner.ai/zDk2P0U4L6dX47eZ2AJlJ.png",
    "creativity": "balanced",
    "creativity_level": 0.7,
    "metadata": {
      "project": "my-project"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/roomix/fill-empty-room/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/roomix/fill-empty-room/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("roomix/fill-empty-room", {
  input: {
    "type": "dining-room",
    "color": "auto",
    "style": "modern-fusion",
    "file_url": "https://media.modelrunner.ai/zDk2P0U4L6dX47eZ2AJlJ.png",
    "creativity": "balanced",
    "creativity_level": 0.7
  },
});
console.log(result);

Python

import os
import requests

headers = {"Authorization": f"Key {os.environ['MRUN_API_KEY']}"}

submitted = requests.post(
    "https://queue.modelrunner.run/roomix/fill-empty-room",
    headers=headers,
    json={
      "type": "dining-room",
      "color": "auto",
      "style": "modern-fusion",
      "file_url": "https://media.modelrunner.ai/zDk2P0U4L6dX47eZ2AJlJ.png",
      "creativity": "balanced",
      "creativity_level": 0.7
    },
).json()

# Poll submitted["status_url"] until "COMPLETED", then:
result = requests.get(submitted["response_url"], headers=headers).json()

Input parameters

Input parameters of Fill an Empty Room
NameTypeRequiredDescription
file_urlstring (uri)yesExternal URL of the uploaded photo of the empty or bare room to furnish.
creativityenumyesControls how strongly the staging should preserve the photographed room versus reinterpret it artistically. One of: precise, balanced, creative. Default: "balanced".
typeenumnoThe type of interior space to furnish. One of: no-type, living-room, kitchen, bedroom, bathroom, attic, dining-room, study-room, home-office, gaming-room, meeting-room, workshop, fitness-gym, coffee-shop, clothing-store, walk-in-closet, toilet, restaurant, office, coworking-space, hotel-lobby, hotel-room, hotel-bathroom, exhibition-space, onsen, mudroom. Default: "no-type".
styleenumnoThe desired furnishing and decor style for the staged room. One of: no-style, minimalist-haven, modern-fusion, contemporary-elegance, industrial-loft, bohemian-oasis, coastal-breeze, desert-retreat, mountain-escape, victorian-elegance, art-deco-glamour, mid-century-modern, french-country-charm, colonial-classic, scandinavian-sanctuary, japanese-zen, moroccan-mystique, mediterranean-retreat, indian-exuberance, travelers-trove, cyber-eclectic-fusion, neon-noir, techno-wonderland, retro-futurism, digital-zen, rustic, vintage, shabby-chic. Default: "no-style".
colorenumnoPreferred color palette for the furnishings and decor. One of: warm-earth-tones, historical-romance, laid-back-blues, palm-springs-modern, sweet-pastels, rich-jewel-tones, desert-chic, forest-inspired, high-contrast-neutrals, airy-neutrals, coastal-neutrals, ecletic-boho, auto. Default: "auto".
creativity_levelnumbernoFine-grained creativity value used only when creativity is precise. Default: 0.7.
promptstringnoAdditional user instructions for the furnishing.

Machine-readable: OpenAPI schema · llms.txt

Use Fill an Empty Room from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Fill an Empty Room becomes a tool your assistant can call directly — it authorizes via OAuth (no API key in config) and runs this wrapper with the run_model tool using the endpoint roomix/fill-empty-room.

MCP client config (Claude Desktop, Cursor)

{
  "mcpServers": {
    "modelrunner": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.modelrunner.run/mcp"]
    }
  }
}

Claude Code

claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp

Then ask your assistant, for example: “Run roomix/fill-empty-room on ModelRunner to generate image”. MCP setup guide.

Wrapper Details

Model Details

**Furnish an empty or bare room from a single photo — complete, realistic virtual staging in a chosen style.**

Upload a photo of an empty, vacant, or only sparsely furnished room and get back the same space fully furnished and professionally staged. The wrapper composes a detailed staging prompt for the underlying image-edit model: a full furniture set appropriate to the room type, plus rugs, layered lighting, wall decor, window treatments, and plants — at realistic scale, with natural placement and clear traffic flow — while the room's architecture (walls, windows, doors, flooring, ceiling, camera angle, and the view through the windows) is preserved exactly.

Designed for **virtual staging**, real-estate listing preparation, rental furnishing previews, and "what could this room become" exploration. Uses the same `type`, `style`, and `color` enum values as the `roomix/room-redesign` wrapper, so the same UI can drive both.

## How to use

1. Upload the room photo and pass its URL as `file_url` (required). 2. Pick `creativity` (required): `precise` stays closest to the photographed room (fine-tune with `creativity_level`, 0.5–1.0), `balanced` gives a confident complete staging, `creative` allows bolder furnishing and decor choices. 3. Optionally guide the result: - `type` — the room type to stage (e.g. `living-room`, `bedroom`); leave `no-type` to let the model infer it from the architecture. - `style` — the furnishing style (e.g. `scandinavian-sanctuary`, `mid-century-modern`). - `color` — a preferred palette, or `auto`. - `prompt` — free-text instructions (e.g. "include a reading corner by the window"). 4. If the room already has some furniture, the wrapper keeps its feel and completes the staging around it instead of starting over.

## Staging several rooms of one home

Run each room as its own independent request, but keep `style` and `color` identical across all runs so the staged set reads as one coherent home. Do not chain one room's output into the next room's input — always start each room from its own original photo.