Grundrissgenerierung API Dokumentation#
Basis-URL:
https://api.ideal.house
Version: v1
Aktualisiert: 2026-08-09
📖 Übersicht#
Die API zur Grundrissgenerierung erstellt aus strukturierten Raumvorgaben sowie einem optionalen benutzerdefinierten Prompt oder Referenzbild einen KI-generierten, schwarz-weißen Grundriss einer Wohnimmobilie in CAD-Optik aus der Draufsicht.
Die Ausgabe ist für frühe Layout-Explorationen gedacht. Sie ist keine Bauzeichnung und generierte Maße, Geometrie, Anordnung von Einrichtungen sowie die Einhaltung von Vorschriften müssen von einer qualifizierten Fachperson überprüft werden.
Der Arbeitsablauf ist asynchron:
- Erstellen Sie eine Aufgabe — Übermitteln Sie die Grundrissparameter und erhalten Sie eine
taskId. - Fragen Sie Ergebnisse regelmäßig ab — Fragen Sie den Ergebnisendpunkt mit der
taskIdab, bis die Aufgabe einen Endstatus erreicht hat.
🔐 Authentifizierung#
Alle öffentlichen API-Anfragen müssen einen API-Schlüssel enthalten.
| Header | Erforderlich | Wert |
|---|---|---|
APIKEY | ✅ Ja | Ihr API-Schlüssel |
Content-Type | ✅ Ja für POST | application/json |
[!WARNING] Bewahren Sie Ihren API-Schlüssel sicher auf. Geben Sie ihn nicht in clientseitigem Code oder öffentlichen Repositories preis.
💰 Guthabenverbrauch#
Credits werden nach erfolgreicher Erstellung einer Generierungsaufgabe abgezogen. Wenn die Aufgabe letztendlich fehlschlägt, werden die abgezogenen Credits automatisch zurückerstattet. Bei unzureichenden Credits wird der Fehlercode 9051 zurückgegeben.
Modell (modelType) | Ausgabeformat | Guthaben |
|---|---|---|
Base | 1536 × 1024 | 10 |
Pro | 2496 × 1664 | 20 |
Flash wird vom API zur Grundrissgenerierung nicht unterstützt.
Siehe Referenz zum Guthabenverbrauch für allgemeines Abrechnungsverhalten.
📌 API Endpunkte#
1. Grundrissaufgabe erstellen#
Erstellt eine Grundriss-Generierungsaufgabe und gibt eine eindeutige Aufgaben-ID zurück.
Endpunkt
POST /api/v1/floorPlan/generate
Anfrage-Header
| Kopfzeile | Erforderlich | Beschreibung |
|---|---|---|
APIKEY | ✅ Ja | API-Authentifizierungsschlüssel |
Content-Type | ✅ Ja | Muss application/json sein |
Anfragetext#
| Feld | Typ | Erforderlich | Beschreibung | Standard |
|---|---|---|---|---|
bedrooms | integer | ❌ Nein | Anzahl der Schlafzimmer von 0 bis 5 | 2 |
bathrooms | number | ❌ Nein | Gesamte Badezimmeranzahl von 0.5 bis 4, in 0.5-Schritten | 1.5 |
totalArea | string | ✅ Ja | Positive Zielgesamtfläche mit Einheit m² oder ft², z. B. 220 m² oder 1386 ft² | — |
bedroomAreaRanges | array<object> | ❌ Nein | Optionale Größenrichtlinie für Schlafzimmer. Siehe Schlafzimmerflächenbereiche | Bei Weglassen aus totalArea abgeleitet |
bathroomDetails | object | ❌ Nein | Einstellungen nur für Vollbadezimmer. Siehe Badezimmerdetails | — |
kitchenDetails | object | ❌ Nein | Optionale Küchenkonfiguration. Siehe Küchendetails | — |
keyRooms | array<string> | ❌ Nein | Zusätzliche Räume oder Bereiche. Siehe Wichtige Räume | [] |
prompt | string | ❌ Nein | Zusätzliche Layoutprioritäten. Sie kann strukturierte Zählungen oder harte visuelle Beschränkungen nicht überschreiben | "" |
refImageUrl | string | ❌ Nein | Öffentlich zugängliche Referenzbild-URL | "" |
modelType | string | ❌ Nein | Enum: Base, Pro | Base |
[!IMPORTANT] Die öffentliche API validiert derzeit
bedroomsals0–5undbathroomsals0.5–4. Werte, die in einer anderen Client-Benutzeroberfläche verfügbar sind, erweitern diese serverseitigen Grenzen nicht.
Allgemeine Anfrageregeln#
- Alle Enum-Werte sind abhängig von Groß- und Kleinschreibung und müssen die in diesem Dokument gezeigten englischen Werte verwenden.
totalAreaist eine Zielgesamtfläche, der zur Steuerung von Maßstab und Proportionen dient; er wird nicht als exakte Bauabmessung behandelt.- Der effektive benutzerdefinierte Prompt wird auf die ersten 800 Zeichen beschränkt, wenn der strukturierte Bildprompt zusammengesetzt wird.
- Strukturierte Felder haben Vorrang vor widersprüchlichen Anweisungen in
prompt. - Eine erfolgreiche Aufgabe generiert genau ein Bild.
📐 Gesamtfläche#
totalArea enthält einen positiven numerischen Wert gefolgt von einer Flächeneinheit.
| Einheit | Beispiel |
|---|---|
m² | 220 m² |
ft² | 1386 ft² |
Ein Leerzeichen vor der Einheit wird empfohlen. Dezimalwerte werden akzeptiert, wenn sie positiv sind.
Gültige Beispiele:
{
"totalArea": "200 m²"
}
{
"totalArea": "1850 ft²"
}
🛏️ Schlafzimmerflächenbereiche#
bedroomAreaRanges bietet relative Größenrichtlinien für Schlafzimmer. Es werden keine numerischen Flächenbeschriftungen im generierten Bild angefordert.
Jeder Eintrag hat die folgende Form:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | ❌ Nein | Schlafzimmerspezifische Bezeichnung, z. B. Room 1 (Master) oder Room 2 |
minArea | string | ❌ Nein | Positive Mindestfläche |
maxArea | string | ❌ Nein | Positive Maximalfläche; darf nicht kleiner als minArea sein |
unit | string | ❌ Nein | Enum: m², ft²; verwenden Sie dieselbe Einheit wie bei totalArea |
Explizites Bereichsbeispiel
{
"bedroomAreaRanges": [
{
"name": "Room 1 (Master)",
"minArea": "30",
"maxArea": "40",
"unit": "m²"
},
{
"name": "Room 2",
"minArea": "20",
"maxArea": "30",
"unit": "m²"
}
]
}
Regeln bei Lieferung eines nicht-leeren Arrays:
- Seine Länge muss gleich
bedroomssein. - Jedes gelieferte
minAreaundmaxAreamuss ein positiver numerischer String sein. - Wenn beide Werte geliefert werden, gilt
minArea <= maxArea. unitmuss, wenn geliefert,m²oderft²sein.- Namen bleiben erhalten. Leere oder null-Einträge liefern keine Größenrichtlinie.
Automatische Bereiche bei Weglassen#
Das Feld kann weggelassen oder als leeres Array gesendet werden. Wenn kein Eintrag einen wirksamen minArea oder maxArea enthält, leitet der strukturierte Generierungspfad interne Schlafzimmerbereiche aus totalArea und bedrooms ab:
- Das Schlafzimmerflächenbudget beginnt bei 20% des Gesamtfläche für ein Schlafzimmer.
- Das Budget erhöht sich um 7.5 Prozentpunkte pro zusätzlichem Schlafzimmer, gedeckelt bei 50%.
- Das erste Schlafzimmer erhält ein
1.3-Größengewicht; jedes weitere Schlafzimmer erhält ein1.0-Gewicht. - Jedes Ziel wird zu einem ungefähren
±10%-Bereich, gerundet auf ganzzahlige Flächeneinheiten. - Die Einheit wird von
totalAreageerbt. - Vorhandene nicht-leere Raumnamen werden beibehalten; andernfalls verwendet der Server
Room 1,Room 2und so weiter.
Für 200 m² und 4 Schlafzimmer beträgt die aktuelle abgeleitete Richtlinie ungefähr:
[
{ "name": "Room 1", "minArea": "23", "maxArea": "28", "unit": "m²" },
{ "name": "Room 2", "minArea": "18", "maxArea": "22", "unit": "m²" },
{ "name": "Room 3", "minArea": "18", "maxArea": "22", "unit": "m²" },
{ "name": "Room 4", "minArea": "18", "maxArea": "22", "unit": "m²" }
]
Diese Werte sind interne proportionale Richtlinien, keine garantierten endgültigen Raumflächen. Explizite gültige Bereiche haben stets Vorrang vor automatischen Bereichen.
Wenn bedrooms 0 ist, lassen Sie bedroomAreaRanges weg oder senden Sie [].
🛁 Badezimmerdetails#
bathrooms repräsentiert die Gesamtanzahl der Badezimmer:
- Ihr ganzzahliger Anteil ist die Anzahl der Vollbadezimmer.
- Ein
.5-Bruchteil fügt ein halbes Badezimmer hinzu. - Jedes Vollbad wird mit der Anweisung generiert, eine Toilette, einen Waschtisch/Waschbecken und eine Dusche oder Nassbereich einzuschließen.
- Ein halbes Badezimmer enthält nur eine Toilette und einen Waschtisch/Waschbecken, ohne Dusche oder Badewanne.
bathroomDetails konfiguriert nur Vollbadezimmer:
{
"bathroomDetails": {
"fullBathroomOptions": [
{
"name": "Bathroom 1",
"wetDrySeparation": "yes",
"bathtub": "required"
},
{
"name": "Bathroom 2",
"wetDrySeparation": "no",
"bathtub": "optional"
}
]
}
}
| Feld | Typ | Erlaubte Werte | Beschreibung |
|---|---|---|---|
name | string | Bathroom 1, Bathroom 2, usw. | Optionale Anzeigebezeichnung |
wetDrySeparation | string / null | yes, no, null | Ob ein separater Nassbereich angezeigt werden soll |
bathtub | string / null | no, optional, required, null | Badewannenpräferenz |
Regeln:
fullBathroomOptions.lengthdarffloor(bathrooms)nicht überschreiten.- Das Array darf nur die Vollbadezimmer enthalten, für die Präferenzen ausgewählt wurden.
- Ein
null-Wert bedeutet nicht spezifiziert. - Eine erforderliche Badewanne ist zusätzlich zu den Standard-Vollbadezimmer-Ausstattungen; sie ersetzt nicht die Toilette oder Dusche.
- Nass/Trocken-Trennung ist eine interne Trennwand innerhalb eines gezählten Badezimmers, kein zusätzliches Badezimmer.
🍳 Küchendetails#
Alle kitchenDetails-Unterfelder sind optional. Lassen Sie das gesamte Objekt weg, wenn keine Küchenpräferenz ausgewählt ist.
{
"kitchenDetails": {
"type": "open",
"size": "standard",
"layout": "U",
"islandType": "preparation",
"storage": "maximum",
"features": ["breakfast nook", "pantry"]
}
}
| Feld | Typ | Erlaubte Werte |
|---|---|---|
type | string | open, semi-open, closed |
size | string | small, standard, large, extra large |
layout | string | I, L, U, gallery |
islandType | string | no, preparation, cooking, entertainment |
storage | string | minimal, standard, maximum |
features | array<string> | eating bar, breakfast nook, pantry |
Teilweise Konfiguration ist gültig. Zum Beispiel:
{
"kitchenDetails": {
"type": "semi-open"
}
}
🚪 Wichtige Räume#
keyRooms akzeptiert ein Array dieser genauen Werte:
| Wert | Beschreibung |
|---|---|
walk-in closet | Separater begehbarer Kleiderschrank mit Zugang zum Schlafbereich |
laundry room | Dedizierter Waschraumbereich |
storage room | Allgemeiner Abstellraum |
utility room | Technischer oder Service-Raum |
home office | Dediziertes Büro oder Studierzimmer |
garage | Garage mit Fahrzeugzufahrt von außen und Zugang zum Haus von innen |
pantry | Speisekammer neben der Küche |
combined living-dining | Eine gemeinsame Wohn- und Essbereichszone |
balcony | Außenbalkon, verbunden mit Wohnbereich oder einem Hauptschlafzimmer |
Der ältere Web-Wert balcon wird ebenfalls akzeptiert und zu balcony normalisiert.
Regeln:
- Leere Werte werden ignoriert und Duplikate werden entfernt.
- Ausgewählte wichtige Räume werden einmal angefordert.
- Nicht ausgewählte optionale Räume werden vom generierten Raumprogramm ausgeschlossen.
- Wenn
pantrysowohl inkitchenDetails.featuresals auch inkeyRoomserscheint, wird nur eine Speisekammer angefordert.
Beispiel:
{
"keyRooms": [
"garage",
"home office",
"combined living-dining"
]
}
🖼️ Referenzbild#
refImageUrl ist optional und muss direkt vom API-Server zugänglich sein.
Anforderungen:
- Format: JPG/JPEG, PNG oder WebP.
- Maximale Dateigröße: 20 MB.
- Minimale Abmessungen: 128 × 128 px.
- Maximale Abmessungen: 6,000 × 6,000 px. Größere Bilder werden vor der Verarbeitung proportional skaliert.
Das Referenzbild leitet Layout, räumliche Anordnung, Proportionen oder visuellen Stil. Es überschreibt nicht strukturierte Raumzählungen oder andere harte Beschränkungen.
🤖 Modelltypen#
| Wert | Beschreibung |
|---|---|
Base | Standard. Ausgewogene Generierungsqualität, 1536 × 1024 Ausgabe |
Pro | Höherauflösende 2496 × 1664 Ausgabe mit längerer erwarteter Generierungszeit |
Nur Base und Pro werden unterstützt.
Felder nicht im öffentlichen fachlichen API-Vertrag#
Die folgenden Felder dürfen von öffentlichen API-Clients nicht als verlässlich angesehen werden:
| Feld | Hinweise |
|---|---|
imageNumbers | Der aktuelle Generator gibt immer ein Bild zurück; dieses Feld wird nicht benötigt |
extData | Interne Web-Aufgaben-Gruppen-Tracking-Metadaten; öffentliche Clients sollten es weglassen |
isApiCall | Wird vom API-Endpunkt bestimmt, nicht vom Anfragetext |
genByMember | Interne Generierungsmetadaten, kein Grundriss-Anfragefeld |
Entfernte Legacy-Felder, die nicht gesendet werden dürfen:
floorplanSetting
roomCounts
grossArea
totalAreaValue
totalAreaUnit
totalAreaType
fullBathrooms
halfBathrooms
halfBathroomRequirement
kitchenType
diningRooms
livingRooms
extras
referenceImage
hasDetailOptions
📥 Beispiele zum Erstellen von Aufgaben#
Minimale Anfrage mit automatischen Schlafzimmerflächenbereichen#
curl -X POST "https://api.ideal.house/api/v1/floorPlan/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"modelType": "Pro",
"prompt": "Upper floor of a two-story Saudi Arabian villa with a master bedroom, family living area, staircase landing, and balcony"
}'
Vollständige Anfrage#
cURL
curl -X POST "https://api.ideal.house/api/v1/floorPlan/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"bedrooms": 3,
"bathrooms": 2.5,
"totalArea": "220 m²",
"bedroomAreaRanges": [
{"name": "Room 1 (Master)", "minArea": "30", "maxArea": "40", "unit": "m²"},
{"name": "Room 2", "minArea": "20", "maxArea": "30", "unit": "m²"},
{"name": "Room 3", "minArea": "20", "maxArea": "30", "unit": "m²"}
],
"bathroomDetails": {
"fullBathroomOptions": [
{"name": "Bathroom 1", "wetDrySeparation": "yes", "bathtub": "required"},
{"name": "Bathroom 2", "wetDrySeparation": "no", "bathtub": "optional"}
]
},
"kitchenDetails": {
"type": "open",
"size": "standard",
"layout": "U",
"islandType": "preparation",
"storage": "maximum",
"features": ["breakfast nook", "pantry"]
},
"keyRooms": ["garage", "home office", "combined living-dining"],
"prompt": "Bright modern home with good natural lighting",
"refImageUrl": "https://example.com/reference-plan.png",
"modelType": "Pro"
}'
Java (OkHttp)
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class FloorPlanApiExample {
private static final String BASE_URL = "https://api.ideal.house";
private static final String API_KEY = "your_api_key_here";
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
String json = """
{
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"keyRooms": ["walk-in closet", "balcony"],
"prompt": "Upper floor with a master bedroom and family living area",
"modelType": "Pro"
}
""";
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/floorPlan/generate")
.addHeader("APIKEY", API_KEY)
.addHeader("Content-Type", "application/json")
.post(RequestBody.create(json, MediaType.parse("application/json")))
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
}
}
Python (requests)
import requests
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
payload = {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"keyRooms": ["walk-in closet", "balcony"],
"prompt": "Upper floor with a master bedroom and family living area",
"modelType": "Pro",
}
response = requests.post(
f"{BASE_URL}/api/v1/floorPlan/generate",
headers={"APIKEY": API_KEY, "Content-Type": "application/json"},
json=payload,
)
response.raise_for_status()
print("Task ID:", response.json()["data"])
Node.js (axios)
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function createFloorPlanTask() {
const response = await axios.post(
`${BASE_URL}/api/v1/floorPlan/generate`,
{
bedrooms: 4,
bathrooms: 2,
totalArea: '200 m²',
keyRooms: ['walk-in closet', 'balcony'],
prompt: 'Upper floor with a master bedroom and family living area',
modelType: 'Pro'
},
{
headers: {
APIKEY: API_KEY,
'Content-Type': 'application/json'
}
}
);
console.log('Task ID:', response.data.data);
return response.data.data;
}
createFloorPlanTask();
Erfolgreiche Antwort beim Erstellen einer Aufgabe#
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| Feld | Typ | Beschreibung |
|---|---|---|
code | integer | 0 zeigt an, dass die Aufgabe erfolgreich erstellt wurde |
message | string | Antwortnachricht |
data | long | Aufgaben-ID zur regelmäßigen Abfrage des Ergebnisendpunkts |
2. Aufgabenergebnis abrufen#
Gibt den Aufgabenfortschritt und das generierte Bild zurück, wenn verfügbar.
Endpunkt
GET /api/v1/floorPlan/result?taskId={taskId}
Anfrage-Header
| Kopfzeile | Erforderlich | Beschreibung |
|---|---|---|
APIKEY | ✅ Ja | API-Authentifizierungsschlüssel |
Abfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
taskId | long | ✅ Ja | Vom Erstellungsendpunkt zurückgegebene Aufgaben-ID |
Beispiele für Ergebnisabfragen#
cURL
curl -X GET "https://api.ideal.house/api/v1/floorPlan/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Python: regelmäßige Ergebnisabfrage
import time
import requests
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
task_id = 1234567890123456789
while True:
response = requests.get(
f"{BASE_URL}/api/v1/floorPlan/result",
headers={"APIKEY": API_KEY},
params={"taskId": task_id},
)
response.raise_for_status()
task = response.json()["data"]
print(task["status"], task["percentage"], task["waitNumber"])
if task["status"] in ("Success", "Failed", "Termination"):
break
time.sleep(3)
if task["status"] == "Success":
print("Result URL:", task["output"]["resultUrl"])
Node.js: regelmäßige Ergebnisabfrage
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function pollFloorPlanResult(taskId) {
while (true) {
const response = await axios.get(
`${BASE_URL}/api/v1/floorPlan/result`,
{
headers: { APIKEY: API_KEY },
params: { taskId }
}
);
const task = response.data.data;
console.log(task.status, task.percentage, task.waitNumber);
if (['Success', 'Failed', 'Termination'].includes(task.status)) {
if (task.status === 'Success') {
console.log('Result URL:', task.output.resultUrl);
}
return task;
}
await new Promise(resolve => setTimeout(resolve, 3000));
}
}
pollFloorPlanResult('1234567890123456789');
Abgeschlossene Aufgabenantwort#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Success",
"waitNumber": 0,
"percentage": 100,
"input": {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"bedroomAreaRanges": [
{"name": "Room 1", "minArea": "23", "maxArea": "28", "unit": "m²"},
{"name": "Room 2", "minArea": "18", "maxArea": "22", "unit": "m²"},
{"name": "Room 3", "minArea": "18", "maxArea": "22", "unit": "m²"},
{"name": "Room 4", "minArea": "18", "maxArea": "22", "unit": "m²"}
],
"keyRooms": ["walk-in closet", "balcony"],
"prompt": "Upper floor with a master bedroom and family living area",
"modelType": "Pro"
},
"output": {
"resultUrl": "https://cdn.ideal.house/output/floor-plan.jpg",
"width": 2496,
"height": 1664
}
}
}
Verarbeitungsantwort#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Processing",
"waitNumber": 1,
"percentage": 45,
"input": {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"modelType": "Pro"
},
"output": null
}
}
Fehlgeschlagene Aufgabenantwort#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"modelType": "Pro"
},
"output": null
}
}
Ergebnisfelder#
| Feld | Typ | Beschreibung |
|---|---|---|
id | long | Aufgaben-ID |
status | string | Aktueller Aufgabenstatus |
waitNumber | integer | Anzahl der Aufgaben vor Ihnen in der Warteschlange; 0 bedeutet keine wartenden Aufgaben vor Ihnen |
percentage | integer | Ungefähre Abschlussprozentzahl von 0 bis 100 |
input | object | Normalisierte Aufgabeneingabe, einschließlich automatisch abgeleiteter Schlafzimmerbereiche, wenn zutreffend |
output | object / null | Generierte Ausgabe, wenn die Aufgabe erfolgreich ist; andernfalls meist null |
output.resultUrl | string | Signierte URL des generierten Grundrissbildes |
output.width | integer | Ausgabebreite in Pixeln |
output.height | integer | Ausgabehöhe in Pixeln |
📊 Aufgabenstatus#
| Status | Beschreibung |
|---|---|
Unprocessed | Aufgabe wurde erstellt, hat aber noch nicht begonnen |
Processing | Aufgabe wird gerade verarbeitet |
Success | Aufgabe abgeschlossen und output.resultUrl ist verfügbar |
Failed | Aufgabe fehlgeschlagen |
Termination | Aufgabe wurde unterbrochen oder beendet |
Fragen Sie alle 3–5 Sekunden den Status ab. Siehe API Aufgabenlimit.
❌ Fehlerantworten#
Alle Fehlerantworten verwenden die gemeinsame Antwortstruktur:
{
"code": 1011,
"message": "bedroomAreaRanges size must match bedrooms",
"data": null
}
| Code | Name | Beschreibung | Empfohlene Maßnahme |
|---|---|---|---|
1001 | FAILED | Generischer Anfragefehler | Überprüfen Sie das message-Feld |
1003 | INTERNAL_ERROR | Interner Serverfehler | Später erneut versuchen; kontaktieren Sie den Support, wenn es weiterhin besteht |
1011 | PARAM_ERROR | Ungültiger Anfrageparameter | Überprüfen Sie Zählungen, Einheiten, Enum-Werte und geschachtelte Arrays |
5002 | API_KEY_INVALID | Ungültiger oder fehlender API-Schlüssel | Überprüfen Sie den APIKEY-Header |
9010 | SCAN_TEXT_ERROR | Prompt hat die Inhaltsüberprüfung nicht bestanden | Überarbeiten Sie den Prompt |
9038 | PROHIBITED_CONTENT | Generierte Ausgabe enthält verbotene Inhalte | Passen Sie die Eingaben an und versuchen Sie es erneut |
9051 | COINS_NOT_ENOUGH | Unzureichende Credits | Fügen Sie Credits hinzu und versuchen Sie es erneut |
Siehe Referenz zu Fehlercodes für die vollständige Liste gängiger Fehler.
🔄 Web-Integration Hinweise#
Die authentifizierte Webanwendung und die öffentliche API verwenden unterschiedliche Endpunkte und Authentifizierungsmethoden:
| Client | Endpunkt | Authentifizierung |
|---|---|---|
| Webanwendung | POST /floorPlan/generate | Anmelde-token-Header |
| Öffentliche API | POST /api/v1/floorPlan/generate | APIKEY-Header |
Die Geschäfts-Feldstrukturen sind abgeglichen, aber öffentliche API-Clients sollten die serverseitigen Grenzen und den öffentlichen Vertrag in diesem Dokument befolgen. Insbesondere:
- Web-Clients können interne
imageNumbersundextDataenthalten; öffentliche Clients benötigen diese nicht. - Die öffentliche API ermittelt API-Call-Metadaten aus dem Endpunkt und den Anmeldeinformationen. Anfragefelder wie
isApiCallundgenByMembersind unnötig. balconwird zur Kompatibilität akzeptiert und zubalconynormalisiert; neue Integrationen solltenbalconysenden.- Die aktuellen öffentlichen Servergrenzen bleiben
0–5Schlafzimmer und0.5–4Badezimmer, auch wenn eine andere Benutzeroberfläche vorübergehend breitere Auswahlfelder anzeigt.