---
title: "Get an expanded floorplan-review asset (floorplan, image, or document) with chat thread context"
method: GET
path: "/v1/admin/floorplan-review/floorplans/{assetId}"
tags: ["Admin Floorplan Review"]
---

# Get an expanded floorplan-review asset (floorplan, image, or document) with chat thread context

`GET /v1/admin/floorplan-review/floorplans/{assetId}`

## Path parameters

- `assetId` string, required

## Response `200`

Floorplan review asset retrieved successfully

- FloorplanReviewAssetApiResponseDto
  - `success` boolean, required — Indicates if the request was successful
  - `message` string, required — Human readable message
  - `data` union, required — Response data
    - object
      - `id` string, uuid, required — Unique identifier of the asset
      - `collectionId` string, uuid, required — ID of the collection this asset belongs to
      - `folderId` string, uuid, nullable — ID of the folder this asset belongs to
      - `name` string, required — Name of the asset
      - `type` 'floorplan', required
      - `thumbnailUrls` string[], required — Ordered preview thumbnail URLs
      - `metadata` unknown, required
      - `lockedAt` unknown, required
      - `isLocked` boolean, required — Whether the asset is currently locked (computed from lockedAt and TTL)
      - `deletedAt` unknown
      - `createdAt` unknown, required
      - `updatedAt` unknown, required
      - `details` object[], required — Array of floor entities
        - `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` string, required
          - `floorNumber` integer, required
          - `floorName` string
          - `Vertices` object[], required
            - `uid` string, required
            - `coord` union[], required
              - …
            - `height` number, required
            - `edges` string[], required
          - `Edges` object[], required
            - `uid` string, required
            - `isWall` boolean, required
            - `thickness` number, required
            - `openings` union[], required
              - …
            - `vertices` union[], required
              - …
            - `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
          - `Fixtures` object[], required
            - `uid` string, required
            - `spec` 'ChairOttoman' | 'OfficeChair' | 'CalKingBed' | 'KingBed' | 'QueenBed' | 'FullBed' | 'TwinBed' | 'CribBed' | 'NightStand' | 'Dresser' | 'Sofa1S' | 'Sofa2S' | 'Sofa3S' | 'SofaL' | 'CoffeeTable' | 'MediaUnit' | 'Shower' | 'ShowerM' | 'ShowerL' | 'Bathtub' | 'BathtubFreestanding' | 'Toilet' | 'Sink' | 'DoubleVanity' | 'RectDiningTable6' | 'RectDiningTable8' | 'RoundDiningTable4' | 'SquareDiningTable4' | 'SquareDiningTable8' | 'Stove' | 'Refrigerator' | 'Dishwasher' | 'KitchenSink' | 'KitchenCabinetL' | 'KitchenCabinetStraight' | 'KitchenIsland4P' | 'KitchenIsland2P' | 'KitchenIsland4PWithSink' | 'KitchenIsland2PWithSink' | 'KitchenCounterL' | 'KitchenCounterU' | 'KitchenCounterI' | 'KitchenCounterIMini' | 'KitchenCounterLMini' | 'KitchenCounterUWallCabinets' | 'KitchenCounterLWallCabinets' | 'KitchenCounterLMiniWallCabinets' | 'KitchenCounterIWallCabinets' | 'KitchenCounterIMiniWallCabinets' | 'FloorLamp' | 'Plant' | 'PlantM' | 'PlantS' | 'TableLamp' | 'BBQ' | 'LoungeChair' | 'LoungeChairS' | 'OutdoorDiningTableWithChairs' | 'OfficeDesk' | 'OfficeDeskL' | 'FilingCabinet' | 'WasherAndDryer' | 'WasherAndDryerCombo' | 'Bench' | 'CoatHook' | 'LaundrySink' | 'WaterHeater' | 'ConsoleWithMirror' | 'SideTable' | 'Bookshelf' | 'Credenza' | 'CircularRug' | 'RectangularRug' | 'Sedan' | 'SUV' | 'StraightStaircase' | 'UShapedStaircase' | 'LShapedStaircaseLanding' | 'LShapedStaircaseWinder' | 'PictureFrame' | 'GenericObject' | 'HVACUnit' | 'ClothingRack' | 'PoolTable' | 'PingPongTable' | 'Treadmill' | 'ExerciseBike' | 'WeightRack' | 'GymBench' | 'YogaMat' | 'BuiltInShelf' | 'BuiltInBar' | 'BuiltInBarWithIsland' | 'Column' | 'Post' | 'Railing', required
            - `position` union[], required
              - …
            - `rotation` number, required
            - `mirrorX` boolean
            - `mirrorY` boolean
            - `dimensions` object
          - `UnattachedOpenings` union[]
            - union
              - …
        - `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', 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
        - `cameras` object[], required
          - `id` string, uuid, required — Camera ID
          - `level` integer, required — Level of floor the camera is on
          - `name` string, required — Name of camera
          - `heightRelative` number, required
          - `position` union[], required — Position of camera
            - union
              - …
          - `rotation` number, required — Rotation of camera
          - `pitch` number, required — Camera pitch in degrees; 0 is level, positive looks down
          - `fov` number, required — Field of view of camera
          - `aspectRatio` '1:1' | '4:3' | '3:2' | '16:9' | '2:3' | '4:5' | '9:16', required — Aspect ratio for generated renders
          - `active` boolean, required — Camera active status
          - `llmPrompt` string, nullable, required
          - `inspirationImageAssetIds` string[], required — Asset IDs of inspiration images attached to this camera (max 4)
          - `renderCount` integer, required — Number of renders for this camera
          - `createdAt` unknown, required
          - `updatedAt` unknown, required
      - `recognizer` object, nullable, required — Resolved recognizer artifacts for the before/after view; null for non-recognized or legacy plans
        - `recognitionId` string, uuid, nullable, required — Recognition root id when resolved via floorplan_recognition_outputs; null for a legacy metadata.recognizer fallback
        - `sourceFiles` object[], required
          - `assetId` string, uuid, required
          - `name` string, required
          - `url` string, uri, required
          - `mimeType` string, required
          - `pageNumber` integer, nullable, required — This file's recognized PDF page number, or null for a non-PDF input
        - `preprocessed` object[], required
          - `assetId` string, uuid, required
          - `name` string, required
          - `url` string, uri, required
        - `preprocessedHelper` object[], required
          - `assetId` string, uuid, required
          - `name` string, required
          - `url` string, uri, required
        - `scaleSource` string, required
        - `scaleConfidence` number, required
        - `floorplanType` object, nullable, required
          - `category` 'residential' | 'commercial' | 'mixed_use' | 'unknown', required
          - `displayLabel` string, required
          - `confidence` number, required — Classifier confidence, 0..1
        - `completedAt` string, required
      - `chatThreadId` string, uuid, nullable, required — Chat thread ID that generated the floorplan
      - `projectId` string, uuid, nullable, required — Project ID associated with the floorplan, null if no chat thread is associated
      - `generation` object, nullable, required — Generation context within the chat, null if unresolved
        - `index` integer, required
        - `total` integer, required
        - `siblingAssetIds` string[], required
        - `boundaryMessageId` string, uuid, required
      - `generationRecord` object, nullable, required — Provenance of the generation that produced this plan; null for drawn/uploaded or pre-provenance plans
        - `model` string, nullable, required
        - `thinkingLevel` string, nullable, required
        - `latencyMs` integer, nullable, required
      - `userId` string, uuid, nullable, required — User ID that owns the chat thread, null if no thread is associated
      - `userEmail` string, nullable, required — Email of the user that owns the chat thread, null if no thread is associated
      - `userName` string, nullable, required — Display name of the user that owns the chat thread, null if no thread or unset
      - `counterpart` object, nullable, required — The other member of this floorplan's family for the admin version toggle: the frozen original artifact or the user's latest live copy. `role` is the counterpart's role (the viewed asset holds the opposite). Null when no sibling exists (drawn/uploaded, or a generation never saved to a project).
        - `assetId` string, uuid, required
        - `role` 'original' | 'current', required
    - object
      - `id` string, uuid, required — Unique identifier of the asset
      - `collectionId` string, uuid, required — ID of the collection this asset belongs to
      - `folderId` string, uuid, nullable — ID of the folder this asset belongs to
      - `name` string, required — Name of the asset
      - `type` 'image', required
      - `thumbnailUrls` string[], required — Ordered preview thumbnail URLs
      - `metadata` unknown, required
      - `lockedAt` unknown, required
      - `isLocked` boolean, required — Whether the asset is currently locked (computed from lockedAt and TTL)
      - `deletedAt` unknown
      - `createdAt` unknown, required
      - `updatedAt` unknown, required
      - `details` object, required
        - `mimeType` string, required — Mimetype of the storage file
        - `fileUrl` string, uri, required — URL using file's storage key
        - `sizeInBytes` integer, required — Storage file size
      - `traceSources` object, nullable
        - `recognitionId` string, required
        - `files` object[], required — Submitted files of this upload's open recognition, in submission order
          - `assetId` string, uuid, required
          - `name` string, required
          - `url` string, uri, required
          - `mimeType` string, required
          - `pageNumber` integer, nullable, required — This file's recognized PDF page number, or null for a non-PDF input
    - object
      - `id` string, uuid, required — Unique identifier of the asset
      - `collectionId` string, uuid, required — ID of the collection this asset belongs to
      - `folderId` string, uuid, nullable — ID of the folder this asset belongs to
      - `name` string, required — Name of the asset
      - `type` 'document', required
      - `thumbnailUrls` string[], required — Ordered preview thumbnail URLs
      - `metadata` unknown, required
      - `lockedAt` unknown, required
      - `isLocked` boolean, required — Whether the asset is currently locked (computed from lockedAt and TTL)
      - `deletedAt` unknown
      - `createdAt` unknown, required
      - `updatedAt` unknown, required
      - `details` object, required
        - `mimeType` string, required — Mimetype of the storage file
        - `fileUrl` string, uri, required — URL using file's storage key
        - `sizeInBytes` integer, required — Storage file size
      - `traceSources` object, nullable
        - `recognitionId` string, required
        - `files` object[], required — Submitted files of this upload's open recognition, in submission order
          - `assetId` string, uuid, required
          - `name` string, required
          - `url` string, uri, required
          - `mimeType` string, required
          - `pageNumber` integer, nullable, required — This file's recognized PDF page number, or null for a non-PDF input
  - `timestamp` string, date-time, required — Timestamp of the response

---

[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-service-production.skmtc.workers.dev/v1/apis/maket/virtual-architect-api/revisions/7635e6f94477/schema)
