Guide
Floor plan to 3D
Turn a 2D floor plan into a 3D cutaway or top-down render.
Floor plan to 3D builds a furnished (or empty) 3D model of a 2D floor plan and renders it either as an angled dollhouse cutaway or almost straight from above. It reads CAD exports, scans, listing plans, app scans and phone photos of hand drawings. Estate agents use it for listings; interior designers, architects, developers, hotels and furniture retailers use it to show a layout to someone who does not read plans.


Options
| Option | Type | Values | Default | Required | Description |
|---|---|---|---|---|---|
inputType | string | autoreal_estateasian_residentialcadmobile_scanhand_drawnblueprintother | real_estate | optional | How you would describe the drawing. A hint only — the drawing itself always wins. auto, real_estate (the default) and other add nothing, so leave it unless another value clearly fits. |
outputStyle | string | cutaway_isometricstylised_topdown | cutaway_isometric | optional | cutaway_isometric is an angled dollhouse view with the roof removed; stylised_topdown looks almost straight down. Also accepted as |
interiorStyle | string | modernscandinavianminimalistindustrialtraditionalluxury | modern | optional | Materials and furniture style. Also accepted as |
furnitureMode | string | furnishedempty | furnished | optional | empty renders the shell with the fixtures the drawing shows (counters, WC, bath). |
fp3dOutdoor | string | as_drawnbuilding_only | as_drawn | optional | as_drawn builds balconies, terraces, pools and parking only where the drawing shows them; building_only stops the model at the outer walls. |
fp3dLabels | string | noneroom_names | none | optional | room_names places the drawing's own room names on the floors, copied as written (a name the model cannot read is left out). Areas and dimensions are not added. |
Every option has a default, so a request with no options renders a furnished modern
cutaway with no text, and builds balconies, terraces, pools and parking only where the plan
draws them.
Example
{
"tool": "floor-plan-to-3d",
"image_url": "https://example.com/apartment-plan.png",
"options": {
"outputStyle": "stylised_topdown",
"interiorStyle": "scandinavian",
"furnitureMode": "furnished",
"fp3dLabels": "room_names"
}
}Accepted aliases
Two keys that integrators commonly guess are accepted and mapped onto the real options:
| You send | It becomes |
|---|---|
view: topdown, top_down or overhead | outputStyle: stylised_topdown |
view: isometric or dollhouse | outputStyle: cutaway_isometric |
style: one of the interiorStyle values | interiorStyle: that value |
When you send both an alias and the option it maps to, the option wins. A view outside the
list above is rejected with invalid_request. A style that is not an interiorStyle value
(for example farmhouse) is ignored — describe that look with tier custom instead.
A look of your own
For a style outside the six presets, set tier to custom and describe it in
customPrompt (at most 500 characters). Your text sets the materials, colours, furniture and
lighting and takes the place of interiorStyle; rooms your text says nothing about are
furnished simply for their use. Send furnitureMode empty as well to keep an empty shell.
outputStyle, fp3dOutdoor and fp3dLabels still apply, and so do the layout rules below:
the model is told that your text never changes the layout, walls or openings.
{
"tool": "floor-plan-to-3d",
"image_url": "https://example.com/cottage-plan.jpg",
"options": {
"tier": "custom",
"outputStyle": "cutaway_isometric",
"customPrompt": "Farmhouse interior: dark carved wooden furniture, exposed brick walls, terracotta and timber floors, potted plants, warm table and floor lamps."
}
}What the model is told to keep
- Walls where they are drawn, with rooms neither merged nor split. Slight angles can still come back straight, so check the render against the plan.
- Doors, windows, stairs, lifts and columns only where the plan shows them.
- Room names, areas, dimensions, legends, title blocks and watermarks are read, never built
as objects. With
fp3dLabelsroom_names, the room names are copied onto the floors as written, and a name the model cannot read is left out; areas and dimensions are not added. Text in a render is drawn by the model, so check it before you publish. - Plain margins and letterbox bars around the plan are trimmed before rendering, so the plan fills the frame. Crop title blocks and other floors out yourself for the best result.
inputType is only a hint about what the drawing is. The model reads the drawing itself:
auto, real_estate (the default) and other add no hint at all, so leave it out unless
another value clearly fits.
Next steps
- Tools — the rest of the tools and the common options.
- Quickstart — send this request end to end.