Skip to main content
PlanFinder

PLANFINDER GENERATE API

Floor plans, built into your product.

Send an apartment outline and room requirements. Get unique floor plan layouts back as structured geometry.

For planning tools, property platforms and custom workflows.

POST /v1/plansapplication/json
{
  "geometry": {
    "units": "mm",
    "boundary": [[0, 0], [8600, 0], …],
    "entrance": [1800,7200]
  },
  "program": { "beds": 2, "baths": 1, … },
  "country": "DE",
  "options": { "candidates": 16 }
}
Geometry you can build withcandidates[].rooms[].polygon
Bearer API keysChoose 1–32 attempts per requestWalls, doors & room constraintsOriginal units & coordinatesUsage metering

FROM OUTLINE TO LAYOUT

Give it a space. See what fits.

Set a brief and generate completed plans. No API key needed for the demo.

Live sandbox

Your brief

One attempt is one generation pass. Start with a few and adjust based on your results. Only unique plans matching your brief are returned.

Up to 500 mm each way by default, along the same wall. The entrance stays in place when it fits. Plans with a blocked entrance opening or door swing are filtered out, including when movement is off.

Room requirements

Width alone checks the shorter side of the largest rectangle inside the clear room. Add depth to require a rectangle fitting both dimensions. Measurements account for wall thickness.

Contact is measured along your supplied facade edges.

Walls, doors & connections

Lengths in mm. Clear dimensions account for wall thickness.

Use the JSON editor for additional room connection rules. Only plans meeting the whole brief are returned.

Edit request JSON

Change the boundary, entrance, facades or room pins. Coordinates use the units in your request.

Public demo limits apply. Your paid API key stays on your server.

Two-bedroom corner apartment with two exterior facades and an entrance beside a shared stair / lift core. 8.6 × 9.6 m overall, with a 3.6 × 2.4 m core cut-out. Dimensions are illustrative.

Apartment layout reference

Your input outline

Ready when you are. Generate to explore the possibilities.

MADE FOR YOUR WORKFLOW

One integration. Room to explore.

01 / DEFINE

Start with your geometry

Send a rectilinear apartment boundary, entrance and facade edges. Set the room counts and optional spatial overrides.

02 / GENERATE

Explore several possibilities

Choose how many attempts to run, from 1 to 32. The API completes the layouts, removes duplicates and returns plans meeting your requirements.

03 / BUILD

Use the result your way

Receive room polygons, walls, placed doors, room metrics and connections in your original units and coordinate system. Render, compare or process them in your product.

START BUILDING TODAY

Your integration starts here.

14 days. 2,000 attempts. Every API feature. Free until either limit is reached.

No credit card. No automatic charge.

DEVELOPER DOCUMENTATION

Your first generation request.

Call the API from your backend with a bearer key and a unique idempotency key.

Download OpenAPI

Examples follow the current sandbox request. Set PLANFINDER_API_KEY on your server.

A small, predictable API.

POST /v1/plans

Queue your chosen attempt count with your complete brief.

GET /v1/jobs/{jobId}

Poll until succeeded, then read result.candidates. Failed jobs include constraint feedback.

GET /v1/usage

Read usage, remaining attempts and the reset date.

GET /health

Check service health without a key.

Download an example request

A brief with real constraints

Set exterior and interior wall thicknesses, nominal door widths, clear room width × depth, net area, facade contact and direct door connections. The API checks all of them after completion. A strict brief can return NO_MATCHING_PLANS; attempts still count.

Input geometry

Simple rectilinear outlines, including globally rotated plans. Areas from 10–250 m², with normalized width and height up to 19 m. Supported units: mm, cm, m, in and ft. Boundary and room polygons follow wall centrelines; clear dimensions exclude the wall faces.

Safe retries

Reuse the same Idempotency-Key and request body to retrieve the same job for seven days. Polling and retries use no extra attempts. A different body with that key returns HTTP 409.

Attempts and returned variants

options.candidates sets the attempt count, from 1 to 32 (default: 16). It does not guarantee that many variants. Compare requestedAttempts and uniqueCandidates in the result to find the right count for your product.

BUILD YOUR INTEGRATION FIRST

14 days. 2,000 attempts. Free.

Whichever comes first. Every API feature and a key for your backend. Choose 1–32 attempts per request. No card and no automatic charge.

Get a free API key

MONTHLY API PLANS

Start small. Grow with your product.

Billed per generation attempt. You choose how many to use in each request. All plans include the complete API.

Billed monthly in EUR.
Prices exclude VAT.

What counts as one attempt?

One generation pass for your brief. Choose 1–32 per request. Start with a few and adjust based on your results; 32 is the maximum.

EXAMPLE

4 attempts requested 4 attempts used

Even if fewer matching plans are returned, or none. Duplicates and layouts that miss your requirements still count. Returned variants have no separate charge.

Starter

For your first product integration.

€99/ month

5,000 attempts per month

  • Choose 1–32 attempts per request
  • All room, wall, door and facade controls
  • Completed plans with checked requirements
  • Commercial product integrations

Hard monthly limitGeneration stops at your plan allowance. No overage charges.

Choose Starter

Scale

For established platforms and larger teams.

€799/ month

100,000 attempts per month

  • Choose 1–32 attempts per request
  • All room, wall, door and facade controls
  • Completed plans with checked requirements
  • Commercial product integrations

Hard monthly limitGeneration stops at your plan allowance. No overage charges.

Choose Scale

No unexpected usage charges. Your monthly allowance is a hard limit. Generation pauses when it is used and resumes at the next reset.

Invalid requests rejected before acceptance, polling and replays with the same idempotency key and body use no extra attempts. Your trial never converts to a paid plan automatically.

A few useful details.

What does the API generate?

Completed residential room layouts inside your apartment outline. Each candidate contains room polygons, thickened wall polygons, placed doors with nominal widths and drawing polylines, net room areas, facade contact and a door connection graph. Room polygons follow wall centrelines. Furniture, cabinetry, window geometry and 3D models are not included in the current API response. Requirements filter generated candidates; the API does not guarantee that every brief has a matching plan. You can use this geometry in your own renderer or CAD workflow.

How many attempts should I use?

Start with a few attempts while you test your integration. Compare the number of unique matching plans returned, then choose the count that gives your product enough variety. You can request any whole number from 1 to 32; 32 is the maximum, not a recommended batch size. More attempts explore more possibilities but do not guarantee more matching plans.

How are attempts counted?

One attempt is one generation pass for your brief. Requesting 4 attempts uses 4 attempts from your allowance, whether the API returns 4 matching plans, fewer plans or none. Duplicates and layouts rejected by your requirements still count. Invalid requests rejected before acceptance, polling and replays with the same idempotency key and body use no extra attempts.

Can I test an integration before paying?

Yes. Verify your email and create a free API key instantly, with 2,000 attempts for 14 days, whichever ends first. It uses the same request schema, constraints and 32-attempt batch limit as the paid API. The allowance is shared across your trial keys. Your trial starts when your key is created. No card, sales call or automatic charge. The sandbox above is also available without a key.

How do I keep my API key secure?

Call the paid API from your backend and read the key from an environment variable. The browser demo uses a separate public endpoint. Never include a paid key in frontend code.

Contact Us

Need a hand with your integration?

Create your trial key above and start building straight away. If you need integration advice, custom capacity or help with your requirements, send us a message.

PlanFinder HQ

Netherlands

Company Details

KVK: 72330546

We respect your privacy. No spam, ever.