Skip to main content

Layout Boost API

hakankaan/layout-boost

Rearrange a room's existing furniture — same pieces, only moved — to gain usable space and better flow.

Starts from $0.039 /run
2 model optionspublicpublished

Wrapper Input

Input

External URL of the uploaded photo of a furnished room whose furniture should be rearranged.

How bold the rearrangement may be: precise = subtle nudges to the current layout, balanced = a moderate replan, creative = a complete replan. Never changes which furniture appears — only where it goes.

Min: 0.5 - Max: 1

Fine-grained rearrangement boldness used only when creativity is precise (0.5 = closest to the current layout, 1.0 = boldest precise replan).

Optional goals for the new layout, e.g. "make space for a desk near the window".

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

Wrapper Output

Output

Fill in the input form and click submit to see the output
Logs (1 lines)

Pricing

Base ModelPricing ModeEffective Cost
nano-banana-2/editdefaultmegapixel tieredTiered pricing
nano-bananaper output0.039

Layout Boost API

Layout Boost is a image-to-image AI wrapper by hakankaan. 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/hakankaan/layout-boost

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/hakankaan/layout-boost \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_url": "https://example.com/input.jpg",
    "creativity": "balanced",
    "metadata": {
      "project": "my-project"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

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

JavaScript

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

const result = await modelrunner.subscribe("hakankaan/layout-boost", {
  input: {
    "file_url": "https://example.com/input.jpg",
    "creativity": "balanced"
  },
});
console.log(result);

Python

import os
import requests

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

submitted = requests.post(
    "https://queue.modelrunner.run/hakankaan/layout-boost",
    headers=headers,
    json={
      "file_url": "https://example.com/input.jpg",
      "creativity": "balanced"
    },
).json()

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

Input parameters

NameTypeRequiredDescription
file_urlstring (uri)yesExternal URL of the uploaded photo of a furnished room whose furniture should be rearranged.
creativityenumyesHow bold the rearrangement may be: precise = subtle nudges to the current layout, balanced = a moderate replan, creative = a complete replan. Never changes which furniture appears — only where it goes. Default: "balanced".
creativity_levelnumbernoFine-grained rearrangement boldness used only when creativity is precise (0.5 = closest to the current layout, 1.0 = boldest precise replan). Default: 0.7.
promptstringnoOptional goals for the new layout, e.g. "make space for a desk near the window".

Machine-readable: OpenAPI schema · llms.txt

Use Layout Boost from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Layout Boost 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 hakankaan/layout-boost.

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 hakankaan/layout-boost on ModelRunner to generate image”. MCP setup guide.

Wrapper Details

Model Details

**Rearrange a room's existing furniture — the exact same pieces, only moved — to gain usable space and better traffic flow.**

Layout Boost takes a photo of a furnished room and replans the furniture arrangement for better space usage, circulation, and function. It is a layout tool, not a restyling tool: the result must contain the exact same furniture inventory as the input — same pieces, same colors, same materials, same count — with nothing added, nothing removed, and nothing restyled. Architecture stays untouched: walls, windows, doors, flooring, ceiling, camera angle, the view through windows, and wall/floor finishes are all preserved exactly.

## Inputs

- `file_url` (required) — photo of a furnished room. The room should already contain the furniture you want rearranged; an empty room has nothing to move. - `creativity` (required) — how bold the rearrangement may be: - `precise` — subtle nudges: shift, slide, or rotate a few pieces while keeping the layout recognizable. - `balanced` — a moderate replan: several pieces relocate for clearly better space usage. - `creative` — a complete replan: any piece may move anywhere sensible. - `creativity_level` (0.5–1, default 0.7) — fine-grained rearrangement boldness, used only when `creativity` is `precise`. - `prompt` (optional) — the user's goals for the new layout, e.g. `make space for a desk near the window` or `open up a play area in the middle of the room`.

There are deliberately **no style, room-type, or color controls**: this wrapper must never restyle, recolor, or re-materialize anything. If you want a redesign rather than a rearrangement, use `roomix/room-redesign` instead.

## How to use

1. Upload the room photo and pass its URL as `file_url`. 2. Pick `creativity` for how far the layout may depart from the current one — start with `balanced`. 3. Optionally state a goal in `prompt`; the model prioritizes it while rearranging. 4. Runs are independent — one room photo per run. To explore layout options for the same room, run the **same original** `file_url` several times at different `creativity` settings and compare. Do not feed one run's output into the next run as its input: chaining compounds drift away from the original furniture inventory.