AI 3D जनरेशन API दस्तावेज़ीकरण#
मूल URL:
https://api.ideal.house
संस्करण: v1
अपडेटेड: 2026-03-06
📖 अवलोकन#
AI 3D Generation API से आप चित्र या प्रॉम्प्ट-आधारित 3D generation tasks जमा कर सकते हैं और उनके परिणामों को असमकालिक रूप से प्राप्त कर सकते हैं। वर्कफ्लो में दो चरण शामिल हैं:
- Task बनाएँ — अपना इनपुट (चित्र URL या टेक्स्ट प्रॉम्प्ट) जमा करें और एक
taskIdप्राप्त करें। - परिणामों की जाँच करें —
taskIdका उपयोग करके task की स्थिति पूछें और जनरेटेड आउटपुट प्राप्त करें।
🔐 प्रमाणीकरण#
सभी API रिक्वेस्ट का प्रमाणीकरण API कुंजी का उपयोग करके किया जाना चाहिए।
रिक्वेस्ट हेडर में अपनी API कुंजी शामिल करें:
| हेडर | मान |
|---|---|
APIKEY | your_api_key_here |
⚠️ अपनी API कुंजी को सुरक्षित रखें। इसे क्लाइंट-साइड कोड या सार्वजनिक रिपॉज़िटरी में प्रकट न करें।
⚡ समानांतरता सीमा#
🚦 महत्वपूर्ण: इस API में एक ही समय पर प्रति खाता केवल 1 समानांतर अनुरोध की अनुमति है।
यदि कई अनुरोध एक साथ जमा किए जाएँ, तो बाद के अनुरोध कतार में रखे जाएँगे और क्रम से प्रोसेस किए जाएँगे।
आप task परिणाम प्रतिक्रिया मेंwaitNumberफ़ील्ड के माध्यम से कतार में अपनी स्थिति की निगरानी कर सकते हैं।
💰 क्रेडिट विलोपन#
[!WARNING] 🪙 प्रत्येक कार्य सफलतापूर्वक बनने पर आपके खाते से 20 क्रेडिट घटाए जाते हैं।
क्रेडिट कार्य बनाए जाने के समय काटे जाते हैं। यदि कार्य अंततः विफल होता है, तो काटे गए क्रेडिट आपके खाते में अपने आप वापस कर दिए जाएँगे।
अपर्याप्त क्रेडिट त्रुटि कोड9051लौटाएंगे। 📄 देखें क्रेडिट विलोपन संदर्भ।
📌 API एंडपॉइंट#
1. 3D Generation Task बनाएँ#
नया AI 3D निर्माण कार्य बनाता है और polling के लिए एक अद्वितीय taskId लौटता है।
एंडपॉइंट
POST /api/v1/ai3d/generate
अनुरोध हेडर
| हेडर | आवश्यक | विवरण |
|---|---|---|
APIKEY | ✅ हाँ | आपका API प्रमाणीकरण कुंजी |
Content-Type | ✅ हाँ | application/json |
अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
imageUrl | string | ⚠️ imageUrl या prompt में से एक आवश्यक है | 3D बनाने के लिए स्रोत चित्र का URL |
prompt | string | ⚠️ imageUrl या prompt में से एक आवश्यक है | 3D content बनाने का वर्णन करने वाला टेक्स्ट प्रॉम्प्ट |
💡 नोट:
imageUrlऔरpromptको एक साथ नहीं भेजा जा सकता — प्रत्येक अनुरोध में दोनों में से केवल एक प्रदान करें।
🖼️ चित्र आवश्यकताएँ: JPG/JPEG, PNG या WebP का उपयोग करें। प्रत्येक चित्र का आकार 20 MB से अधिक नहीं होना चाहिए, आयाम 128 × 128 px से लेकर 5,000 × 5,000 px (समावेशी) तक होना चाहिए। चित्र का URL API सर्वर द्वारा सीधे पहुँच योग्य होना चाहिए।
📥 अनुरोध उदाहरण#
cURL
# Using imageUrl
curl -X POST "https://api.ideal.house/api/v1/ai3d/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://example.com/room.jpg"
}'
# Using prompt
curl -X POST "https://api.ideal.house/api/v1/ai3d/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A modern minimalist living room with wooden floor"
}'
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class Ai3dApiExample {
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/room.jpg"
}
""";
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/ai3d/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"
}
# Using imageUrl
payload = {
"imageUrl": "https://example.com/room.jpg"
}
# Or using prompt
# payload = {
# "prompt": "A modern minimalist living room with wooden floor"
# }
response = requests.post(
f"{BASE_URL}/api/v1/ai3d/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 createTask() {
try {
const response = await axios.post(
`${BASE_URL}/api/v1/ai3d/generate`,
{
imageUrl: 'https://example.com/room.jpg'
// Or use prompt instead:
// prompt: 'A modern minimalist living room with wooden floor',
},
{
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);
}
}
createTask();
📤 प्रतिक्रिया#
सफलता प्रतिक्रिया
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
code | integer | 0 सफलता संकेत करता है |
message | string | प्रतिक्रिया संदेश |
data | long | परिणामों के लिए पोलिंग करने हेतु अद्वितीय टास्क आईडी |
2. कार्य परिणाम प्राप्त करें#
पहले से बनाए गए task की वर्तमान स्थिति और आउटपुट प्राप्त करता है।
एंडपॉइंट
GET /api/v1/ai3d/result
अनुरोध हेडर
| हेडर | आवश्यक | विवरण |
|---|---|---|
APIKEY | ✅ हाँ | आपका API प्रमाणीकरण कुंजी |
क्वेरी पैरामीटर
| पैरामीटर | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
taskId | long | ✅ हाँ | टास्क बनाए एंडपॉइंट से लौटी टास्क आईडी |
📥 अनुरोध उदाहरण#
cURL
curl -X GET "https://api.ideal.house/api/v1/ai3d/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class Ai3dResultExample {
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/ai3d/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/ai3d/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":
print("Result URL:", result["output"]["resultUrl"])
else:
print("Task failed or terminated")
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/ai3d/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);
} 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/room.jpg"
},
"output": {
"resultUrl": "https://cdn.ideal.house/output/result_3d_model.zip",
"width": 1024,
"height": 1024
}
}
}
प्रतिक्रिया (कार्य प्रोसेसिंग / कतार में)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Processing",
"waitNumber": 2,
"percentage": 35,
"input": {
"imageUrl": "https://example.com/room.jpg"
},
"output": null
}
}
प्रतिक्रिया (कार्य विफल)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"imageUrl": "https://example.com/room.jpg"
},
"output": null
}
}
प्रतिक्रिया फ़ील्ड
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
id | long | कार्य अद्वितीय पहचानकर्ता |
status | string | वर्तमान कार्य स्थिति (देखें कार्य स्थिति) |
waitNumber | integer | कतार में आगे कार्य संख्या (0 का अर्थ है वर्तमान में प्रोसेसिंग) |
percentage | integer | कार्य पूर्णता प्रतिशत (0–100) |
input | object | कार्य के मूल इनपुट पैरामीटर |
input.imageUrl | string | स्रोत चित्र का URL (यदि प्रदान किया गया हो) |
input.prompt | string | स्रोत टेक्स्ट प्रॉम्प्ट (यदि प्रदान किया गया हो) |
input.modelType | string | उपयोग किया गया मॉडल प्रकार |
output | object | जनरेशन परिणाम (केवल तब उपलब्ध जब status Success हो) |
output.resultUrl | string | जनरेटेड 3D मॉडल फ़ाइल का 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 | अनुरोध पैरामीटर त्रुटि | सत्यापित करें कि सभी आवश्यक पैरामीटर प्रदान किए गए हैं और सही प्रारूप में हैं |
5002 | API_KEY_INVALID | अमान्य या अनुपस्थित API कुंजी | सुनिश्चित करें कि APIKEY हेडर मौजूद है और मान सही है |
9010 | SCAN_TEXT_ERROR | टेक्स्ट प्रॉम्प्ट ने सामग्री समीक्षा में विफलता | संवेदनशील या प्रतिबंधित सामग्री को हटाने के लिए प्रॉम्प्ट को संशोधित करें |
9038 | PROHIBITED_CONTENT | जनरेट आउटपुट छवि में प्रतिबंधित सामग्री शामिल है | प्रॉम्प्ट/शैली/इनपुट को समायोजित करें और पुनः प्रयास करें |
9036 | COVERT_3D_FAILED | यह चित्र 3D निर्माण का समर्थन नहीं करता | स्पष्ट संरचना और गहराई वाले एक अलग चित्र का प्रयास करें |
9051 | COINS_NOT_ENOUGH | अपर्याप्त सिक्के / क्रेडिट | अपने खाते के क्रेडिट को टॉप-अप करें और पुनः प्रयास करें |
त्रुटि प्रतिक्रिया उदाहरण#
5002 — अमान्य API Key
{
"code": 5002,
"message": "Invalid API Key",
"data": null
}
1011 — पैरामीटर त्रुटि
{
"code": 1011,
"message": "Request parameter error: imageUrl is required",
"data": null
}
9036 — चित्र 3D निर्माण के लिए समर्थित नहीं है
{
"code": 9036,
"message": "This image does not support 3D generation",
"data": null
}
9010 — टेक्स्ट सामग्री मॉडरेशन विफल
{
"code": 9010,
"message": "Text prompt failed content review, contains prohibited content",
"data": null
}
9051 — अपर्याप्त क्रेडिट
{
"code": 9051,
"message": "Insufficient coins",
"data": null
}
📄 सामान्य API त्रुटि कोडों की पूरी सूची के लिए, त्रुटि कोड संदर्भ का हवाला दें।