Ideal House
सामग्री पर जाएं

दस्तावेज़ीकरण API एक्सटीरियर रिनोवेटर#

मूल URL: https://api.ideal.house
संस्करण: v1
अपडेट किया गया: 2026-05-20


📖 अवलोकन#

एक्सटीरियर रिनोवेटर API आपको इनपुट इमेज से इमारत के बाहरी भाग को नवीनीकरण या पुनर्शैली करने की अनुमति देता है। आप एक स्रोत इमेज प्रदान करते हैं, और वैकल्पिक रूप से टेक्स्ट गाइडेंस, एक संदर्भ इमेज, बिल्डिंग स्टाइल, या पर्यावरण प्राथमिकता जोड़ सकते हैं ताकि रिनोवेशन परिणाम को मार्गदर्शन मिले।

वर्कफ्लो असिंक्रोनस है और दो चरणों में शामिल है:

  1. टास्क बनाएं — अपनी एक्सटीरियर इमेज और वैकल्पिक गाइडेंस सबमिट करें, फिर एक taskId प्राप्त करें।
  2. परिणामों के लिए पोल करें — टास्क स्थिति पूछने और जनरेटेड इमेज प्राप्त करने के लिए taskId का उपयोग करें।

🔐 प्रमाणीकरण#

सभी API रिक्वेस्ट का प्रमाणीकरण API कुंजी का उपयोग करके किया जाना चाहिए।

रिक्वेस्ट हेडर में अपनी API कुंजी शामिल करें:

हेडरमान
APIKEYyour_api_key_here

⚠️ अपनी API कुंजी को सुरक्षित रखें। इसे क्लाइंट-साइड कोड या सार्वजनिक रिपॉज़िटरी में प्रकट न करें।


💰 क्रेडिट विलोपन#

[!WARNING] 🪙 टास्क सफलतापूर्वक बनाए जाने पर 1 क्रेडिट काटा जाता है। यदि टास्क अंततः विफल होता है, तो काटा गया क्रेडिट आपके खाते में अपने आप वापस कर दिया जाएगा
अपर्याप्त क्रेडिट त्रुटि कोड 9051 लौटाएंगे। 📄 देखें क्रेडिट विलोपन संदर्भ

ऑपरेशनविलोपित क्रेडिट
एक्सटीरियर रिनोवेटर टास्क1 क्रेडिट

विस्तृत क्रेडिट नियमों के लिए, देखें क्रेडिट विलोपन संदर्भ


📌 API एंडपॉइंट#


1. एक्सटीरियर रिनोवेटर टास्क बनाएं#

एक नया एक्सटीरियर रिनोवेशन टास्क बनाता है और पोलिंग के लिए एक अद्वितीय taskId लौटाता है।

एंडपॉइंट

सादा पाठ
POST /api/v1/exteriorRenovator/generate

रिक्वेस्ट हेडर

हेडरआवश्यकविवरण
APIKEY✅ हाँआपका API प्रमाणीकरण कुंजी
Content-Type✅ हाँapplication/json

रिक्वेस्ट बॉडी

फ़ील्डप्रकारआवश्यकविवरण
imageUrlstring✅ हाँरिनोवेट करने वाली स्रोत एक्सटीरियर इमेज का URL
promptstring❌ वैकल्पिकरिनोवेशन परिणाम के लिए वैकल्पिक टेक्स्ट गाइडेंस
referenceUrlstring❌ वैकल्पिकदृश्य स्टाइल को मार्गदर्शन करने के लिए वैकल्पिक संदर्भ इमेज URL
buildingStyleIdstring❌ वैकल्पिकवैकल्पिक इमारत शैली आईडी
environmentIdstring❌ वैकल्पिकवैकल्पिक वातावरण या दृश्य शैली आईडी। विराम से जुड़े कई आईडी का समर्थन करता है, उदाहरण के लिए id1,id2

⚠️ केवल imageUrl आवश्यक है। सभी अन्य रिक्वेस्ट बॉडी फ़ील्डें वैकल्पिक हैं।

🖼️ इमेज आवश्यकताएँ: सभी स्रोत और संदर्भ इमेजों को JPG/JPEG, PNG, या WebP का उपयोग करना होगा। प्रत्येक इमेज का आकार 20 MB से अधिक नहीं होना चाहिए, आयाम 128 × 128 px से लेकर 6,000 × 6,000 px (समावेशी) तक होना चाहिए। अधिकतम पिक्सल आयाम से अधिक इमेजों को प्रोसेसिंग से पहले स्वतः अनुपात में छोटा कर दिया जाता है ताकि वे 6,000 × 6,000 px के भीतर फिट हों। इमेज URLs का सीधा एक्सेस API सर्वर द्वारा होना चाहिए।


🎨 स्टाइल विकल्प#

buildingStyleId और environmentId API स्टाइल कॉन्फ़िग एंडपॉइंट से चुने जा सकते हैं।

उपयोग करें:

सादा पाठ
GET /api/v1/style/exterior_renovator/getStyles
स्टाइल समूहरिक्वेस्ट फ़ील्डविवरण
buildingStylebuildingStyleIdबिल्डिंग स्टाइल विकल्प
environmentenvironmentIdवातावरण या दृश्य विकल्प। विराम से जुड़े कई विकल्प आईडी का समर्थन करता है, उदाहरण के लिए id1,id2

प्रत्येक विकल्प में name, id, और url शामिल है। संबंधित रिक्वेस्ट फ़ील्ड में विकल्प id पास करें।


📥 रिक्वेस्ट उदाहरण#

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

📤 रिस्पॉन्स#

सफलता रिस्पॉन्स

json
{
  "code": 0,
  "message": "success",
  "data": 1234567890123456789
}
फ़ील्डप्रकारविवरण
codeinteger0 सफलता का संकेत करता है
messagestringरिस्पॉन्स संदेश
datalongपरिणामों के लिए पोलिंग के लिए अद्वितीय टास्क आईडी

2. टास्क परिणाम प्राप्त करें#

पहले से बनाए गए एक्सटीरियर रिनोवेशन टास्क की वर्तमान स्थिति और आउटपुट प्राप्त करता है।

एंडपॉइंट

सादा पाठ
GET /api/v1/exteriorRenovator/result

रिक्वेस्ट हेडर

हेडरआवश्यकविवरण
APIKEY✅ हाँआपका API प्रमाणीकरण कुंजी

क्वरी पैरामीटर

पैरामीटरप्रकारआवश्यकविवरण
taskIdlong✅ आवश्यकक्रिएट टास्क एंडपॉइंट से लौटाया गया टास्क आईडी

📥 रिक्वेस्ट उदाहरण#

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

📤 रिस्पॉन्स#

सफलता रिस्पॉन्स (टास्क पूर्ण)

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

रिस्पॉन्स (टास्क प्रोसेसिंग / कतार में)

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

रिस्पॉन्स (टास्क विफल)

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

रिस्पॉन्स फ़ील्डें

फ़ील्डप्रकारविवरण
idlongटास्क अद्वितीय पहचानकर्ता
statusstringवर्तमान टास्क स्थिति (देखें टास्क स्थिति)
waitNumberintegerकतार में आगे टास्क की संख्या (0 का अर्थ है वर्तमान में प्रोसेसिंग)
percentageintegerटास्क पूर्णता प्रतिशत (0–100)
inputobjectटास्क के मूल इनपुट पैरामीटर
input.imageUrlstringस्रोत एक्सटीरियर इमेज URL
input.promptstringवैकल्पिक टेक्स्ट गाइडेंस, यदि प्रदान किया गया हो
input.refImageUrlstringवैकल्पिक संदर्भ इमेज URL, यदि प्रदान किया गया हो
input.buildingStyleIdstringवैकल्पिक इमारत शैली आईडी, यदि प्रदान किया गया हो
input.environmentIdstringवैकल्पिक वातावरण या दृश्य शैली आईडी, यदि प्रदान किया गया हो। विराम से जुड़े कई आईडी हो सकते हैं
outputobjectजनरेशन परिणाम (केवल तब उपलब्ध जब status Success हो)
output.resultUrlstringएक्सटीरियर रिनोवेशन परिणाम इमेज का URL
output.widthintegerपिक्सल में आउटपुट चौड़ाई
output.heightintegerपिक्सल में आउटपुट ऊँचाई

📊 टास्क स्थिति#

स्थितिविवरण
Unprocessedटास्क बनाया गया है लेकिन अभी शुरू नहीं हुआ है
Processingटास्क वर्तमान में प्रोसेस किया जा रहा है
Successटास्क सफलतापूर्वक पूर्ण हुआ — आउटपुट उपलब्ध है
Failedटास्क त्रुटि के कारण विफल हुआ

हर 3-5 सेकंड पर पोल करें। देखें API टास्क सीमा


❌ त्रुटि रिस्पॉन्स#

सभी त्रुटि रिस्पॉन्स एक ही JSON संरचना साझा करते हैं:

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

त्रुटि कोड संदर्भ#

कोडनामविवरणसुझाया गया कार्रवाई
1001FAILEDरिक्वेस्ट विफल (सामान्य त्रुटि)विशिष्ट त्रुटि विवरणों के लिए message फ़ील्ड की जाँच करें
1003INTERNAL_ERRORआंतरिक सर्वर त्रुटिएक छोटे देरी के बाद पुनः प्रयास करें; यदि यह जारी रहे तो सपोर्ट से संपर्क करें
1011PARAM_ERRORरिक्वेस्ट पैरामीटर त्रुटिसुनिश्चित करें कि रिक्वेस्ट पैरामीटर सही ढंग से फॉर्मेट किए गए हैं
5002API_KEY_INVALIDअमान्य या अनुपस्थित API कुंजीसुनिश्चित करें कि APIKEY हेडर मौजूद है और मान सही है
9010SCAN_TEXT_ERRORटेक्स्ट प्रॉम्प्ट ने कंटेंट समीक्षा में विफलता दर्ज कीसंवेदनशील या प्रतिबंधित कंटेंट हटाने के लिए प्रॉम्प्ट को संशोधित करें
9038PROHIBITED_CONTENTजनरेटेड आउटपुट इमेज में प्रतिबंधित कंटेंट शामिल हैप्रॉम्प्ट/स्टाइल/इनपुट को समायोजित करें और पुनः प्रयास करें
9051COINS_NOT_ENOUGHअपर्याप्त सिक्के / क्रेडिटअपने खाते के क्रेडिट को टॉप-अप करें और पुनः प्रयास करें। देखें क्रेडिट विलोपन संदर्भ

📄 सामान्य API त्रुटि कोडों की पूरी सूची के लिए, त्रुटि कोड संदर्भ का हवाला दें।