Ideal House
Zum Hauptinhalt springen

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:

  1. Erstellen einer Aufgabe — Übermitteln Sie die Parameter Ihres Hausgrundrisses und empfangen Sie eine taskId.
  2. 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:

KopfzeileWert
APIKEYyour_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 modelType abgezogen. Wenn die Aufgabe letztendlich fehlschlägt, werden die abgezogenen Credits automatisch zurückerstattet auf Ihr Konto.
Unzureichende Guthabeneinheiten geben Fehlercode 9051 zurück. 📄 Siehe Referenz zum Guthabenverbrauch.

Modell (modelType)Abgezogene Guthabeneinheiten
Base10 Guthabeneinheiten
Pro20 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

Klartext
POST /api/v1/housePlan/generate

Anforderungsheader

KopfzeileErforderlichBeschreibung
APIKEY✅ JaIhr API Authentifizierungsschlüssel
Content-Type✅ Jaapplication/json

Anforderungskörper

FeldTypErforderlichBeschreibungStandard
stylestring / null✅ JaArchitekturstil (englischer Name). Siehe StiloptionenBarndominium
storiesstring✅ JaAnzahl der Stockwerke. Enum: 1, 2, 3+2
bedroomsstring✅ JaAnzahl der Schlafzimmer. Enum: 1, 2, 3, 4, 5+2
bathroomsstring✅ JaAnzahl der Badezimmer. Enum: 1, 1.5, 2, 2.5, 3, 3.5, 4+1
totalAreastring✅ JaGesamtflächenbereich im min-max unit-Format. Siehe Gesamtflächenoptionen150-200 m²
garageEnabledboolean✅ JaOb eine Garage eingeschlossen werden sollfalse
garageTypestring / null⚠️ BedingtErforderlich wenn garageEnabled=true. Siehe Garagentyp-Optionennull
garageCapacitystring / null⚠️ BedingtErforderlich wenn garageEnabled=true. Siehe Garagenkapazitätnull
basementstring✅ JaKellertyp. Siehe KelleroptionenNone
roofTypestring / null❌ NeinDachkonstruktionstyp. Siehe Dachtyp-Optionennull
outdoorSpacesarray<string>❌ NeinAußenbereiche. Siehe Außenbereichs-Optionen[]
layoutConceptstring / null❌ NeinGesamtes internes Layoutkonzept. Siehe Layout-Konzept-Optionennull
bedroomAreaRangesarray<object>✅ JaSchlafzimmerflächenbereiche. Länge muss mit der Anzahl der Schlafzimmer übereinstimmen. Siehe SchlafzimmerflächenbereicheSiehe Beispiel
bathroomLayoutsarray<object>✅ JaBadezimmer-Layout-Auswahlen. Länge muss Math.floor(bathrooms) betragen. Siehe BadezimmerlayoutsSiehe Beispiel
kitchenLayoutstring / null❌ NeinKüchenlayout. Siehe Küchenoptionennull
kitchenFeatureOptionsarray<string>❌ NeinOptionale Küchenausstattungen. Siehe Küchenoptionen[]
keyRoomsstring / null❌ NeinBesondere Räume, getrennt durch Komma und Leerzeichen. Siehe Optionen für besondere Räumenull
promptstring❌ NeinBenutzerdefinierter Text-Prompt zur weiteren Führung der Generierung""
refImageUrlstring❌ NeinURL eines Referenzhausbilds zur Stilanleitung""
modelTypestring✅ JaModellgütekategorie. Enum: Base, Pro. ⚠️ Flash-Modus wird nicht unterstütztBase

🖼️ 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#

WertBeschreibung
BarndominiumStandard. Hybridhaus aus Metall im Scheunenstil
CabinRustikaler Holzchalet-Stil
Cape CodKlassischer symmetrischer New-England-Stil
CoastalLeichter, luftiger strandinspirierter Stil
ColonialTraditionelle symmetrische Kolonialarchitektur
ContemporarySaubere Linien und moderne Materialien
CraftsmanHandgefertigte Details mit natürlichen Materialien
FarmhouseRustikaler Bauernhof-Stil
French CountryEleganter französischer Provinzstil
MediterraneanWarmer Putz mit Terrakotta-Elementen
Mid-Century ModernSauberer geometrischer Modernismus der 1950er–70er Jahre
ModernMinimalistisches flaches/kantiges modernes Design
RanchEin-stöckiges weitläufiges Layout
Shingle StyleDurchgehende Außenverkleidung aus Holzschindeln
SouthwesternVon Lehmziegelbauten inspirierter Wüstenstil
TransitionalMischung aus traditionellen und zeitgenössischen Elementen
TudorFachwerk-mittelalterlicher englischer Stil
VictorianOrnamentaler 19. Jahrhundert dekorativer Stil

📐 Optionen für Gesamtfläche#

Das Feld totalArea verwendet das Format min-max unit. Metrische Werte verwenden ; imperiale Werte verwenden ft². Der Mindestwert muss mindestens einen Schritt unter dem Maximalwert liegen.

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

🏠 Dachtyp-Optionen#

WertBeschreibung
Gable roofKlassisches dreieckiges Spitzdach
Hip roofNeigungen auf allen vier Seiten
Flat roofMinimal geneigtes Flachdach
Pitched roofAllgemein steil geneigtes Dach

🏗️ Kelleroptionen#

WertBeschreibung
NoneKein Keller
PartialTeilweiser Keller
FullVoller Keller

🚗 Garagentyp-Optionen#

garageType wird nur benötigt, wenn garageEnabled=true; sonst senden Sie null.

WertBeschreibung
DetachedFreistehende Garage
Front EntryGarageneingang zeigt nach vorne
Side EntryGarageneingang zeigt zur Seite
Rear EntryGarageneingang zeigt nach hinten

🚗 Garagenkapazität#

garageCapacity wird nur benötigt, wenn garageEnabled=true; sonst senden Sie null.

WertBeschreibung
1Einzelwagen-Garage
2Doppelwagen-Garage
3+Drei oder mehr Stellplätze

🌿 Außenbereichs-Optionen#

Das Feld outdoorSpaces akzeptiert ein Array der folgenden Werte.

WertBeschreibung
Front porchÜberdachter Eingangsvorplatz an der Vorderseite
Covered patioÜberdachter Terrassenbereich
DeckTerrasse aus Holz oder Verbundwerkstoff
BalconyErhöhte Außenplattform
CourtyardEingefasster oder halb-eingefasster Innenhof
BreezewayÜberdachter Durchgang, der Gebäude verbindet
Outdoor KitchenKoch- und Essbereich im Freien

Beispiel

Klartext
"outdoorSpaces": ["Front porch", "Deck", "Balcony"]

🏛️ Layout-Konzept-Optionen#

WertBeschreibung
Open ConceptOffene, miteinander verbundene Wohnbereiche
TraditionalGetrennte Räume mit definierten Grenzen
Split-LevelVersetzte 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:

FeldTypBeschreibung
namestringAnzeigename des Schlafzimmers, zum Beispiel Room 1 (Master)
minAreastringMinimalfläche des Schlafzimmers. Muss ein nicht-negativer numerischer String sein
maxAreastringMaximalfläche des Schlafzimmers. Muss größer oder gleich minArea sein
unitstringFlächeneinheit. Enum: , ft²

Standardbeispiel für bedrooms="2"

json
[
  { "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.

FeldTypBeschreibung
namestringAnzeigename des Badezimmers, zum Beispiel Bathroom 1
layoutstring / nullEnum: With Wet & Dry Separation, Without Separation oder null

Standardbeispiel für bathrooms="1"

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

🍳 Küchenoptionen#

Küchenlayout

WertBeschreibung
Open KitchenOffene Küche verbunden mit Wohn-/Essbereich
Closed KitchenGeschlossener separater Küchenraum

Optionen für Küchenausstattung

WertBeschreibung
Eating BarEsstheke / Sitzplätze an der Theke
Kitchen IslandKücheninsel
Breakfast NookFrü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 (,).

WertBeschreibung
Home OfficeDediziertes Heimbüro oder Arbeitszimmer
Bonus RoomFlexibler Mehrzweckzusatzraum
Media RoomHeimkino oder Medienzentrum
MudroomEingangsraum für Kleidung und Ausrüstung für draußen
Laundry RoomDedizierter Waschraum
Guest SuiteEigenständige Gästesuite

Beispiel

Klartext
"keyRooms": "Home Office, Media Room, Guest Suite"

Modelltypen

WertBeschreibung
BaseStandard. Ausgewogenes Verhältnis von Geschwindigkeit und Qualität. Generiert ein hochauflösendes zusammengesetztes Präsentationsboard
ProHöhere Qualität und höhere Auflösung, langsamer

⚠️ Hinweis: Flash-Modus ist für diese API nicht verfügbar. Nur Base und Pro werden unterstützt.


📥 Anfragebeispiele#

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();

📤 Antwort#

Erfolgreiche Antwort

json
{
  "code": 0,
  "message": "success",
  "data": 1234567890123456789
}
FeldTypBeschreibung
codeinteger0 zeigt Erfolg an
messagestringAntwortnachricht
datalongDie eindeutige Aufgaben-ID für die Ergebnisabfrage

2. Aufgabenergebnis abrufen#

Ruft den aktuellen Status und Ausgabe einer zuvor erstellten Hausgrundriss-Aufgabe ab.

Endpunkt

Klartext
GET /api/v1/housePlan/result

Anforderungsheader

KopfzeileErforderlichBeschreibung
APIKEY✅ JaIhr API Authentifizierungsschlüssel

Abfrageparameter

ParameterTypErforderlichBeschreibung
taskIdlong✅ JaDie vom Erstellungsendpunkt zurückgegebene Aufgaben-ID

📥 Anfragebeispiele#

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);

📤 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.resultUrl enthält das zusammengesetzte Bild als URL, und output.resultList enthält dieselbe URL als Array mit einem Element zur Abwärtskompatibilität.

Erfolgreiche Antwort (Aufgabe abgeschlossen)

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
    }
  }
}

Antwort (Aufgabe in Bearbeitung / in Warteschlange)

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
  }
}

Antwort (Aufgabe fehlgeschlagen)

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
  }
}

Antwortfelder

FeldTypBeschreibung
idlongEindeutiger Aufgabenbezeichner
statusstringAktueller Aufgabenstatus (siehe Aufgabestatus)
waitNumberintegerAnzahl der Aufgaben vor Ihnen in der Warteschlange (0 bedeutet aktuell in Bearbeitung)
percentageintegerFortschritt der Aufgabe in Prozent (0–100)
inputobjectDie ursprünglichen Eingabeparameter der Aufgabe
input.stylestringArchitekturstil
input.totalAreastringGesamtflächenbereich
input.storiesstringAnzahl der Stockwerke
input.bedroomsstringAnzahl der Schlafzimmer
input.bathroomsstringAnzahl der Badezimmer
input.garageEnabledbooleanOb eine Garage angefordert wurde
input.garageTypestring / nullGaragentyp
input.garageCapacitystring / nullAnzahl der Garagenstellplätze
input.basementstringKellertyp
input.roofTypestringDachtyp
input.outdoorSpacesarray<string>Außenbereiche
input.layoutConceptstringGesamtes Layout-Konzept
input.bedroomAreaRangesarray<object>Schlafzimmerflächenbereiche
input.bathroomLayoutsarray<object>Badezimmer-Layout-Auswahlen
input.kitchenLayoutstringKüchenlayout-Stil
input.kitchenFeatureOptionsarray<string>Optionale Küchenausstattungen
input.keyRoomsstringBesondere Räume (durch Komma getrennt)
input.promptstringBenutzerdefinierter Text-Prompt (falls angegeben)
input.refImageUrlstringReferenzbild-URL (falls angegeben)
input.modelTypestringVerwendeter Modelltyp
outputobjectGenerierungsergebnis (nur verfügbar, wenn status Success ist)
output.resultUrlstringURL zum generierten zusammengesetzten Hausgrundriss-Präsentationsboard
output.resultListarray<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.widthintegerAusgabebreite in Pixeln
output.heightintegerAusgabehöhe in Pixeln

📊 Aufgabenstatus#

StatusBeschreibung
UnprocessedAufgabe wurde erstellt, aber noch nicht gestartet
ProcessingAufgabe wird derzeit verarbeitet
SuccessAufgabe erfolgreich abgeschlossen — Ausgabe ist verfügbar
FailedAufgabe aufgrund eines Fehlers fehlgeschlagen
TerminationAufgabe wurde unterbrochen oder beendet

Alle 3-5 Sekunden abfragen. Siehe API Aufgabenlimit.


❌ Fehlerantworten#

Alle Fehlerantworten haben dieselbe JSON-Struktur:

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

Fehlercode-Referenz#

CodeNameBeschreibungEmpfohlene Maßnahme
1001FAILEDAnfrage fehlgeschlagen (generischer Fehler)Überprüfen Sie das message-Feld für spezifische Fehlerdetails
1003INTERNAL_ERRORInterner ServerfehlerWiederholen Sie nach kurzer Verzögerung; wenden Sie sich an den Support, falls es anhält
1011PARAM_ERRORFehler in den AnfrageparameternÜberprüfen Sie, ob alle erforderlichen Parameter vorhanden und korrekt formatiert sind
5002API_KEY_INVALIDUngültiger oder fehlender API KeyStellen Sie sicher, dass der APIKEY Header vorhanden ist und der Wert korrekt ist
9010SCAN_TEXT_ERRORText-Prompt bestand Inhaltsüberprüfung nichtÄndern Sie den Prompt, um sensible oder verbotene Inhalte zu entfernen
9038PROHIBITED_CONTENTGeneriertes Ausgabebild enthält verbotene InhaltePassen Sie Prompt/Stil/Eingaben an und wiederholen Sie
9051COINS_NOT_ENOUGHUnzureichende Münzen / CreditsLaden Sie Ihre Kontocredits auf und wiederholen Sie den Vorgang

📄 Für die vollständige Liste gemeinsamer API Fehlercodes beachten Sie die Fehlercode-Referenz.