Documentatie voor de API voor plattegronden#
Basis-URL:
https://api.ideal.house
Versie: v1
Bijgewerkt: 2026-08-09
📖 Overzicht#
De API voor plattegronden maakt met AI één zwart-witte conceptplattegrond van een woning in CAD-stijl, van bovenaf gezien, op basis van gestructureerde ruimtevereisten en een optionele eigen tekstinstructie of referentieafbeelding.
De uitvoer is bedoeld om in een vroege fase indelingen te verkennen. Het is geen bouwtekening. Gegenereerde afmetingen, geometrie, plaatsing van voorzieningen en naleving van bouwvoorschriften moeten door een gekwalificeerde professional worden beoordeeld.
De werkstroom is asynchroon:
- Een taak aanmaken — Dien de plattegrondparameters in en ontvang een
taskId. - Resultaten regelmatig opvragen — Vraag het resultaateindpunt op met de
taskIdtotdat de taak een eindstatus bereikt.
🔐 Authenticatie#
Alle openbare API-verzoeken moeten een API-sleutel bevatten.
| Verzoekheader | Verplicht | Waarde |
|---|---|---|
APIKEY | ✅ Ja | Je API-sleutel |
Content-Type | ✅ Ja bij POST | application/json |
[!WARNING] Bewaar je API-sleutel veilig. Stel deze niet bloot in code aan de clientzijde of openbare repositories.
💰 Creditafschrijving#
Credits worden afgeschreven nadat een generatietaak succesvol is aangemaakt. Als de taak uiteindelijk mislukt, worden de afgeschreven credits automatisch terugbetaald. Onvoldoende credits leveren foutcode 9051 op.
Modeltype (modelType) | Uitvoerafmetingen | Tegoedeenheden |
|---|---|---|
Base | 1536 × 1024 | 10 |
Pro | 2496 × 1664 | 20 |
Flash wordt niet ondersteund door de API voor plattegronden.
Zie Referentie voor creditafschrijving voor het algemene factureringsgedrag.
📌 API-endpoints#
1. Een plattegrondtaak aanmaken#
Maakt een taak voor het genereren van een plattegrond aan en retourneert een unieke taak-ID.
Eindpunt
POST /api/v1/floorPlan/generate
Verzoekheaders
| Verzoekheader | Verplicht | Beschrijving |
|---|---|---|
APIKEY | ✅ Ja | API-authenticatiesleutel |
Content-Type | ✅ Ja | Moet application/json zijn |
Verzoekinhoud#
| Veld | Type | Verplicht | Beschrijving | Standaardwaarde |
|---|---|---|---|---|
bedrooms | integer | ❌ Nee | Aantal slaapkamers van 0 tot 5 | 2 |
bathrooms | number | ❌ Nee | Totaal aantal badkamers van 0.5 tot 4, in stappen van 0.5 | 1.5 |
totalArea | string | ✅ Ja | Positieve gewenste totale oppervlakte met eenheid m² of ft², zoals 220 m² of 1386 ft² | — |
bedroomAreaRanges | array<object> | ❌ Nee | Optionele richtlijnen voor slaapkamerafmetingen. Zie Oppervlaktebereiken voor slaapkamers | Afgeleid van totalArea wanneer weggelaten |
bathroomDetails | object | ❌ Nee | Voorkeuren uitsluitend voor volledige badkamers. Zie Badkamerdetails | — |
kitchenDetails | object | ❌ Nee | Optionele keukenconfiguratie. Zie Keukendetails | — |
keyRooms | array<string> | ❌ Nee | Extra kamers of ruimten. Zie Bijzondere kamers | [] |
prompt | string | ❌ Nee | Aanvullende prioriteiten voor de indeling. Kan gestructureerde aantallen of harde visuele beperkingen niet overschrijven | "" |
refImageUrl | string | ❌ Nee | Openbaar toegankelijke URL van een referentieafbeelding | "" |
modelType | string | ❌ Nee | Mogelijke waarden: Base, Pro | Base |
[!IMPORTANT] De openbare API valideert
bedroomsmomenteel als0–5enbathroomsals0.5–4. Waarden die in een andere clientinterface beschikbaar zijn, verruimen deze serverlimieten niet.
Algemene verzoekregels#
- Alle opsommingswaarden zijn hoofdlettergevoelig en moeten de Engelse waarden uit dit document gebruiken.
totalAreais een gewenste totale oppervlakte die de schaal en verhoudingen stuurt; deze wordt niet behandeld als een exacte bouwmaat.- Bij het samenstellen van de gestructureerde afbeeldingsinstructie wordt de effectieve eigen tekstinstructie beperkt tot de eerste 800 tekens.
- Gestructureerde velden hebben voorrang op tegenstrijdige instructies in
prompt. - Een geslaagde taak genereert precies één afbeelding.
📐 Totale oppervlakte#
totalArea bevat één positieve numerieke waarde gevolgd door een oppervlakte-eenheid.
| Eenheid | Voorbeeld |
|---|---|
m² | 220 m² |
ft² | 1386 ft² |
Een spatie vóór de eenheid wordt aanbevolen. Positieve decimale waarden worden geaccepteerd.
Geldige voorbeelden:
{
"totalArea": "200 m²"
}
{
"totalArea": "1850 ft²"
}
🛏️ Oppervlaktebereiken voor slaapkamers#
bedroomAreaRanges geeft richtlijnen voor de relatieve grootte van slaapkamers. Het vraagt niet om numerieke oppervlaktelabels in de gegenereerde afbeelding.
Elk element heeft de volgende structuur:
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
name | string | ❌ Nee | Aanduiding van de slaapkamer, bijvoorbeeld Room 1 (Master) of Room 2 |
minArea | string | ❌ Nee | Positieve minimumoppervlakte |
maxArea | string | ❌ Nee | Positieve maximumoppervlakte; mag niet kleiner zijn dan minArea |
unit | string | ❌ Nee | Mogelijke waarden: m², ft²; gebruik dezelfde eenheid als totalArea |
Voorbeeld met expliciet bereik
{
"bedroomAreaRanges": [
{
"name": "Room 1 (Master)",
"minArea": "30",
"maxArea": "40",
"unit": "m²"
},
{
"name": "Room 2",
"minArea": "20",
"maxArea": "30",
"unit": "m²"
}
]
}
Regels wanneer een niet-lege array wordt opgegeven:
- De lengte moet gelijk zijn aan
bedrooms. - Elke opgegeven
minAreaenmaxAreamoet een positieve numerieke tekenreeks zijn. - Wanneer beide waarden zijn opgegeven, geldt
minArea <= maxArea. - Indien opgegeven, moet
unitgelijk zijn aanm²offt². - Namen blijven behouden. Lege elementen of null-elementen geven geen richtlijn voor de grootte.
Automatische bereiken bij weglaten#
Het veld mag worden weggelaten of als lege array worden verstuurd. Als geen enkel element een effectieve minArea of maxArea bevat, leidt het gestructureerde generatiepad interne slaapkamerbereiken af van totalArea en bedrooms:
- Het oppervlaktebudget voor slaapkamers begint bij 20% van de totale oppervlakte voor één slaapkamer.
- Het budget neemt met 7.5 procentpunten toe per extra slaapkamer, tot maximaal 50%.
- De eerste slaapkamer krijgt wegingsfactor
1.3voor de grootte; elke andere slaapkamer krijgt wegingsfactor1.0. - Elke streefwaarde wordt omgezet in een benaderend bereik van
±10%, afgerond op hele oppervlakte-eenheden. - De eenheid wordt overgenomen van
totalArea. - Bestaande niet-lege kamernamen blijven behouden; anders gebruikt de server
Room 1,Room 2enzovoort.
Voor 200 m² en 4 slaapkamers is de huidige afgeleide richtlijn ongeveer:
[
{ "name": "Room 1", "minArea": "23", "maxArea": "28", "unit": "m²" },
{ "name": "Room 2", "minArea": "18", "maxArea": "22", "unit": "m²" },
{ "name": "Room 3", "minArea": "18", "maxArea": "22", "unit": "m²" },
{ "name": "Room 4", "minArea": "18", "maxArea": "22", "unit": "m²" }
]
Deze waarden zijn interne richtlijnen voor de verhoudingen en garanderen geen definitieve kameroppervlakten. Expliciete geldige bereiken hebben altijd voorrang op automatische bereiken.
Wanneer bedrooms gelijk is aan 0, laat je bedroomAreaRanges weg of stuur je [].
🛁 Badkamerdetails#
bathrooms geeft het totale aantal badkamers aan:
- Het gehele deel is het aantal volledige badkamers.
- Een fractie van
.5voegt één toiletruimte toe. - Voor elke volledige badkamer wordt een toilet, wastafel(meubel) en douche of natte zone gevraagd.
- Een toiletruimte bevat alleen een toilet en wastafel(meubel), zonder douche of badkuip.
bathroomDetails configureert uitsluitend volledige badkamers:
{
"bathroomDetails": {
"fullBathroomOptions": [
{
"name": "Bathroom 1",
"wetDrySeparation": "yes",
"bathtub": "required"
},
{
"name": "Bathroom 2",
"wetDrySeparation": "no",
"bathtub": "optional"
}
]
}
}
| Veld | Type | Toegestane waarden | Beschrijving |
|---|---|---|---|
name | string | Bathroom 1, Bathroom 2 enzovoort | Optionele weergaveaanduiding |
wetDrySeparation | string / null | yes, no, null | Of een afgescheiden natte zone moet worden getoond |
bathtub | string / null | no, optional, required, null | Voorkeur voor een badkuip |
Regels:
fullBathroomOptions.lengthmag niet groter zijn danfloor(bathrooms).- De array mag uitsluitend de volledige badkamers bevatten waarvoor voorkeuren zijn geselecteerd.
- Een waarde van
nullbetekent niet opgegeven. - Een verplichte badkuip komt bovenop de standaardvoorzieningen van een volledige badkamer; deze vervangt het toilet of de douche niet.
- Een scheiding tussen nat en droog is een interne scheidingswand binnen een meegetelde badkamer, geen extra badkamer.
🍳 Keukendetails#
Alle onderliggende velden van kitchenDetails zijn optioneel. Laat het hele object weg wanneer geen keukenvoorkeur is geselecteerd.
{
"kitchenDetails": {
"type": "open",
"size": "standard",
"layout": "U",
"islandType": "preparation",
"storage": "maximum",
"features": ["breakfast nook", "pantry"]
}
}
| Veld | Type | Toegestane waarden |
|---|---|---|
type | string | open, semi-open, closed |
size | string | small, standard, large, extra large |
layout | string | I, L, U, gallery |
islandType | string | no, preparation, cooking, entertainment |
storage | string | minimal, standard, maximum |
features | array<string> | eating bar, breakfast nook, pantry |
Een gedeeltelijke configuratie is geldig. Bijvoorbeeld:
{
"kitchenDetails": {
"type": "semi-open"
}
}
🚪 Bijzondere kamers#
keyRooms accepteert een array met deze exacte waarden:
| Waarde | Beschrijving |
|---|---|
walk-in closet | Afzonderlijke inloopkast verbonden met een slaapkamerzone |
laundry room | Afzonderlijke wasruimte |
storage room | Algemene berging |
utility room | Technische of dienstruimte |
home office | Afzonderlijk kantoor of studeerkamer |
garage | Garage met een voertuigopening naar buiten en interne toegang tot de woning |
pantry | Voorraadkast naast de keuken |
combined living-dining | Eén gezamenlijke woon- en eetzone |
balcony | Buitenbalkon verbonden met de woonruimte of hoofdslaapkamer |
De oude webwaarde balcon wordt ook geaccepteerd en genormaliseerd naar balcony.
Regels:
- Lege waarden worden genegeerd en dubbele waarden verwijderd.
- Geselecteerde bijzondere kamers worden eenmaal aangevraagd.
- Niet-geselecteerde optionele ruimten worden uitgesloten van het gegenereerde ruimteprogramma.
- Als
pantryzowel inkitchenDetails.featuresals inkeyRoomsvoorkomt, wordt slechts één voorraadkast aangevraagd.
Voorbeeld:
{
"keyRooms": [
"garage",
"home office",
"combined living-dining"
]
}
🖼️ Referentieafbeelding#
refImageUrl is optioneel en moet rechtstreeks toegankelijk zijn voor de API-server.
Vereisten:
- Bestandsformaat: JPG/JPEG, PNG of WebP.
- Maximale bestandsgrootte: 20 MB.
- Minimale afmetingen: 128 × 128 px.
- Maximale afmetingen: 6,000 × 6,000 px. Grotere afbeeldingen worden vóór verwerking proportioneel verkleind.
De referentieafbeelding stuurt de indeling, onderlinge ligging, verhoudingen of visuele stijl. Deze overschrijft geen gestructureerde aantallen kamers of andere harde beperkingen.
🤖 Modeltypen#
| Waarde | Beschrijving |
|---|---|
Base | Standaard. Evenwichtige generatiekwaliteit, uitvoer van 1536 × 1024 |
Pro | Uitvoer met hogere resolutie van 2496 × 1664 en een langere verwachte generatietijd |
Alleen Base en Pro worden ondersteund.
Velden buiten de openbare functionele interface#
Openbare API-clients mogen niet afhankelijk zijn van de volgende velden:
| Veld | Opmerkingen |
|---|---|
imageNumbers | De huidige generator retourneert altijd één afbeelding; dit veld is niet nodig |
extData | Interne metadata voor het volgen van webtaakgroepen; openbare clients moeten dit weglaten |
isApiCall | Bepaald door het API-eindpunt, niet door de verzoekinhoud |
genByMember | Interne generatiemetadata, geen verzoekveld voor plattegronden |
Verwijderde oude velden die niet mogen worden verstuurd:
floorplanSetting
roomCounts
grossArea
totalAreaValue
totalAreaUnit
totalAreaType
fullBathrooms
halfBathrooms
halfBathroomRequirement
kitchenType
diningRooms
livingRooms
extras
referenceImage
hasDetailOptions
📥 Voorbeelden voor het aanmaken van een taak#
Minimaal verzoek met automatische slaapkamerbereiken#
curl -X POST "https://api.ideal.house/api/v1/floorPlan/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"modelType": "Pro",
"prompt": "Upper floor of a two-story Saudi Arabian villa with a master bedroom, family living area, staircase landing, and balcony"
}'
Volledig verzoek#
cURL
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.5,
"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": "no", "bathtub": "optional"}
]
},
"kitchenDetails": {
"type": "open",
"size": "standard",
"layout": "U",
"islandType": "preparation",
"storage": "maximum",
"features": ["breakfast nook", "pantry"]
},
"keyRooms": ["garage", "home office", "combined living-dining"],
"prompt": "Bright modern home with good natural lighting",
"refImageUrl": "https://example.com/reference-plan.png",
"modelType": "Pro"
}'
Java (OkHttp)
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class FloorPlanApiExample {
private static final String BASE_URL = "https://api.ideal.house";
private static final String API_KEY = "your_api_key_here";
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
String json = """
{
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"keyRooms": ["walk-in closet", "balcony"],
"prompt": "Upper floor with a master bedroom and family living area",
"modelType": "Pro"
}
""";
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/floorPlan/generate")
.addHeader("APIKEY", API_KEY)
.addHeader("Content-Type", "application/json")
.post(RequestBody.create(json, MediaType.parse("application/json")))
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
}
}
Python (requests)
import requests
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
payload = {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"keyRooms": ["walk-in closet", "balcony"],
"prompt": "Upper floor with a master bedroom and family living area",
"modelType": "Pro",
}
response = requests.post(
f"{BASE_URL}/api/v1/floorPlan/generate",
headers={"APIKEY": API_KEY, "Content-Type": "application/json"},
json=payload,
)
response.raise_for_status()
print("Task ID:", response.json()["data"])
Node.js (axios)
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function createFloorPlanTask() {
const response = await axios.post(
`${BASE_URL}/api/v1/floorPlan/generate`,
{
bedrooms: 4,
bathrooms: 2,
totalArea: '200 m²',
keyRooms: ['walk-in closet', 'balcony'],
prompt: 'Upper floor with a master bedroom and family living area',
modelType: 'Pro'
},
{
headers: {
APIKEY: API_KEY,
'Content-Type': 'application/json'
}
}
);
console.log('Task ID:', response.data.data);
return response.data.data;
}
createFloorPlanTask();
Antwoord bij succesvol aanmaken van een taak#
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| Veld | Type | Beschrijving |
|---|---|---|
code | integer | 0 geeft aan dat de taak succesvol is aangemaakt |
message | string | Antwoordbericht |
data | long | Taak-ID om het resultaateindpunt regelmatig op te vragen |
2. Taakresultaat ophalen#
Retourneert de taakvoortgang en de gegenereerde afbeelding zodra deze beschikbaar is.
Eindpunt
GET /api/v1/floorPlan/result?taskId={taskId}
Verzoekheaders
| Verzoekheader | Verplicht | Beschrijving |
|---|---|---|
APIKEY | ✅ Ja | API-authenticatiesleutel |
Queryparameters
| Queryparameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
taskId | long | ✅ Ja | Taak-ID die het aanmaakendpoint retourneert |
Voorbeelden van resultaatverzoeken#
cURL
curl -X GET "https://api.ideal.house/api/v1/floorPlan/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Python status regelmatig opvragen
import time
import requests
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
task_id = 1234567890123456789
while True:
response = requests.get(
f"{BASE_URL}/api/v1/floorPlan/result",
headers={"APIKEY": API_KEY},
params={"taskId": task_id},
)
response.raise_for_status()
task = response.json()["data"]
print(task["status"], task["percentage"], task["waitNumber"])
if task["status"] in ("Success", "Failed", "Termination"):
break
time.sleep(3)
if task["status"] == "Success":
print("Result URL:", task["output"]["resultUrl"])
Node.js status regelmatig opvragen
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function pollFloorPlanResult(taskId) {
while (true) {
const response = await axios.get(
`${BASE_URL}/api/v1/floorPlan/result`,
{
headers: { APIKEY: API_KEY },
params: { taskId }
}
);
const task = response.data.data;
console.log(task.status, task.percentage, task.waitNumber);
if (['Success', 'Failed', 'Termination'].includes(task.status)) {
if (task.status === 'Success') {
console.log('Result URL:', task.output.resultUrl);
}
return task;
}
await new Promise(resolve => setTimeout(resolve, 3000));
}
}
pollFloorPlanResult('1234567890123456789');
Antwoord voor een voltooide taak#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Success",
"waitNumber": 0,
"percentage": 100,
"input": {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"bedroomAreaRanges": [
{"name": "Room 1", "minArea": "23", "maxArea": "28", "unit": "m²"},
{"name": "Room 2", "minArea": "18", "maxArea": "22", "unit": "m²"},
{"name": "Room 3", "minArea": "18", "maxArea": "22", "unit": "m²"},
{"name": "Room 4", "minArea": "18", "maxArea": "22", "unit": "m²"}
],
"keyRooms": ["walk-in closet", "balcony"],
"prompt": "Upper floor with a master bedroom and family living area",
"modelType": "Pro"
},
"output": {
"resultUrl": "https://cdn.ideal.house/output/floor-plan.jpg",
"width": 2496,
"height": 1664
}
}
}
Antwoord tijdens verwerking#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Processing",
"waitNumber": 1,
"percentage": 45,
"input": {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"modelType": "Pro"
},
"output": null
}
}
Antwoord voor een mislukte taak#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"modelType": "Pro"
},
"output": null
}
}
Resultaatvelden#
| Veld | Type | Beschrijving |
|---|---|---|
id | long | Taak-ID |
status | string | Huidige taakstatus |
waitNumber | integer | Aantal taken vóór deze taak in de wachtrij; 0 betekent dat er geen taken voor staan |
percentage | integer | Geschat voltooiingspercentage van 0 tot 100 |
input | object | Genormaliseerde taakinvoer, inclusief automatisch afgeleide slaapkamerbereiken indien van toepassing |
output | object / null | Gegenereerde uitvoer wanneer de taak slaagt; anders meestal null |
output.resultUrl | string | Ondertekende URL van de gegenereerde plattegrondafbeelding |
output.width | integer | Uitvoerbreedte in pixels |
output.height | integer | Uitvoerhoogte in pixels |
📊 Taakstatus#
| Status | Beschrijving |
|---|---|
Unprocessed | Taak is aangemaakt maar nog niet gestart |
Processing | Taak wordt verwerkt |
Success | Taak is voltooid en output.resultUrl is beschikbaar |
Failed | De taak is mislukt |
Termination | De taak is onderbroken of beëindigd |
Vraag de status elke 3–5 seconden op. Zie Taaklimiet voor de API.
❌ Foutantwoorden#
Alle foutantwoorden gebruiken de algemene antwoordstructuur:
{
"code": 1011,
"message": "bedroomAreaRanges size must match bedrooms",
"data": null
}
| Foutcode | Naam | Beschrijving | Aanbevolen actie |
|---|---|---|---|
1001 | FAILED | Algemene verzoekfout | Controleer het veld message |
1003 | INTERNAL_ERROR | Interne serverfout | Probeer het later opnieuw; neem contact op met ondersteuning als het probleem aanhoudt |
1011 | PARAM_ERROR | Ongeldige verzoekparameter | Controleer aantallen, eenheden, opsommingswaarden en geneste arrays |
5002 | API_KEY_INVALID | Ongeldige of ontbrekende API-sleutel | Controleer de header APIKEY |
9010 | SCAN_TEXT_ERROR | Tekstinstructie afgekeurd bij inhoudscontrole | Pas de tekstinstructie aan |
9038 | PROHIBITED_CONTENT | Gegenereerde uitvoer bevat verboden inhoud | Pas de invoer aan en probeer het opnieuw |
9051 | COINS_NOT_ENOUGH | Onvoldoende credits | Voeg credits toe en probeer het opnieuw |
Zie Foutcodereferentie voor de volledige lijst met algemene fouten.
🔄 Opmerkingen over webintegratie#
De geauthenticeerde webapplicatie en de openbare API gebruiken verschillende eindpunten en authenticatiemethoden:
| Clienttype | Eindpunt | Authenticatie |
|---|---|---|
| Webapplicatie | POST /floorPlan/generate | token-header voor aanmelding |
| Openbare API | POST /api/v1/floorPlan/generate | Verzoekheader APIKEY |
De structuren van de functionele velden komen overeen, maar openbare API-clients moeten de serverlimieten en openbare interface uit dit document volgen. In het bijzonder:
- Webclients kunnen interne
imageNumbersenextDatabevatten; openbare clients hebben deze niet nodig. - De openbare API bepaalt metadata voor de API-aanroep op basis van het eindpunt en de aanmeldgegevens. Verzoekvelden zoals
isApiCallengenByMemberzijn overbodig. balconwordt voor compatibiliteit geaccepteerd en genormaliseerd naarbalcony; nieuwe integraties moetenbalconyversturen.- De huidige openbare serverlimieten blijven
0–5slaapkamers en0.5–4badkamers, zelfs als een andere interface tijdelijk ruimere keuzemogelijkheden toont.