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:
- Een taak aanmaken — Dien de parameters voor je woningontwerp in en ontvang een
taskId. - Resultaten regelmatig opvragen — Gebruik de
taskIdom 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:
| Verzoekheader | Waarde |
|---|---|
APIKEY | your_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
modelTypeafgeschreven zodra de taak succesvol is aangemaakt. Als de taak uiteindelijk mislukt, worden de afgeschreven credits automatisch terugbetaald op je account.
Onvoldoende credits leveren foutcode9051op. 📄 Zie de referentie voor creditafschrijving.
Modeltype (modelType) | Afgeschreven credits |
|---|---|
Base | 10 tegoedeenheden |
Pro | 20 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
POST /api/v1/housePlan/generate
Verzoekheaders
| Verzoekheader | Verplicht | Beschrijving |
|---|---|---|
APIKEY | ✅ Ja | Je API-authenticatiesleutel |
Content-Type | ✅ Ja | application/json |
Verzoekinhoud
| Veld | Type | Verplicht | Beschrijving | Standaardwaarde |
|---|---|---|---|---|
style | string / null | ✅ Ja | Engelse naam van de bouwstijl. Zie Stijlopties | Barndominium |
stories | string | ✅ Ja | Aantal bouwlagen. Mogelijke waarden: 1, 2, 3+ | 2 |
bedrooms | string | ✅ Ja | Aantal slaapkamers. Mogelijke waarden: 1, 2, 3, 4, 5+ | 2 |
bathrooms | string | ✅ Ja | Aantal badkamers. Mogelijke waarden: 1, 1.5, 2, 2.5, 3, 3.5, 4+ | 1 |
totalArea | string | ✅ Ja | Bereik van de totale oppervlakte in de notatie min-max unit. Zie Opties voor de totale oppervlakte | 150-200 m² |
garageEnabled | boolean | ✅ Ja | Of er een garage moet zijn | false |
garageType | string / null | ⚠️ Voorwaardelijk | Verplicht wanneer garageEnabled=true. Zie Garagetypen | null |
garageCapacity | string / null | ⚠️ Voorwaardelijk | Verplicht wanneer garageEnabled=true. Zie Garagecapaciteit | null |
basement | string | ✅ Ja | Keldertype. Zie Kelderopties | None |
roofType | string / null | ❌ Nee | Type dakconstructie. Zie Daktypen | null |
outdoorSpaces | array<string> | ❌ Nee | Buitenruimten. Zie Opties voor buitenruimten | [] |
layoutConcept | string / null | ❌ Nee | Algemeen concept voor de interieurindeling. Zie Indelingsconcepten | null |
bedroomAreaRanges | array<object> | ✅ Ja | Oppervlaktebereiken voor slaapkamers. De lengte moet overeenkomen met het aantal slaapkamers. Zie Oppervlaktebereiken voor slaapkamers | Zie voorbeeld |
bathroomLayouts | array<object> | ✅ Ja | Geselecteerde badkamerindelingen. De lengte moet Math.floor(bathrooms) zijn. Zie Badkamerindelingen | Zie voorbeeld |
kitchenLayout | string / null | ❌ Nee | Keukenindeling. Zie Keukenopties | null |
kitchenFeatureOptions | array<string> | ❌ Nee | Optionele keukenvoorzieningen. Zie Keukenopties | [] |
keyRooms | string / null | ❌ Nee | Bijzondere kamers, gescheiden door een komma en spatie. Zie Opties voor bijzondere kamers | null |
prompt | string | ❌ Nee | Eigen tekstinstructie om de generatie verder te sturen | "" |
refImageUrl | string | ❌ Nee | URL van een referentieafbeelding van een woning als stijlleidraad | "" |
modelType | string | ✅ Ja | Kwaliteitsniveau van het model. Mogelijke waarden: Base, Pro. ⚠️ De modus Flash wordt niet ondersteund | Base |
🖼️ 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#
| Waarde | Beschrijving |
|---|---|
Barndominium | Standaard. Hybride woning in de stijl van een metalen schuur |
Cabin | Rustieke houten blokhutstijl |
Cape Cod | Klassieke symmetrische stijl uit New England |
Coastal | Lichte, luchtige stijl geïnspireerd op het strand |
Colonial | Traditionele symmetrische koloniale architectuur |
Contemporary | Strakke lijnen en moderne materialen |
Craftsman | Ambachtelijke details met natuurlijke materialen |
Farmhouse | Rustieke landelijke boerderijstijl |
French Country | Elegante Franse provinciale stijl |
Mediterranean | Warm stucwerk met terracotta-elementen |
Mid-Century Modern | Strak geometrisch modernisme uit de jaren 1950–70 |
Modern | Minimalistisch modern ontwerp met platte en hoekige vormen |
Ranch | Uitgestrekte indeling met één bouwlaag |
Shingle Style | Doorlopende gevelbekleding van houten shingles |
Southwestern | Woestijnstijl geïnspireerd op adobe |
Transitional | Combinatie van traditioneel en eigentijds |
Tudor | Middeleeuwse Engelse vakwerkstijl |
Victorian | Rijkversierde decoratieve stijl uit de 19e eeuw |
📐 Opties voor de totale oppervlakte#
Het veld totalArea gebruikt de notatie min-max unit. Metrische waarden gebruiken m²; imperiale waarden gebruiken ft². Het minimum moet minstens één stap lager zijn dan het maximum.
| Eenheid | Minimumwaarde | Maximumwaarde | Stapgrootte | Voorbeeld |
|---|---|---|---|---|
m² | 50 | 500 | 10 | 150-200 m² |
ft² | 500 | 5000 | 100 | 1500-2000 ft² |
🏠 Daktypen#
| Waarde | Beschrijving |
|---|---|
Gable roof | Klassiek driehoekig zadeldak |
Hip roof | Hellende dakvlakken aan alle vier zijden |
Flat roof | Plat dak met minimale helling |
Pitched roof | Algemeen steil hellend dak |
🏗️ Kelderopties#
| Waarde | Beschrijving |
|---|---|
None | Geen kelder |
Partial | Gedeeltelijk onderkelderd |
Full | Volledig onderkelderd |
🚗 Garagetypen#
garageType is alleen verplicht wanneer garageEnabled=true; stuur anders null.
| Waarde | Beschrijving |
|---|---|
Detached | Vrijstaande garage |
Front Entry | Garage-ingang aan de voorkant |
Side Entry | Garage-ingang aan de zijkant |
Rear Entry | Garage-ingang aan de achterkant |
🚗 Garagecapaciteit#
garageCapacity is alleen verplicht wanneer garageEnabled=true; stuur anders null.
| Waarde | Beschrijving |
|---|---|
1 | Garage voor één auto |
2 | Garage 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.
| Waarde | Beschrijving |
|---|---|
Front porch | Overdekte entreeveranda aan de voorkant |
Covered patio | Overdekt buitenterras |
Deck | Houten of composieten vlonderterras |
Balcony | Verhoogd buitenplatform |
Courtyard | Omsloten of gedeeltelijk omsloten binnenplaats |
Breezeway | Overdekte doorgang tussen gebouwen |
Outdoor Kitchen | Buitenruimte om te koken en te eten |
Voorbeeld
"outdoorSpaces": ["Front porch", "Deck", "Balcony"]
🏛️ Indelingsconcepten#
| Waarde | Beschrijving |
|---|---|
Open Concept | Open, onderling verbonden woonruimten |
Traditional | Afzonderlijke kamers met duidelijke begrenzingen |
Split-Level | Verspringende 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:
| Veld | Type | Beschrijving |
|---|---|---|
name | string | Weergavenaam van de slaapkamer, bijvoorbeeld Room 1 (Master) |
minArea | string | Minimale slaapkameroppervlakte. Moet een niet-negatieve numerieke tekenreeks zijn |
maxArea | string | Maximale slaapkameroppervlakte. Moet groter dan of gelijk aan minArea zijn |
unit | string | Oppervlakte-eenheid. Mogelijke waarden: m², ft² |
Standaardvoorbeeld voor bedrooms="2"
[
{ "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.
| Veld | Type | Beschrijving |
|---|---|---|
name | string | Weergavenaam van de badkamer, bijvoorbeeld Bathroom 1 |
layout | string / null | Mogelijke waarden: With Wet & Dry Separation, Without Separation of null |
Standaardvoorbeeld voor bathrooms="1"
[
{ "name": "Bathroom 1", "layout": null }
]
🍳 Keukenopties#
Keukenindeling
| Waarde | Beschrijving |
|---|---|
Open Kitchen | Open keuken verbonden met de woon-/eetruimte |
Closed Kitchen | Afgesloten, afzonderlijke keukenruimte |
Optionele keukenvoorzieningen
| Waarde | Beschrijving |
|---|---|
Eating Bar | Eetbar / zitplaatsen aan het aanrecht |
Kitchen Island | Keukeneiland |
Breakfast Nook | Ontbijthoek |
🚪 Opties voor bijzondere kamers#
Het veld keyRooms accepteert een of meer van de volgende waarden. Verbind meerdere geselecteerde opties met een komma (,).
| Waarde | Beschrijving |
|---|---|
Home Office | Afzonderlijk thuiskantoor of studeerkamer |
Bonus Room | Flexibele extra kamer voor meerdere doeleinden |
Media Room | Thuisbioscoop of mediaruimte |
Mudroom | Entree voor buitenkleding en -spullen |
Laundry Room | Afzonderlijke wasruimte |
Guest Suite | Zelfstandige gastensuite |
Voorbeeld
"keyRooms": "Home Office, Media Room, Guest Suite"
Modeltypen
| Waarde | Beschrijving |
|---|---|
Base | Standaard. Evenwicht tussen snelheid en kwaliteit. Genereert een samengesteld presentatiebord met hoge resolutie |
Pro | Hogere kwaliteit en uitvoerresolutie, langzamer |
⚠️ Opmerking: De modus
Flashis niet beschikbaar voor deze API. AlleenBaseenProworden ondersteund.
📥 Verzoekvoorbeelden#
cURL
# 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)
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)
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)
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
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| Veld | Type | Beschrijving |
|---|---|---|
code | integer | 0 geeft succes aan |
message | string | Antwoordbericht |
data | long | De 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
GET /api/v1/housePlan/result
Verzoekheaders
| Verzoekheader | Verplicht | Beschrijving |
|---|---|---|
APIKEY | ✅ Ja | Je API-authenticatiesleutel |
Queryparameters
| Queryparameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
taskId | long | ✅ Ja | De taak-ID die het endpoint voor het aanmaken van taken retourneert |
📥 Verzoekvoorbeelden#
cURL
curl -X GET "https://api.ideal.house/api/v1/housePlan/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Java (OkHttp)
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)
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)
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.resultUrlbevat de URL van de samengestelde afbeelding enoutput.resultListbevat voor compatibiliteit dezelfde URL als array met één element.
Succesantwoord: taak voltooid
{
"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
{
"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
{
"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
| Veld | Type | Beschrijving |
|---|---|---|
id | long | Unieke taakidentificatie |
status | string | Huidige taakstatus; zie taakstatus |
waitNumber | integer | Aantal taken vóór deze taak in de wachtrij; 0 betekent dat de taak wordt verwerkt |
percentage | integer | Voltooiingspercentage van de taak (0–100) |
input | object | De oorspronkelijke invoerparameters van de taak |
input.style | string | Bouwstijl |
input.totalArea | string | Bereik van de totale oppervlakte |
input.stories | string | Aantal bouwlagen |
input.bedrooms | string | Aantal slaapkamers |
input.bathrooms | string | Aantal badkamers |
input.garageEnabled | boolean | Of een garage is aangevraagd |
input.garageType | string / null | Garagetype |
input.garageCapacity | string / null | Aantal garageplaatsen |
input.basement | string | Keldertype |
input.roofType | string | Daktype |
input.outdoorSpaces | array<string> | Buitenruimten |
input.layoutConcept | string | Algemeen indelingsconcept |
input.bedroomAreaRanges | array<object> | Oppervlaktebereiken voor slaapkamers |
input.bathroomLayouts | array<object> | Geselecteerde badkamerindelingen |
input.kitchenLayout | string | Stijl van de keukenindeling |
input.kitchenFeatureOptions | array<string> | Optionele keukenvoorzieningen |
input.keyRooms | string | Bijzondere kamers (door komma's gescheiden) |
input.prompt | string | Eigen tekstinstructie, indien opgegeven |
input.refImageUrl | string | URL van de referentieafbeelding (indien opgegeven) |
input.modelType | string | Gebruikt modeltype |
output | object | Generatieresultaat, alleen beschikbaar wanneer status gelijk is aan Success |
output.resultUrl | string | URL naar het gegenereerde samengestelde presentatiebord voor het woningontwerp |
output.resultList | array<string> | URLs naar gegenereerde resultaatafbeeldingen. Bij woningontwerpen is dit normaal een array met één element, met dezelfde URL als output.resultUrl |
output.width | integer | Uitvoerbreedte in pixels |
output.height | integer | Uitvoerhoogte in pixels |
📊 Taakstatus#
| Status | Beschrijving |
|---|---|
Unprocessed | De taak is aangemaakt, maar nog niet gestart |
Processing | De taak wordt momenteel verwerkt |
Success | De taak is succesvol voltooid; uitvoer is beschikbaar |
Failed | De taak is door een fout mislukt |
Termination | De 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:
{
"code": 5002,
"message": "Invalid API Key",
"data": null
}
Foutcodereferentie#
| Code | Naam | Beschrijving | Aanbevolen actie |
|---|---|---|---|
1001 | FAILED | Verzoek mislukt: algemene fout | Controleer het veld message voor specifieke foutdetails |
1003 | INTERNAL_ERROR | Interne serverfout | Probeer het na een korte wachttijd opnieuw; neem contact op met ondersteuning als de fout blijft optreden |
1011 | PARAM_ERROR | Fout in verzoekparameters | Controleer dat alle verplichte parameters zijn opgegeven en correct zijn opgemaakt |
5002 | API_KEY_INVALID | Ongeldige of ontbrekende API Key | Controleer dat de header APIKEY aanwezig is en de waarde klopt |
9010 | SCAN_TEXT_ERROR | Tekstinstructie afgekeurd bij inhoudscontrole | Pas de instructie aan om gevoelige of verboden inhoud te verwijderen |
9038 | PROHIBITED_CONTENT | De gegenereerde uitvoerafbeelding bevat verboden inhoud | Pas instructie, stijl of invoer aan en probeer opnieuw |
9051 | COINS_NOT_ENOUGH | Onvoldoende munten / credits | Vul je accountcredits aan en probeer opnieuw |
📄 Raadpleeg de foutcodereferentie voor de volledige lijst van algemene API-foutcodes.