Docs

API Documentation

Floor Plan Generation API Documentation

Base URL: https://api.ideal.house
Version: v1
Updated: 2026-06-23


Overview

The Floor Plan API creates an AI concept floor plan from structured room requirements. It is for early layout exploration rather than construction documents. The generated image is a black-and-white, top-down, CAD-style concept plan.

The workflow is asynchronous:

  1. Submit the selected program and receive a taskId.
  2. Poll the result endpoint with that taskId.

Authentication

Send an API key with every request:

HeaderValue
APIKEYYour API key
Content-Typeapplication/json

Create Floor Plan Task

POST /api/v1/floorPlan/generate

Request fields

FieldTypeRequiredRules
bedroomsintegerNo0-5; defaults to 2.
bathroomsnumberNo0.5-4 in 0.5 increments; defaults to 1.5. The server derives full and half bathrooms from this value.
totalAreastringYesPositive number followed by m² or ft², for example 220 m² or 1386 ft².
bedroomAreaRangesarrayYes when bedrooms > 0Exactly one item per bedroom.
bathroomDetailsobjectNoDetailed preferences for full bathrooms only.
kitchenDetailsobjectNoStructured kitchen configuration; type is the only kitchen-type source.
keyRoomsarray<string>NoOptional rooms/spaces. Every selected entry is requested exactly once; unselected entries must not be generated.
promptstringNoAdditional layout or style preference. It cannot override structured requirements.
refImageUrlstringNoReference image URL for layout, proportion, or style only.
modelTypestringNoBase or Pro; defaults to Base.

Image requirements: The optional reference image must use JPG/JPEG, PNG, or WebP, must be no larger than 20 MB, and must have dimensions from 128 × 128 px up to 6,000 × 6,000 px (inclusive). Images exceeding the maximum pixel dimensions are automatically scaled down proportionally to fit within 6,000 × 6,000 px before processing. Its URL must be directly accessible by the API server.

bedroomAreaRanges item

FieldTypeDescription
namestringLabel such as Room 1 (Master).
minAreastringPositive area number, if a range is specified.
maxAreastringPositive area number; cannot be less than minArea.
unitstringm² or ft².

Bedroom area ranges guide relative room sizing only. The generated floor plan does not render numeric area values, ranges, , or ft² labels.

bathroomDetails

{
  "fullBathroomOptions": [
    {
      "name": "Bathroom 1",
      "wetDrySeparation": "yes",
      "bathtub": "required"
    }
  ]
}
  • fullBathroomOptions can contain no more than the number of full bathrooms derived from bathrooms.
  • wetDrySeparation: yes or no.
  • bathtub: no, optional, or required.
  • Every full bathroom contains a visible toilet, vanity/sink, and shower or wet area. A required bathtub is additional; it never replaces the toilet.
  • A half bathroom is derived from a 0.5 increment and contains only a toilet and vanity/sink.

kitchenDetails

{
  "type": "open",
  "size": "standard",
  "layout": "U",
  "islandType": "no",
  "storage": "standard",
  "features": ["breakfast nook", "pantry"]
}
FieldAllowed values
typeopen, semi-open, closed
sizesmall, standard, large, extra large
layoutI, L, U, gallery
islandTypeno, preparation, cooking, entertainment
storageminimal, standard, maximum
featureseating bar, breakfast nook, pantry

keyRooms

Allowed entries:

walk-in closet
laundry room
storage room
utility room
home office
garage
pantry
combined living-dining
balcony

pantry may appear in both kitchenDetails.features and keyRooms; it is rendered only once. A selected garage includes a visible garage door or vehicle bay and a clear internal access door to the home.

Removed legacy fields

The following fields are not part of the Floor Plan contract and must not be sent: roomCounts, grossArea, totalAreaValue, totalAreaUnit, totalAreaType, fullBathrooms, halfBathrooms, halfBathroomRequirement, top-level kitchenType, diningRooms, livingRooms, extras, referenceImage, and hasDetailOptions.

Image modes

Floor Plan uses a common 3:2 landscape canvas for programs from compact one-bedroom homes to larger multi-bedroom layouts. Small programs remain compact and centered; larger programs use the additional width without being stretched.

modelTypeOutput sizeCredits
Base1536 × 102410
Pro2496 × 166420

Flash is not supported.

Request example

curl -X POST "https://api.ideal.house/api/v1/floorPlan/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "bedrooms": 3,
    "bathrooms": 2,
    "totalArea": "220 m²",
    "bedroomAreaRanges": [
      {"name": "Room 1 (Master)", "minArea": "30", "maxArea": "40", "unit": "m²"},
      {"name": "Room 2", "minArea": "20", "maxArea": "30", "unit": "m²"},
      {"name": "Room 3", "minArea": "20", "maxArea": "30", "unit": "m²"}
    ],
    "bathroomDetails": {
      "fullBathroomOptions": [
        {"name": "Bathroom 1", "wetDrySeparation": "yes", "bathtub": "required"},
        {"name": "Bathroom 2", "wetDrySeparation": "yes", "bathtub": "no"}
      ]
    },
    "kitchenDetails": {
      "type": "open",
      "size": "standard",
      "layout": "U",
      "islandType": "no",
      "storage": "standard",
      "features": ["breakfast nook", "pantry"]
    },
    "keyRooms": ["garage"],
    "modelType": "Pro"
  }'

Responses

Successful task creation returns the task identifier:

{
  "code": 0,
  "message": "success",
  "data": 1234567890123456789
}

Poll the generation result:

GET /api/v1/floorPlan/result?taskId={taskId}