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), Edit audio (1 MP4 + 1 MP3), Create a video (1 JPG/PNG + 1 MP3), Overlay video (2 MP4 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 + 1 MP3 → ऑडियो संपादन (mode=mix_audio जोड़ें ट्रैक ओवरले के लिए)। कई MP4 → मर्ज। सर्वर एक अनूठा job_id लौटाता है।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 फ़ाइलें | क्लिप दिए गए क्रम में एंड-टू-एंड जोड़ी जाती हैं। क्लिप के बीच वैकल्पिक ट्रांज़िशन। |
| ऑडियो संपादित करें | add_audio या mix_audio |
1 MP4 + 1 MP3 | वीडियो की ऑडियो ट्रैक को बदलता या समृद्ध करता है। वीडियो ट्रैक कभी री-एन्कोड नहीं होती (-c:v copy).add_audio — मूल ऑडियो हटा दिया जाता है और MP3 से पूरी तरह बदल दिया जाता है।mix_audio — मूल ऑडियो रखा जाता है और MP3 ओवरले होती है। |
| वीडियो बनाएं | image_to_video |
1 JPG/PNG + 1 MP3 | एक स्थिर छवि और ऑडियो फ़ाइल से वीडियो जनरेट करता है। टेक्स्ट ओवरले, फ़ेड, रिज़ॉल्यूशन और FPS options फ़ील्ड के माध्यम से कॉन्फ़िगर करने योग्य। |
| Overlay video | overlay_video |
2 MP4 | Overlays a second video on top of the main one. Position, size, opacity and audio configurable via the options field. |
| टेक्स्ट से MP3 | text_to_mp3 |
(केवल टेक्स्ट) | टेक्स्ट को वाणी में बदलता है और एक MP3 फ़ाइल देता है। कोई फ़ाइल अपलोड आवश्यक नहीं — mode=text_to_mp3, text और lang फ़ॉर्म फ़ील्ड के रूप में भेजें। साइट की सभी 20 भाषाओं को सपोर्ट करता है। |
सामान्य पैरामीटर (multipart/form-data)
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| videos[] | File[] | हाँ | प्रोसेस करने की फ़ाइलें। मोड के अनुसार: 2–20 MP4, या 1 MP4 + 1 MP3, या 1 इमेज (JPG/PNG) + 1 MP3। प्रति फ़ाइल अधिकतम 500 MB। |
| mode | string | * | image_to_video | add_audio | mix_audio। इन तीन मोड के लिए आवश्यक। केवल तब अनदेखा होता है जब सभी फ़ाइलें MP4 हों (fusion)। |
| 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 मोड — रेंडर पैरामीटर का JSON ऑब्जेक्ट (नीचे देखें)। | |
| callback_url | string | पब्लिक URL (http/https) जो जॉब पूरी होने पर कॉल होती है। रिस्पॉन्स में webhook_secret शामिल है। |
options पैरामीटर — image_to_video मोड
सभी वैकल्पिक। न दिए गए मान → वर्कर द्वारा डिफ़ॉल्ट लागू होते हैं।
| की | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| text | string | "" | ओवरले के रूप में दिखाया जाने वाला टेक्स्ट। खाली = कोई टेक्स्ट नहीं। अधिकतम 500 वर्ण। |
| 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 = पूरी इमेज दिखती है, खाली क्षेत्र bg_color से भरे जाते हैं; cover = इमेज पूरे फ्रेम को भरने के लिए ज़ूम होती है। |
| bg_color | string | "black" | पृष्ठभूमि रंग यदि इमेज लक्ष्य रिज़ॉल्यूशन नहीं भरती — केवल image_fit=contain के साथ प्रासंगिक। |
| 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_mode | string | "static" | टेक्स्ट प्रकट करने का मोड। static (डिफ़ॉल्ट): पहले फ्रेम से पूरा टेक्स्ट दिखता है। word_by_word: word_reveal_speed की दर से शब्द एक-एक करके दिखाई देते हैं। text_effect के साथ अनन्य: text_mode=word_by_word होने पर text_effect अनदेखा किया जाता है। |
| 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 के साथ। |
options parameters — overlay_video mode
All optional. Upload order matters: the first file is the main video (background), the second file is the overlay (foreground). Use chroma_key to remove a green screen from the overlay.
| की | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| position | string | "bottom-right" | Corner where the overlay is placed: top-left, top-right, bottom-left, bottom-right, or center. |
| scale | float | 0.30 | Overlay size as a fraction of the main video width. 0.25 = 25% of the width. Range: 0.05–1.0. |
| opacity | float | 1.0 | Overlay transparency. 1.0 = fully opaque, 0.0 = invisible. |
| margin | int | 10 | Gap in pixels between the overlay and the frame edge. Ignored when position=center. Range: 0–200. |
| audio | string | "main" | Which audio to keep. main: main video audio only. overlay: overlay audio only. mix: both tracks blended at equal volume. |
| chroma_key | bool | false | Set to true to remove the pure green (#00FF00) background of the overlay — useful for webcam or animations filmed on a green screen. |
| chroma_similarity | float | 0.20 | Green screen tolerance. Low = strict match (preserves subject edges). High = broader removal (handles uneven lighting). Recommended: 0.10–0.20 for a digital green, 0.25–0.45 for a physical screen. Range: 0.01–0.60. |
options पैरामीटर — ऑडियो संपादन (mix_audio)
केवल mode=mix_audio के साथ उपलब्ध। add_audio के लिए अनदेखा।
| की | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| mp3_volume | float | 1.0 | ओवरलेड MP3 की वॉल्यूम (0.0 = म्यूट, 1.0 = मूल वॉल्यूम, 2.0 = डबल)। |
सफलता रिस्पॉन्स (HTTP 200)
curl उदाहरण — image_to_video मोड
curl उदाहरण — ऑडियो संपादन
curl example — overlay_video mode
curl उदाहरण — वीडियो मर्ज
संभावित स्थितियाँ
| स्थिति | अर्थ | अतिरिक्त फ़ील्ड |
|---|---|---|
| queued | कतार में, अभी प्रोसेस नहीं हुई | queue_position, queue_total, eta_minutes |
| processing | FFmpeg प्रोसेसिंग जारी है | — |
| ready | पूर्ण — फ़ाइल उपलब्ध | download_url, created_at, expires_at |
| error | प्रोसेसिंग विफल | error (message) |
स्थिति के अनुसार रिस्पॉन्स
curl उदाहरण
सामान्य पैरामीटर (multipart/form-data)
| apidocs_th_param | प्रकार | डिफ़ॉल्ट | apidocs_th_desc |
|---|---|---|---|
page | integer | 1 | Page number (starts at 1) |
limit | integer | 20 | Results per page (max 50, default 20) |
स्थिति के अनुसार रिस्पॉन्स
एक या अधिक सामाजिक खातों पर एक पूर्ण job (status=ready) प्रकाशित करता है। टोकन एक सदस्य खाते का होना चाहिए (एडमिन टोकन नहीं)।
account_id वहीं दिखाई देता है।सामान्य पैरामीटर (multipart/form-data)
| apidocs_th_param | प्रकार | apidocs_th_required | apidocs_th_desc |
|---|---|---|---|
job_id | string | apidocs_required | पूर्ण वीडियो का job ID (hex 32 अक्षर) |
publications | array | apidocs_required | प्रकाशन ऑब्जेक्ट की सरणी (अधिकतम 10) |
प्रकाशन ऑब्जेक्ट
| apidocs_th_param | प्रकार | apidocs_th_required | apidocs_th_desc |
|---|---|---|---|
account_id | integer | apidocs_required | जुड़े सोशल अकाउंट की ID — सदस्य क्षेत्र की प्रकाशन पृष्ठ पर मिलती है |
title | string | — | वीडियो शीर्षक (अधिकतम 512 अक्षर) |
description | string | — | वीडियो विवरण (अधिकतम 5 000 अक्षर) |
tags | string | — | कॉमा से अलग टैग (अधिकतम 1 024 अक्षर) |
visibility | string | — | public | private | unlisted — डिफ़ॉल्ट: public |
tiktok_mode | string | — | draft | direct — केवल TikTok — डिफ़ॉल्ट: direct |
tiktok_privacy | string | direct मोड | केवल TikTok — direct मोड में आवश्यक |
allow_comment | boolean | — | केवल TikTok — टिप्पणियों की अनुमति दें |
allow_duet | boolean | — | केवल TikTok — डुएट की अनुमति दें |
allow_stitch | boolean | — | केवल TikTok — स्टिच की अनुमति दें |
your_brand | boolean | — | केवल TikTok — जैविक प्रचार सामग्री ("आपका ब्रांड"). |
branded_content | boolean | — | केवल TikTok — ब्रांडेड कंटेंट प्रकटीकरण |
tiktok_cover_ms | integer | — | केवल TikTok — कवर फ्रेम टाइमस्टैम्प ms में (0–60 000, डिफ़ॉल्ट 1 000) |
स्थिति के अनुसार रिस्पॉन्स
प्रति प्रकाशन त्रुटि कोड
| apidocs_th_code | अर्थ |
|---|---|
job_not_ready | job अभी पूर्ण नहीं हुआ |
mode_not_supported | text_to_mp3 job प्रकाशित नहीं किए जा सकते |
account_not_found | खाता नहीं मिला या डिस्कनेक्ट हो गया |
tiktok_privacy_required | direct मोड में गोपनीयता स्तर आवश्यक है |
publication_failed | अपलोड के दौरान प्रदाता ने त्रुटि लौटाई |
cURL उदाहरण
अंतिम MP4 फ़ाइल स्ट्रीम के रूप में लौटाता है (Content-Type: video/mp4)। टोकन आवश्यक नहीं। केवल तब उपलब्ध जब स्थिति ready हो।
जॉब पूरी होने के 2 घंटे बाद फ़ाइल रखी जाती है, फिर हटा दी जाती है।
वैकल्पिक पैरामीटर
| पैरामीटर | विवरण |
|---|---|
| filename | डाउनलोड की गई फ़ाइल के लिए सुझाया गया नाम (जैसे mera-video.mp4) |
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 | 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 mode — picture-in-picture
वीडियो मर्ज
पोलिंग + डाउनलोड (सभी मोड के लिए सामान्य)
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 — डाउनलोड
सर्वोत्तम अभ्यास
- पोलिंग आवृत्ति:
/api/v1/jobs.phpएंडपॉइंट 12 कॉल/मिनट प्रति टोकन तक सीमित है।429से बचने के लिए कम से कम 5 सेकंड (10 s अनुशंसित) का अंतर रखें। - टाइमआउट: क्लाइंट-साइड टाइमआउट (जैसे 10 मिनट) लागू करें। इस देरी के बाद जॉब
readyनहीं हुई तो इसे त्रुटि मानें। - जल्दी डाउनलोड करें: स्थिति
readyहोते ही फ़ाइल डाउनलोड करें। जॉब पूरी होने के 2 घंटे बाद हटा दी जाती है। - कोटा प्रबंधन: POST रिस्पॉन्स में
quota_remainingजाँचें।0पर अगली जॉब429से अस्वीकार होगी। - नेटवर्क त्रुटियाँ: पोलिंग के दौरान नेटवर्क त्रुटि पर प्रतीक्षा करें और पुनः प्रयास करें — जॉब सर्वर पर स्वतंत्र रूप से चलती रहती है।
ready होते ही वीडियो डाउनलोड करें।