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

फर्नीचर ट्राई-ऑन API दस्तावेज़ीकरण#

बेस URL: https://api.ideal.house
संस्करण: v1
अपडेट किया गया: 2026-03-09


📖 अवलोकन#

फर्नियर आज़माना API आपको AI क सहायता सें फर्नियर के वस्तुएँ कौनो कमरा दृश्य में आसानी सें रखाँने क सक्षम करत हई। आप कमरा क चित्र आ फर्नियर वस्तुओं क सूची (हर एक क चित्र आ प्रोडक्ट आईडी सें) देवत हईं, आ AI फर्नियर कें दृश्य में सहजता सें जोड़त हई। प्रक्रिया असमकालिक हई आ दो चरण में हई:

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

📌 नोट: वर्तमान में, केवल creative मोड समर्थित है।


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

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

अनुरोध हेडर में अपना API की शामिल करें:

हेडरमान
APIKEYyour_api_key_here

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


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

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

मॉडल (modelType)विलोपित क्रेडिट
Base3 क्रेडिट
Pro10 क्रेडिट

📌 API एंडपॉइंट#


1. फर्नीचर ट्राई-ऑन कार्य बनाएं#

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

एंडपॉइंट

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

अनुरोध हेडर

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

अनुरोध बॉडी

फ़ील्डप्रकारआवश्यकविवरण
imageUrlstring✅ हाँकमरे के दृश्य की छवि का URL जिसमें फर्नीचर रखा जाएगा
furnitureListarray✅ हाँदृश्य में रखने के लिए फर्नीचर आइटमों की सूची। अधिकतम 6 आइटम। देखें फर्नीचर आइटम ऑब्जेक्ट
promptstring❌ वैकल्पिकप्लेसमेंट और स्टाइलिंग को और मार्गदर्शन करने के लिए कस्टम टेक्स्ट प्रॉम्प्ट
modelTypestring❌ वैकल्पिकमॉडल क गुणवत्ता प्रकार। Enum: Base, Pro। डिफ़ॉल्ट Base हई

🛋️ फर्नीचर आइटम ऑब्जेक्ट#

furnitureList में प्रत्येक आइटम एक ऑब्जेक्ट होना चाहिए जिसमें निम्नलिखित फ़ील्ड हों:

फ़ील्डप्रकारआवश्यकविवरण
imageUrlstring✅ हाँफर्नीचर प्रोडक्ट की छवि का URL (पारदर्शी या साफ़ बैकग्राउंड की सिफारिश की जाती है)

⚠️ furnitureList में अधिकतम 6 आइटम हो सकते हैं।

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

उदाहरण

json
"furnitureList": [
  {
    "imageUrl": "https://example.com/sofa.png"
  },
  {
    "imageUrl": "https://example.com/table.png"
  }
]

मॉडल प्रकार

मानविवरण
Baseडिफ़ॉल्ट। गति और गुणवत्ता का संतुलन
Proउच्च गुणवत्ता आउटपुट, धीमी प्रोसेसिंग

📥 अनुरोध उदाहरण#

cURL
bash
# Basic request (Base model)
curl -X POST "https://api.ideal.house/api/v1/furnitureTryOn/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/living-room.jpg",
    "furnitureList": [
      {
        "imageUrl": "https://example.com/sofa.png"
      },
      {
        "imageUrl": "https://example.com/coffee-table.png"
      }
    ],
    "prompt": "modern minimalist style"
  }'

# Pro model
curl -X POST "https://api.ideal.house/api/v1/furnitureTryOn/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/living-room.jpg",
    "furnitureList": [
      {
        "imageUrl": "https://example.com/sofa.png"
      }
    ],
    "prompt": "Scandinavian interior with warm lighting",
    "modelType": "Pro"
  }'
Java (OkHttp)
java
import okhttp3.*;
import java.io.IOException;

public class FurnitureTryOnApiExample {

    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/living-room.jpg",
                "furnitureList": [
                    {
                        "imageUrl": "https://example.com/sofa.png"
                    },
                    {
                        "imageUrl": "https://example.com/coffee-table.png"
                    }
                ],
                "prompt": "modern minimalist style",
                "modelType": "Base"
            }
            """;

        Request request = new Request.Builder()
            .url(BASE_URL + "/api/v1/furnitureTryOn/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/living-room.jpg",
    "furnitureList": [
        {
            "imageUrl": "https://example.com/sofa.png"
        },
        {
            "imageUrl": "https://example.com/coffee-table.png"
        }
    ],
    "prompt": "modern minimalist style",
    "modelType": "Base"
}

# Pro model example:
# payload = {
#     "imageUrl": "https://example.com/living-room.jpg",
#     "furnitureList": [
#         {
#             "imageUrl": "https://example.com/sofa.png"
#         }
#     ],
#     "prompt": "Scandinavian interior with warm lighting",
#     "modelType": "Pro"
# }

response = requests.post(
    f"{BASE_URL}/api/v1/furnitureTryOn/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 createFurnitureTryOnTask() {
  try {
    const response = await axios.post(
      `${BASE_URL}/api/v1/furnitureTryOn/generate`,
      {
        imageUrl: 'https://example.com/living-room.jpg',
        furnitureList: [
          {
            imageUrl: 'https://example.com/sofa.png'
          },
          {
            imageUrl: 'https://example.com/coffee-table.png'
          }
        ],
        prompt: 'modern minimalist style',
        modelType: 'Base'

        // Pro model:
        // modelType: 'Pro'
      },
      {
        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);
  }
}

createFurnitureTryOnTask();

📤 प्रतिक्रिया#

सफलता प्रतिक्रिया

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

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

पहले से बनाए गए फर्नीचर ट्राई-ऑन टास्क की वर्तमान स्थिति और आउटपुट प्राप्त करता है।

एंडपॉइंट

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

अनुरोध हेडर

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

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

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

📥 अनुरोध उदाहरण#

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

public class FurnitureTryOnResultExample {

    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/furnitureTryOn/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

# Poll until task is complete
while True:
    response = requests.get(
        f"{BASE_URL}/api/v1/furnitureTryOn/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)  # Poll every 3 seconds

if status == "Success":
    output = result["output"]
    print("Result URL:", output["resultUrl"])
    print("Matched Items:", output.get("items", []))
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 pollResult(taskId) {
  const headers = { 'APIKEY': API_KEY };

  while (true) {
    const response = await axios.get(
      `${BASE_URL}/api/v1/furnitureTryOn/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('Matched Items:', result.output.items);
      } else {
        console.log('Task ended with status:', status);
      }
      break;
    }

    // Wait 3 seconds before next poll
    await new Promise(resolve => setTimeout(resolve, 3000));
  }
}

pollResult(1234567890123456789n);

📤 प्रतिक्रिया#

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

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Success",
    "waitNumber": 0,
    "percentage": 100,
    "input": {
      "imageUrl": "https://example.com/living-room.jpg",
      "furnitureList": [
        {
          "imageUrl": "https://example.com/sofa.png"
        },
        {
          "imageUrl": "https://example.com/coffee-table.png"
        }
      ],
      "prompt": "modern minimalist style",
      "modelType": "Base"
    },
    "output": {
      "resultUrl": "https://cdn.ideal.house/output/furniture_try_on_result.jpg",
      "width": 1024,
      "height": 1024
    }
  }
}

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

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Processing",
    "waitNumber": 1,
    "percentage": 45,
    "input": {
      "imageUrl": "https://example.com/living-room.jpg",
      "furnitureList": [
        {
          "imageUrl": "https://example.com/sofa.png"
        }
      ],
      "prompt": "modern minimalist style",
      "modelType": "Base"
    },
    "output": null
  }
}

प्रतिक्रिया (टास्क विफल)

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Failed",
    "waitNumber": 0,
    "percentage": 0,
    "input": {
      "imageUrl": "https://example.com/living-room.jpg",
      "furnitureList": [
        {
          "imageUrl": "https://example.com/sofa.png"
        }
      ],
      "modelType": "Base"
    },
    "output": null
  }
}

प्रतिक्रिया फ़ील्ड

फ़ील्डप्रकारविवरण
idlongटास्क अद्वितीय पहचानकर्ता
statusstringवर्तमान टास्क स्थिति (टास्क स्थिति देखें)
waitNumberintegerकतार में आगे टास्कों की संख्या (0 का अर्थ है वर्तमान में प्रोसेसिंग)
percentageintegerटास्क पूर्णता प्रतिशत (0–100)
inputobjectटास्क के मूल इनपुट पैरामीटर
input.imageUrlstringकमरे के दृश्य की छवि का URL
input.furnitureListarrayसबमिट किए गए फर्नीचर आइटमों की सूची (अधिकतम 6 आइटम)
input.furnitureList[].imageUrlstringफर्नीचर प्रोडक्ट की छवि का URL
input.promptstringकस्टम टेक्स्ट प्रॉम्प्ट (यदि प्रदान किया गया हो)
input.modelTypestringउपयोग किया गया मॉडल प्रकार
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रिक्वेस्ट पैरामीटर एरर — e.g., imageUrl या furnitureList अनुपस्थित, या furnitureList में 6 आइटम से अधिक हैंसुनिश्चित करें कि दोनों imageUrl और furnitureList प्रदान किए गए हों, खाली न हों, और 6 आइटम से अधिक न हों
5002API_KEY_INVALIDअमान्य या अनुपस्थित API कुंजीसुनिश्चित करें कि APIKEY हेडर मौजूद है और मान सही है
9010SCAN_TEXT_ERRORटेक्स्ट प्रॉम्प्ट ने कंटेंट रिव्यू में विफलता दर्शाईसंवेदनशील या प्रतिबंधित कंटेंट हटाने के लिए प्रॉम्प्ट को संशोधित करें
9038PROHIBITED_CONTENTजनरेट की गई आउटपुट छवि में प्रतिबंधित सामग्री शामिल हैप्रॉम्प्ट/शैली/इनपुट को समायोजित करें और पुनः प्रयास करें
9051COINS_NOT_ENOUGHअपर्याप्त सिक्के / क्रेडिटअपने खाते के क्रेडिट टॉप-अप करें और पुनः प्रयास करें

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