Ideal House
İçeriğe atla

Peyzaj Tasarımı API Belgelendirmesi#

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


📖 Genel Bakış#

Peyzaj Tasarımı API, bir kaynak görüntüden açık hava peyzaj alanlarını iyileştirir veya yeniden tasarlar. İsteğe bağlı metin yönlendirmesini, bahçe stil seçeneklerini, peyzaj elemanlarını ve model modlarını destekler.

İş akışı asenkrondur:

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

🔐 Kimlik Doğrulama#

BaşlıkDeğer
APIKEYyour_api_key_here

💰 Kredi Kesintisi#

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

Model (modelType)Harcanan Kredi
Flash1 kredi
Base3 kredi
Pro10 kredi

modelType sağlanmazsa, varsayılan olarak Base kullanılır.


🎨 Stil Seçenekleri#

Bu API, API Stil Yapılandırması uç noktası tarafından döndürülen isteğe bağlı stil parametrelerini destekler.

Kullanım:

Düz metin
GET /api/v1/style/landscaping/getStyles
Stil Grubuİstek AlanıAçıklama
gardenStylesceneIdBahçe veya peyzaj stili seçeneği
elementssceneElementIdPeyzaj elemanı 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.


📌 API Uç Noktalar#

1. Peyzaj Tasarımı Görevi Oluştur#

Uç Nokta

Düz metin
POST /api/v1/landscaping/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✅ EvetKaynak peyzaj görüntüsünün URL
promptstring❌ İsteğe Bağlıİstenen sonuç için metin yönlendirmesi
sceneIdstring❌ İsteğe BağlıgardenStyle stil seçeneklerinden bahçe stili kimliği
sceneElementIdstring❌ İsteğe Bağlıelements stil seçeneklerinden peyzaj elemanı kimliği. Virgülle birleştirilmiş birden fazla kimliği destekler, örneğin id1,id2
modelTypestring❌ İsteğe BağlıSözlük: Flash, Base, Pro. Varsayılan Base

Yalnızca imageUrl zorunludur. 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.

📥 İstek Örnekleri#

cURL
bash
curl -X POST "https://api.ideal.house/api/v1/landscaping/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/backyard.jpg",
    "prompt": "lush modern garden with clean stone paths",
    "sceneId": "Landscape Design_Landscape Style_Mid-Century Modern Pool",
    "sceneElementId": "Landscape Design_Scene Elements_Natural Elements_Flower,Landscape Design_Scene Elements_Natural Elements_Ground Cover",
    "modelType": "Base"
  }'
Java (OkHttp)
java
import okhttp3.*;

import java.io.IOException;

public class LandscapingApiExample {

    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/backyard.jpg",
                    "prompt": "lush modern garden with clean stone paths",
                    "sceneId": "Landscape Design_Landscape Style_Mid-Century Modern Pool",
                    "sceneElementId": "Landscape Design_Scene Elements_Natural Elements_Flower,Landscape Design_Scene Elements_Natural Elements_Ground Cover",
                    "modelType": "Base"
                }
                """;

        Request request = new Request.Builder()
                .url(BASE_URL + "/api/v1/landscaping/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/backyard.jpg",
    "prompt": "lush modern garden with clean stone paths",
    "sceneId": "Landscape Design_Landscape Style_Mid-Century Modern Pool",
    "sceneElementId": "Landscape Design_Scene Elements_Natural Elements_Flower,Landscape Design_Scene Elements_Natural Elements_Ground Cover",
    "modelType": "Base"
}

response = requests.post(
    f"{BASE_URL}/api/v1/landscaping/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 createLandscapingTask() {
  try {
    const response = await axios.post(
      `${BASE_URL}/api/v1/landscaping/generate`,
      {
        imageUrl: 'https://example.com/backyard.jpg',
        prompt: 'lush modern garden with clean stone paths',
        sceneId: 'Landscape Design_Landscape Style_Mid-Century Modern Pool',
        sceneElementId: 'Landscape Design_Scene Elements_Natural Elements_Flower,Landscape Design_Scene Elements_Natural Elements_Ground Cover',
        modelType: 'Base'
      },
      {
        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);
  }
}

createLandscapingTask();

📤 Yanıt#

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

2. Görev Sonucunu Al#

Uç Nokta

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

İstek Başlıkları

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

Sorgu Parametreleri

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

📥 İstek Örnekleri#

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

import java.io.IOException;

public class LandscapingResultExample {

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

  while (true) {
    const response = await axios.get(
      `${BASE_URL}/api/v1/landscaping/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));
  }
}

pollLandscapingResult(1234567890123456789n);

📤 Yanıt Örneği#

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Success",
    "waitNumber": 0,
    "percentage": 100,
    "input": {
      "imageUrl": "https://example.com/backyard.jpg",
      "prompt": "lush modern garden with clean stone paths",
      "sceneId": "Landscape Design_Landscape Style_Mid-Century Modern Pool",
      "sceneElementId": "Landscape Design_Scene Elements_Natural Elements_Flower,Landscape Design_Scene Elements_Natural Elements_Ground Cover",
      "modelType": "Base"
    },
    "output": {
      "resultUrl": "https://cdn.ideal.house/output/landscaping_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": 45,
    "input": {
      "imageUrl": "https://example.com/backyard.jpg",
      "modelType": "Base"
    },
    "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/backyard.jpg",
      "modelType": "Base"
    },
    "output": null
  }
}

📊 Görev Durumu#

DurumAçıklama
UnprocessedGörev oluşturuldu ve kuyrukta bekliyor
ProcessingGörev şu anda çalışıyor
SuccessGörev başarıyla tamamlandı
FailedGörev başarısız oldu ve çıktı üretilmedi

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


❌ Hata Yanıtları#

KodAdAçıklama
1011PARAM_ERRORİstek parametresi hatası
5002API_KEY_INVALIDGeçersiz veya eksik API anahtarı
9010SCAN_TEXT_ERRORİfadenin içerik incelemesinden geçememesi
9038PROHIBITED_CONTENTÜretilen görüntü yasaklı içerik barındırıyor
9051COINS_NOT_ENOUGHYetersiz kredi

Tüm yaygın hata tanımları için Hata Kodu Referansı bölümüne bakın.