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 → آڈیو ترمیم۔ متعدد MP4 → ضم کرنا۔ سرور ایک منفرد job_id واپس کرتا ہے۔GET /api/v1/jobs.php?job_id=…queued → processing → ready (یا error) سے گزرتی ہے۔ready ہو، تو رسپانس میں استعمال کے لیے تیار download_url فیلڈ ہوتی ہے۔GET /api/download.php?job_id=…تصدیق
ہر درخواست میں آپ کا API ٹوکن ہونا ضروری ہے۔ دو فارمیٹ قابل قبول ہیں:
آپ کا ٹوکن آپ کے ممبر ایریا میں دستیاب ہے — فی اکاؤنٹ ایک ٹوکن، رجسٹریشن پر خود بخود بنایا جاتا ہے۔
کوٹہ
ہر ممبر اکاؤنٹ میں روزانہ 20 درخواستیں ہوتی ہیں، ویب انٹرفیس اور API کے درمیان مشترک۔
POST رسپانس میں quota_used اور quota_remaining شامل ہیں۔ حد سے زیادہ ہونے پر سرور 429 سے جواب دیتا ہے۔
قطار
ایک وقت میں ایک جاب پروسیس ہوتی ہے۔ بیک وقت متعدد جابز جمع کرنے پر وہ قطار میں جاتی ہیں۔ انتظار کے دوران اسٹیٹس رسپانس میں شامل ہیں:
queue_position— قطار میں جاب کی پوزیشن (1 = اگلی پروسیس کے لیے)queue_total— انتظار کرنے والی جابز کی کل تعدادeta_minutes— پروسیسنگ شروع ہونے سے پہلے متوقع وقت
/api/v1/jobs.php اینڈ پوائنٹ فی ٹوکن 12 کالز فی منٹ قبول کرتا ہے۔ اس سے زیادہ پر سرور 429 کے ساتھ جواب دیتا ہے۔ دستیاب ٹرانزیشن
براہ راست مرج کے لیے 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). |
| ویڈیو بنائیں | 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 فارم فیلڈز کے طور پر بھیجیں۔ |
عام پیرامیٹرز (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۔ ان تین موڈز کے لیے ضروری ہے۔ |
| order | JSON | صرف fusion موڈ — کلپ ترتیب کی وضاحت کرنے والی JSON انڈیکس ارے۔ | |
| transition_type | string | صرف fusion موڈ۔ ڈیفالٹ: none۔ | |
| transition_duration | float | صرف fusion موڈ۔ مدت 0.2–2.0 سیکنڈ۔ ڈیفالٹ: 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۔ |
| 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۔ |
| fade_duration | float | 0.5 | سیکنڈ میں فیڈ ان/آؤٹ مدت (0–2)۔ 0 = کوئی فیڈ نہیں۔ |
| width | int | 1080 | پکسل میں ویڈیو چوڑائی (64–3840، جفت عدد)۔ |
| height | int | 1920 | پکسل میں ویڈیو اونچائی (64–3840، جفت عدد)۔ |
| fps | int | 24 | فریم ریٹ (1–60)۔ |
| image_fit | string | "contain" | فریمنگ موڈ: contain = مکمل تصویر نظر آتی ہے؛ 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 کے ساتھ دستیاب۔
| کلید | قسم | ڈیفالٹ | تفصیل |
|---|---|---|---|
| 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 jobs شائع نہیں کیے جا سکتے |
account_not_found | اکاؤنٹ نہیں ملا یا منقطع ہے |
tiktok_privacy_required | direct موڈ میں رازداری کی سطح ضروری ہے |
publication_failed | اپلوڈ کے دوران فراہم کنندہ نے خطا واپس کی |
cURL مثال
آخری MP4 فائل بطور سٹریم واپس کرتا ہے (Content-Type: video/mp4)۔ ٹوکن کی ضرورت نہیں۔ صرف اس وقت دستیاب جب اسٹیٹس ready ہو۔
فائل جاب مکمل ہونے کے 2 گھنٹے بعد حذف ہو جاتی ہے۔
اختیاری پیرامیٹر
| پیرامیٹر | تفصیل |
|---|---|
| filename | ڈاؤن لوڈ کی گئی فائل کا تجویز کردہ نام (جیسے meri-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 تصاویر قبول ہیں |
| 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 حرفی hex ہونا چاہیے) |
| 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)۔
نوڈ 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 ہوتا ہے۔
webhook_secret سے raw body کے HMAC-SHA256 کے ساتھ {{ $headers['x-rvm-signature'] }} کا موازنہ کریں۔طریقہ B — پولنگ (ویب ہک کے بغیر)
5 نوڈز، ہر 10 سیکنڈ میں اسٹیٹس لوپ۔
نوڈ 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 کالز/منٹ تک محدود ہے۔ - ٹائم آؤٹ: کلائنٹ سائڈ ٹائم آؤٹ لاگو کریں (جیسے 10 منٹ)۔
- جلدی ڈاؤن لوڈ کریں: اسٹیٹس
readyہوتے ہی فائل ڈاؤن لوڈ کریں۔ جاب مکمل ہونے کے 2 گھنٹے بعد حذف ہو جاتی ہے۔ - کوٹہ انتظام: POST رسپانس میں
quota_remainingچیک کریں۔ - نیٹ ورک غلطیاں: پولنگ کے دوران نیٹ ورک غلطی پر انتظار کریں اور دوبارہ کوشش کریں۔