Dokumentation zur API zur Hausplanung#
Basis-URL:
https://api.ideal.house
Version: v1
Aktualisiert: 2026-06-12
📖 Übersicht#
Die Hausgrundriss-Generierungs-API ermöglicht es Ihnen, ein KI-generiertes Präsentationsboard für einen Hausgrundriss basierend auf architektonischem Stil, Fläche, Strukturkonfiguration und Innenraumlayout-Präferenzen zu erstellen. Nach erfolgreicher Generierung erstellt die API genau 1 zusammengesetztes Ergebnisbild pro Aufgabe. Das Bild enthält koordinierte 2D Grundrisse, Außenansichten und fotorealistische Außenrenderings in einem einzigen Präsentationsboard. Das Ergebnis wird in output.resultUrl gespeichert und ebenfalls als einziges Element in output.resultList enthalten. Der Workflow ist asynchron und umfasst zwei Schritte:
- Erstellen einer Aufgabe — Übermitteln Sie die Parameter Ihres Hausgrundrisses und empfangen Sie eine
taskId. - Ergebnisse regelmäßig abfragen — Verwenden Sie die
taskId, um den Aufgabestatus abzurufen und die generierten Bilder abzurufen.
🔐 Authentifizierung#
Alle API Anfragen müssen mit einem API Key authentifiziert werden.
Fügen Sie Ihren API Key in den Anforderungsheader ein:
| Kopfzeile | Wert |
|---|---|
APIKEY | your_api_key_here |
⚠️ Bewahren Sie Ihren API Key sicher auf. Geben Sie ihn nicht in Client-seitigem Code oder öffentlichen Repositorien frei.
💰 Guthabenverbrauch#
[!WARNING] 🪙 Credits werden bei erfolgreicher Aufgabenerstellung basierend auf dem ausgewählten
modelTypeabgezogen. Wenn die Aufgabe letztendlich fehlschlägt, werden die abgezogenen Credits automatisch zurückerstattet auf Ihr Konto.
Unzureichende Guthabeneinheiten geben Fehlercode9051zurück. 📄 Siehe Referenz zum Guthabenverbrauch.
Modell (modelType) | Abgezogene Guthabeneinheiten |
|---|---|
Base | 10 Guthabeneinheiten |
Pro | 20 Guthabeneinheiten |
📌 API Endpunkte#
1. Erstellen einer Hausgrundriss-Aufgabe#
Erstellt eine neue KI-Hausgrundriss-Generierungsaufgabe und gibt eine eindeutige taskId für das Polling zurück.
Endpunkt
POST /api/v1/housePlan/generate
Anforderungsheader
| Kopfzeile | Erforderlich | Beschreibung |
|---|---|---|
APIKEY | ✅ Ja | Ihr API Authentifizierungsschlüssel |
Content-Type | ✅ Ja | application/json |
Anforderungskörper
| Feld | Typ | Erforderlich | Beschreibung | Standard |
|---|---|---|---|---|
style | string / null | ✅ Ja | Architekturstil (englischer Name). Siehe Stiloptionen | Barndominium |
stories | string | ✅ Ja | Anzahl der Stockwerke. Enum: 1, 2, 3+ | 2 |
bedrooms | string | ✅ Ja | Anzahl der Schlafzimmer. Enum: 1, 2, 3, 4, 5+ | 2 |
bathrooms | string | ✅ Ja | Anzahl der Badezimmer. Enum: 1, 1.5, 2, 2.5, 3, 3.5, 4+ | 1 |
totalArea | string | ✅ Ja | Gesamtflächenbereich im min-max unit-Format. Siehe Gesamtflächenoptionen | 150-200 m² |
garageEnabled | boolean | ✅ Ja | Ob eine Garage eingeschlossen werden soll | false |
garageType | string / null | ⚠️ Bedingt | Erforderlich wenn garageEnabled=true. Siehe Garagentyp-Optionen | null |
garageCapacity | string / null | ⚠️ Bedingt | Erforderlich wenn garageEnabled=true. Siehe Garagenkapazität | null |
basement | string | ✅ Ja | Kellertyp. Siehe Kelleroptionen | None |
roofType | string / null | ❌ Nein | Dachkonstruktionstyp. Siehe Dachtyp-Optionen | null |
outdoorSpaces | array<string> | ❌ Nein | Außenbereiche. Siehe Außenbereichs-Optionen | [] |
layoutConcept | string / null | ❌ Nein | Gesamtes internes Layoutkonzept. Siehe Layout-Konzept-Optionen | null |
bedroomAreaRanges | array<object> | ✅ Ja | Schlafzimmerflächenbereiche. Länge muss mit der Anzahl der Schlafzimmer übereinstimmen. Siehe Schlafzimmerflächenbereiche | Siehe Beispiel |
bathroomLayouts | array<object> | ✅ Ja | Badezimmer-Layout-Auswahlen. Länge muss Math.floor(bathrooms) betragen. Siehe Badezimmerlayouts | Siehe Beispiel |
kitchenLayout | string / null | ❌ Nein | Küchenlayout. Siehe Küchenoptionen | null |
kitchenFeatureOptions | array<string> | ❌ Nein | Optionale Küchenausstattungen. Siehe Küchenoptionen | [] |
keyRooms | string / null | ❌ Nein | Besondere Räume, getrennt durch Komma und Leerzeichen. Siehe Optionen für besondere Räume | null |
prompt | string | ❌ Nein | Benutzerdefinierter Text-Prompt zur weiteren Führung der Generierung | "" |
refImageUrl | string | ❌ Nein | URL eines Referenzhausbilds zur Stilanleitung | "" |
modelType | string | ✅ Ja | Modellgütekategorie. Enum: Base, Pro. ⚠️ Flash-Modus wird nicht unterstützt | Base |
🖼️ Anforderungen an Bilder: Das optionale Referenzbild muss JPG/JPEG, PNG oder WebP verwenden und darf höchstens 20 MB groß sein. Die Abmessungen müssen zwischen 128 × 128 px und 6,000 × 6,000 px (inklusive) liegen. Bilder, die die maximalen Pixelabmessungen überschreiten, werden vor der Verarbeitung automatisch proportional herunterskaliert, um innerhalb von 6,000 × 6,000 px zu passen. Die URL muss vom API-Server direkt zugänglich sein.
🎨 Stileinstellungen#
| Wert | Beschreibung |
|---|---|
Barndominium | Standard. Hybridhaus aus Metall im Scheunenstil |
Cabin | Rustikaler Holzchalet-Stil |
Cape Cod | Klassischer symmetrischer New-England-Stil |
Coastal | Leichter, luftiger strandinspirierter Stil |
Colonial | Traditionelle symmetrische Kolonialarchitektur |
Contemporary | Saubere Linien und moderne Materialien |
Craftsman | Handgefertigte Details mit natürlichen Materialien |
Farmhouse | Rustikaler Bauernhof-Stil |
French Country | Eleganter französischer Provinzstil |
Mediterranean | Warmer Putz mit Terrakotta-Elementen |
Mid-Century Modern | Sauberer geometrischer Modernismus der 1950er–70er Jahre |
Modern | Minimalistisches flaches/kantiges modernes Design |
Ranch | Ein-stöckiges weitläufiges Layout |
Shingle Style | Durchgehende Außenverkleidung aus Holzschindeln |
Southwestern | Von Lehmziegelbauten inspirierter Wüstenstil |
Transitional | Mischung aus traditionellen und zeitgenössischen Elementen |
Tudor | Fachwerk-mittelalterlicher englischer Stil |
Victorian | Ornamentaler 19. Jahrhundert dekorativer Stil |
📐 Optionen für Gesamtfläche#
Das Feld totalArea verwendet das Format min-max unit. Metrische Werte verwenden m²; imperiale Werte verwenden ft². Der Mindestwert muss mindestens einen Schritt unter dem Maximalwert liegen.
| Einheit | Minimum | Maximum | Schritt | Beispiel |
|---|---|---|---|---|
m² | 50 | 500 | 10 | 150-200 m² |
ft² | 500 | 5000 | 100 | 1500-2000 ft² |
🏠 Dachtyp-Optionen#
| Wert | Beschreibung |
|---|---|
Gable roof | Klassisches dreieckiges Spitzdach |
Hip roof | Neigungen auf allen vier Seiten |
Flat roof | Minimal geneigtes Flachdach |
Pitched roof | Allgemein steil geneigtes Dach |
🏗️ Kelleroptionen#
| Wert | Beschreibung |
|---|---|
None | Kein Keller |
Partial | Teilweiser Keller |
Full | Voller Keller |
🚗 Garagentyp-Optionen#
garageType wird nur benötigt, wenn garageEnabled=true; sonst senden Sie null.
| Wert | Beschreibung |
|---|---|
Detached | Freistehende Garage |
Front Entry | Garageneingang zeigt nach vorne |
Side Entry | Garageneingang zeigt zur Seite |
Rear Entry | Garageneingang zeigt nach hinten |
🚗 Garagenkapazität#
garageCapacity wird nur benötigt, wenn garageEnabled=true; sonst senden Sie null.
| Wert | Beschreibung |
|---|---|
1 | Einzelwagen-Garage |
2 | Doppelwagen-Garage |
3+ | Drei oder mehr Stellplätze |
🌿 Außenbereichs-Optionen#
Das Feld outdoorSpaces akzeptiert ein Array der folgenden Werte.
| Wert | Beschreibung |
|---|---|
Front porch | Überdachter Eingangsvorplatz an der Vorderseite |
Covered patio | Überdachter Terrassenbereich |
Deck | Terrasse aus Holz oder Verbundwerkstoff |
Balcony | Erhöhte Außenplattform |
Courtyard | Eingefasster oder halb-eingefasster Innenhof |
Breezeway | Überdachter Durchgang, der Gebäude verbindet |
Outdoor Kitchen | Koch- und Essbereich im Freien |
Beispiel
"outdoorSpaces": ["Front porch", "Deck", "Balcony"]
🏛️ Layout-Konzept-Optionen#
| Wert | Beschreibung |
|---|---|
Open Concept | Offene, miteinander verbundene Wohnbereiche |
Traditional | Getrennte Räume mit definierten Grenzen |
Split-Level | Versetzte Geschossebenen zwischen Bereichen |
🛏️ Schlafzimmerflächenbereiche#
Das Feld bedroomAreaRanges muss ein Array sein, dessen Länge der Anzahl der bedrooms entspricht. Jedes Element verwendet die folgende Form:
| Feld | Typ | Beschreibung |
|---|---|---|
name | string | Anzeigename des Schlafzimmers, zum Beispiel Room 1 (Master) |
minArea | string | Minimalfläche des Schlafzimmers. Muss ein nicht-negativer numerischer String sein |
maxArea | string | Maximalfläche des Schlafzimmers. Muss größer oder gleich minArea sein |
unit | string | Flächeneinheit. Enum: m², ft² |
Standardbeispiel für bedrooms="2"
[
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
]
🛁 Badezimmerlayouts#
Das Feld bathroomLayouts muss ein Array sein, dessen Länge Math.floor(bathrooms) beträgt. Zum Beispiel erfordert bathrooms="2.5" 2 Badezimmer-Layout-Objekte.
| Feld | Typ | Beschreibung |
|---|---|---|
name | string | Anzeigename des Badezimmers, zum Beispiel Bathroom 1 |
layout | string / null | Enum: With Wet & Dry Separation, Without Separation oder null |
Standardbeispiel für bathrooms="1"
[
{ "name": "Bathroom 1", "layout": null }
]
🍳 Küchenoptionen#
Küchenlayout
| Wert | Beschreibung |
|---|---|
Open Kitchen | Offene Küche verbunden mit Wohn-/Essbereich |
Closed Kitchen | Geschlossener separater Küchenraum |
Optionen für Küchenausstattung
| Wert | Beschreibung |
|---|---|
Eating Bar | Esstheke / Sitzplätze an der Theke |
Kitchen Island | Kücheninsel |
Breakfast Nook | Frühstücksnische |
🚪 Optionen für besondere Räume#
Das Feld keyRooms akzeptiert einen oder mehrere der folgenden Werte. Wenn Sie mehrere Optionen auswählen, verknüpfen Sie sie mit einem Komma (,).
| Wert | Beschreibung |
|---|---|
Home Office | Dediziertes Heimbüro oder Arbeitszimmer |
Bonus Room | Flexibler Mehrzweckzusatzraum |
Media Room | Heimkino oder Medienzentrum |
Mudroom | Eingangsraum für Kleidung und Ausrüstung für draußen |
Laundry Room | Dedizierter Waschraum |
Guest Suite | Eigenständige Gästesuite |
Beispiel
"keyRooms": "Home Office, Media Room, Guest Suite"
Modelltypen
| Wert | Beschreibung |
|---|---|
Base | Standard. Ausgewogenes Verhältnis von Geschwindigkeit und Qualität. Generiert ein hochauflösendes zusammengesetztes Präsentationsboard |
Pro | Höhere Qualität und höhere Auflösung, langsamer |
⚠️ Hinweis:
Flash-Modus ist für diese API nicht verfügbar. NurBaseundProwerden unterstützt.
📥 Anfragebeispiele#
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();
📤 Antwort#
Erfolgreiche Antwort
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| Feld | Typ | Beschreibung |
|---|---|---|
code | integer | 0 zeigt Erfolg an |
message | string | Antwortnachricht |
data | long | Die eindeutige Aufgaben-ID für die Ergebnisabfrage |
2. Aufgabenergebnis abrufen#
Ruft den aktuellen Status und Ausgabe einer zuvor erstellten Hausgrundriss-Aufgabe ab.
Endpunkt
GET /api/v1/housePlan/result
Anforderungsheader
| Kopfzeile | Erforderlich | Beschreibung |
|---|---|---|
APIKEY | ✅ Ja | Ihr API Authentifizierungsschlüssel |
Abfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
taskId | long | ✅ Ja | Die vom Erstellungsendpunkt zurückgegebene Aufgaben-ID |
📥 Anfragebeispiele#
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);
📤 Antwort#
📸 Hinweis: Diese API generiert bei erfolgreichem Task exakt 1 zusammengesetztes Ergebnisbild. Das Bild kombiniert 2D Grundrisse, Außenansichten und fotorealistische Außendarstellungen in einem einzigen Präsentationsboard. Die
output.resultUrlenthält das zusammengesetzte Bild als URL, undoutput.resultListenthält dieselbe URL als Array mit einem Element zur Abwärtskompatibilität.
Erfolgreiche Antwort (Aufgabe abgeschlossen)
{
"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
}
}
}
Antwort (Aufgabe in Bearbeitung / in Warteschlange)
{
"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
}
}
Antwort (Aufgabe fehlgeschlagen)
{
"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
}
}
Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
id | long | Eindeutiger Aufgabenbezeichner |
status | string | Aktueller Aufgabenstatus (siehe Aufgabestatus) |
waitNumber | integer | Anzahl der Aufgaben vor Ihnen in der Warteschlange (0 bedeutet aktuell in Bearbeitung) |
percentage | integer | Fortschritt der Aufgabe in Prozent (0–100) |
input | object | Die ursprünglichen Eingabeparameter der Aufgabe |
input.style | string | Architekturstil |
input.totalArea | string | Gesamtflächenbereich |
input.stories | string | Anzahl der Stockwerke |
input.bedrooms | string | Anzahl der Schlafzimmer |
input.bathrooms | string | Anzahl der Badezimmer |
input.garageEnabled | boolean | Ob eine Garage angefordert wurde |
input.garageType | string / null | Garagentyp |
input.garageCapacity | string / null | Anzahl der Garagenstellplätze |
input.basement | string | Kellertyp |
input.roofType | string | Dachtyp |
input.outdoorSpaces | array<string> | Außenbereiche |
input.layoutConcept | string | Gesamtes Layout-Konzept |
input.bedroomAreaRanges | array<object> | Schlafzimmerflächenbereiche |
input.bathroomLayouts | array<object> | Badezimmer-Layout-Auswahlen |
input.kitchenLayout | string | Küchenlayout-Stil |
input.kitchenFeatureOptions | array<string> | Optionale Küchenausstattungen |
input.keyRooms | string | Besondere Räume (durch Komma getrennt) |
input.prompt | string | Benutzerdefinierter Text-Prompt (falls angegeben) |
input.refImageUrl | string | Referenzbild-URL (falls angegeben) |
input.modelType | string | Verwendeter Modelltyp |
output | object | Generierungsergebnis (nur verfügbar, wenn status Success ist) |
output.resultUrl | string | URL zum generierten zusammengesetzten Hausgrundriss-Präsentationsboard |
output.resultList | array<string> | URLs zu den generierten Ergebnisbildern. Bei der Hausplanung handelt es sich hierbei normalerweise um ein Array mit einem Element, das dieselbe URL wie output.resultUrl enthält |
output.width | integer | Ausgabebreite in Pixeln |
output.height | integer | Ausgabehöhe in Pixeln |
📊 Aufgabenstatus#
| Status | Beschreibung |
|---|---|
Unprocessed | Aufgabe wurde erstellt, aber noch nicht gestartet |
Processing | Aufgabe wird derzeit verarbeitet |
Success | Aufgabe erfolgreich abgeschlossen — Ausgabe ist verfügbar |
Failed | Aufgabe aufgrund eines Fehlers fehlgeschlagen |
Termination | Aufgabe wurde unterbrochen oder beendet |
Alle 3-5 Sekunden abfragen. Siehe API Aufgabenlimit.
❌ Fehlerantworten#
Alle Fehlerantworten haben dieselbe JSON-Struktur:
{
"code": 5002,
"message": "Invalid API Key",
"data": null
}
Fehlercode-Referenz#
| Code | Name | Beschreibung | Empfohlene Maßnahme |
|---|---|---|---|
1001 | FAILED | Anfrage fehlgeschlagen (generischer Fehler) | Überprüfen Sie das message-Feld für spezifische Fehlerdetails |
1003 | INTERNAL_ERROR | Interner Serverfehler | Wiederholen Sie nach kurzer Verzögerung; wenden Sie sich an den Support, falls es anhält |
1011 | PARAM_ERROR | Fehler in den Anfrageparametern | Überprüfen Sie, ob alle erforderlichen Parameter vorhanden und korrekt formatiert sind |
5002 | API_KEY_INVALID | Ungültiger oder fehlender API Key | Stellen Sie sicher, dass der APIKEY Header vorhanden ist und der Wert korrekt ist |
9010 | SCAN_TEXT_ERROR | Text-Prompt bestand Inhaltsüberprüfung nicht | Ändern Sie den Prompt, um sensible oder verbotene Inhalte zu entfernen |
9038 | PROHIBITED_CONTENT | Generiertes Ausgabebild enthält verbotene Inhalte | Passen Sie Prompt/Stil/Eingaben an und wiederholen Sie |
9051 | COINS_NOT_ENOUGH | Unzureichende Münzen / Credits | Laden Sie Ihre Kontocredits auf und wiederholen Sie den Vorgang |
📄 Für die vollständige Liste gemeinsamer API Fehlercodes beachten Sie die Fehlercode-Referenz.