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

मैजिक एडिटर API दस्तावेज़ीकरण#

मूल URL: https://api.ideal.house
संस्करण: v1
अपडेटेड: 2026-03-06


📖 अवलोकन#

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

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

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

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

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

हेडरमान
APIKEYyour_api_key_here

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


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

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

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

📌 API एंडपॉइंट#


1. मैजिक एडिटर कार्य बनाएं#

एक नया AI मैजिक एडिटर कार्य बनाता है और स्थिति की जाँच के लिए एक अद्वितीय taskId लौटाता है।

एंडपॉइंट

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

अनुरोध हेडर

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

अनुरोध बॉडी

फ़ील्डप्रकारआवश्यकविवरण
imageUrlstring✅ हाँसंपादन के लिए स्रोत इमेज का URL
promptstring⚠️ शर्तबद्धवांछित संपादन का वर्णन करने वाली टेक्स्ट प्रॉम्प्ट। यदि modelType Base हो तो आवश्यक; Flash और Pro मोड के लिए वैकल्पिक
modelTypestring❌ वैकल्पिकमॉडल प्रकार। Enum: Flash, Base, Pro. डिफ़ॉल्ट रूप से Flash

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


मॉडल प्रकार

मानविवरणप्रॉम्प्ट आवश्यकता
Flashडिफ़ॉल्ट। स्वतः AI-चालित स्मार्ट जनरेशन के साथ तेज़ संपादन❌ वैकल्पिक
Baseटेक्स्ट-निर्देशित संपादन — अपने प्रॉम्प्ट का उपयोग करके आउटपुट को सटीक रूप से नियंत्रित करता है✅ आवश्यक
Proअधिक विस्तृत परिणामों के साथ उच्च गुणवत्ता वाला संपादन❌ वैकल्पिक

⚠️ महत्वपूर्ण: जब modelType Base हो, तो prompt फील्ड अवश्य प्रदान की जानी चाहिए। modelType=Base और बिना prompt वाले अनुरोध पैरामीटर त्रुटि लौटाएंगे।


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

cURL
bash
# Flash mode (default) — prompt is optional
curl -X POST "https://api.ideal.house/api/v1/magicEditor/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/room.jpg",
    "modelType": "Flash"
  }'

# Base mode — prompt is required
curl -X POST "https://api.ideal.house/api/v1/magicEditor/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/room.jpg",
    "prompt": "Change the wall color to warm beige and add wooden flooring",
    "modelType": "Base"
  }'

# Pro mode — prompt is optional
curl -X POST "https://api.ideal.house/api/v1/magicEditor/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/room.jpg",
    "prompt": "Modern Scandinavian style interior",
    "modelType": "Pro"
  }'
Java (OkHttp)
java
import okhttp3.*;
import java.io.IOException;

public class MagicEditorApiExample {

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

        // Flash mode (default) — no prompt needed
        String requestBody = """
            {
                "imageUrl": "https://example.com/room.jpg",
                "modelType": "Flash"
            }
            """;

        // Base mode — prompt is required
        // String requestBody = """
        //     {
        //         "imageUrl": "https://example.com/room.jpg",
        //         "prompt": "Change the wall color to warm beige and add wooden flooring",
        //         "modelType": "Base"
        //     }
        //     """;

        // Pro mode — prompt is optional
        // String requestBody = """
        //     {
        //         "imageUrl": "https://example.com/room.jpg",
        //         "prompt": "Modern Scandinavian style interior",
        //         "modelType": "Pro"
        //     }
        //     """;

        Request request = new Request.Builder()
            .url(BASE_URL + "/api/v1/magicEditor/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"
}

# Flash mode (default) — no prompt needed
payload = {
    "imageUrl": "https://example.com/room.jpg",
    "modelType": "Flash"
}

# Base mode — prompt is required
# payload = {
#     "imageUrl": "https://example.com/room.jpg",
#     "prompt": "Change the wall color to warm beige and add wooden flooring",
#     "modelType": "Base"
# }

# Pro mode — prompt is optional
# payload = {
#     "imageUrl": "https://example.com/room.jpg",
#     "prompt": "Modern Scandinavian style interior",
#     "modelType": "Pro"
# }

response = requests.post(
    f"{BASE_URL}/api/v1/magicEditor/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 createMagicEditorTask() {
  try {
    const response = await axios.post(
      `${BASE_URL}/api/v1/magicEditor/generate`,
      {
        // Flash mode (default) — no prompt needed
        imageUrl: 'https://example.com/room.jpg',
        modelType: 'Flash'

        // Base mode — prompt is required:
        // imageUrl: 'https://example.com/room.jpg',
        // prompt: 'Change the wall color to warm beige and add wooden flooring',
        // modelType: 'Base'

        // Pro mode — prompt is optional:
        // imageUrl: 'https://example.com/room.jpg',
        // prompt: 'Modern Scandinavian style interior',
        // 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);
  }
}

createMagicEditorTask();

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

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

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

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

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

एंडपॉइंट

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

अनुरोध हेडर

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

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

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

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

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

public class MagicEditorResultExample {

    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/magicEditor/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/magicEditor/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":
    print("Result URL:", result["output"]["resultUrl"])
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/magicEditor/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('Result URL:', result.output.resultUrl);
        console.log('Size:', result.output.width, 'x', result.output.height);
      } 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/room.jpg",
      "prompt": "Change the wall color to warm beige and add wooden flooring",
      "modelType": "Base"
    },
    "output": {
      "resultUrl": "https://cdn.ideal.house/output/magic_editor_result.jpg",
      "width": 1024,
      "height": 1024
    }
  }
}

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

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

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

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

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

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

📊 कार्य स्थिति#

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

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


❌ त्रुटि प्रतिक्रियाएँ#

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

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

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

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

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