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

इमेज टू वीडियो API दस्तावेज़ीकरण#

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


📖 अवलोकन#

इमेज टू वीडियो API आपको एकल स्रोत इमेज से AI-संचालित वीडियो बनाने की अनुमति देता है, या एक पहला फ्रेम और एक अंतिम फ्रेम इमेज निर्दिष्ट करके जनरेटेड वीडियो की शुरुआत और अंत को नियंत्रित करके। वर्कफ़्लो असिंक (asynchronous) है और दो चरणों में शामिल है:

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

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

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

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

हेडरमान
APIKEYyour_api_key_here

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


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

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

फ़्लैश मॉडल (modelType: "Flash", डिफ़ॉल्ट):

रिज़ॉल्यूशनअवधिकटौती किए गए क्रेडिट
480p5s10 क्रेडिट
480p10s20 क्रेडिट
720p5s20 क्रेडिट
720p10s40 क्रेडिट
1080p5s40 क्रेडिट
1080p10s80 क्रेडिट

बेस मॉडल (modelType: "Base", generateAudio: false):

रिज़ॉल्यूशनअवधिकटौती किए गए क्रेडिट
480p5s8 क्रेडिट
480p10s16 क्रेडिट
720p5s16 क्रेडिट
720p10s32 क्रेडिट
1080p5s32 क्रेडिट
1080p10s64 क्रेडिट

ऑडियो के साथ बेस मॉडल (modelType: "Base", generateAudio: true):

रिज़ॉल्यूशनअवधिकटौती किए गए क्रेडिट
480p5s16 क्रेडिट
480p10s32 क्रेडिट
720p5s32 क्रेडिट
720p10s64 क्रेडिट
1080p5s64 क्रेडिट
1080p10s128 क्रेडिट

📌 API एंडपॉइंट#


1. इमेज टू वीडियो कार्य बनाएँ#

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

एंडपॉइंट

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

अनुरोध हेडर

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

अनुरोध बॉडी

फ़ील्डप्रकारआवश्यकविवरण
imageUrlstring✅ हाँस्रोत इमेज का URL। फर्स्ट-लास्ट फ्रेम मोड में, यह पहला फ्रेम के रूप में कार्य करता है
durationinteger✅ हाँसेकंड में वीडियो अवधि। Enum: 5, 10
resolutionstring✅ हाँवीडियो आउटपुट रिज़ॉल्यूशन। Enum: 480p, 720p, 1080p
modelTypestring❌ वैकल्पिकजनरेशन के लिए उपयोग करने वाला मॉडल प्रकार। Enum: Flash, Base। डिफ़ॉल्ट रूप से Flash
generateAudioboolean❌ वैकल्पिकक्या वीडियो के लिए बैकग्राउंड ऑडियो जनरेट करना है। केवल तब लागू जब modelType Base हो। डिफ़ॉल्ट रूप से false
promptstring❌ वैकल्पिकवीडियो जनरेशन शैली और मोशन को मार्गदर्शन करने के लिए टेक्स्ट प्रॉम्प्ट
lastImageUrlstring❌ वैकल्पिकअंतिम फ्रेम इमेज का URL। जब प्रदान किया जाता है, तो फर्स्ट-लास्ट फ्रेम मोड सक्षम होता है: वीडियो imageUrl (पहला फ्रेम) से lastImageUrl (अंतिम फ्रेम) में संक्रमण करेगा

💡 फर्स्ट-लास्ट फ्रेम मोड: यदि lastImageUrl प्रदान किया जाता है, तो API एक वीडियो जनरेट करता है जो पहली फ्रेम इमेज (imageUrl) से अंतिम फ्रेम इमेज (lastImageUrl) में सहजता से संक्रमण करता है, जिससे आपको वीडियो की शुरुआत और अंत पर सटीक नियंत्रण मिलता है।

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


मॉडल प्रकार

मानविवरण
Flashडिफ़ॉल्ट। उच्च गुणवत्ता वाले आउटपुट के साथ तेज़ जनरेशन गति
Baseवैकल्पिक मॉडल — वैकल्पिक AI ऑडियो जनरेशन का समर्थन करता है (generateAudio)

अवधि विकल्प

मानविवरण
55-सेकंड वीडियो
1010-सेकंड वीडियो

रिज़ॉल्यूशन विकल्प

मानविवरण
480pस्टैंडर्ड डिफ़िनिशन — तेज़ प्रोसेसिंग
720pहाई डिफ़िनिशन — उच्च गुणवत्ता वाला आउटपुट
1080pफुल HD — सर्वोच्च गुणवत्ता वाला आउटपुट

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

cURL
bash
# Flash model (default) — single source image
curl -X POST "https://api.ideal.house/api/v1/imageToVideo/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/room.jpg",
    "duration": 5,
    "resolution": "720p",
    "modelType": "Flash",
    "prompt": "Gentle camera zoom in with soft lighting"
  }'

# Base model with audio — single source image
curl -X POST "https://api.ideal.house/api/v1/imageToVideo/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/room.jpg",
    "duration": 5,
    "resolution": "1080p",
    "modelType": "Base",
    "generateAudio": true,
    "prompt": "Peaceful living room ambiance"
  }'

# First-last frame mode — specify both first and last frame
curl -X POST "https://api.ideal.house/api/v1/imageToVideo/generate" \
  -H "APIKEY: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/room-day.jpg",
    "lastImageUrl": "https://example.com/room-night.jpg",
    "duration": 10,
    "resolution": "720p",
    "modelType": "Flash",
    "prompt": "Smooth day to night transition"
  }'
Java (OkHttp)
java
import okhttp3.*;
import java.io.IOException;

public class ImageToVideoApiExample {

    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 model — standard mode
        String requestBody = """
            {
                "imageUrl": "https://example.com/room.jpg",
                "duration": 5,
                "resolution": "720p",
                "modelType": "Flash",
                "prompt": "Gentle camera zoom in with soft lighting"
            }
            """;

        // Base model with audio
        // String requestBody = """
        //     {
        //         "imageUrl": "https://example.com/room.jpg",
        //         "duration": 5,
        //         "resolution": "1080p",
        //         "modelType": "Base",
        //         "generateAudio": true,
        //         "prompt": "Peaceful living room ambiance"
        //     }
        //     """;

        // First-last frame mode
        // String requestBody = """
        //     {
        //         "imageUrl": "https://example.com/room-day.jpg",
        //         "lastImageUrl": "https://example.com/room-night.jpg",
        //         "duration": 10,
        //         "resolution": "720p",
        //         "modelType": "Flash",
        //         "prompt": "Smooth day to night transition"
        //     }
        //     """;

        Request request = new Request.Builder()
            .url(BASE_URL + "/api/v1/imageToVideo/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 model — single source image
payload = {
    "imageUrl": "https://example.com/room.jpg",
    "duration": 5,
    "resolution": "720p",
    "modelType": "Flash",
    "prompt": "Gentle camera zoom in with soft lighting"
}

# Base model with audio
# payload = {
#     "imageUrl": "https://example.com/room.jpg",
#     "duration": 5,
#     "resolution": "1080p",
#     "modelType": "Base",
#     "generateAudio": True,
#     "prompt": "Peaceful living room ambiance"
# }

# First-last frame mode
# payload = {
#     "imageUrl": "https://example.com/room-day.jpg",
#     "lastImageUrl": "https://example.com/room-night.jpg",
#     "duration": 10,
#     "resolution": "720p",
#     "modelType": "Flash",
#     "prompt": "Smooth day to night transition"
# }

response = requests.post(
    f"{BASE_URL}/api/v1/imageToVideo/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 createVideoTask() {
  try {
    // Flash model — standard mode
    const payload = {
      imageUrl: 'https://example.com/room.jpg',
      duration: 5,
      resolution: '720p',
      modelType: 'Flash',
      prompt: 'Gentle camera zoom in with soft lighting'
    };

    // Base model with audio:
    // const payload = {
    //   imageUrl: 'https://example.com/room.jpg',
    //   duration: 5,
    //   resolution: '1080p',
    //   modelType: 'Base',
    //   generateAudio: true,
    //   prompt: 'Peaceful living room ambiance'
    // };

    // First-last frame mode:
    // const payload = {
    //   imageUrl: 'https://example.com/room-day.jpg',
    //   lastImageUrl: 'https://example.com/room-night.jpg',
    //   duration: 10,
    //   resolution: '720p',
    //   modelType: 'Flash',
    //   prompt: 'Smooth day to night transition'
    // };

    const response = await axios.post(
      `${BASE_URL}/api/v1/imageToVideo/generate`,
      payload,
      {
        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);
  }
}

createVideoTask();

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

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

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

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

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

एंडपॉइंट

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

अनुरोध हेडर

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

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

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

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

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

public class ImageToVideoResultExample {

    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/imageToVideo/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/imageToVideo/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(5)  # Poll every 5 seconds (video generation takes longer)

if status == "Success":
    output = result["output"]
    print("Video URL:", output["resultUrl"])
    print("Cover Image:", output["cover"])
else:
    print("Task failed")
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/imageToVideo/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('Video URL:', result.output.resultUrl);
        console.log('Cover Image:', result.output.cover);
        console.log('Resolution:', result.output.width, 'x', result.output.height);
      } else {
        console.log('Task failed');
      }
      break;
    }

    // Wait 5 seconds before next poll (video tasks take longer)
    await new Promise(resolve => setTimeout(resolve, 5000));
  }
}

pollResult(1234567890123456789n);

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

सफलता रिस्पॉन्स (कार्य पूर्ण — स्टैंडर्ड मोड)

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Success",
    "waitNumber": 0,
    "percentage": 100,
    "input": {
      "imageUrl": "https://example.com/room.jpg",
      "duration": 5,
      "resolution": "720p",
      "modelType": "Flash",
      "prompt": "Gentle camera zoom in with soft lighting"
    },
    "output": {
      "resultUrl": "https://cdn.ideal.house/output/video_result.mp4",
      "cover": "https://cdn.ideal.house/output/video_cover.jpg",
      "width": 1280,
      "height": 720
    }
  }
}

सफलता रिस्पॉन्स (कार्य पूर्ण — फर्स्ट-लास्ट फ्रेम मोड)

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Success",
    "waitNumber": 0,
    "percentage": 100,
    "input": {
      "imageUrl": "https://example.com/room-day.jpg",
      "lastImageUrl": "https://example.com/room-night.jpg",
      "duration": 10,
      "resolution": "720p",
      "modelType": "Flash",
      "prompt": "Smooth day to night transition"
    },
    "output": {
      "resultUrl": "https://cdn.ideal.house/output/video_result.mp4",
      "cover": "https://cdn.ideal.house/output/video_cover.jpg",
      "width": 1280,
      "height": 720
    }
  }
}

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

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": 1234567890123456789,
    "status": "Processing",
    "waitNumber": 2,
    "percentage": 30,
    "input": {
      "imageUrl": "https://example.com/room.jpg",
      "duration": 5,
      "resolution": "720p",
      "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",
      "duration": 5,
      "resolution": "720p",
      "modelType": "Flash"
    },
    "output": null
  }
}

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

फ़ील्डप्रकारविवरण
idlongकार्य अद्वितीय पहचानकर्ता
statusstringवर्तमान कार्य स्थिति (देखें कार्य स्थिति)
waitNumberintegerकतार में आगे कार्य संख्या (0 का अर्थ है वर्तमान में प्रोसेसिंग)
percentageintegerकार्य पूर्णता प्रतिशत (0–100)
inputobjectकार्य के मूल इनपुट पैरामीटर
input.imageUrlstringस्रोत इमेज URL (फर्स्ट-लास्ट मोड में पहला फ्रेम)
input.lastImageUrlstringअंतिम फ्रेम इमेज URL (केवल फर्स्ट-लास्ट फ्रेम मोड में उपस्थित)
input.durationintegerसेकंड में वीडियो अवधि (5 या 10)
input.resolutionstringवीडियो रिज़ॉल्यूशन (480p, 720p, या 1080p)
input.modelTypestringउपयोग किया गया मॉडल प्रकार (Flash या Base)
input.generateAudiobooleanक्या ऑडियो जनरेशन सक्षम था (केवल बेस मॉडल)
input.promptstringटेक्स्ट प्रॉम्प्ट (यदि प्रदान किया गया हो)
outputobjectजनरेशन परिणाम (केवल तब उपलब्ध जब status Success हो)
output.resultUrlstringजनरेटेड वीडियो फ़ाइल का URL
output.coverstringवीडियो कवर / थंबनेल इमेज का 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., अमान्य modelType, resolution, या duration संयोजनसभी आवश्यक पैरामीटर प्रदान किए गए हैं और सही ढंग से फॉर्मेट किए गए हैं, यह सुनिश्चित करें
5002API_KEY_INVALIDअमान्य या अनुपस्थित API कुंजीसुनिश्चित करें कि APIKEY हेडर मौजूद है और मान सही है
9010SCAN_TEXT_ERRORटेक्स्ट प्रॉम्प्ट ने सामग्री समीक्षा में विफलतासंवेदनशील या प्रतिबंधित सामग्री को हटाने के लिए प्रॉम्प्ट को संशोधित करें
9038PROHIBITED_CONTENTजनरेट आउटपुट छवि में प्रतिबंधित सामग्री शामिल हैप्रॉम्प्ट/शैली/इनपुट को समायोजित करें और पुनः प्रयास करें
9051COINS_NOT_ENOUGHअपर्याप्त सिक्के / क्रेडिटअपने खाते के क्रेडिट को टॉप-अप करें और पुनः प्रयास करें

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