घर के नक्शे जनरेशन API दस्तावेज़ीकरण#
मूल URL:
https://api.ideal.house
संस्करण: v1
अपडेट किया गया: 2026-06-12
📖 अवलोकन#
घर के नक्शे जनरेशन API आपको वास्तु शैली, क्षेत्र, संरचनात्मक विन्यास और आंतरिक लेआउट प्राथमिकताओं के आधार पर AI-जनित घर के नक्शे प्रस्तुति बोर्ड बनाने की अनुमति देता है। सफल जनरेशन के बाद, API प्रति कार्य के रूप में ठीक 1 संयुक्त परिणाम छवि उत्पन्न करता है। छवि में एक ही प्रस्तुति बोर्ड में समन्वित 2D फ्लोर प्लान, बाहरी मुखभाग के रेखाचित्र और फोटो-वास्तविक बाहरी रेंडरिंग शामिल हैं। परिणाम output.resultUrl में संग्रहीत होता है और output.resultList में एकमात्र आइटम के रूप में भी शामिल होता है। वर्कफ्लो असिंक्रोनस है और इसमें दो चरण शामिल हैं:
- कार्य बनाएं — अपनी घर योजना पैरामीटर सबमिट करें और
taskIdप्राप्त करें। - परिणामों के लिए पोल करें — कार्य स्थिति का पूछताछ करने और जनरेट की गई छवियों को प्राप्त करने के लिए
taskIdका उपयोग करें।
🔐 प्रमाणीकरण#
सभी API अनुरोधों का प्रमाणीकरण API कुंजी से किया जाना चाहिए।
अनुरोध हेडर में अपनी API शामिल करें:
| हेडर | मान |
|---|---|
APIKEY | your_api_key_here |
⚠️ अपनी API कुंजी सुरक्षित रखें। इसे क्लाइंट-साइड कोड या सार्वजनिक रिपॉज़िटरी में उजागर न करें।
💰 क्रेडिट विलोपन#
[!WARNING] 🪙 चुने गए
modelTypeके आधार पर कार्य सफलतापूर्वक बनाए जाने पर क्रेडिट काटे जाते हैं। यदि कार्य अंततः विफल होता है, तो काटे गए क्रेडिट आपके खाते में अपने आप वापस कर दिए जाएँगे।
अपर्याप्त क्रेडिट त्रुटि कोड9051लौटाएंगे। 📄 देखें क्रेडिट विलोपन संदर्भ।
मॉडल (modelType) | विलोपित क्रेडिट |
|---|---|
Base | 10 क्रेडिट |
Pro | 20 क्रेडिट |
📌 API एंडपॉइंट#
1. घर योजना कार्य बनाएं#
एक नया AI घर योजना जनरेशन कार्य बनाता है और पोलिंग के लिए एक अद्वितीय taskId लौटाता है।
एंडपॉइंट
POST /api/v1/housePlan/generate
अनुरोध हेडर
| हेडर | आवश्यक | विवरण |
|---|---|---|
APIKEY | ✅ हाँ | आपका API प्रमाणीकरण कुंजी |
Content-Type | ✅ हाँ | application/json |
अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण | डिफ़ॉल्ट |
|---|---|---|---|---|
style | string / null | ✅ हाँ | वास्तु शैली का अंग्रेज़ी नाम। देखें शैली विकल्प | Barndominium |
stories | string | ✅ हाँ | मंजिलों की संख्या। सूचीबद्ध मान: 1, 2, 3+ | 2 |
bedrooms | string | ✅ हाँ | बेडरूमों की संख्या। सूचीबद्ध मान: 1, 2, 3, 4, 5+ | 2 |
bathrooms | string | ✅ हाँ | बाथरूमों की संख्या। सूचीबद्ध मान: 1, 1.5, 2, 2.5, 3, 3.5, 4+ | 1 |
totalArea | string | ✅ हाँ | कुल क्षेत्र सीमा min-max unit प्रारूप में। देखें कुल क्षेत्र विकल्प | 150-200 m² |
garageEnabled | boolean | ✅ हाँ | क्या गैराज शामिल है | false |
garageType | string / null | ⚠️ शर्तबद्ध | garageEnabled=true होने पर आवश्यक। देखें गैराज प्रकार विकल्प | null |
garageCapacity | string / null | ⚠️ शर्तबद्ध | garageEnabled=true होने पर आवश्यक। देखें गैराज क्षमता | null |
basement | string | ✅ हाँ | बेसमेंट प्रकार। देखें बेसमेंट विकल्प | None |
roofType | string / null | ❌ नहीं | छत संरचना प्रकार। देखें छत प्रकार विकल्प | null |
outdoorSpaces | array<string> | ❌ नहीं | बाहरी क्षेत्र। देखें बाहरी स्थान विकल्प | [] |
layoutConcept | string / null | ❌ नहीं | समग्र आंतरिक लेआउट अवधारणा। देखें लेआउट अवधारणा विकल्प | null |
bedroomAreaRanges | array<object> | ✅ हाँ | बेडरूम क्षेत्र सीमाएँ। लंबाई बेडरूम की संख्या से मेल खानी चाहिए। देखें बेडरूम क्षेत्र सीमाएँ | उदाहरण देखें |
bathroomLayouts | array<object> | ✅ हाँ | बाथरूम लेआउट चयन। लंबाई Math.floor(bathrooms) होनी चाहिए। देखें बाथरूम लेआउट | उदाहरण देखें |
kitchenLayout | string / null | ❌ नहीं | किचन लेआउट। देखें किचन विकल्प | null |
kitchenFeatureOptions | array<string> | ❌ नहीं | वैकल्पिक किचन सुविधाएँ। देखें किचन विकल्प | [] |
keyRooms | string / null | ❌ नहीं | विशेष कमरे, जो विराम चिह्न और स्थान से जुड़े हैं। देखें मुख्य कमरे विकल्प | null |
prompt | string | ❌ नहीं | जनरेशन को और मार्गदर्शन करने के लिए कस्टम टेक्स्ट प्रॉम्प्ट | "" |
refImageUrl | string | ❌ नहीं | शैली को मार्गदर्शन करने के लिए संदर्भ घर छवि का URL | "" |
modelType | string | ✅ हाँ | मॉडल क्वालिटी प्रकार। Enum: Base, Pro. ⚠️ Flash मोड समर्थित नहीं है | Base |
🖼️ छवि आवश्यकताएँ: वैकल्पिक संदर्भ छवि को JPG/JPEG, PNG, या WebP का उपयोग करना चाहिए, इसका आकार 20 MB से अधिक नहीं होना चाहिए, और इसकी आयाम 128 × 128 px से लेकर 6,000 × 6,000 px (समावेशी) तक होनी चाहिए। अधिकतम पिक्सेल आयाम से अधिक छवियों को प्रोसेसिंग से पहले स्वतः अनुपात में छोटा कर दिया जाता है ताकि वे 6,000 × 6,000 px के भीतर फिट हों। इसका URL API सर्वर द्वारा सीधे पहुंचा होना चाहिए।
🎨 शैली विकल्प#
| मान | विवरण |
|---|---|
Barndominium | डिफ़ॉल्ट। धातु बार्न-शैली हाइब्रिड घर |
Cabin | ग्रामीण लकड़ी के कबिन शैली |
Cape Cod | क्लासिक न्यू इंग्लैंड सममितीय शैली |
Coastal | हल्का, हवादार समुद्र तट-प्रेरित शैली |
Colonial | परंपरागत सममितीय कॉलोनियल वास्तुकला |
Contemporary | साफ़ रेखाएँ और आधुनिक सामग्री |
Craftsman | प्राकृतिक सामग्री के साथ हाथ से बने विवरण |
Farmhouse | ग्रामीण देशी फार्महाउस शैली |
French Country | शानदार फ्रेंच प्रोविंशियल शैली |
Mediterranean | गर्म स्टक्को के साथ टेराकोटा तत्व |
Mid-Century Modern | 1950s–70s साफ ज्यामितीय आधुनिकता |
Modern | न्यूनतमवादी फ्लैट/कोणीय आधुनिक डिज़ाइन |
Ranch | एक-मंज़िला फैला हुआ लेआउट |
Shingle Style | लगातार लकड़ी शिंगल बाहरी भाग |
Southwestern | एडोबी-प्रेरित मरुस्थल शैली |
Transitional | परंपरागत और आधुनिक का मिश्रण |
Tudor | आधा-लकड़ी वाला मध्यकालीन इंग्लिश शैली |
Victorian | शानदार 19वीं शताब्दी सजावटी शैली |
📐 कुल क्षेत्र विकल्प#
totalArea फ़ील्ड min-max unit प्रारूप का उपयोग करती है। मीट्रिक मान m² का उपयोग करते हैं; इंपीरियल मापन प्रणाली के मान ft² का उपयोग करते हैं। न्यूनतम मान अधिकतम मान से कम से कम एक स्टेप कम होना चाहिए।
| इकाई | न्यूनतम | अधिकतम | स्टेप | उदाहरण |
|---|---|---|---|---|
m² | 50 | 500 | 10 | 150-200 m² |
ft² | 500 | 5000 | 100 | 1500-2000 ft² |
🏠 छत प्रकार विकल्प#
| मान | विवरण |
|---|---|
Gable roof | क्लासिक त्रिकोणीय चोटीदार छत |
Hip roof | चारों ओर ढलान |
Flat roof | न्यूनतम पिटच फ्लैट छत |
Pitched roof | सामान्य तीव्र ढलान वाली छत |
🏗️ बेसमेंट विकल्प#
| मान | विवरण |
|---|---|
None | कोई बेसमेंट नहीं |
Partial | आंशिक बेसमेंट |
Full | पूर्ण बेसमेंट |
🚗 गैराज प्रकार विकल्प#
garageType केवल तब आवश्यक है जब garageEnabled=true; अन्यथा null भेजें।
| मान | विवरण |
|---|---|
Detached | अलग गैराज |
Front Entry | गैराज प्रवेश द्वार सामने की ओर है |
Side Entry | गैराज प्रवेश द्वार साइड की ओर है |
Rear Entry | गैराज प्रवेश द्वार पीछे की ओर है |
🚗 गैराज क्षमता#
garageCapacity केवल तब आवश्यक है जब garageEnabled=true; अन्यथा null भेजें।
| मान | विवरण |
|---|---|
1 | एक-कार गैराज |
2 | डबल-कार गैराज |
3+ | तीन या अधिक कार स्थान |
🌿 बाहरी स्थान विकल्प#
outdoorSpaces फ़ील्ड निम्नलिखित मानों के एक ऐरे को स्वीकार करती है।
| मान | विवरण |
|---|---|
Front porch | सामने की ओर ढका हुआ प्रवेश पोर्च |
Covered patio | ढका हुआ बाहरी पेटियो क्षेत्र |
Deck | लकड़ी या कंपोजिट डेक |
Balcony | ऊँचा बाहरी प्लेटफॉर्म |
Courtyard | बंद या आंशिक रूप से बंद बाहरी यार्ड |
Breezeway | संरचनाओं को जोड़ने वाला ढका हुआ गलियारा |
Outdoor Kitchen | बाहरी रसोई और भोजन क्षेत्र |
उदाहरण
"outdoorSpaces": ["Front porch", "Deck", "Balcony"]
🏛️ लेआउट अवधारणा विकल्प#
| मान | विवरण |
|---|---|
Open Concept | खुला-प्लान जुड़े हुए रहने के स्थान |
Traditional | परिभाषित सीमाओं के साथ अलग कमरे |
Split-Level | क्षेत्रों के बीच स्टेगर्ड फ्लोर स्तर |
🛏️ बेडरूम क्षेत्र सीमाएँ#
bedroomAreaRanges फ़ील्ड एक ऐरे होनी चाहिए जिसकी लंबाई bedrooms गिनती से मेल खाती है। प्रत्येक आइटम निम्नलिखित आकार का उपयोग करता है:
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
name | string | बेडरूम प्रदर्शन नाम, उदाहरण के लिए Room 1 (Master) |
minArea | string | न्यूनतम बेडरूम क्षेत्र। यह एक गैर-ऋणात्मक संख्यात्मक स्ट्रिंग होना चाहिए |
maxArea | string | अधिकतम बेडरूम क्षेत्र। यह minArea के बराबर या उससे अधिक होना चाहिए |
unit | string | क्षेत्र इकाई। सूचीबद्ध मान: m², ft² |
डिफ़ॉल्ट उदाहरण bedrooms="2" के लिए
[
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
]
🛁 बाथरूम लेआउट#
bathroomLayouts फ़ील्ड एक ऐरे होनी चाहिए जिसकी लंबाई Math.floor(bathrooms) है। उदाहरण के लिए, bathrooms="2.5" 2 बाथरूम लेआउट ऑब्जेक्ट्स की आवश्यकता होती है।
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
name | string | बाथरूम प्रदर्शन नाम, उदाहरण के लिए Bathroom 1 |
layout | string / null | सूचीबद्ध मान: With Wet & Dry Separation, Without Separation, या null |
डिफ़ॉल्ट उदाहरण bathrooms="1" के लिए
[
{ "name": "Bathroom 1", "layout": null }
]
🍳 किचन विकल्प#
किचन लेआउट
| मान | विवरण |
|---|---|
Open Kitchen | खुला किचन जो रहने/भोजन क्षेत्र से जुड़ा है |
Closed Kitchen | बंद अलग किचन स्थान |
किचन सुविधा विकल्प
| मान | विवरण |
|---|---|
Eating Bar | खाने की बार / काउंटर सीटिंग |
Kitchen Island | किचन आइलैंड |
Breakfast Nook | ब्रेकफास्ट नोक |
🚪 मुख्य कमरे विकल्प#
keyRooms फ़ील्ड निम्नलिखित मानों में से एक या अधिक को स्वीकार करती है। कई विकल्पों का चयन करते समय, उन्हें एक विराम चिह्न (,) से जोड़ें।
| मान | विवरण |
|---|---|
Home Office | समर्पित होम ऑफिस या स्टडी |
Bonus Room | लचीला बहु-उद्देश्यी बोनस रूम |
Media Room | होम थिएटर या मीडिया सेंटर |
Mudroom | बाहरी सामान के लिए प्रवेश रूम |
Laundry Room | समर्पित लॉन्ड्री स्थान |
Guest Suite | स्व-निर्भर मेहमान बेडरूम सूट |
उदाहरण
"keyRooms": "Home Office, Media Room, Guest Suite"
मॉडल प्रकार
| मान | विवरण |
|---|---|
Base | डिफ़ॉल्ट। संतुलित गति और गुणवत्ता। उच्च-रिज़ॉल्यूशन संयुक्त प्रस्तुति बोर्ड उत्पन्न करता है |
Pro | उच्च गुणवत्ता और उच्च-रिज़ॉल्यूशन आउटपुट, धीमा |
⚠️ नोट:
Flashमोड इस API के लिए उपलब्ध नहीं है। केवलBaseऔरProसमर्थित हैं।
📥 अनुरोध उदाहरण#
cURL
# Basic request with default values
curl -X POST "https://api.ideal.house/api/v1/housePlan/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"garageType": null,
"garageCapacity": null,
"basement": "None",
"roofType": null,
"outdoorSpaces": [],
"layoutConcept": null,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": null }
],
"kitchenLayout": null,
"kitchenFeatureOptions": [],
"keyRooms": null,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
}'
# Pro model with reference image and custom prompt
curl -X POST "https://api.ideal.house/api/v1/housePlan/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"style": "Victorian",
"stories": "3+",
"bedrooms": "5+",
"bathrooms": "4+",
"totalArea": "300-380 m²",
"garageEnabled": true,
"garageType": "Front Entry",
"garageCapacity": "3+",
"basement": "Full",
"roofType": "Gable roof",
"outdoorSpaces": ["Front porch", "Balcony", "Courtyard", "Outdoor Kitchen"],
"layoutConcept": "Traditional",
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "18", "maxArea": "28", "unit": "m²" },
{ "name": "Room 2", "minArea": "12", "maxArea": "16", "unit": "m²" },
{ "name": "Room 3", "minArea": "12", "maxArea": "16", "unit": "m²" },
{ "name": "Room 4", "minArea": "10", "maxArea": "14", "unit": "m²" },
{ "name": "Room 5", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": "With Wet & Dry Separation" },
{ "name": "Bathroom 2", "layout": "With Wet & Dry Separation" },
{ "name": "Bathroom 3", "layout": "Without Separation" },
{ "name": "Bathroom 4", "layout": null }
],
"kitchenLayout": "Closed Kitchen",
"kitchenFeatureOptions": ["Kitchen Island", "Breakfast Nook"],
"keyRooms": "Home Office, Bonus Room, Media Room, Guest Suite",
"prompt": "Grand Victorian mansion with ornate details and wraparound porch",
"refImageUrl": "https://example.com/reference-house.jpg",
"modelType": "Pro"
}'
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class HousePlanApiExample {
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 = """
{
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"garageType": null,
"garageCapacity": null,
"basement": "None",
"roofType": null,
"outdoorSpaces": [],
"layoutConcept": null,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": null }
],
"kitchenLayout": null,
"kitchenFeatureOptions": [],
"keyRooms": null,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
}
""";
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/housePlan/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 = {
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": False,
"garageType": None,
"garageCapacity": None,
"basement": "None",
"roofType": None,
"outdoorSpaces": [],
"layoutConcept": None,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": None }
],
"kitchenLayout": None,
"kitchenFeatureOptions": [],
"keyRooms": None,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
}
response = requests.post(
f"{BASE_URL}/api/v1/housePlan/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 createHousePlanTask() {
try {
const response = await axios.post(
`${BASE_URL}/api/v1/housePlan/generate`,
{
style: 'Barndominium',
stories: '2',
bedrooms: '2',
bathrooms: '1',
totalArea: '150-200 m²',
garageEnabled: false,
garageType: null,
garageCapacity: null,
basement: 'None',
roofType: null,
outdoorSpaces: [],
layoutConcept: null,
bedroomAreaRanges: [
{ name: 'Room 1 (Master)', minArea: '12', maxArea: '18', unit: 'm²' },
{ name: 'Room 2', minArea: '10', maxArea: '14', unit: 'm²' }
],
bathroomLayouts: [
{ name: 'Bathroom 1', layout: null }
],
kitchenLayout: null,
kitchenFeatureOptions: [],
keyRooms: null,
prompt: '',
refImageUrl: '',
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);
}
}
createHousePlanTask();
📤 प्रतिक्रिया#
सफलता प्रतिक्रिया
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
code | integer | 0 सफलता संकेत करता है |
message | string | प्रतिक्रिया संदेश |
data | long | परिणामों के लिए पोलिंग करने हेतु अद्वितीय टास्क आईडी |
2. कार्य परिणाम प्राप्त करें#
पहले से बनाए गए घर योजना कार्य की वर्तमान स्थिति और आउटपुट प्राप्त करता है।
एंडपॉइंट
GET /api/v1/housePlan/result
अनुरोध हेडर
| हेडर | आवश्यक | विवरण |
|---|---|---|
APIKEY | ✅ हाँ | आपका API प्रमाणीकरण कुंजी |
क्वेरी पैरामीटर
| पैरामीटर | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
taskId | long | ✅ हाँ | टास्क बनाए एंडपॉइंट से लौटी टास्क आईडी |
📥 अनुरोध उदाहरण#
cURL
curl -X GET "https://api.ideal.house/api/v1/housePlan/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class HousePlanResultExample {
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/housePlan/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/housePlan/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", "Termination"):
break
time.sleep(3) # Poll every 3 seconds
if status == "Success":
output = result["output"]
print("Composite Result URL:", output["resultUrl"])
print("Result List:", output.get("resultList", []))
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/housePlan/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', 'Termination'].includes(status)) {
if (status === 'Success') {
console.log('Composite Result URL:', result.output.resultUrl);
console.log('Result List:', result.output.resultList);
} else {
console.log('Task ended with status:', status);
}
break;
}
// Wait 3 seconds before next poll
await new Promise(resolve => setTimeout(resolve, 3000));
}
}
pollResult(1234567890123456789n);
📤 प्रतिक्रिया#
📸 नोट: यह API प्रति सफल कार्य केवल 1 संयुक्त परिणाम छवि उत्पन्न करता है। छवि एक ही प्रस्तुति बोर्ड में 2D फ्लोर प्लान, बाहरी इलेवेशन और फोटो-वास्तविक बाहरी रेंडरिंग को जोड़ती है।
output.resultUrlमें संयुक्त छवि का URL होता है, औरoutput.resultListमें समान URL एक-आइटम ऐरे के रूप में संगति के लिए होता है।
सफलता प्रतिक्रिया (कार्य पूर्ण)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Success",
"waitNumber": 0,
"percentage": 100,
"input": {
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"garageType": null,
"garageCapacity": null,
"basement": "None",
"roofType": null,
"outdoorSpaces": [],
"layoutConcept": null,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": null }
],
"kitchenLayout": null,
"kitchenFeatureOptions": [],
"keyRooms": null,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
},
"output": {
"resultUrl": "https://cdn.ideal.house/output/house_plan_composite.jpg",
"resultList": [
"https://cdn.ideal.house/output/house_plan_composite.jpg"
],
"width": 2560,
"height": 1440
}
}
}
प्रतिक्रिया (कार्य प्रोसेसिंग / कतार में)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Processing",
"waitNumber": 1,
"percentage": 45,
"input": {
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"garageType": null,
"garageCapacity": null,
"basement": "None",
"roofType": null,
"outdoorSpaces": [],
"layoutConcept": null,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": null }
],
"kitchenLayout": null,
"kitchenFeatureOptions": [],
"keyRooms": null,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
},
"output": null
}
}
प्रतिक्रिया (कार्य विफल)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"basement": "None",
"modelType": "Base"
},
"output": null
}
}
प्रतिक्रिया फ़ील्ड
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
id | long | कार्य अद्वितीय पहचानकर्ता |
status | string | वर्तमान कार्य स्थिति (देखें कार्य स्थिति) |
waitNumber | integer | कतार में आगे कार्य संख्या (0 का अर्थ है वर्तमान में प्रोसेसिंग) |
percentage | integer | कार्य पूर्णता प्रतिशत (0–100) |
input | object | कार्य के मूल इनपुट पैरामीटर |
input.style | string | वास्तु शैली |
input.totalArea | string | कुल क्षेत्र सीमा |
input.stories | string | मंज़िलों की संख्या |
input.bedrooms | string | बेडरूमों की संख्या |
input.bathrooms | string | बाथरूमों की संख्या |
input.garageEnabled | boolean | क्या गैराज का अनुरोध किया गया था |
input.garageType | string / null | गैराज प्रकार |
input.garageCapacity | string / null | गैराज स्थानों की संख्या |
input.basement | string | बेसमेंट प्रकार |
input.roofType | string | छत प्रकार |
input.outdoorSpaces | array<string> | बाहरी स्थान |
input.layoutConcept | string | समग्र लेआउट अवधारणा |
input.bedroomAreaRanges | array<object> | बेडरूम क्षेत्र सीमाएँ |
input.bathroomLayouts | array<object> | बाथरूम लेआउट चयन |
input.kitchenLayout | string | किचन लेआउट शैली |
input.kitchenFeatureOptions | array<string> | वैकल्पिक किचन सुविधाएँ |
input.keyRooms | string | मुख्य विशेष कमरे (विराम-अलग) |
input.prompt | string | कस्टम टेक्स्ट प्रॉम्प्ट (यदि प्रदान किया गया हो) |
input.refImageUrl | string | संदर्भ छवि URL (यदि प्रदान किया गया हो) |
input.modelType | string | उपयोग किया गया मॉडल प्रकार |
output | object | जनरेशन परिणाम (केवल तब उपलब्ध जब status Success हो) |
output.resultUrl | string | जनरेट की गई संयुक्त घर योजना प्रस्तुति बोर्ड का URL |
output.resultList | array<string> | जनित परिणाम छवियों के URLs। घर के नक्शे के लिए, यह सामान्यतः एक-आइटम एरे है जिसमें output.resultUrl के समान URL शामिल है |
output.width | integer | पिक्सेल में आउटपुट चौड़ाई |
output.height | integer | पिक्सेल में आउटपुट ऊंचाई |
📊 कार्य स्थिति#
| स्थिति | विवरण |
|---|---|
Unprocessed | कार्य बनाया गया है लेकिन अभी शुरू नहीं हुआ है |
Processing | कार्य वर्तमान में प्रोसेस किया जा रहा है |
Success | कार्य सफलतापूर्वक पूर्ण हुआ — आउटपुट उपलब्ध है |
Failed | कार्य त्रुटि के कारण विफल हुआ |
Termination | कार्य को बाधित या समाप्त कर दिया गया |
हर 3-5 सेकंड में पोल करें। देखें API कार्य सीमा।
❌ त्रुटि प्रतिक्रियाएँ#
सभी त्रुटि प्रतिक्रियाएँ समान JSON संरचना साझा करती हैं:
{
"code": 5002,
"message": "Invalid API Key",
"data": null
}
त्रुटि कोड संदर्भ#
| कोड | नाम | विवरण | सुझाया गया कार्रवाई |
|---|---|---|---|
1001 | FAILED | अनुरोध विफल (सामान्य त्रुटि) | विशिष्ट त्रुटि विवरणों के लिए message फ़ील्ड की जांच करें |
1003 | INTERNAL_ERROR | आंतरिक सर्वर त्रुटि | एक छोटे देरी के बाद पुनः प्रयास करें; यदि यह जारी रहता है तो सहायता से संपर्क करें |
1011 | PARAM_ERROR | अनुरोध पैरामीटर त्रुटि | सत्यापित करें कि सभी आवश्यक पैरामीटर प्रदान किए गए हैं और सही प्रारूप में हैं |
5002 | API_KEY_INVALID | अमान्य या अनुपस्थित API | सुनिश्चित करें कि APIKEY हेडर मौजूद है और मान सही है |
9010 | SCAN_TEXT_ERROR | टेक्स्ट प्रॉम्प्ट ने सामग्री समीक्षा में विफलता | संवेदनशील या प्रतिबंधित सामग्री को हटाने के लिए प्रॉम्प्ट को संशोधित करें |
9038 | PROHIBITED_CONTENT | जनरेट आउटपुट छवि में प्रतिबंधित सामग्री शामिल है | प्रॉम्प्ट/शैली/इनपुट को समायोजित करें और पुनः प्रयास करें |
9051 | COINS_NOT_ENOUGH | अपर्याप्त सिक्के / क्रेडिट | अपने खाते के क्रेडिट को टॉप-अप करें और पुनः प्रयास करें |
📄 सामान्य API त्रुटि कोडों की पूरी सूची के लिए, त्रुटि कोड संदर्भ का हवाला दें।