About meltflex-design
meltflex-design uses the MeltFlex REST API to redesign a real space photo as a photorealistic image. It is for agents handling interior and exterior design edits, with modes for whole-scene restyling and targeted region changes.
Key features
- 01Photo-based interior and exterior redesign
- 02Multiple scene and surface edit modes
- 03Red-marked region edits
- 04One-call batches of image variations
- 05Optional video and 3D generation
Use cases
- 01Restyle a room from a source photo
- 02Virtually stage an empty room
- 03Change only a marked wall or floor area
- 04Turn a room photo into a video or 3D output
MCP support
The skill calls the MeltFlex REST API directly. If the meltflex-mcp server is configured, it recommends using its generate_interior tool for file handling.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ meltflexdevs/ skills --skill meltflex-designAfter installing, type/meltflex-designin Claude Code to confirm it loaded.
Details
From the project READMEMeltFlex — AI Interior Design
MeltFlex turns a real photo of a space into a redesigned, photorealistic result. This skill calls the MeltFlex REST API directly, so it works in any agent without installing anything else. (If the meltflex-mcp server is configured, prefer its generate_interior tool — it handles file I/O for you.)
To place specific furniture products into a room, use the companion skill /meltflex:furniture. For 3D output (a furniture GLB, a floorplan model, an explorable 3D world), use /meltflex:3d.
Prerequisites
The user needs a MeltFlex API key (mf_sk_...), available on an active subscription at https://www.meltflexai.com/settings. Expect it in the MELTFLEX_API_KEY environment variable. If missing, ask them to set it:
export MELTFLEX_API_KEY="mf_sk_..."
Each generation costs 10 credits, deducted upfront and auto-refunded on failure. Credits belong to the user's account.
The one endpoint
POST https://www.meltflexai.com/api/v1/generate
Headers: Authorization: Bearer $MELTFLEX_API_KEY, Content-Type: application/json.
Body:
prompt(string, required) — the redesign instruction.imageUrl(string) orimage(base64 data URL) — the source photo. PreferimageUrl.resolution(string, optional) — output quality:"512","1K", or"2K"(sharpest). Defaults to model auto.designLevel(string, optional) —"lite"(faster & cheaper, −2 credits),"quick"(default), or"pro"(most detailed, HIGH thinking, +5 credits).mask(boolean, optional) — region edit. Whentrue, the source image must have the area to change painted solid red; the prompt is applied only to those red-marked regions and the rest is preserved. Use for "change only this part".variations(number, optional) — batch of1–3images in one call (default 1). Charged per image; failed variations are refunded.
Response: { "success": true, "image": "data:...", "images": ["data:..."], "count": 1, "creditsUsed": 10 }.
Modes
Every mode is the same endpoint with a mode-tuned prompt. Pick the mode that matches the request and lead the prompt with it.
| Mode | What it's for | Prompt lead-in |
|---|---|---|
restyle | Change a room's style/theme | "Redesign this room in : …" |
virtual_staging | Furnish an empty room | "Furnish this empty room as a <room type>: …" |
layout_boost | Rearrange existing furniture | "Rearrange the existing furniture into a more open, functional layout; keep the same pieces" |
declutter | Clean up / depersonalize | "Declutter and tidy this room, keep the layout, neutral staging" |
exterior | Building facade / house exterior | "Redesign this house exterior in , keep structure" |
garden | Landscaping / outdoor | "Redesign this garden: <plants, paving, mood>" |
wall_texture | Change wall material/finish | "Change the walls to <material/color>, keep everything else" |
floor_restyle | Change flooring | "Replace the floor with , keep everything else" |
stairs | Restyle a staircase in place | "Restyle the staircase (<treads, railing>), keep its position and surroundings" |
doors | Swap interior doors | "Replace the doors with , keep the walls and flooring" |
windows | Swap window frames/glazing | "Change the windows to <frame/glazing>, keep the wall openings" |
kitchen | Whole kitchen redesign | "Redesign this kitchen in , keep the footprint and plumbing" |
bathroom | Whole bathroom redesign | "Redesign this bathroom in , keep the layout and plumbing" |
photo_to_render | Draft / SketchUp → photo | "Turn this 3D draft into a photorealistic photograph, keep the geometry and camera" |
seasonal | Lighting / season variation | "Show this room at <time of day / season> with " |
region_edit | Change only one marked area | Send mask: true with the region painted solid red in the image; "Put in the red area, keep the rest" |
For surface- and fixture-swap modes (wall_texture, floor_restyle, stairs, doors, windows), you can attach the target material or product as a reference image (referenceImageUrls) to match it exactly — see /meltflex:furniture for the reference mechanic.
Always preserve room structure (walls, windows, doors, flooring) unless the mode is explicitly about changing it.
How to run it
Use a small script so you can decode the base64 result to a file (Python example):
import os, base64, requests
resp = requests.post(
"https://www.meltflexai.com/api/v1/generate",
headers={"Authorization": f"Bearer {os.environ['MELTFLEX_API_KEY']}"},
json={
"imageUrl": "https://your-cdn.com/empty-room.jpg",
"prompt": "Redesign in warm Scandinavian style: light oak floor, beige linen sofa, soft daylight. Preserve windows and walls.",
},
timeout=180,
)
data = resp.json()
if data.get("success"):
open("redesign.png", "wb").write(base64.b64decode(data["image"].split(",", 1)[1]))
print("Saved redesign.png")
else:
print("Error:", data.get("error") or data.get("message"))
For a local source photo, send it as a data URL in image instead of imageUrl:
import base64, mimetypes
path = "living-room.jpg"
mime = mimetypes.guess_type(path)[0] or "image/jpeg"
b64 = base64.b64encode(open(path, "rb").read()).decode()
body = {"image": f"data:{mime};base64,{b64}", "prompt": "..."}
How to work with the user
- Always need a source photo. MeltFlex restyles an existing photo — it does not invent spaces from scratch. If the user gives only a description, ask for a file path or URL.
- Pick a mode, then write a specific prompt — materials, colors, furniture, lighting, mood. "make it cozy" → "Warm Scandinavian living room: light oak floor, beige linen sofa, cream wool rug, soft diffused daylight."
- Report the saved path and credits used; offer to iterate.
- Errors: 402 = insufficient credits (point to /settings); 401 = bad/missing key; 429 = rate limited (retry with backoff); 5xx = failed, credits auto-refunded.
Beyond still images: video & 3D
The same account and API key unlock more endpoints. Use them when the request goes past a still redesign:
- Cinematic video walkthrough — animate a still (a MeltFlex render or any interior photo) into a short walkthrough clip (Veo 3.1).
POST /api/v1/videowith{ imageUrl, durationSeconds: 4|8, aspectRatio: "16:9"|"9:16", prompt? }→{ videoUrl, durationSeconds, aspectRatio, creditsUsed }(a hosted MP4). Costs 100 credits (4s) or 150 (8s). Allow up to ~5 minutes. - Floorplan → 3D — a 2D plan into a rendered 3D picture (
output: "render", 10 credits, ~20 s) or a downloadable GLB model (output: "model", 100 credits, ~3 min).POST /api/v1/floorplan-to-3d. - Furniture photo → 3D model — one product photo into a textured GLB (plus USDZ/FBX/OBJ links).
POST /api/v1/furniture-3d, 75 credits, ~2–3 min. - Photo → explorable 3D world — a room photo or one of your renders into a walkable Gaussian-splat world with a hosted viewer link.
POST /api/v1/world, 30 credits (draft) or 200 (hd).
The three 3D endpoints can answer HTTP 202 and need polling; the companion skill /meltflex:3d documents all of them with request/response shapes and a polling helper. Full reference: https://www.meltflexai.com/api.
Tips
- Prefer
imageUrlover base64 — avoids the 15 MB body limit and is faster. - Input images ≥1024px on the long side give the best results.
- Never print or commit the API key.