Ideal House
Zum Hauptinhalt springen

API zur Innenraumrenovierung Dokumentation#

Basis-URL:https://api.ideal.house
Version: v1
Aktualisiert: 2026-05-21


📖 Übersicht#

Die API zur Innenraumrenovierung gestaltet ein Innenraumbild um und kann optional Raumstiloptionen, Textanweisungen und Farbanweisungen verwenden.

Der Workflow ist asynchron:

  1. Erstellen Sie eine Aufgabe — Übergeben Sie imageUrl und optionale Parameter und erhalten Sie eine taskId.
  2. Ergebnisse regelmäßig abfragen — Verwenden Sie taskId, um den Aufgabenstatus und das generierte Bild abzurufen.

🔐 Authentifizierung#

HeaderWert
APIKEYyour_api_key_here

💰 Credit-Abbuchung#

[!WARNING] 🪙 1 Credits werden abgezogen, wenn eine Aufgabe erfolgreich erstellt wird. Wenn die Aufgabe letztendlich fehlschlägt, werden die abgezogenen Credits automatisch erstattet.
Unzureichende Guthabeneinheiten führen zum Fehlercode 9051. Siehe Referenz zum Guthabenverbrauch.

VorgangAbgebuchte Credits
Innengestaltungs-Aufgabe1 Guthabeneinheit

🎨 Stileinstellungen#

Diese API unterstützt optionale Stilkonfigurationen, die vom API-Stilkonfiguration-Endpunkt zurückgegeben werden.

Verwenden:

Klartext
GET /api/v1/style/interoir_remodel/getStyles
StilgruppeAnforderungsfeldBeschreibung
roomTypeindoorTypeIdRaumtypoption
styleindoorStyleIdInnenstiloption
elementsindoorElemIdRaumelementoption. Unterstützt mehrere Options-IDs durch Komma getrennt, z.B. id1,id2

Jede Option enthält name, id und url. Geben Sie die Options-id in das entsprechende Anforderungsfeld ein.


🎨 Farbanweisungen#

colorString und colorImgUrl sind optionale Farbanweisungseingaben:

FallVerhalten
Nur colorString wird bereitgestelltVerwenden Sie colorString
Nur colorImgUrl wird bereitgestelltVerwenden Sie das Farbreferenzbild
Beide werden bereitgestelltcolorString hat Vorrang
Keine wird bereitgestelltFarbanweisung standardmäßig auf auto

📌 API Endpoints#

1. Aufgabe zur Innenraumrenovierung erstellen#

Endpoint

Klartext
POST /api/v1/interiorRemodel/generate

Anforderungsheader

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

Anforderungstext

FeldTypErforderlichBeschreibung
imageUrlstring✅ JaURL des Quellinnenraumbilds
promptstring❌ OptionalTextanweisung für die gewünschte Renovierung
indoorTypeIdstring❌ OptionalRaumtyp-ID aus roomType Stileinstellungen
indoorStyleIdstring❌ OptionalInnenstil-ID aus style Stileinstellungen
indoorElemIdstring❌ OptionalRaumelement-ID aus elements Stileinstellungen. Unterstützt mehrere IDs durch Komma getrennt, z.B. id1,id2
colorStringstring❌ OptionalFarbpalettenstring, z.B. [[174,238,238],[36,36,36]]
colorImgUrlstring❌ OptionalFarbreferenzbild-URL

Nur imageUrl ist erforderlich. Alle anderen Felder sind optional.

🖼️ Bildanforderungen: Alle Ausgangs- und Referenzbilder müssen JPG/JPEG, PNG oder WebP verwenden. Jedes Bild darf nicht größer als 20 MB sein, mit Abmessungen von 128 × 128 px bis zu 6,000 × 6,000 px (inklusiv). Bilder, die die maximalen Pixelabmessungen überschreiten, werden vor der Verarbeitung automatisch proportional so herunterskaliert, dass sie in 6,000 × 6,000 px passen. Bild-URLs müssen für den API-Server direkt zugänglich sein.

📥 Anfragebeispiele#

cURL
bash
curl -X POST "https://api.ideal.house/api/v1/interiorRemodel/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/interior.jpg",
    "prompt": "modern warm remodel with clean built-in storage",
    "indoorTypeId": "Interior Design_Interior Scene_Living Room",
    "indoorStyleId": "Interior_Interior Style_Popular_Modern Country",
    "indoorElemId": "Interior Design_Scene Elements_Living Room_Shelving,Interior Design_Scene Elements_Living Room_Coffee Table",
    "colorString": "[[174,238,238],[36,36,36],[117,64,95]]"
  }'
Java (OkHttp)
java
import okhttp3.*;

import java.io.IOException;

public class InteriorRemodelApiExample {

    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/interior.jpg",
                    "prompt": "modern warm remodel with clean built-in storage",
                    "indoorTypeId": "Interior Design_Interior Scene_Living Room",
                    "indoorStyleId": "Interior_Interior Style_Popular_Modern Country",
                    "indoorElemId": "Interior Design_Scene Elements_Living Room_Shelving,Interior Design_Scene Elements_Living Room_Coffee Table",
                    "colorString": "[[174,238,238],[36,36,36],[117,64,95]]"
                }
                """;

        Request request = new Request.Builder()
                .url(BASE_URL + "/api/v1/interiorRemodel/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/interior.jpg",
    "prompt": "modern warm remodel with clean built-in storage",
    "indoorTypeId": "Interior Design_Interior Scene_Living Room",
    "indoorStyleId": "Interior_Interior Style_Popular_Modern Country",
    "indoorElemId": "Interior Design_Scene Elements_Living Room_Shelving,Interior Design_Scene Elements_Living Room_Coffee Table",
    "colorString": "[[174,238,238],[36,36,36],[117,64,95]]"
}

response = requests.post(
    f"{BASE_URL}/api/v1/interiorRemodel/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 createInteriorRemodelTask() {
  try {
    const response = await axios.post(
      `${BASE_URL}/api/v1/interiorRemodel/generate`,
      {
        imageUrl: 'https://example.com/interior.jpg',
        prompt: 'modern warm remodel with clean built-in storage',
        indoorTypeId: 'Interior Design_Interior Scene_Living Room',
        indoorStyleId: 'Interior_Interior Style_Popular_Modern Country',
        indoorElemId: 'Interior Design_Scene Elements_Living Room_Shelving,Interior Design_Scene Elements_Living Room_Coffee Table',
        colorString: '[[174,238,238],[36,36,36],[117,64,95]]'
      },
      {
        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);
  }
}

createInteriorRemodelTask();

📤 Antwort#

json
{
  "code": 0,
  "message": "success",
  "data": 1234567890123456789
}

2. Aufgabenergebnis abrufen#

Endpoint

Klartext
GET /api/v1/interiorRemodel/result

Anforderungsheader

KopfzeileErforderlichBeschreibung
APIKEY✅ JaIhr API Authentifizierungsschlüssel

Query-Parameter

ParameterTypErforderlichBeschreibung
taskIdlong✅ JaVom Erstellungsendpunkt zurückgegebene Aufgaben-ID

📥 Anfragebeispiele#

cURL
bash
curl -X GET "https://api.ideal.house/api/v1/interiorRemodel/result?taskId=1234567890123456789" \
  -H "APIKEY: your_api_key_here"
Java (OkHttp)
java
import okhttp3.*;

import java.io.IOException;

public class InteriorRemodelResultExample {

    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/interiorRemodel/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/interiorRemodel/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 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 pollInteriorRemodelResult(taskId) {
  const headers = { APIKEY: API_KEY };

  while (true) {
    const response = await axios.get(
      `${BASE_URL}/api/v1/interiorRemodel/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 ended with status:', status);
      }
      break;
    }

    await new Promise(resolve => setTimeout(resolve, 3000));
  }
}

pollInteriorRemodelResult(1234567890123456789n);

📤 Antwortbeispiel#

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Success",
    "waitNumber": 0,
    "percentage": 100,
    "input": {
      "imageUrl": "https://example.com/interior.jpg",
      "prompt": "modern warm remodel with clean built-in storage",
      "indoorTypeId": "Interior Design_Interior Scene_Living Room",
      "indoorStyleId": "Interior_Interior Style_Popular_Modern Country",
      "colorString": "[[174,238,238],[36,36,36],[117,64,95]]"
    },
    "output": {
      "resultUrl": "https://cdn.ideal.house/output/interior_remodel_result.jpg",
      "width": 1024,
      "height": 1024
    }
  }
}

Antwort (Aufgabe wird verarbeitet / in Warteschlange)

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Processing",
    "waitNumber": 1,
    "percentage": 45,
    "input": {
      "imageUrl": "https://example.com/interior.jpg",
      "prompt": "modern warm remodel with clean built-in storage"
    },
    "output": null
  }
}

Antwort (Aufgabe fehlgeschlagen)

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Failed",
    "waitNumber": 0,
    "percentage": 0,
    "input": {
      "imageUrl": "https://example.com/interior.jpg"
    },
    "output": null
  }
}

📊 Aufgabenstatus#

StatusBeschreibung
UnprocessedAufgabe wurde erstellt und wartet in der Warteschlange
ProcessingAufgabe läuft derzeit
SuccessAufgabe erfolgreich abgeschlossen
FailedAufgabe fehlgeschlagen und kein Ergebnis erzeugt

Alle 3-5 Sekunden abfragen. Siehe API Aufgabenlimit.


❌ Fehlerantworten#

CodeNameBeschreibung
1011PARAM_ERRORFehler in den Anfrageparametern
5002API_KEY_INVALIDUngültiger oder fehlender API Schlüssel
9010SCAN_TEXT_ERRORPrompt hat Inhaltsüberprüfung nicht bestanden
9038PROHIBITED_CONTENTGeneriertes Bild enthält verbotene Inhalte
9051COINS_NOT_ENOUGHUnzureichende Credits

Vollständige gemeinsame Fehlerdefinitionen finden Sie in der Referenz zu Fehlercodes.