API RapidVideoMaker
The REST API lets you process video files from any HTTP client — Python scripts, n8n workflows, third-party tools. Five modes available: Merge videos (multiple MP4/MOV), Edit audio (1 MP4/MOV + 1 MP3), Create a video (1 JPG/PNG + 1 MP3), Overlay video (2 MP4/MOV picture-in-picture). Processing is asynchronous: submit files, then poll for the result.
पूर्ण वर्कफ़्लो
हर इंटीग्रेशन इसी 4-चरण अनुक्रम का पालन करता है:
POST /api/v1/render.phpmultipart/form-data के रूप में भेजें। 1 JPG/PNG इमेज + 1 MP3 + mode=image_to_video → वीडियो जनरेशन। 1 MP4/MOV + 1 MP3 → ऑडियो संपादन (mode=mix_audio जोड़ें ट्रैक ओवरले के लिए)। कई MP4/MOV → मर्ज। सर्वर एक अनूठा job_id लौटाता है। या 1 इमेज + options.text + options.voice: आवाज़ टेक्स्ट से बनाई जाती है, MP3 की ज़रूरत नहीं।GET /api/v1/jobs.php?job_id=…queued → processing → ready (या error) से गुज़रती है। रिस्पॉन्स में कतार की स्थिति और अनुमानित शेष समय शामिल है।ready हो, तो रिस्पॉन्स में उपयोग के लिए तैयार download_url फ़ील्ड होती है।GET /api/download.php?job_id=…410 Gone से जवाब देती है।प्रमाणीकरण
हर अनुरोध में आपका API टोकन होना चाहिए। दो फॉर्मेट स्वीकार किए जाते हैं:
आपका टोकन आपके सदस्य क्षेत्र में उपलब्ध है — प्रति खाता एक टोकन, पंजीकरण पर स्वचालित रूप से बनाया जाता है। इसे केवल एक बार स्पष्ट रूप से दिखाया जाता है — इसे सुरक्षित रखें।
कोटा
प्रत्येक सदस्य खाते में प्रतिदिन 20 अनुरोध होते हैं, वेब इंटरफ़ेस और API के बीच साझा। विफल जॉब कोटा नहीं लेती। काउंटर UTC मध्यरात्रि को रीसेट होता है।
POST रिस्पॉन्स में quota_used और quota_remaining शामिल हैं। सीमा पार होने पर सर्वर 429 से जवाब देता है।
कतार
एक समय में एक जॉब प्रोसेस होती है। कई जॉब एक साथ सबमिट करने पर वे कतार में जाती हैं और आगमन क्रम में प्रोसेस होती हैं। प्रतीक्षा के दौरान, स्टेटस रिस्पॉन्स में शामिल हैं:
queue_position— कतार में जॉब की स्थिति (1 = अगली प्रोसेस होने वाली)queue_total— प्रतीक्षारत जॉब की कुल संख्याeta_minutes— प्रोसेसिंग शुरू होने से पहले अनुमानित समय
/api/v1/jobs.php एंडपॉइंट प्रति टोकन 12 कॉल प्रति मिनट स्वीकार करता है। इससे अधिक पर सर्वर 429 के साथ Retry-After: 5 हेडर लौटाता है। सिफारिश: प्रत्येक कॉल के बीच 10 सेकंड। उपलब्ध ट्रांज़िशन
सीधे मर्ज के लिए transition_type=none (डिफ़ॉल्ट) पास करें, या क्लिप के बीच फ़ेड के लिए नीचे दिए गए टाइप में से एक:
अवधि (transition_duration) 0.2 से 2.0 सेकंड के बीच है। यदि क्लिप बहुत छोटी है तो ट्रांज़िशन अनदेखा कर दिया जाता है।
एंडपॉइंट
Five modes, accessible via the mode field (omit mode with multiple MP4s to auto-detect fusion):
| उपयोग | API मोड | आवश्यक फ़ाइलें | विवरण |
|---|---|---|---|
| वीडियो मर्ज करें | fusion |
2–20 MP4/MOV फ़ाइलें | क्लिप दिए गए क्रम में एंड-टू-एंड जोड़ी जाती हैं। क्लिप के बीच वैकल्पिक ट्रांज़िशन। |
| ऑडियो संपादित करें | add_audio या mix_audio |
1 MP4/MOV + 1 MP3 | वीडियो की ऑडियो ट्रैक को बदलता या समृद्ध करता है। वीडियो ट्रैक कभी री-एन्कोड नहीं होती (-c:v copy).add_audio — मूल ऑडियो हटा दिया जाता है और MP3 से पूरी तरह बदल दिया जाता है।mix_audio — मूल ऑडियो रखा जाता है और MP3 ओवरले होती है। |
| वीडियो बनाएं | image_to_video |
1 JPG/PNG + 1 MP3 — या 1 JPG/PNG + एक टेक्स्ट (options.text + options.voice): आवाज़ बनाई जाती है |
एक स्थिर इमेज और आपकी MP3 से — या सिर्फ़ एक टेक्स्ट (options.text) से, जिसकी आवाज़ बनाई जाती है (options.voice) — वीडियो बनाता है। टेक्स्ट ओवरले (स्थिर, शब्द-दर-शब्द या कराओके), फ़ेड, रिज़ॉल्यूशन और fps options फ़ील्ड से सेट किए जा सकते हैं। |
| वीडियो ओवरले | overlay_video |
2 MP4/MOV | मुख्य वीडियो के ऊपर दूसरा वीडियो रखता है। options फ़ील्ड से स्थिति, आकार, अपारदर्शिता और ऑडियो सेट करें। |
| टेक्स्ट जोड़ें | add_text |
1 MP4/MOV | मौजूदा वीडियो पर टेक्स्ट जोड़ता है (रिज़ॉल्यूशन, फ़्रेम दर और ऑडियो सुरक्षित रहते हैं)। image_to_video जैसी ही टेक्स्ट सेटिंग्स, साथ में टेक्स्ट के प्रकट होने का समय। options.text आवश्यक है। |
| टेक्स्ट से MP3 | text_to_mp3 |
(केवल टेक्स्ट) | टेक्स्ट को वाणी में बदलता है और एक MP3 फ़ाइल देता है। कोई फ़ाइल अपलोड आवश्यक नहीं — mode=text_to_mp3, text और lang फ़ॉर्म फ़ील्ड के रूप में भेजें। साइट की सभी 20 भाषाओं को सपोर्ट करता है। |
options.text + options.voice के साथ image_to_video केवल 1 इमेज स्वीकार करता है — आवाज़ टेक्स्ट से बनाई जाती है (MP3 के बिना)।options.voice के साथ image_to_video की अवधि टेक्स्ट से बनी आवाज़ जितनी होती है (+0.6 से.)।सामान्य पैरामीटर (multipart/form-data)
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| videos[] | File[] | हाँ | प्रोसेस करने की फ़ाइलें। मोड के अनुसार: 2–20 MP4/MOV, या 1 MP4/MOV + 1 MP3, या 1 इमेज (JPG/PNG) + 1 MP3। प्रति फ़ाइल अधिकतम 500 MB। |
| mode | string | * | image_to_video | add_audio | mix_audio | overlay_video | text_to_mp3। इन non-fusion मोड के लिए आवश्यक। केवल MP4/MOV फ़ाइलों के साथ mode छोड़ना हमेशा fusion को ट्रिगर करता है (स्ट्रीम-कॉपी संयोजन) — कभी overlay_video नहीं, भले ही ठीक 2 MP4/MOV अपलोड किए गए हों। ऑडियो संपादन के लिए: add_audio मूल को हटाता है, mix_audio इसे रखता है और ओवरले करता है। यदि mode फ़ील्ड दी गई है, तो अपलोड की गई फ़ाइलें बिल्कुल मेल खानी चाहिए — अन्यथा अनुरोध अस्वीकार कर दिया जाता है। add_text भी स्वीकार्य है: यह एकमात्र मोड है जो एक ही MP4/MOV फ़ाइल लेता है, और इसके लिए options.text आवश्यक है। |
| order | JSON | केवल fusion मोड — क्लिप क्रम परिभाषित करने वाला JSON इंडेक्स एरे। | |
| transition_type | string | केवल fusion मोड। डिफ़ॉल्ट: none। उपलब्ध ट्रांज़िशन की सूची देखें। | |
| transition_duration | float | केवल fusion मोड। अवधि 0.2–2.0 s। डिफ़ॉल्ट: 0.5। | |
| options | JSON | image_to_video, add_text, mix_audio और overlay_video के लिए रेंडर पैरामीटर का JSON ऑब्जेक्ट (नीचे की तालिकाएँ देखें)। | |
| timings | File / string | image_to_video / add_text: कराओके टाइमिंग फ़ाइल (SRT या LRC, अधिकतम 200 KB) — फ़ाइल फ़ील्ड या सादा टेक्स्ट। दिखाया गया टेक्स्ट फ़ाइल से आता है; text_mode=karaoke लागू होता है; voice के साथ संगत नहीं। | |
| callback_url | string | पब्लिक URL (http/https) जो जॉब पूरी होने पर कॉल होती है। रिस्पॉन्स में webhook_secret शामिल है। |
options पैरामीटर — image_to_video मोड
सभी वैकल्पिक। न दिए गए मान → वर्कर द्वारा डिफ़ॉल्ट लागू होते हैं।
| की | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| text | string | "" | ओवरले के रूप में दिखाया जाने वाला टेक्स्ट। खाली = कोई टेक्स्ट नहीं। अधिकतम 500 वर्ण। |
| font | string | "default" | टेक्स्ट का फ़ॉन्ट, आईडी के अनुसार। स्वीकृत मान: default, dejavu-sans-bold, dejavu-serif, liberation-serif, dejavu-mono, amiri, noto-sans-sc (简体中文), noto-sans-tc (繁體中文), noto-sans-jp (日本語), noto-sans-kr (한국어), noto-sans-hebrew (עברית), noto-sans-thai (ไทย)। default = मानक फ़ॉन्ट (इमोजी समर्थित); amiri = नस्ख़ फ़ॉन्ट, अरबी टेक्स्ट के लिए आदर्श। कोई भी अन्य मान invalid_option त्रुटि लौटाता है। इमोजी केवल default के साथ दिखते हैं। |
| font_size | int | 60 | पिक्सल में फ़ॉन्ट आकार। रेंज: 10–300। अनुशंसित: 36, 48, 60, 72, 96। |
| text_color | string | "white" | टेक्स्ट रंग (जैसे white, yellow, #ffffff)। |
| text_position | string | "center" | टेक्स्ट स्थिति: center, top, bottom। |
| box | bool | true | टेक्स्ट के पीछे अर्ध-पारदर्शी पृष्ठभूमि। |
| box_color | string | "black@0.4" | FFmpeg फॉर्मेट में रंग + अपारदर्शिता: color@opacity। अपारदर्शिता: 0.0–1.0। |
| fade_duration | float | 0.5 | सेकंड में फ़ेड इन/आउट अवधि (0–2)। 0 = कोई फ़ेड नहीं। |
| width | int | 1080 | पिक्सल में वीडियो चौड़ाई (64–3840, सम संख्या)। मानक: 1080/1920/720/1280। |
| height | int | 1920 | पिक्सल में वीडियो ऊँचाई (64–3840, सम संख्या)। |
| fps | int | 24 | फ्रेम दर (1–60)। |
| image_fit | string | "contain" | contain: पूरी छवि या वीडियो दिखाएँ और खाली जगह चुनी गई पृष्ठभूमि से भरें। solid (डिफ़ॉल्ट) या blur। धुंधलेपन के लिए image_fit=contain आवश्यक है। टेक्स्ट साफ़ रहता है। cover: इमेज को फ्रेम भरने के लिए ज़ूम किया जाता है, केंद्रित — किनारे काटे जाते हैं। |
| bg_color | string | "black" | background_mode=solid: पृष्ठभूमि रंग यदि इमेज लक्ष्य रिज़ॉल्यूशन नहीं भरती — केवल image_fit=contain के साथ प्रासंगिक। |
| background_mode | string | "solid" | solid (डिफ़ॉल्ट) या blur। धुंधलेपन के लिए image_fit=contain आवश्यक है। टेक्स्ट साफ़ रहता है। |
| blur_strength | number | 20 | 1 से 50 तक संख्या; डिफ़ॉल्ट 20। गॉसियन धुंधलापन केवल पृष्ठभूमि पर लागू होता है। |
| enable_image_motion | bool | false | फोटो एनिमेशन सक्षम करता है। false पर इमेज स्थिर रहती है। |
| image_motion_effect | string | "ken_burns" | एनिमेशन प्रभाव। स्वीकृत मान: zoom_in, zoom_out, pan_left_to_right, pan_right_to_left, pan_top_to_bottom, pan_bottom_to_top, zoom_pan_soft, ken_burns। |
| motion_intensity | float | 1.0 | फोटो एनिमेशन तीव्रता (0.25–2.0)। ज़ूम आयाम और पैन गति को गुणा करता है। |
| text_effect | string | "none" | टेक्स्ट ओवरले एनिमेशन। स्वीकृत मान: none, fade_in, slide_up, slide_down, slide_left, bounce। |
| text_effect_intensity | float | 1.0 | टेक्स्ट एनिमेशन तीव्रता (0.25–2.0)। |
| text_border_width | int | 0 | अक्षरों के चारों ओर काली आउटलाइन की मोटाई पिक्सल में (0 = अक्षम, 1–10)। |
| text_border_color | string | "black" | अक्षरों की आउटलाइन का रंग (text_color जैसा ही फ़ॉर्मेट, डिफ़ॉल्ट "black")। text_border_width > 0 होने पर इस्तेमाल होता है। |
| text_mode | string | "static" | टेक्स्ट प्रकट करने का मोड। static (डिफ़ॉल्ट): पहले फ्रेम से पूरा टेक्स्ट दिखता है। word_by_word: word_reveal_speed की दर से शब्द एक-एक करके दिखाई देते हैं। text_effect के साथ अनन्य: text_mode=word_by_word होने पर text_effect अनदेखा किया जाता है। "karaoke": ऑडियो की लय के साथ टेक्स्ट का रंग बदलता है, पेज-दर-पेज (1,000 अक्षरों तक)। voice के साथ शब्द-दर-शब्द सिंक, अन्यथा शब्दों की लंबाई के अनुसार ऑडियो पर बाँटा जाता है। |
| word_reveal_speed | float | 1.5 | प्रति सेकंड शब्दों में प्रकट करने की गति (0.3–5.0, डिफ़ॉल्ट 1.5)। केवल text_mode=word_by_word के साथ। OpenAI TTS सिंक के लिए अनुशंसित मान: 2.0। |
| word_anim | string | "none" | प्रत्येक शब्द के प्रकट होने की एनिमेशन। none (डिफ़ॉल्ट): तत्काल प्रकटीकरण। fade: प्रत्येक नया शब्द 0.2s फेड के साथ प्रकट होता है। केवल text_mode=word_by_word के साथ। |
| karaoke_style | string | "fill" | कराओके शैली: fill (बोले गए शब्द हाइलाइट रंग लेते हैं), sweep (हर शब्द धीरे-धीरे भरता है; दाएँ-से-बाएँ लिपियों में पूरे शब्द) या highlight (केवल वर्तमान शब्द रंगीन)। |
| highlight_color | string | "#FFD200" | कराओके मोड में बोले गए शब्दों / वर्तमान शब्द का रंग (text_color जैसा ही फ़ॉर्मेट)। |
| karaoke_lines | int | 2 | कराओके मोड में प्रति पेज दिखाई जाने वाली पंक्तियाँ (1–4)। |
| voice | string | "" | आवाज़ ID (text_to_mp3 वाली ही सूची, जैसे hi-IN-SwaraNeural): उसी जॉब में text से आवाज़ बनाई जाती है। तब image_to_video को केवल इमेज चाहिए (साथ में भेजी गई MP3 अस्वीकार की जाती है)। कराओके मोड में हर शब्द आवाज़ के साथ सिंक होता है। |
| voice_rate | int | 0 | बनाई गई आवाज़ की गति, % में (−50 से +50)। |
अपनी टाइमिंग के साथ कराओके (SRT / LRC)
timings फ़ील्ड में SRT या LRC फ़ाइल भेजें: हर पंक्ति अपने समय पर दिखती है और कराओके का एक पेज बनती है (500 पंक्तियों, 5,000 अक्षरों तक)। SRT: पंक्ति अपने अंत समय पर गायब होती है। LRC: पंक्ति अगली तक रहती है (खाली पंक्ति उसे रोकती है); [offset:] और enhanced LRC की शब्द टाइमिंग <mm:ss.xx> समर्थित हैं — वरना हर पंक्ति अपनी अवधि में बाँटी जाती है। add_text में समय वीडियो की शुरुआत से गिना जाता है, text_start जितना खिसकाकर।
options पैरामीटर — overlay_video मोड
सभी वैकल्पिक हैं। अपलोड का क्रम ज़रूरी है: पहली फ़ाइल मुख्य वीडियो (बैकग्राउंड) और दूसरी फ़ाइल ऊपर रखा गया वीडियो है। ग्रीन स्क्रीन हटाने के लिए chroma_key इस्तेमाल करें।
| की | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| position | string | "bottom-right" | वीडियो रखने का कोना: top-left, top-right, bottom-left, bottom-right या center। |
| scale | float | 0.30 | मुख्य वीडियो की चौड़ाई के अनुपात में ओवरले का आकार। 0.25 = चौड़ाई का 25%। सीमा: 0.05–1.0। |
| opacity | float | 1.0 | ओवरले की अपारदर्शिता। 1.0 = पूरी तरह अपारदर्शी, 0.0 = अदृश्य। |
| margin | int | 10 | ओवरले और फ़्रेम के किनारे के बीच पिक्सेल में दूरी। position=center होने पर अनदेखा किया जाता है। सीमा: 0–200। |
| audio | string | "main" | कौन सा ऑडियो रखना है: main सिर्फ मुख्य वीडियो, overlay सिर्फ ऊपर वाला वीडियो, mix दोनों का ऑडियो समान वॉल्यूम पर मिलाता है। |
| chroma_key | bool | false | ओवरले का शुद्ध हरा (#00FF00) बैकग्राउंड हटाने के लिए true दें — ग्रीन स्क्रीन पर रिकॉर्ड किए गए वेबकैम या एनिमेशन के लिए उपयोगी। |
| chroma_similarity | float | 0.20 | ग्रीन स्क्रीन सहनशीलता। कम मान विषय के किनारों को बचाता है; ज़्यादा मान असमान रोशनी को संभालता है। डिजिटल हरे के लिए 0.10–0.20, असली स्क्रीन के लिए 0.25–0.45 सुझाया जाता है। सीमा: 0.01–0.60। |
options पैरामीटर — add_text मोड
टेक्स्ट आवश्यक है। डिफ़ॉल्ट रूप से वीडियो का प्रारूप, फ़्रेम दर और ऑडियो बने रहते हैं। output_format से image_fit, bg_color और background_mode के साथ नया फ़्रेम चुना जाता है। width, height, fps और फ़ोटो गति के विकल्प अनदेखे रहते हैं। अधिकतम अवधि: 15 मिनट।
{"text":"Hello","output_format":"portrait","image_fit":"contain","background_mode":"blur","blur_strength":20}
| की | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| text | string | हाँ | जोड़ा जाने वाला टेक्स्ट। आवश्यक, 1–200 अक्षर। |
| text_start | float | 0 | वह सेकंड जब टेक्स्ट दिखाई देता है (≥ 0)। यह वीडियो के अंत से पहले होना चाहिए। |
| text_duration | float | 0 | टेक्स्ट कितनी देर दिखेगा, सेकंड में (0.1–3600)। 0 = वीडियो के अंत तक। |
| font | string | "default" | टेक्स्ट का फ़ॉन्ट, आईडी के अनुसार। स्वीकृत मान: default, dejavu-sans-bold, dejavu-serif, liberation-serif, dejavu-mono, amiri, noto-sans-sc (简体中文), noto-sans-tc (繁體中文), noto-sans-jp (日本語), noto-sans-kr (한국어), noto-sans-hebrew (עברית), noto-sans-thai (ไทย)। default = मानक फ़ॉन्ट (इमोजी समर्थित); amiri = नस्ख़ फ़ॉन्ट, अरबी टेक्स्ट के लिए आदर्श। कोई भी अन्य मान invalid_option त्रुटि लौटाता है। इमोजी केवल default के साथ दिखते हैं। |
| font_size | int | 60 | फ़ॉन्ट आकार, उस वीडियो के लिए दिया गया जिसकी छोटी भुजा 1080 px है, और वास्तविक रिज़ॉल्यूशन के अनुसार अपने आप स्केल होता है — एक ही मान 720p और 4K पर समान दिखता है। सीमा: 10–300। |
| fade_duration | float | 0.5 | टेक्स्ट (वीडियो का नहीं) के फ़ेड इन/आउट की अवधि, सेकंड में। सीमा: 0–2। |
| text_color, box, box_color, text_position, text_border_width, text_border_color, text_effect, text_effect_intensity, text_mode, word_reveal_speed, word_anim, karaoke_style, highlight_color, karaoke_lines, voice, voice_rate | — | — | image_to_video के समान (ऊपर की तालिका देखें)। |
| original_volume | float | 0.3 | voice के साथ: आवाज़ के नीचे वीडियो की मूल ध्वनि का वॉल्यूम (0–2, डिफ़ॉल्ट 0.3; 0 = बदल दी गई)। आवाज़ text_start पर शुरू होती है; उसके ख़त्म होने तक टेक्स्ट दिखता है, और अगर वह वीडियो के अंत से आगे जाती है तो आख़िरी फ़्रेम रोक दिया जाता है। |
| background_mode | string | "solid" | solid (डिफ़ॉल्ट) या blur। धुंधलेपन के लिए image_fit=contain आवश्यक है। टेक्स्ट साफ़ रहता है। |
| blur_strength | number | 20 | 1 से 50 तक संख्या; डिफ़ॉल्ट 20। गॉसियन धुंधलापन केवल पृष्ठभूमि पर लागू होता है। |
| output_format | string | "original" | केवल add_text: original (डिफ़ॉल्ट), portrait (1080×1920), square (1080×1080), landscape (1920×1080)। धुंधलेपन के लिए original के अलावा प्रारूप आवश्यक है। |
| image_fit | string | "contain" | contain: पूरी छवि या वीडियो दिखाएँ और खाली जगह चुनी गई पृष्ठभूमि से भरें। solid (डिफ़ॉल्ट) या blur। धुंधलेपन के लिए image_fit=contain आवश्यक है। टेक्स्ट साफ़ रहता है। cover: इमेज को फ्रेम भरने के लिए ज़ूम किया जाता है, केंद्रित — किनारे काटे जाते हैं। |
| bg_color | string | "black" | background_mode=solid: पृष्ठभूमि रंग यदि इमेज लक्ष्य रिज़ॉल्यूशन नहीं भरती — केवल image_fit=contain के साथ प्रासंगिक। |
options पैरामीटर — ऑडियो संपादन (mix_audio)
केवल mode=mix_audio के साथ उपलब्ध। add_audio के लिए अनदेखा।
| की | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| mp3_volume | float | 1.0 | ओवरलेड MP3 की वॉल्यूम (0.0 = म्यूट, 1.0 = मूल वॉल्यूम, 2.0 = डबल)। |
text_to_mp3 मोड — सीधे पैरामीटर (options JSON नहीं)
अन्य मोड के विपरीत, ये फ़ील्ड सीधे फ़ॉर्म फ़ील्ड के रूप में भेजे जाते हैं, options JSON ऑब्जेक्ट के अंदर नहीं। केवल text आवश्यक है।
| की | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| text | string | — | आवाज़ में बदलने के लिए टेक्स्ट। आवश्यक। अधिकतम 5,000 अक्षर। |
| lang | string | "en" | जब voice छोड़ा गया हो या अमान्य हो तो डिफ़ॉल्ट आवाज़ चुनने के लिए उपयोग किया जाने वाला भाषा कोड। साइट की 20 भाषाओं में से एक (नीचे तालिका देखें)। अज्ञात होने पर en पर वापस आता है। |
| voice | string | स्वतः | edge-tts आवाज़ ID (नीचे तालिका देखें)। यदि छोड़ा गया या अमान्य है, तो lang की पहली आवाज़ स्वतः उपयोग की जाती है। |
| slow | bool | false | बोलने की गति 25% धीमी करने के लिए true (या 1) सेट करें। कोई भी अन्य मान false माना जाता है। |
text_to_mp3 को videos[] की आवश्यकता नहीं है। mode=text_to_mp3 के साथ text / lang / voice / slow को सामान्य फ़ॉर्म फ़ील्ड के रूप में भेजें।उपलब्ध आवाज़ें (edge-tts, Microsoft Neural), भाषा कोड के अनुसार समूहीकृत:
| भाषा | उपलब्ध आवाज़ें |
|---|---|
en |
en-US-AvaNeural, en-US-AndrewNeural, en-GB-LibbyNeural, en-AU-NatashaNeural, en-AU-WilliamMultilingualNeural |
fr |
fr-FR-DeniseNeural, fr-FR-HenriNeural, fr-FR-EloiseNeural, fr-CA-SylvieNeural, fr-CA-ThierryNeural |
es |
es-ES-ElviraNeural, es-ES-AlvaroNeural, es-MX-DaliaNeural, es-AR-ElenaNeural, es-AR-TomasNeural |
ar |
ar-SA-ZariyahNeural, ar-SA-HamedNeural, ar-EG-SalmaNeural, ar-MA-MounaNeural, ar-MA-JamalNeural |
pt |
pt-BR-FranciscaNeural, pt-BR-AntonioNeural, pt-PT-RaquelNeural |
de |
de-DE-KatjaNeural, de-DE-ConradNeural, de-DE-AmalaNeural, de-AT-IngridNeural, de-AT-JonasNeural |
it |
it-IT-ElsaNeural, it-IT-DiegoNeural, it-IT-IsabellaNeural |
nl |
nl-NL-ColetteNeural, nl-NL-MaartenNeural, nl-BE-DenaNeural, nl-BE-ArnaudNeural |
ru |
ru-RU-SvetlanaNeural, ru-RU-DmitryNeural |
tr |
tr-TR-EmelNeural, tr-TR-AhmetNeural |
hi |
hi-IN-SwaraNeural, hi-IN-MadhurNeural |
bn |
bn-IN-TanishaaNeural, bn-IN-BashkarNeural, bn-BD-NabanitaNeural, bn-BD-PradeepNeural |
ur |
ur-PK-UzmaNeural, ur-PK-AsadNeural, ur-IN-GulNeural, ur-IN-SalmanNeural |
id |
id-ID-GadisNeural, id-ID-ArdiNeural |
ja |
ja-JP-NanamiNeural, ja-JP-KeitaNeural |
ko |
ko-KR-SunHiNeural, ko-KR-InJoonNeural |
zh-CN |
zh-CN-XiaoxiaoNeural, zh-CN-YunxiNeural, zh-CN-XiaoyiNeural |
zh-TW |
zh-TW-HsiaoChenNeural, zh-TW-YunJheNeural |
vi |
vi-VN-HoaiMyNeural, vi-VN-NamMinhNeural |
pl |
pl-PL-ZofiaNeural, pl-PL-MarekNeural |
सफलता रिस्पॉन्स (HTTP 200)
text_to_mp3 के लिए, रिस्पॉन्स में file_count या transition फ़ील्ड नहीं होते (कोई फ़ाइल अपलोड नहीं हुई) — बाकी समान है: job_id, quota_used, quota_remaining, status_url, webhook_secret।curl उदाहरण — image_to_video मोड
बनाई गई आवाज़ के साथ कराओके टेक्स्ट (image_to_video, बिना MP3)
SRT फ़ाइल के साथ कराओके (image_to_video + आपकी MP3)
curl उदाहरण — ऑडियो संपादन
curl उदाहरण — overlay_video मोड
curl उदाहरण — add_text मोड
curl उदाहरण — वीडियो मर्ज
curl उदाहरण — text_to_mp3 मोड
स्थिति में वास्तविक चरण और बीता समय शामिल है। अनुमान लगभग हैं; क्लाइंट का समय समाप्त होना कार्य की विफलता नहीं है। उसी कार्य ID की स्थिति फिर जाँचें। फ़ाइलें पूर्ण होने के दो घंटे बाद समाप्त होती हैं।
संभावित स्थितियाँ
| स्थिति | अर्थ | अतिरिक्त फ़ील्ड |
|---|---|---|
| queued | कतार में, अभी प्रोसेस नहीं हुई | queue_position, queue_total, eta_minutes |
| processing | FFmpeg प्रोसेसिंग जारी है | processing_stage, processing_elapsed_seconds, stage_elapsed_seconds, last_activity_at, processed_media_seconds, eta_overrun |
| ready | पूर्ण — फ़ाइल उपलब्ध | download_url, media_available, created_at, expires_at |
| error | प्रोसेसिंग विफल | error (message), quota_refund_status: pending | confirmed | not_required |
| cancelled | रद्द किया गया | quota_refund_status: pending | confirmed | not_required |
स्थिति के अनुसार रिस्पॉन्स
curl उदाहरण
सामान्य पैरामीटर (multipart/form-data)
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
page | integer | 1 | पेज संख्या (1 से शुरू) |
limit | integer | 20 | प्रति पेज परिणाम (अधिकतम 50, डिफ़ॉल्ट 20) |
स्थिति के अनुसार रिस्पॉन्स
अंतिम फ़ाइल को स्ट्रीम करता है। Content-Type वीडियो मोड के लिए video/mp4, या text_to_mp3 के लिए audio/mpeg होता है। टोकन आवश्यक नहीं। केवल तब उपलब्ध जब स्थिति ready हो।
जॉब पूरी होने के 2 घंटे बाद फ़ाइल रखी जाती है, फिर हटा दी जाती है।
वैकल्पिक पैरामीटर
| पैरामीटर | विवरण |
|---|---|
| filename | डाउनलोड की गई फ़ाइल के लिए सुझाया गया नाम (जैसे mera-video.mp4) |
| preview | डाउनलोड शुरू करने के बजाय इनलाइन प्लेबैक के लिए (Content-Disposition: attachment को छोड़ता है) 1 सेट करें — ब्राउज़र में पूर्वावलोकन के लिए उपयोग किया जाता है। |
curl उदाहरण
वेबहुक
वेबहुक पोलिंग का विकल्प है: हर X सेकंड में स्टेटस जाँचने की बजाय, आप एक URL देते हैं और सर्वर जॉब पूरी होने पर आपको स्वचालित रूप से कॉल करता है।
यह कैसे काम करता है
/api/v1/render.phpको POST मेंcallback_urlपास करें- रिस्पॉन्स में
webhook_secretहोता है — सिग्नेचर वेरिफाई करने के लिए इसे रखें - जब जॉब
readyयाerrorपहुँचती है, सर्वर आपके URL पर साइन किया हुआ JSONPOSTभेजता है HMAC-SHA256(webhook_secret, raw_body)से सिग्नेचर वेरिफाई करें
callback_url सार्वजनिक रूप से सुलभ URL होना चाहिए। निजी और लूपबैक IP पते ब्लॉक हैं। टाइमआउट: 10 सेकंड। प्राप्त पेलोड
सर्वर द्वारा भेजे गए हेडर
| हेडर | मान |
|---|---|
| Content-Type | application/json |
| X-RVM-Signature | sha256=<hmac_hex> — raw body का HMAC-SHA256 सिग्नेचर |
| X-RVM-Job-Id | संबंधित job_id |
सिग्नेचर वेरिफिकेशन
त्रुटि कोड
| HTTP | JSON कोड | कारण |
|---|---|---|
| 401 | unauthorized | टोकन गायब, अमान्य या रद्द |
| 400 | missing_files | कोई फ़ाइल प्राप्त नहीं हुई |
| 400 | too_few_files | 2 से कम फ़ाइलें भेजी गईं |
| 400 | too_many_files | 20 से अधिक फ़ाइलें भेजी गईं |
| 400 | invalid_mime | असमर्थित फ़ाइल — केवल MP4, MP3 और JPG/PNG इमेज स्वीकार हैं (MIME मैजिक बाइट्स से वेरिफाइड) |
| 400 | wrong_file_count | फ़ाइलों की संख्या चुने हुए मोड से मेल नहीं खाती |
| 400 | wrong_file_types | फ़ाइल प्रकार चुने हुए मोड से मेल नहीं खाते |
| 400 | invalid_file_combination | बिना मोड के फ़ाइल संयोजन किसी समर्थित मोड से मेल नहीं खाता |
| 400 | invalid_options | options फ़ील्ड मान्य JSON नहीं है |
| 400 | invalid_option | options में एक मान अमान्य है (रंग, फ़ॉन्ट नाम, स्थिति…) |
| 400 | file_too_large | एक फ़ाइल 500 MB से अधिक है |
| 400 | text_required | options.text फ़ील्ड गायब या खाली है (add_text मोड) |
| 400 | video_too_long | वीडियो 15 मिनट से लंबा है (add_text मोड) |
| 400 | text_start_out_of_range | text_start वीडियो के अंत से आगे है |
| 400 | invalid_voice | अज्ञात voice ID। |
| 400 | invalid_timings | अपठनीय टाइमिंग फ़ाइल (फ़ॉर्मेट पहचाना नहीं गया, कोई समय वाली पंक्ति नहीं, अंत शुरुआत से पहले, बहुत लंबी…)। |
| 400 | invalid_order | order एरे एक मान्य क्रमपरिवर्तन नहीं है |
| 400 | invalid_job_id | गलत job_id फॉर्मेट (32-कैरेक्टर हेक्स होना चाहिए) |
| 404 | job_not_found | जॉब नहीं मिली — job_id अज्ञात या कभी अस्तित्व में नहीं थी |
| 410 | job_expired | जॉब समाप्त — मौजूद थी लेकिन 2 घंटे की रिकवरी विंडो बीत गई |
| 429 | quota_exceeded | प्रति दिन 20 सफल जॉब पहुँची (सभी मोड मिलाकर) |
| 429 | rate_limited | /api/v1/jobs.php पर 12 से अधिक कॉल/मिनट — Retry-After सेकंड प्रतीक्षा करें |
| 500 | server_error | आंतरिक सर्वर त्रुटि |
इंटीग्रेशन उदाहरण
प्रत्येक मोड के लिए उदाहरण — pip install requests से requests इंस्टॉल करें।
सामान्य कॉन्फ़िगरेशन
image_to_video मोड — इमेज + ऑडियो → वीडियो
ऑडियो संपादन
overlay_video मोड — पिक्चर-इन-पिक्चर
add_text मोड — वीडियो पर टेक्स्ट
वीडियो मर्ज
text_to_mp3 मोड — टेक्स्ट से आवाज़
पोलिंग + डाउनलोड (सभी मोड के लिए सामान्य)
n8n में दो तरीके: पोलिंग (स्टेटस लूप) या वेबहुक (सर्वर n8n को कॉल करता है)। वेबहुक अनुशंसित है।
तरीका A — वेबहुक (अनुशंसित)
केवल 3 नोड, कोई लूप नहीं।
नोड 1 — वेबहुक ट्रिगर
वर्कफ़्लो इनपुट के रूप में Webhook नोड जोड़ें (मेथड POST)। जनरेट किया गया URL नोट करें।
नोड 2 — जॉब बनाएं (HTTP Request)
| मेथड | POST |
| URL | https://rapidvideomaker.com/api/v1/render.php |
| प्रमाणीकरण | Header Auth — Authorization: Bearer rvm_… |
| Body Content Type | Form-Data Multipart |
| Body params | प्रत्येक क्लिप के लिए बाइनरी फ़ील्ड videos[] + टेक्स्ट फ़ील्ड callback_url = ऊपर वेबहुक नोड URL |
सिग्नेचर वेरिफाई करने के लिए रिस्पॉन्स से webhook_secret वर्कफ़्लो वेरिएबल में सेव करें।
नोड 3 — परिणाम प्रोसेस करें (वेबहुक-ट्रिगर्ड वर्कफ़्लो में)
जब n8n सर्वर का POST प्राप्त करती है, $json.status ready या error होता है। ready पर $json.download_url में डाउनलोड URL होता है।
{{ $headers['x-rvm-signature'] }} को अपने webhook_secret से HMAC-SHA256 से तुलना करें।तरीका B — पोलिंग (वेबहुक के बिना)
5 नोड, हर 10 s पर स्टेटस लूप।
नोड 1 — जॉब बनाएं — ऊपर जैसा कॉन्फ़िग, callback_url के बिना।
नोड 2 — प्रतीक्षा करें — 10 सेकंड।
नोड 3 — स्टेटस पोल करें (HTTP Request GET)
| URL | https://rapidvideomaker.com/api/v1/jobs.php |
| Query पैरामीटर | job_id = {{ $('नोड 1').item.json.job_id }} |
| प्रमाणीकरण | Header Auth — वही टोकन |
नोड 4 — If: {{ $json.status }} === 'ready' → true: नोड 5 / false: नोड 2 पर वापस।
नोड 5 — डाउनलोड: {{ $json.download_url }} पर HTTP Request GET, Response Format File।
चरण 1 — जॉब बनाएं (मोड चुनें)
चरण 2 — पोलिंग
चरण 3 — डाउनलोड
सर्वोत्तम अभ्यास
- उसी कार्य की स्थिति हर 5–10 सेकंड में जाँचें। समय मोड और इनपुट के आकार पर निर्भर करता है।
- स्थिति में वास्तविक चरण और बीता समय शामिल है। अनुमान लगभग हैं; क्लाइंट का समय समाप्त होना कार्य की विफलता नहीं है। उसी कार्य ID की स्थिति फिर जाँचें। फ़ाइलें पूर्ण होने के दो घंटे बाद समाप्त होती हैं।
- जल्दी डाउनलोड करें: स्थिति
readyहोते ही फ़ाइल डाउनलोड करें। जॉब पूरी होने के 2 घंटे बाद हटा दी जाती है। - कोटा प्रबंधन: POST रिस्पॉन्स में
quota_remainingजाँचें।0पर अगली जॉब429से अस्वीकार होगी। - नेटवर्क त्रुटियाँ: पोलिंग के दौरान नेटवर्क त्रुटि पर प्रतीक्षा करें और पुनः प्रयास करें — जॉब सर्वर पर स्वतंत्र रूप से चलती रहती है।
ready होते ही वीडियो डाउनलोड करें।