API zur Außengestaltung Dokumentation#
Basis-URL:
https://api.ideal.house
Version: v1
Aktualisiert: 2026-05-20
📖 Übersicht#
Die API zur Außengestaltung ermöglicht es, das Äußere eines Gebäudes anhand eines Eingabebilds zu renovieren oder neu zu gestalten. Sie stellen ein Ausgangsbild bereit und können optional Textvorgaben, ein Referenzbild, einen Baustil oder eine gewünschte Umgebung angeben, um das Ergebnis zu steuern.
Der Arbeitsablauf ist asynchron und umfasst zwei Schritte:
- Aufgabe erstellen — Senden Sie Ihr Außenbild und optionale Anleitung, dann erhalten Sie eine
taskId. - Ergebnisse regelmäßig abfragen — Verwenden Sie die
taskId, um den Aufgabestatus abzufragen und das generierte Bild 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] 🪙 1 Guthabeneinheit wird bei erfolgreicher Aufgabenerstellung abgezogen. Wenn die Aufgabe letztendlich fehlschlägt, wird der abgezogene Betrag automatisch erstattet auf Ihr Konto.
Unzureichende Guthabeneinheiten geben Fehlercode9051zurück. 📄 Siehe Referenz zum Guthabenverbrauch.
| Vorgang | Abgebuchte Credits |
|---|---|
| Aufgabe zur Außengestaltung | 1 Guthabeneinheit |
Für detaillierte Guthabeneinheitsregeln siehe Referenz zum Guthabenverbrauch.
📌 API Endpunkte#
1. Aufgabe zur Außengestaltung erstellen#
Erstellt eine neue Außenrenovierungsaufgabe und gibt eine eindeutige taskId für die Abfrage zurück.
Endpunkt
POST /api/v1/exteriorRenovator/generate
Anforderungsheader
| Kopfzeile | Erforderlich | Beschreibung |
|---|---|---|
APIKEY | ✅ Ja | Ihr API Authentifizierungsschlüssel |
Content-Type | ✅ Ja | application/json |
Anforderungskörper
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
imageUrl | string | ✅ Ja | URL des Ausgangsbilds der zu renovierenden Gebäudeaußenseite |
prompt | string | ❌ Optional | Optionale Textanleitung für das Renovierungsergebnis |
referenceUrl | string | ❌ Optional | Optionales Referenzbild-URL zur visuellen Stilsteuerung |
buildingStyleId | string | ❌ Optional | Optionale Gebäude-Stil-ID |
environmentId | string | ❌ Optional | Optionale Umgebungs- oder Szenen-Stil-ID. Unterstützt mehrere durch Komma getrennte IDs, z.B. id1,id2 |
⚠️ Nur
imageUrlist erforderlich. Alle anderen Anforderungskörperfelder sind optional.
🖼️ Bildanforderungen: Alle Ausgangs- und Referenzbilder müssen JPG/JPEG, PNG oder WebP verwenden. Jedes Bild darf maximal 20 MB groß sein, mit Abmessungen von 128 × 128 px bis zu 6,000 × 6,000 px (inklusive). Bilder, die die maximalen Pixelabmessungen überschreiten, werden automatisch proportional herunter-skaliert, um innerhalb von 6,000 × 6,000 px vor der Verarbeitung zu passen. Bild-URLs müssen direkt vom API Server erreichbar sein.
🎨 Stileinstellungen#
buildingStyleId und environmentId können im API-Stilkonfiguration-Endpunkt ausgewählt werden.
Verwenden:
GET /api/v1/style/exterior_renovator/getStyles
| Stilgruppe | Anforderungsfeld | Beschreibung |
|---|---|---|
buildingStyle | buildingStyleId | Gebäude-Stiloption |
environment | environmentId | Umgebungs- oder Szenen-Option. Unterstützt mehrere durch Komma getrennte Options-IDs, z.B. id1,id2 |
Jede Option enthält name, id und url. Übergeben Sie die Option-id in das entsprechende Anforderungsfeld.
📥 Anfragebeispiele#
cURL
# Minimal request
curl -X POST "https://api.ideal.house/api/v1/exteriorRenovator/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://example.com/exterior.jpg"
}'
# Request with optional guidance
curl -X POST "https://api.ideal.house/api/v1/exteriorRenovator/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://example.com/exterior.jpg",
"prompt": "Modern farmhouse exterior with warm wood accents, black window frames, and clean landscaping",
"referenceUrl": "https://example.com/reference-house.jpg",
"buildingStyleId": "modern-farmhouse",
"environmentId": "Architecture_Enviroment_Time_Night,Architecture_Enviroment_Time_Day"
}'
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class ExteriorRenovatorApiExample {
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 = """
{
"imageUrl": "https://example.com/exterior.jpg",
"prompt": "Modern farmhouse exterior with warm wood accents, black window frames, and clean landscaping",
"referenceUrl": "https://example.com/reference-house.jpg",
"buildingStyleId": "modern-farmhouse",
"environmentId": "Architecture_Enviroment_Time_Night,Architecture_Enviroment_Time_Day"
}
""";
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/exteriorRenovator/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 = {
"imageUrl": "https://example.com/exterior.jpg",
"prompt": "Modern farmhouse exterior with warm wood accents, black window frames, and clean landscaping",
"referenceUrl": "https://example.com/reference-house.jpg",
"buildingStyleId": "modern-farmhouse",
"environmentId": "Architecture_Enviroment_Time_Night,Architecture_Enviroment_Time_Day"
}
response = requests.post(
f"{BASE_URL}/api/v1/exteriorRenovator/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 createExteriorRenovatorTask() {
try {
const response = await axios.post(
`${BASE_URL}/api/v1/exteriorRenovator/generate`,
{
imageUrl: 'https://example.com/exterior.jpg',
prompt: 'Modern farmhouse exterior with warm wood accents, black window frames, and clean landscaping',
referenceUrl: 'https://example.com/reference-house.jpg',
buildingStyleId: 'modern-farmhouse',
environmentId: 'Architecture_Enviroment_Time_Night,Architecture_Enviroment_Time_Day'
},
{
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);
}
}
createExteriorRenovatorTask();
📤 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 Außenrenovierungsaufgabe ab.
Endpunkt
GET /api/v1/exteriorRenovator/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/exteriorRenovator/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class ExteriorRenovatorResultExample {
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/exteriorRenovator/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
while True:
response = requests.get(
f"{BASE_URL}/api/v1/exteriorRenovator/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"):
break
time.sleep(3)
if status == "Success":
print("Result URL:", result["output"]["resultUrl"])
else:
print("Task failed")
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/exteriorRenovator/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'].includes(status)) {
if (status === 'Success') {
console.log('Result URL:', result.output.resultUrl);
console.log('Size:', result.output.width, 'x', result.output.height);
} else {
console.log('Task failed');
}
break;
}
await new Promise(resolve => setTimeout(resolve, 3000));
}
}
pollResult(1234567890123456789);
📤 Antwort#
Erfolgreiche Antwort (Aufgabe abgeschlossen)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Success",
"waitNumber": 0,
"percentage": 100,
"input": {
"imageUrl": "https://example.com/exterior.jpg",
"prompt": "Modern farmhouse exterior with warm wood accents, black window frames, and clean landscaping",
"refImageUrl": "https://example.com/reference-house.jpg",
"buildingStyleId": "modern-farmhouse",
"environmentId": "Architecture_Enviroment_Time_Night,Architecture_Enviroment_Time_Day"
},
"output": {
"resultUrl": "https://cdn.ideal.house/output/exterior_renovator_result.jpg",
"width": 1024,
"height": 1024
}
}
}
Antwort (Aufgabe in Bearbeitung / in Warteschlange)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Processing",
"waitNumber": 1,
"percentage": 50,
"input": {
"imageUrl": "https://example.com/exterior.jpg"
},
"output": null
}
}
Antwort (Aufgabe fehlgeschlagen)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"imageUrl": "https://example.com/exterior.jpg"
},
"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.imageUrl | string | URL des Ausgangsbilds der Gebäudeaußenseite |
input.prompt | string | Optionale Textanleitung, falls bereitgestellt |
input.refImageUrl | string | Optionales Referenzbild-URL, falls bereitgestellt |
input.buildingStyleId | string | Optionale Gebäude-Stil-ID, falls bereitgestellt |
input.environmentId | string | Optionale Umgebungs- oder Szenen-Stil-ID, falls bereitgestellt. Kann mehrere durch Komma getrennte IDs enthalten |
output | object | Generierungsergebnis (nur verfügbar, wenn status Success ist) |
output.resultUrl | string | URL zum Außenrenovierungsergebnisbild |
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 |
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 | Anforderungsparameterfehler | Stellen Sie sicher, dass Anforderungsparameter 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 Ausgangsbild enthält verbotene Inhalte | Passen Sie Prompt/Stil/Eingaben an und wiederholen Sie |
9051 | COINS_NOT_ENOUGH | Unzureichende Münzen / Guthabeneinheiten | Laden Sie Ihre Kontogutschriften auf und wiederholen Sie. Siehe Referenz zum Guthabenverbrauch |
📄 Für die vollständige Liste gemeinsamer API Fehlercodes beachten Sie die Fehlercode-Referenz.