फर्नीचर ट्राई-ऑन API दस्तावेज़ीकरण#
बेस URL:
https://api.ideal.house
संस्करण: v1
अपडेट किया गया: 2026-03-09
📖 अवलोकन#
फर्नियर आज़माना API आपको AI क सहायता सें फर्नियर के वस्तुएँ कौनो कमरा दृश्य में आसानी सें रखाँने क सक्षम करत हई। आप कमरा क चित्र आ फर्नियर वस्तुओं क सूची (हर एक क चित्र आ प्रोडक्ट आईडी सें) देवत हईं, आ AI फर्नियर कें दृश्य में सहजता सें जोड़त हई। प्रक्रिया असमकालिक हई आ दो चरण में हई:
- टास्क बनाएं — अपना कमरे की छवि और फर्नीचर सूची सबमिट करें, फिर एक
taskIdप्राप्त करें। - परिणामों के लिए पोल करें —
taskIdका उपयोग करके टास्क स्थिति का पूछताछ करें और जनरेटेड छवि प्राप्त करें।
📌 नोट: वर्तमान में, केवल
creativeमोड समर्थित है।
🔐 प्रमाणीकरण#
सभी API अनुरोधों का प्रमाणीकरण API की के का उपयोग करके किया जाना चाहिए।
अनुरोध हेडर में अपना API की शामिल करें:
| हेडर | मान |
|---|---|
APIKEY | your_api_key_here |
⚠️ अपना API की सुरक्षित रखें। इसे क्लाइंट-साइड कोड या सार्वजनिक रिपॉज़िटरी में प्रकट न करें।
💰 क्रेडिट विलोपन#
[!WARNING] 🪙 क्रेडिट चुने गए
modelTypeके आधार पर टास्क के सफलतापूर्वक बनाने पर कटौती किए जाते हैं। यदि टास्क अंततः विफल होता है, तो कटौती किए गए क्रेडिट आपके खाते में स्वतः रिफंड किए जाएंगे।
अपर्याप्त क्रेडिट त्रुटि कोड9051लौटाएंगे। 📄 क्रेडिट विलोपन संदर्भ देखें।
मॉडल (modelType) | विलोपित क्रेडिट |
|---|---|
Base | 3 क्रेडिट |
Pro | 10 क्रेडिट |
📌 API एंडपॉइंट#
1. फर्नीचर ट्राई-ऑन कार्य बनाएं#
एक नया AI फर्नीचर ट्राई-ऑन टास्क बनाता है और पोलिंग के लिए एक अद्वितीय taskId लौटाता है।
एंडपॉइंट
POST /api/v1/furnitureTryOn/generate
अनुरोध हेडर
| हेडर | आवश्यक | विवरण |
|---|---|---|
APIKEY | ✅ हाँ | आपका API प्रमाणीकरण की |
Content-Type | ✅ हाँ | application/json |
अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
imageUrl | string | ✅ हाँ | कमरे के दृश्य की छवि का URL जिसमें फर्नीचर रखा जाएगा |
furnitureList | array | ✅ हाँ | दृश्य में रखने के लिए फर्नीचर आइटमों की सूची। अधिकतम 6 आइटम। देखें फर्नीचर आइटम ऑब्जेक्ट |
prompt | string | ❌ वैकल्पिक | प्लेसमेंट और स्टाइलिंग को और मार्गदर्शन करने के लिए कस्टम टेक्स्ट प्रॉम्प्ट |
modelType | string | ❌ वैकल्पिक | मॉडल क गुणवत्ता प्रकार। Enum: Base, Pro। डिफ़ॉल्ट Base हई |
🛋️ फर्नीचर आइटम ऑब्जेक्ट#
furnitureList में प्रत्येक आइटम एक ऑब्जेक्ट होना चाहिए जिसमें निम्नलिखित फ़ील्ड हों:
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
imageUrl | string | ✅ हाँ | फर्नीचर प्रोडक्ट की छवि का URL (पारदर्शी या साफ़ बैकग्राउंड की सिफारिश की जाती है) |
⚠️
furnitureListमें अधिकतम 6 आइटम हो सकते हैं।
🖼️ छवि आवश्यकताएं: कमरे की छवि और प्रत्येक फर्नीचर छवि को JPG/JPEG, PNG, या WebP का उपयोग करना होगा। प्रत्येक छवि का आकार 20 MB से बड़ा नहीं होना चाहिए, और आयाम 128 × 128 px से लेकर 6,000 × 6,000 px (समावेशी) तक होना चाहिए। अधिकतम पिक्सल आयाम से अधिक छवियों को प्रोसेसिंग से पहले स्वतः अनुपात में छोटा कर दिया जाता है ताकि वे 6,000 × 6,000 px के भीतर फिट हों। छवि URLs को API सर्वर द्वारा सीधे एक्सेस किया जा सकना चाहिए।
उदाहरण
"furnitureList": [
{
"imageUrl": "https://example.com/sofa.png"
},
{
"imageUrl": "https://example.com/table.png"
}
]
मॉडल प्रकार
| मान | विवरण |
|---|---|
Base | डिफ़ॉल्ट। गति और गुणवत्ता का संतुलन |
Pro | उच्च गुणवत्ता आउटपुट, धीमी प्रोसेसिंग |
📥 अनुरोध उदाहरण#
cURL
# 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)
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)
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)
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();
📤 प्रतिक्रिया#
सफलता प्रतिक्रिया
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
code | integer | 0 सफलता दर्शाता है |
message | string | रिस्पॉन्स संदेश |
data | long | परिणामों के लिए पोलिंग करने हेतु अद्वितीय टास्क आईडी |
2. टास्क परिणाम प्राप्त करें#
पहले से बनाए गए फर्नीचर ट्राई-ऑन टास्क की वर्तमान स्थिति और आउटपुट प्राप्त करता है।
एंडपॉइंट
GET /api/v1/furnitureTryOn/result
अनुरोध हेडर
| हेडर | आवश्यक | विवरण |
|---|---|---|
APIKEY | ✅ हाँ | आपका API प्रमाणीकरण की |
क्वेरी पैरामीटर
| पैरामीटर | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
taskId | long | ✅ हाँ | टास्क बनाए एंडपॉइंट से लौटी टास्क आईडी |
📥 अनुरोध उदाहरण#
cURL
curl -X GET "https://api.ideal.house/api/v1/furnitureTryOn/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Java (OkHttp)
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)
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)
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);
📤 प्रतिक्रिया#
सफलता प्रतिक्रिया (टास्क पूर्ण)
{
"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
}
}
}
प्रतिक्रिया (टास्क प्रोसेसिंग / कतार में)
{
"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
}
}
प्रतिक्रिया (टास्क विफल)
{
"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
}
}
प्रतिक्रिया फ़ील्ड
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
id | long | टास्क अद्वितीय पहचानकर्ता |
status | string | वर्तमान टास्क स्थिति (टास्क स्थिति देखें) |
waitNumber | integer | कतार में आगे टास्कों की संख्या (0 का अर्थ है वर्तमान में प्रोसेसिंग) |
percentage | integer | टास्क पूर्णता प्रतिशत (0–100) |
input | object | टास्क के मूल इनपुट पैरामीटर |
input.imageUrl | string | कमरे के दृश्य की छवि का URL |
input.furnitureList | array | सबमिट किए गए फर्नीचर आइटमों की सूची (अधिकतम 6 आइटम) |
input.furnitureList[].imageUrl | string | फर्नीचर प्रोडक्ट की छवि का URL |
input.prompt | string | कस्टम टेक्स्ट प्रॉम्प्ट (यदि प्रदान किया गया हो) |
input.modelType | string | उपयोग किया गया मॉडल प्रकार |
output | object | जनरेशन रिजल्ट (केवल तब उपलब्ध जब status Success हो) |
output.resultUrl | string | फर्नीचर रखे गए जनरेटेड कमरे की छवि का URL |
output.width | integer | पिक्सल में आउटपुट चौड़ाई |
output.height | integer | पिक्सल में आउटपुट ऊंचाई |
📊 टास्क स्थिति#
| स्थिति | विवरण |
|---|---|
Unprocessed | टास्क बनाया गया है लेकिन अभी शुरू नहीं हुआ है |
Processing | टास्क वर्तमान में प्रोसेस किया जा रहा है |
Success | टास्क सफलतापूर्वक पूर्ण हुआ — आउटपुट उपलब्ध है |
Failed | टास्क किसी त्रुटि के कारण विफल हुआ |
हर 3-5 सेकंड में पोल करें। API टास्क सीमा देखें।
❌ त्रुटि प्रतिक्रियाएं#
सभी त्रुटि प्रतिक्रियाएं समान JSON संरचना साझा करती हैं:
{
"code": 5002,
"message": "Invalid API Key",
"data": null
}
त्रुटि कोड संदर्भ#
| कोड | नाम | विवरण | सुझाया गया कार्य |
|---|---|---|---|
1001 | FAILED | रिक्वेस्ट विफल (जनरिक एरर) | विशिष्ट एरर विवरण के लिए message फ़ील्ड की जांच करें |
1003 | INTERNAL_ERROR | आंतरिक सर्वर त्रुटि | छोटे विलंब के बाद पुनः प्रयास करें; यदि जारी रहे तो सहायता से संपर्क करें |
1011 | PARAM_ERROR | रिक्वेस्ट पैरामीटर एरर — e.g., imageUrl या furnitureList अनुपस्थित, या furnitureList में 6 आइटम से अधिक हैं | सुनिश्चित करें कि दोनों imageUrl और furnitureList प्रदान किए गए हों, खाली न हों, और 6 आइटम से अधिक न हों |
5002 | API_KEY_INVALID | अमान्य या अनुपस्थित API कुंजी | सुनिश्चित करें कि APIKEY हेडर मौजूद है और मान सही है |
9010 | SCAN_TEXT_ERROR | टेक्स्ट प्रॉम्प्ट ने कंटेंट रिव्यू में विफलता दर्शाई | संवेदनशील या प्रतिबंधित कंटेंट हटाने के लिए प्रॉम्प्ट को संशोधित करें |
9038 | PROHIBITED_CONTENT | जनरेट की गई आउटपुट छवि में प्रतिबंधित सामग्री शामिल है | प्रॉम्प्ट/शैली/इनपुट को समायोजित करें और पुनः प्रयास करें |
9051 | COINS_NOT_ENOUGH | अपर्याप्त सिक्के / क्रेडिट | अपने खाते के क्रेडिट टॉप-अप करें और पुनः प्रयास करें |
📄 सामान्य API त्रुटि कोडों की पूरी सूחה के लिए, त्रुटि कोड संदर्भ देखें।