Ideal House
İçeriğe atla

Dış Mekan Yenileme API Belgelendirmesi#

Temel URL: https://api.ideal.house
Sürüm: v1
Güncellendi: 2026-05-20


📖 Genel Bakış#

Dış Mekan Yenileme API, bir girdi görüntüsünden bir binanın dış cephesini yenilemenize veya yeniden stillendirmenize olanak tanır. Bir kaynak görüntü sağlarsınız ve isteğe bağlı olarak yenileme sonucunu yönlendirmek için metin yönlendirmesi, bir referans görüntü, bina stili veya ortam tercihi ekleyebilirsiniz.

İş akışı asenkrondur ve iki aşamadan oluşur:

  1. Görev oluşturma — Dış mekan görüntünüzü ve isteğe bağlı yönlendirmeyi gönderin, ardından bir taskId alın.
  2. Sonuçları sorgulama — Görev durumunu sorgulamak ve üretilen görüntüyü almak için taskId kullanın.

🔐 Kimlik Doğrulama#

Tüm API istekleri, bir API Anahtarı kullanılarak kimlik doğrulanmalıdır.

İstek başlığına API Anahtarınızı ekleyin:

BaşlıkDeğer
APIKEYyour_api_key_here

⚠️ API Anahtarınızı güvenli tutun. İstemci tarafı kodda veya herkese açık depolarda ifşa etmeyin.


💰 Kredi Kesintisi#

[!WARNING] 🪙 1 kredi, görev başarıyla oluşturulduğunda kesilir. Görev nihayetinde başarısız olursa, kesilen kredi hesabınıza otomatik olarak iade edilir.
Yetersiz krediler 9051 hata kodunu döndürür. 📄 Kredi Kesintisi Referansı bölümüne bakın.

İşlemKesilen Kredi
Dış Mekan Yenileme görevi1 kredi

Ayrıntılı kredi kuralları için Kredi Kesintisi Referansı bölümüne bakın.


📌 API Uç Noktalar#


1. Dış Mekan Yenileme Görevi Oluştur#

Yeni bir dış mekan yenileme görevi oluşturur ve sorgulama için benzersiz bir taskId döndürür.

Uç Nokta

Düz metin
POST /api/v1/exteriorRenovator/generate

İstek Başlıkları

BaşlıkZorunluAçıklama
APIKEY✅ EvetAPI kimlik doğrulama anahtarınız
Content-Type✅ Evetapplication/json

İstek Gövdesi

AlanTürZorunluAçıklama
imageUrlstring✅ EvetYenilenecek kaynak dış mekan görüntüsünün URL
promptstring❌ İsteğe BağlıYenileme sonucu için isteğe bağlı metin yönlendirmesi
referenceUrlstring❌ İsteğe BağlıGörsel stili yönlendirmek için isteğe bağlı referans görüntü URL
buildingStyleIdstring❌ İsteğe Bağlıİsteğe bağlı bina stili kimliği
environmentIdstring❌ İsteğe Bağlıİsteğe bağlı ortam veya sahne stili kimliği. Virgülle birleştirilmiş birden fazla kimliği destekler, örneğin id1,id2

⚠️ Yalnızca imageUrl zorunludur. İstek gövdesindeki diğer tüm alanlar isteğe bağlıdır.

🖼️ Görüntü gereksinimleri: Tüm kaynak ve referans görüntüler JPG/JPEG, PNG veya WebP formatında olmalıdır. Her görüntü en fazla 20 MB boyutunda olabilir, boyutları 128 × 128 px ile 6,000 × 6,000 px (dahil) arasında olmalıdır. Maksimum piksel boyutlarını aşan görüntüler, işlemden önce 6,000 × 6,000 px sınırlarına sığacak şekilde orantılı olarak otomatik olarak küçültülür. Görüntü URLs, API sunucusu tarafından doğrudan erişilebilir olmalıdır.


🎨 Stil Seçenekleri#

buildingStyleId ve environmentId, API Stil Yapılandırması uç noktasından seçilebilir.

Kullanım:

Düz metin
GET /api/v1/style/exterior_renovator/getStyles
Stil Grubuİstek AlanıAçıklama
buildingStylebuildingStyleIdBina stili seçeneği
environmentenvironmentIdOrtam veya sahne seçeneği. Virgülle birleştirilmiş birden fazla seçenek kimliğini destekler, örneğin id1,id2

Her seçenek name, id ve url içerir. Seçenek id değerini ilgili istek alanına geçirin.


📥 İstek Örnekleri#

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

📤 Yanıt#

Başarılı Yanıt

json
{
  "code": 0,
  "message": "success",
  "data": 1234567890123456789
}
AlanTürAçıklama
codeinteger0 başarıyı gösterir
messagestringYanıt mesajı
datalongSonuçları sorgulamak için benzersiz görev kimliği

2. Görev Sonucunu Al#

Daha önce oluşturulmuş bir dış mekan yenileme görevinin mevcut durumunu ve çıktısını alır.

Uç Nokta

Düz metin
GET /api/v1/exteriorRenovator/result

İstek Başlıkları

BaşlıkZorunluAçıklama
APIKEY✅ EvetAPI kimlik doğrulama anahtarınız

Sorgu Parametreleri

ParametreTürZorunluAçıklama
taskIdlong✅ EvetGörev oluşturma uç noktasından döndürülen görev kimliği

📥 İstek Örnekleri#

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

📤 Yanıt#

Başarılı Yanıt (Görev Tamamlandı)

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

Yanıt (Görev İşleniyor / Kuyrukta)

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

Yanıt (Görev Başarısız)

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

Yanıt Alanları

AlanTürAçıklama
idlongGörev benzersiz tanımlayıcısı
statusstringMevcut görev durumu (Görev Durumu bölümüne bakın)
waitNumberintegerKuyrukta öndeki görev sayısı (0 şu anda işleniyor demektir)
percentageintegerGörev tamamlanma yüzdesi (0–100)
inputobjectGörevin orijinal girdi parametreleri
input.imageUrlstringKaynak dış mekan görüntüsü URL
input.promptstringSağlandıysa isteğe bağlı metin yönlendirmesi
input.refImageUrlstringSağlandıysa isteğe bağlı referans görüntü URL
input.buildingStyleIdstringSağlandıysa isteğe bağlı bina stili kimliği
input.environmentIdstringSağlandıysa isteğe bağlı ortam veya sahne stili kimliği. Virgülle birleştirilmiş birden fazla kimlik içerebilir
outputobjectÜretim sonucu (yalnızca status Success olduğunda kullanılabilir)
output.resultUrlstringDış mekan yenileme sonuç görüntüsüne URL
output.widthintegerPiksel cinsinden çıktı genişliği
output.heightintegerPiksel cinsinden çıktı yüksekliği

📊 Görev Durumu#

DurumAçıklama
UnprocessedGörev oluşturuldu ancak henüz başlamadı
ProcessingGörev şu anda işleniyor
SuccessGörev başarıyla tamamlandı — çıktı kullanılabilir
FailedGörev bir hata nedeniyle başarısız oldu

Her 3-5 saniye arayla sorgulayın. API Görev Sınırı bölümüne bakın.


❌ Hata Yanıtları#

Tüm hata yanıtları aynı JSON yapısını paylaşır:

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

Hata Kodu Referansı#

KodAdAçıklamaÖnerilen Eylem
1001FAILEDİstek başarısız oldu (genel hata)Ayrıntılı hata bilgileri için message alanını kontrol edin
1003INTERNAL_ERRORDahili sunucu hatasıKısa bir gecikme sonrası yeniden deneyin; devam ederse destek ekibiyle iletişime geçin
1011PARAM_ERRORİstek parametresi hatasıİstek parametrelerinin doğru biçimlendirildiğinden emin olun
5002API_KEY_INVALIDGeçersiz veya eksik API AnahtarıAPIKEY başlığının mevcut olduğundan ve değerinin doğru olduğundan emin olun
9010SCAN_TEXT_ERRORMetin ifadesi içerik incelemesinden geçemediHassas veya yasaklı içeriği kaldırmak için ifadeyi değiştirin
9038PROHIBITED_CONTENTÜretilen çıktı görüntüsü yasaklı içerik barındırıyorİfadeyi/stili/girdileri ayarlayın ve yeniden deneyin
9051COINS_NOT_ENOUGHYetersiz jeton / krediHesap kredilerinizi yükleyin ve yeniden deneyin. Kredi Kesintisi Referansı bölümüne bakın

📄 Yaygın API hata kodlarının tam listesi için Hata Kodu Referansı bölümüne başvurun.