---
title: "Create new floor"
method: POST
path: "/v1/floorplans/{assetId}/floors"
tags: ["Floorplans"]
---

# Create new floor

`POST /v1/floorplans/{assetId}/floors`

## Path parameters

- `assetId` string, required

## Request body

- CreateFloorDto
  - `level` integer, required — Level of floor
  - `floorplanData` object, required — Floorplan data JSON
    - `unit` 'cm', required
    - `version` 'https://maket.ai/spec/mex/0.2', required
    - `floorNumber` integer, required
    - `floorName` string
    - `Vertices` object[], required
      - `uid` string, required
      - `coord` union[], required
        - union
          - number
          - number
      - `height` number, required
      - `edges` string[], required
    - `Edges` object[], required
      - `uid` string, required
      - `isWall` boolean, required
      - `thickness` number, required
      - `openings` union[], required
        - union
          - object
            - `uid` string, required
            - `openingKind` 'window', required
            - `windowKind` 'hinged' | 'sliding' | 'blinds', required
            - `position` number, required
            - `width` number, required
            - `height` number, required
            - `sillHeight` number, required
            - `openDirectionFlag` boolean
          - object
            - `uid` string, required
            - `openingKind` 'door', required
            - `doorKind` 'hinged' | 'sliding' | 'pocket' | 'garage', required
            - `position` number, required
            - `width` number, required
            - `height` number, required
            - `opensOnFace` string, required
            - `hingeAlignmentFlag` boolean, required
            - `openDirectionOverride` boolean
      - `vertices` union[], required
        - union
          - string, uuid
          - string, uuid
      - `faces` string[], required
    - `Faces` object[], required
      - `uid` string, required
      - `type` 'bedroom' | 'master_bedroom' | 'secondary_bedroom' | 'full_bathroom' | 'half_bathroom' | 'living_room' | 'family_room' | 'game_room' | 'recreation_room' | 'kitchen' | 'dining_room' | 'office' | 'home_gym' | 'walk_in' | 'closet' | 'pantry' | 'laundry' | 'mechanical_room' | 'entry' | 'mudroom' | 'corridor' | 'stair' | 'garage' | 'front_porch' | 'deck' | 'balcony' | 'outdoor' | 'any', required
      - `name` string
      - `edges` string[], required
      - `edgeSenses` boolean[], required
      - `innerRings` object[]
        - `edges` string[], required
        - `edgeSenses` boolean[], required
    - `Fixtures` object[], required
      - `uid` string, required
      - `fixtureAssetId` string, uuid, required
      - `position` union[], required
        - union
          - number
          - number
      - `rotation` number, required
      - `mirrorX` boolean
      - `mirrorY` boolean
      - `dimensions` object
    - `UnattachedOpenings` union[]
      - union
        - object
          - `uid` string, required
          - `openingKind` 'door', required
          - `doorKind` 'hinged' | 'sliding' | 'pocket' | 'garage', required
          - `width` number, required
          - `height` number, required
          - `position` union[], required
            - union
              - …
          - `rotation` number
        - object
          - `uid` string, required
          - `openingKind` 'window', required
          - `windowKind` 'hinged' | 'sliding' | 'blinds', required
          - `width` number, required
          - `height` number, required
          - `sillHeight` number
          - `position` union[], required
            - union
              - …
          - `rotation` number
  - `ceilingHeightMeters` number, required — Height of ceiling in meters

## Response `200`

Floor created successfully

- FloorApiResponseDto
  - `success` boolean, required — Indicates if the request was successful
  - `message` string, required — Human readable message
  - `data` object, required — Response data
    - `level` integer, required — Level of floor
    - `origin` 'generated' | 'drawn' | 'uploaded' | 'recognized', nullable, required — How this floor was created; null for legacy pre-column floors
    - `floorplanData` object, required — Floorplan data JSON
      - `unit` 'cm', required
      - `version` 'https://maket.ai/spec/mex/0.2', required
      - `floorNumber` integer, required
      - `floorName` string
      - `Vertices` object[], required
        - `uid` string, required
        - `coord` union[], required
          - union
            - number
            - number
        - `height` number, required
        - `edges` string[], required
      - `Edges` object[], required
        - `uid` string, required
        - `isWall` boolean, required
        - `thickness` number, required
        - `openings` union[], required
          - union
            - object
              - …
            - object
              - …
        - `vertices` union[], required
          - union
            - string, uuid
            - string, uuid
        - `faces` string[], required
      - `Faces` object[], required
        - `uid` string, required
        - `type` 'bedroom' | 'master_bedroom' | 'secondary_bedroom' | 'full_bathroom' | 'half_bathroom' | 'living_room' | 'family_room' | 'game_room' | 'recreation_room' | 'kitchen' | 'dining_room' | 'office' | 'home_gym' | 'walk_in' | 'closet' | 'pantry' | 'laundry' | 'mechanical_room' | 'entry' | 'mudroom' | 'corridor' | 'stair' | 'garage' | 'front_porch' | 'deck' | 'balcony' | 'outdoor' | 'any', required
        - `name` string
        - `edges` string[], required
        - `edgeSenses` boolean[], required
        - `innerRings` object[]
          - `edges` string[], required
          - `edgeSenses` boolean[], required
      - `Fixtures` object[], required
        - `uid` string, required
        - `fixtureAssetId` string, uuid, required
        - `position` union[], required
          - union
            - number
            - number
        - `rotation` number, required
        - `mirrorX` boolean
        - `mirrorY` boolean
        - `dimensions` object
      - `UnattachedOpenings` union[]
        - union
          - object
            - `uid` string, required
            - `openingKind` 'door', required
            - `doorKind` 'hinged' | 'sliding' | 'pocket' | 'garage', required
            - `width` number, required
            - `height` number, required
            - `position` union[], required
              - …
            - `rotation` number
          - object
            - `uid` string, required
            - `openingKind` 'window', required
            - `windowKind` 'hinged' | 'sliding' | 'blinds', required
            - `width` number, required
            - `height` number, required
            - `sillHeight` number
            - `position` union[], required
              - …
            - `rotation` number
    - `visualizerStyleBindings` object[], required — Visualizer style bindings for the floor
      - `elementUid` string, uuid, required
      - `elementType` 'all' | 'floor' | 'room' | 'wall' | 'door' | 'window' | 'fixture' | 'ceiling' | 'exterior_wall', required
      - `category` 'general_floor' | 'bathroom_floor' | 'wall' | 'door' | 'window' | 'hard_furniture' | 'soft_furniture' | 'kitchen_countertops' | 'kitchen_cabinets' | 'bathroom_countertops' | 'bathroom_cabinets' | 'rugs' | 'plants' | 'appliances' | 'plumbing_fixtures' | 'waterproof' | 'outdoor_furniture' | 'upholstered' | 'ceiling' | 'deck' | 'balcony' | 'front_porch' | 'gym_equipment' | 'pool_table' | 'ping_pong' | 'yoga_mat' | 'garage_floor', nullable
      - `selectedStyleId` string, uuid, nullable, required
      - `selectedMaterialIds` string[], required
      - `selectedInspirationalImageAssetIds` string[]
      - `selectedColor` string, nullable, required
      - `llmPrompt` string, nullable
      - `inherits` boolean
    - `ceilingHeightMeters` number, required — Height of ceiling in meters
    - `createdAt` unknown, required
    - `updatedAt` unknown, required
  - `timestamp` string, date-time, required — Timestamp of the response

## Changes

- **2026-09-23** `b92f36c3da65` — 1 warning, 2 info
  - added the new `garage_floor` enum value to the `data/visualizerStyleBindings/items/category` response property for the response status `200`
  - added the new optional request property `floorplanData/Faces/items/innerRings`
  - added the optional property `data/floorplanData/Faces/items/innerRings` to the response with the `200` status
- **2026-09-14** `01c1bb182409` — 3 breaking, 2 warning, 2 info
  - added the new required request property `floorplanData/Fixtures/items/fixtureAssetId`
  - request property `floorplanData/version` was restricted to a list of enum values
  - removed the required property `data/floorplanData/Fixtures/items/spec` from the response with the `200` status
  - removed the request property `floorplanData/Fixtures/items/spec`
  - …3 more

[Change history](https://skmtc.dev/maket/apis/virtual-architect-api/changes/v1/floorplans/:assetId/floors/post.md)

---

[API](https://skmtc.dev/maket/apis/virtual-architect-api.md) · [All operations](https://skmtc.dev/maket/apis/virtual-architect-api/llms.txt) · [OpenAPI document](https://skmtc.dev/maket/apis/virtual-architect-api/revisions/ad71cae36f29?raw)
