Ideal House
Zum Hauptinhalt springen

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:

  1. Aufgabe erstellen — Senden Sie Ihr Außenbild und optionale Anleitung, dann erhalten Sie eine taskId.
  2. 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:

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] 🪙 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 Fehlercode 9051 zurück. 📄 Siehe Referenz zum Guthabenverbrauch.

VorgangAbgebuchte Credits
Aufgabe zur Außengestaltung1 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

Klartext
POST /api/v1/exteriorRenovator/generate

Anforderungsheader

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

Anforderungskörper

FeldTypErforderlichBeschreibung
imageUrlstring✅ JaURL des Ausgangsbilds der zu renovierenden Gebäudeaußenseite
promptstring❌ OptionalOptionale Textanleitung für das Renovierungsergebnis
referenceUrlstring❌ OptionalOptionales Referenzbild-URL zur visuellen Stilsteuerung
buildingStyleIdstring❌ OptionalOptionale Gebäude-Stil-ID
environmentIdstring❌ OptionalOptionale Umgebungs- oder Szenen-Stil-ID. Unterstützt mehrere durch Komma getrennte IDs, z.B. id1,id2

⚠️ Nur imageUrl ist 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:

Klartext
GET /api/v1/style/exterior_renovator/getStyles
StilgruppeAnforderungsfeldBeschreibung
buildingStylebuildingStyleIdGebäude-Stiloption
environmentenvironmentIdUmgebungs- 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
bash
# 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)
java
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)
python
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)
javascript
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

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 Außenrenovierungsaufgabe ab.

Endpunkt

Klartext
GET /api/v1/exteriorRenovator/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/exteriorRenovator/result?taskId=1234567890123456789" \
  -H "APIKEY: your_api_key_here"
Java (OkHttp)
java
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)
python
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)
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/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)

json
{
  "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)

json
{
  "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)

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Failed",
    "waitNumber": 0,
    "percentage": 0,
    "input": {
      "imageUrl": "https://example.com/exterior.jpg"
    },
    "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.imageUrlstringURL des Ausgangsbilds der Gebäudeaußenseite
input.promptstringOptionale Textanleitung, falls bereitgestellt
input.refImageUrlstringOptionales Referenzbild-URL, falls bereitgestellt
input.buildingStyleIdstringOptionale Gebäude-Stil-ID, falls bereitgestellt
input.environmentIdstringOptionale Umgebungs- oder Szenen-Stil-ID, falls bereitgestellt. Kann mehrere durch Komma getrennte IDs enthalten
outputobjectGenerierungsergebnis (nur verfügbar, wenn status Success ist)
output.resultUrlstringURL zum Außenrenovierungsergebnisbild
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

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_ERRORAnforderungsparameterfehlerStellen Sie sicher, dass Anforderungsparameter 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 Ausgangsbild enthält verbotene InhaltePassen Sie Prompt/Stil/Eingaben an und wiederholen Sie
9051COINS_NOT_ENOUGHUnzureichende Münzen / GuthabeneinheitenLaden 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.