Ideal House
Naar inhoud gaan

Documentatie voor de API voor woningontwerpen#

Basis-URL: https://api.ideal.house
Versie: v1
Bijgewerkt: 2026-06-12


📖 Overzicht#

Met de API voor woningontwerpen maak je een door AI gegenereerd presentatiebord voor een woning op basis van bouwstijl, oppervlakte, bouwkundige configuratie en gewenste interieurindeling. Bij een geslaagde generatie produceert de API precies 1 samengestelde resultaatafbeelding per taak. Deze combineert samenhangende 2D-plattegronden, gevelaanzichten en fotorealistische buitenaanzichten op één presentatiebord. Het resultaat wordt opgeslagen in output.resultUrl en staat ook als enig element in output.resultList. De werkstroom is asynchroon en bestaat uit twee stappen:

  1. Een taak aanmaken — Dien de parameters voor je woningontwerp in en ontvang een taskId.
  2. Resultaten regelmatig opvragen — Gebruik de taskId om de taakstatus op te vragen en de gegenereerde afbeeldingen op te halen.

🔐 Authenticatie#

Alle API-verzoeken moeten worden geauthenticeerd met een API Key.

Neem je API Key op in de verzoekheader:

VerzoekheaderWaarde
APIKEYyour_api_key_here

⚠️ Houd je API Key geheim. Maak deze niet zichtbaar in clientcode of openbare opslagplaatsen.


💰 Creditafschrijving#

[!WARNING] 🪙 Credits worden op basis van de geselecteerde modelType afgeschreven zodra de taak succesvol is aangemaakt. Als de taak uiteindelijk mislukt, worden de afgeschreven credits automatisch terugbetaald op je account.
Onvoldoende credits leveren foutcode 9051 op. 📄 Zie de referentie voor creditafschrijving.

Modeltype (modelType)Afgeschreven credits
Base10 tegoedeenheden
Pro20 tegoedeenheden

📌 API-endpoints#


1. Een taak voor een woningontwerp aanmaken#

Maakt een nieuwe AI-taak voor een woningontwerp aan en retourneert een unieke taskId waarmee je de status regelmatig kunt opvragen.

Eindpunt

Platte tekst
POST /api/v1/housePlan/generate

Verzoekheaders

VerzoekheaderVerplichtBeschrijving
APIKEY✅ JaJe API-authenticatiesleutel
Content-Type✅ Jaapplication/json

Verzoekinhoud

VeldTypeVerplichtBeschrijvingStandaardwaarde
stylestring / null✅ JaEngelse naam van de bouwstijl. Zie StijloptiesBarndominium
storiesstring✅ JaAantal bouwlagen. Mogelijke waarden: 1, 2, 3+2
bedroomsstring✅ JaAantal slaapkamers. Mogelijke waarden: 1, 2, 3, 4, 5+2
bathroomsstring✅ JaAantal badkamers. Mogelijke waarden: 1, 1.5, 2, 2.5, 3, 3.5, 4+1
totalAreastring✅ JaBereik van de totale oppervlakte in de notatie min-max unit. Zie Opties voor de totale oppervlakte150-200 m²
garageEnabledboolean✅ JaOf er een garage moet zijnfalse
garageTypestring / null⚠️ VoorwaardelijkVerplicht wanneer garageEnabled=true. Zie Garagetypennull
garageCapacitystring / null⚠️ VoorwaardelijkVerplicht wanneer garageEnabled=true. Zie Garagecapaciteitnull
basementstring✅ JaKeldertype. Zie KelderoptiesNone
roofTypestring / null❌ NeeType dakconstructie. Zie Daktypennull
outdoorSpacesarray<string>❌ NeeBuitenruimten. Zie Opties voor buitenruimten[]
layoutConceptstring / null❌ NeeAlgemeen concept voor de interieurindeling. Zie Indelingsconceptennull
bedroomAreaRangesarray<object>✅ JaOppervlaktebereiken voor slaapkamers. De lengte moet overeenkomen met het aantal slaapkamers. Zie Oppervlaktebereiken voor slaapkamersZie voorbeeld
bathroomLayoutsarray<object>✅ JaGeselecteerde badkamerindelingen. De lengte moet Math.floor(bathrooms) zijn. Zie BadkamerindelingenZie voorbeeld
kitchenLayoutstring / null❌ NeeKeukenindeling. Zie Keukenoptiesnull
kitchenFeatureOptionsarray<string>❌ NeeOptionele keukenvoorzieningen. Zie Keukenopties[]
keyRoomsstring / null❌ NeeBijzondere kamers, gescheiden door een komma en spatie. Zie Opties voor bijzondere kamersnull
promptstring❌ NeeEigen tekstinstructie om de generatie verder te sturen""
refImageUrlstring❌ NeeURL van een referentieafbeelding van een woning als stijlleidraad""
modelTypestring✅ JaKwaliteitsniveau van het model. Mogelijke waarden: Base, Pro. ⚠️ De modus Flash wordt niet ondersteundBase

🖼️ Afbeeldingsvereisten: De optionele referentieafbeelding moet JPG/JPEG, PNG of WebP gebruiken, mag niet groter zijn dan 20 MB en moet afmetingen hebben van 128 × 128 px tot en met 6,000 × 6,000 px. Afbeeldingen die de maximale pixelafmetingen overschrijden, worden vóór verwerking automatisch proportioneel verkleind tot ze binnen 6,000 × 6,000 px passen. De URL moet rechtstreeks toegankelijk zijn voor de API-server.


🎨 Stijlopties#

WaardeBeschrijving
BarndominiumStandaard. Hybride woning in de stijl van een metalen schuur
CabinRustieke houten blokhutstijl
Cape CodKlassieke symmetrische stijl uit New England
CoastalLichte, luchtige stijl geïnspireerd op het strand
ColonialTraditionele symmetrische koloniale architectuur
ContemporaryStrakke lijnen en moderne materialen
CraftsmanAmbachtelijke details met natuurlijke materialen
FarmhouseRustieke landelijke boerderijstijl
French CountryElegante Franse provinciale stijl
MediterraneanWarm stucwerk met terracotta-elementen
Mid-Century ModernStrak geometrisch modernisme uit de jaren 1950–70
ModernMinimalistisch modern ontwerp met platte en hoekige vormen
RanchUitgestrekte indeling met één bouwlaag
Shingle StyleDoorlopende gevelbekleding van houten shingles
SouthwesternWoestijnstijl geïnspireerd op adobe
TransitionalCombinatie van traditioneel en eigentijds
TudorMiddeleeuwse Engelse vakwerkstijl
VictorianRijkversierde decoratieve stijl uit de 19e eeuw

📐 Opties voor de totale oppervlakte#

Het veld totalArea gebruikt de notatie min-max unit. Metrische waarden gebruiken ; imperiale waarden gebruiken ft². Het minimum moet minstens één stap lager zijn dan het maximum.

EenheidMinimumwaardeMaximumwaardeStapgrootteVoorbeeld
5050010150-200 m²
ft²50050001001500-2000 ft²

🏠 Daktypen#

WaardeBeschrijving
Gable roofKlassiek driehoekig zadeldak
Hip roofHellende dakvlakken aan alle vier zijden
Flat roofPlat dak met minimale helling
Pitched roofAlgemeen steil hellend dak

🏗️ Kelderopties#

WaardeBeschrijving
NoneGeen kelder
PartialGedeeltelijk onderkelderd
FullVolledig onderkelderd

🚗 Garagetypen#

garageType is alleen verplicht wanneer garageEnabled=true; stuur anders null.

WaardeBeschrijving
DetachedVrijstaande garage
Front EntryGarage-ingang aan de voorkant
Side EntryGarage-ingang aan de zijkant
Rear EntryGarage-ingang aan de achterkant

🚗 Garagecapaciteit#

garageCapacity is alleen verplicht wanneer garageEnabled=true; stuur anders null.

WaardeBeschrijving
1Garage voor één auto
2Garage voor twee auto's
3+Plaats voor drie of meer auto's

🌿 Opties voor buitenruimten#

Het veld outdoorSpaces accepteert een array met de volgende waarden.

WaardeBeschrijving
Front porchOverdekte entreeveranda aan de voorkant
Covered patioOverdekt buitenterras
DeckHouten of composieten vlonderterras
BalconyVerhoogd buitenplatform
CourtyardOmsloten of gedeeltelijk omsloten binnenplaats
BreezewayOverdekte doorgang tussen gebouwen
Outdoor KitchenBuitenruimte om te koken en te eten

Voorbeeld

Platte tekst
"outdoorSpaces": ["Front porch", "Deck", "Balcony"]

🏛️ Indelingsconcepten#

WaardeBeschrijving
Open ConceptOpen, onderling verbonden woonruimten
TraditionalAfzonderlijke kamers met duidelijke begrenzingen
Split-LevelVerspringende vloerniveaus tussen ruimten

🛏️ Oppervlaktebereiken voor slaapkamers#

Het veld bedroomAreaRanges moet een array zijn waarvan de lengte overeenkomt met het aantal bedrooms. Elk element heeft de volgende structuur:

VeldTypeBeschrijving
namestringWeergavenaam van de slaapkamer, bijvoorbeeld Room 1 (Master)
minAreastringMinimale slaapkameroppervlakte. Moet een niet-negatieve numerieke tekenreeks zijn
maxAreastringMaximale slaapkameroppervlakte. Moet groter dan of gelijk aan minArea zijn
unitstringOppervlakte-eenheid. Mogelijke waarden: , ft²

Standaardvoorbeeld voor bedrooms="2"

json
[
  { "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
  { "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
]

🛁 Badkamerindelingen#

Het veld bathroomLayouts moet een array zijn met lengte Math.floor(bathrooms). Zo vereist bathrooms="2.5" bijvoorbeeld 2 objecten voor badkamerindelingen.

VeldTypeBeschrijving
namestringWeergavenaam van de badkamer, bijvoorbeeld Bathroom 1
layoutstring / nullMogelijke waarden: With Wet & Dry Separation, Without Separation of null

Standaardvoorbeeld voor bathrooms="1"

json
[
  { "name": "Bathroom 1", "layout": null }
]

🍳 Keukenopties#

Keukenindeling

WaardeBeschrijving
Open KitchenOpen keuken verbonden met de woon-/eetruimte
Closed KitchenAfgesloten, afzonderlijke keukenruimte

Optionele keukenvoorzieningen

WaardeBeschrijving
Eating BarEetbar / zitplaatsen aan het aanrecht
Kitchen IslandKeukeneiland
Breakfast NookOntbijthoek

🚪 Opties voor bijzondere kamers#

Het veld keyRooms accepteert een of meer van de volgende waarden. Verbind meerdere geselecteerde opties met een komma (,).

WaardeBeschrijving
Home OfficeAfzonderlijk thuiskantoor of studeerkamer
Bonus RoomFlexibele extra kamer voor meerdere doeleinden
Media RoomThuisbioscoop of mediaruimte
MudroomEntree voor buitenkleding en -spullen
Laundry RoomAfzonderlijke wasruimte
Guest SuiteZelfstandige gastensuite

Voorbeeld

Platte tekst
"keyRooms": "Home Office, Media Room, Guest Suite"

Modeltypen

WaardeBeschrijving
BaseStandaard. Evenwicht tussen snelheid en kwaliteit. Genereert een samengesteld presentatiebord met hoge resolutie
ProHogere kwaliteit en uitvoerresolutie, langzamer

⚠️ Opmerking: De modus Flash is niet beschikbaar voor deze API. Alleen Base en Pro worden ondersteund.


📥 Verzoekvoorbeelden#

cURL
bash
# Basic request with default values
curl -X POST "https://api.ideal.house/api/v1/housePlan/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "style": "Barndominium",
    "stories": "2",
    "bedrooms": "2",
    "bathrooms": "1",
    "totalArea": "150-200 m²",
    "garageEnabled": false,
    "garageType": null,
    "garageCapacity": null,
    "basement": "None",
    "roofType": null,
    "outdoorSpaces": [],
    "layoutConcept": null,
    "bedroomAreaRanges": [
      { "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
      { "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
    ],
    "bathroomLayouts": [
      { "name": "Bathroom 1", "layout": null }
    ],
    "kitchenLayout": null,
    "kitchenFeatureOptions": [],
    "keyRooms": null,
    "prompt": "",
    "refImageUrl": "",
    "modelType": "Base"
  }'

# Pro model with reference image and custom prompt
curl -X POST "https://api.ideal.house/api/v1/housePlan/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "style": "Victorian",
    "stories": "3+",
    "bedrooms": "5+",
    "bathrooms": "4+",
    "totalArea": "300-380 m²",
    "garageEnabled": true,
    "garageType": "Front Entry",
    "garageCapacity": "3+",
    "basement": "Full",
    "roofType": "Gable roof",
    "outdoorSpaces": ["Front porch", "Balcony", "Courtyard", "Outdoor Kitchen"],
    "layoutConcept": "Traditional",
    "bedroomAreaRanges": [
      { "name": "Room 1 (Master)", "minArea": "18", "maxArea": "28", "unit": "m²" },
      { "name": "Room 2", "minArea": "12", "maxArea": "16", "unit": "m²" },
      { "name": "Room 3", "minArea": "12", "maxArea": "16", "unit": "m²" },
      { "name": "Room 4", "minArea": "10", "maxArea": "14", "unit": "m²" },
      { "name": "Room 5", "minArea": "10", "maxArea": "14", "unit": "m²" }
    ],
    "bathroomLayouts": [
      { "name": "Bathroom 1", "layout": "With Wet & Dry Separation" },
      { "name": "Bathroom 2", "layout": "With Wet & Dry Separation" },
      { "name": "Bathroom 3", "layout": "Without Separation" },
      { "name": "Bathroom 4", "layout": null }
    ],
    "kitchenLayout": "Closed Kitchen",
    "kitchenFeatureOptions": ["Kitchen Island", "Breakfast Nook"],
    "keyRooms": "Home Office, Bonus Room, Media Room, Guest Suite",
    "prompt": "Grand Victorian mansion with ornate details and wraparound porch",
    "refImageUrl": "https://example.com/reference-house.jpg",
    "modelType": "Pro"
  }'
Java (OkHttp)
java
import okhttp3.*;
import java.io.IOException;

public class HousePlanApiExample {

    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 IOException {
        OkHttpClient client = new OkHttpClient();

        String requestBody = """
            {
                "style": "Barndominium",
                "stories": "2",
                "bedrooms": "2",
                "bathrooms": "1",
                "totalArea": "150-200 m²",
                "garageEnabled": false,
                "garageType": null,
                "garageCapacity": null,
                "basement": "None",
                "roofType": null,
                "outdoorSpaces": [],
                "layoutConcept": null,
                "bedroomAreaRanges": [
                    { "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
                    { "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
                ],
                "bathroomLayouts": [
                    { "name": "Bathroom 1", "layout": null }
                ],
                "kitchenLayout": null,
                "kitchenFeatureOptions": [],
                "keyRooms": null,
                "prompt": "",
                "refImageUrl": "",
                "modelType": "Base"
            }
            """;

        Request request = new Request.Builder()
            .url(BASE_URL + "/api/v1/housePlan/generate")
            .addHeader("APIKEY", API_KEY)
            .addHeader("Content-Type", "application/json")
            .post(RequestBody.create(requestBody, MediaType.parse("application/json")))
            .build();

        try (Response response = client.newCall(request).execute()) {
            System.out.println("Response: " + response.body().string());
        }
    }
}
Python (requests)
python
import requests

BASE_URL = "https://api.ideal.house"
API_KEY  = "your_api_key_here"

headers = {
    "APIKEY": API_KEY,
    "Content-Type": "application/json"
}

payload = {
    "style": "Barndominium",
    "stories": "2",
    "bedrooms": "2",
    "bathrooms": "1",
    "totalArea": "150-200 m²",
    "garageEnabled": False,
    "garageType": None,
    "garageCapacity": None,
    "basement": "None",
    "roofType": None,
    "outdoorSpaces": [],
    "layoutConcept": None,
    "bedroomAreaRanges": [
        { "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
        { "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
    ],
    "bathroomLayouts": [
        { "name": "Bathroom 1", "layout": None }
    ],
    "kitchenLayout": None,
    "kitchenFeatureOptions": [],
    "keyRooms": None,
    "prompt": "",
    "refImageUrl": "",
    "modelType": "Base"
}

response = requests.post(
    f"{BASE_URL}/api/v1/housePlan/generate",
    headers=headers,
    json=payload
)

data = response.json()
task_id = data.get("data")
print(f"Task ID: {task_id}")
Node.js (axios)
javascript
const axios = require('axios');

const BASE_URL = 'https://api.ideal.house';
const API_KEY  = 'your_api_key_here';

async function createHousePlanTask() {
  try {
    const response = await axios.post(
      `${BASE_URL}/api/v1/housePlan/generate`,
      {
        style: 'Barndominium',
        stories: '2',
        bedrooms: '2',
        bathrooms: '1',
        totalArea: '150-200 m²',
        garageEnabled: false,
        garageType: null,
        garageCapacity: null,
        basement: 'None',
        roofType: null,
        outdoorSpaces: [],
        layoutConcept: null,
        bedroomAreaRanges: [
          { name: 'Room 1 (Master)', minArea: '12', maxArea: '18', unit: 'm²' },
          { name: 'Room 2', minArea: '10', maxArea: '14', unit: 'm²' }
        ],
        bathroomLayouts: [
          { name: 'Bathroom 1', layout: null }
        ],
        kitchenLayout: null,
        kitchenFeatureOptions: [],
        keyRooms: null,
        prompt: '',
        refImageUrl: '',
        modelType: 'Base'
      },
      {
        headers: {
          'APIKEY': API_KEY,
          'Content-Type': 'application/json'
        }
      }
    );

    const taskId = response.data.data;
    console.log('Task ID:', taskId);
    return taskId;
  } catch (error) {
    console.error('Error:', error.response?.data || error.message);
  }
}

createHousePlanTask();

📤 Antwoord#

Succesantwoord

json
{
  "code": 0,
  "message": "success",
  "data": 1234567890123456789
}
VeldTypeBeschrijving
codeinteger0 geeft succes aan
messagestringAntwoordbericht
datalongDe unieke taak-ID voor het regelmatig opvragen van resultaten

2. Taakresultaat ophalen#

Haalt de huidige status en uitvoer van een eerder aangemaakte taak voor een woningontwerp op.

Eindpunt

Platte tekst
GET /api/v1/housePlan/result

Verzoekheaders

VerzoekheaderVerplichtBeschrijving
APIKEY✅ JaJe API-authenticatiesleutel

Queryparameters

QueryparameterTypeVerplichtBeschrijving
taskIdlong✅ JaDe taak-ID die het endpoint voor het aanmaken van taken retourneert

📥 Verzoekvoorbeelden#

cURL
bash
curl -X GET "https://api.ideal.house/api/v1/housePlan/result?taskId=1234567890123456789" \
  -H "APIKEY: your_api_key_here"
Java (OkHttp)
java
import okhttp3.*;
import java.io.IOException;

public class HousePlanResultExample {

    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 IOException {
        OkHttpClient client = new OkHttpClient();
        long taskId = 1234567890123456789L;

        Request request = new Request.Builder()
            .url(BASE_URL + "/api/v1/housePlan/result?taskId=" + taskId)
            .addHeader("APIKEY", API_KEY)
            .get()
            .build();

        try (Response response = client.newCall(request).execute()) {
            System.out.println("Response: " + response.body().string());
        }
    }
}
Python (requests)
python
import requests
import time

BASE_URL = "https://api.ideal.house"
API_KEY  = "your_api_key_here"

headers = {
    "APIKEY": API_KEY
}

task_id = 1234567890123456789

# Poll until task is complete
while True:
    response = requests.get(
        f"{BASE_URL}/api/v1/housePlan/result",
        headers=headers,
        params={"taskId": task_id}
    )

    data = response.json()
    result = data.get("data", {})
    status = result.get("status")

    print(f"Status: {status}, Progress: {result.get('percentage')}%, Queue: {result.get('waitNumber')}")

    if status in ("Success", "Failed", "Termination"):
        break

    time.sleep(3)  # Poll every 3 seconds

if status == "Success":
    output = result["output"]
    print("Composite Result URL:", output["resultUrl"])
    print("Result List:", output.get("resultList", []))
else:
    print("Task ended with status:", status)
Node.js (axios)
javascript
const axios = require('axios');

const BASE_URL = 'https://api.ideal.house';
const API_KEY  = 'your_api_key_here';

async function pollResult(taskId) {
  const headers = { 'APIKEY': API_KEY };

  while (true) {
    const response = await axios.get(
      `${BASE_URL}/api/v1/housePlan/result`,
      {
        headers,
        params: { taskId }
      }
    );

    const result = response.data.data;
    const { status, percentage, waitNumber } = result;

    console.log(`Status: ${status} | Progress: ${percentage}% | Queue: ${waitNumber}`);

    if (['Success', 'Failed', 'Termination'].includes(status)) {
      if (status === 'Success') {
        console.log('Composite Result URL:', result.output.resultUrl);
        console.log('Result List:', result.output.resultList);
      } else {
        console.log('Task ended with status:', status);
      }
      break;
    }

    // Wait 3 seconds before next poll
    await new Promise(resolve => setTimeout(resolve, 3000));
  }
}

pollResult(1234567890123456789n);

📤 Antwoord#

📸 Opmerking: Deze API genereert precies 1 samengestelde resultaatafbeelding per geslaagde taak. Deze combineert 2D-plattegronden, gevelaanzichten en fotorealistische buitenaanzichten op één presentatiebord. output.resultUrl bevat de URL van de samengestelde afbeelding en output.resultList bevat voor compatibiliteit dezelfde URL als array met één element.

Succesantwoord: taak voltooid

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Success",
    "waitNumber": 0,
    "percentage": 100,
    "input": {
      "style": "Barndominium",
      "stories": "2",
      "bedrooms": "2",
      "bathrooms": "1",
      "totalArea": "150-200 m²",
      "garageEnabled": false,
      "garageType": null,
      "garageCapacity": null,
      "basement": "None",
      "roofType": null,
      "outdoorSpaces": [],
      "layoutConcept": null,
      "bedroomAreaRanges": [
        { "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
        { "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
      ],
      "bathroomLayouts": [
        { "name": "Bathroom 1", "layout": null }
      ],
      "kitchenLayout": null,
      "kitchenFeatureOptions": [],
      "keyRooms": null,
      "prompt": "",
      "refImageUrl": "",
      "modelType": "Base"
    },
    "output": {
      "resultUrl": "https://cdn.ideal.house/output/house_plan_composite.jpg",
      "resultList": [
        "https://cdn.ideal.house/output/house_plan_composite.jpg"
      ],
      "width": 2560,
      "height": 1440
    }
  }
}

Antwoord: taak in verwerking of in de wachtrij

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Processing",
    "waitNumber": 1,
    "percentage": 45,
    "input": {
      "style": "Barndominium",
      "stories": "2",
      "bedrooms": "2",
      "bathrooms": "1",
      "totalArea": "150-200 m²",
      "garageEnabled": false,
      "garageType": null,
      "garageCapacity": null,
      "basement": "None",
      "roofType": null,
      "outdoorSpaces": [],
      "layoutConcept": null,
      "bedroomAreaRanges": [
        { "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
        { "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
      ],
      "bathroomLayouts": [
        { "name": "Bathroom 1", "layout": null }
      ],
      "kitchenLayout": null,
      "kitchenFeatureOptions": [],
      "keyRooms": null,
      "prompt": "",
      "refImageUrl": "",
      "modelType": "Base"
    },
    "output": null
  }
}

Antwoord: taak mislukt

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Failed",
    "waitNumber": 0,
    "percentage": 0,
    "input": {
      "style": "Barndominium",
      "stories": "2",
      "bedrooms": "2",
      "bathrooms": "1",
      "totalArea": "150-200 m²",
      "garageEnabled": false,
      "basement": "None",
      "modelType": "Base"
    },
    "output": null
  }
}

Antwoordvelden

VeldTypeBeschrijving
idlongUnieke taakidentificatie
statusstringHuidige taakstatus; zie taakstatus
waitNumberintegerAantal taken vóór deze taak in de wachtrij; 0 betekent dat de taak wordt verwerkt
percentageintegerVoltooiingspercentage van de taak (0–100)
inputobjectDe oorspronkelijke invoerparameters van de taak
input.stylestringBouwstijl
input.totalAreastringBereik van de totale oppervlakte
input.storiesstringAantal bouwlagen
input.bedroomsstringAantal slaapkamers
input.bathroomsstringAantal badkamers
input.garageEnabledbooleanOf een garage is aangevraagd
input.garageTypestring / nullGaragetype
input.garageCapacitystring / nullAantal garageplaatsen
input.basementstringKeldertype
input.roofTypestringDaktype
input.outdoorSpacesarray<string>Buitenruimten
input.layoutConceptstringAlgemeen indelingsconcept
input.bedroomAreaRangesarray<object>Oppervlaktebereiken voor slaapkamers
input.bathroomLayoutsarray<object>Geselecteerde badkamerindelingen
input.kitchenLayoutstringStijl van de keukenindeling
input.kitchenFeatureOptionsarray<string>Optionele keukenvoorzieningen
input.keyRoomsstringBijzondere kamers (door komma's gescheiden)
input.promptstringEigen tekstinstructie, indien opgegeven
input.refImageUrlstringURL van de referentieafbeelding (indien opgegeven)
input.modelTypestringGebruikt modeltype
outputobjectGeneratieresultaat, alleen beschikbaar wanneer status gelijk is aan Success
output.resultUrlstringURL naar het gegenereerde samengestelde presentatiebord voor het woningontwerp
output.resultListarray<string>URLs naar gegenereerde resultaatafbeeldingen. Bij woningontwerpen is dit normaal een array met één element, met dezelfde URL als output.resultUrl
output.widthintegerUitvoerbreedte in pixels
output.heightintegerUitvoerhoogte in pixels

📊 Taakstatus#

StatusBeschrijving
UnprocessedDe taak is aangemaakt, maar nog niet gestart
ProcessingDe taak wordt momenteel verwerkt
SuccessDe taak is succesvol voltooid; uitvoer is beschikbaar
FailedDe taak is door een fout mislukt
TerminationDe taak is onderbroken of beëindigd

Vraag de status elke 3-5 seconden op. Zie de taaklimiet voor de API.


❌ Foutantwoorden#

Alle foutantwoorden hebben dezelfde JSON-structuur:

json
{
  "code": 5002,
  "message": "Invalid API Key",
  "data": null
}

Foutcodereferentie#

CodeNaamBeschrijvingAanbevolen actie
1001FAILEDVerzoek mislukt: algemene foutControleer het veld message voor specifieke foutdetails
1003INTERNAL_ERRORInterne serverfoutProbeer het na een korte wachttijd opnieuw; neem contact op met ondersteuning als de fout blijft optreden
1011PARAM_ERRORFout in verzoekparametersControleer dat alle verplichte parameters zijn opgegeven en correct zijn opgemaakt
5002API_KEY_INVALIDOngeldige of ontbrekende API KeyControleer dat de header APIKEY aanwezig is en de waarde klopt
9010SCAN_TEXT_ERRORTekstinstructie afgekeurd bij inhoudscontrolePas de instructie aan om gevoelige of verboden inhoud te verwijderen
9038PROHIBITED_CONTENTDe gegenereerde uitvoerafbeelding bevat verboden inhoudPas instructie, stijl of invoer aan en probeer opnieuw
9051COINS_NOT_ENOUGHOnvoldoende munten / creditsVul je accountcredits aan en probeer opnieuw

📄 Raadpleeg de foutcodereferentie voor de volledige lijst van algemene API-foutcodes.