Skip to main content

Paint the Walls API

roomix/wall-paint

Repaint every wall in a room photo — a designer color and finish, with the furniture, trim, and lighting untouched.

Starts from $0.039 /run
2 model optionspublicpublished

Wrapper Input

Input

Curated designer paint color for every wall. Deliberately spread across the spectrum so no two choices read alike — for a shade between them, send 'custom_color' instead. 'auto' lets the wrapper pick a shade that flatters the room's existing furniture, flooring, and daylight.

Sheen and surface character of the paint. 'auto' leaves the finish to the model.

Optional exceptions and notes, e.g. 'leave the brick chimney breast bare' or 'paint only the wall behind the bed'. Honored above the default of painting every wall the same color.

External URL of the uploaded photo of the room whose walls should be repainted.

Exact color to paint the walls, as a hex value like '#3A5F4B' or a plain description like 'deep forest green'. When set it overrides 'color'.

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

Paint the Walls API

Paint the Walls 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/wall-paint

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/wall-paint \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_url": "https://example.com/input.jpg",
    "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/wall-paint/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/roomix/wall-paint/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

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

const result = await modelrunner.subscribe("roomix/wall-paint", {
  input: {
    "file_url": "https://example.com/input.jpg"
  },
});
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/wall-paint",
    headers=headers,
    json={
      "file_url": "https://example.com/input.jpg"
    },
).json()

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

Input parameters

NameTypeRequiredDescription
colorenumnoCurated designer paint color for every wall. Deliberately spread across the spectrum so no two choices read alike — for a shade between them, send 'custom_color' instead. 'auto' lets the wrapper pick a shade that flatters the room's existing furniture, flooring, and daylight. Default: "auto".
finishenumnoSheen and surface character of the paint. 'auto' leaves the finish to the model. Default: "auto".
promptstringnoOptional exceptions and notes, e.g. 'leave the brick chimney breast bare' or 'paint only the wall behind the bed'. Honored above the default of painting every wall the same color.
file_urlstring (uri)yesExternal URL of the uploaded photo of the room whose walls should be repainted.
custom_colorstringnoExact color to paint the walls, as a hex value like '#3A5F4B' or a plain description like 'deep forest green'. When set it overrides 'color'.

Machine-readable: OpenAPI schema · llms.txt

Use Paint the Walls from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Paint the Walls 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/wall-paint.

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/wall-paint on ModelRunner to generate image”. MCP setup guide.

Wrapper Details

Model Details

**Repaint every wall in a room photo — one color, one finish, everything else untouched.**

Paint the Walls takes a photo of a real room and repaints all of its wall surfaces in a chosen color and paint finish. It is a surface tool, not a redesign tool: the furniture, rugs, art, lighting, flooring, ceiling, trim, camera angle, and framing all come back exactly as they were. The wrapper repaints *around* wall-mounted objects — art, mirrors, shelves, TVs, sconces, switches, outlets, radiators — rather than over them, and it explicitly forbids mirroring or flipping the photo to fake a change.

## Inputs

- `file_url` (required) — photo of the room whose walls should be repainted. - `color` — one of 17 curated designer paint colors, or `auto` to let the wrapper pick a shade that flatters the room. The list is deliberately spread across the spectrum (five stepped neutrals, then warms, greens, blues, and a lavender) so no two choices read alike at a glance. - `custom_color` (optional) — an exact color as a hex value (`#3A5F4B`) or a plain description (`deep forest green`). When set it **overrides** `color`, so send one or the other. This is the way to reach any shade *between* the curated colors, or to match a specific paint chip. - `finish` — `matte`, `eggshell`, `satin`, `limewash`, or `venetian-plaster`. `auto` (the default) leaves the sheen to the model. - `prompt` (optional) — exceptions and extra notes, e.g. `leave the brick chimney breast bare` or `paint only the wall behind the bed`. Notes are honored above the "every wall gets the same color" default.

## How to use

1. Upload the room photo and pass its URL as `file_url`. 2. Pick a `color` **or** send a `custom_color` hex — not both. 3. Optionally set `finish`, and use `prompt` for anything the enums can't say. 4. Runs are independent — one room photo per run. To compare colors for the same room, run the **same original** `file_url` once per color and compare the results side by side. Do not feed one run's output into the next run: chaining compounds drift away from the original room.

## Known limitations

- Very dark colors on a small, dim room can read slightly flatter than a real paint job; add a note like `keep the room bright` to counter it. - Wallpapered or heavily patterned walls are treated as paintable surface and lose their pattern — say so in `prompt` if you want the pattern kept.