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.
Alur kerja lengkap
Setiap integrasi mengikuti urutan 4 langkah yang sama:
POST /api/v1/render.phpmultipart/form-data dengan token Bearer. 1 gambar JPG/PNG + 1 MP3 + mode=image_to_video → pembuatan video. 1 MP4/MOV + 1 MP3 → edit audio. Beberapa MP4/MOV → gabungan. Server mengembalikan job_id yang unik. Atau 1 gambar + options.text + options.voice: suara dihasilkan dari teks, tanpa MP3.GET /api/v1/jobs.php?job_id=…queued → processing → ready (atau error).ready, respons berisi field download_url yang siap digunakan.GET /api/download.php?job_id=…Autentikasi
Setiap permintaan harus menyertakan token API Anda. Dua format diterima:
Token Anda tersedia di area anggota — satu token per akun, dibuat otomatis saat registrasi.
Kuota
Setiap akun anggota memiliki 20 permintaan per hari, dibagi antara antarmuka web dan API. Pekerjaan yang gagal tidak menggunakan kuota. Penghitung direset tengah malam UTC.
Respons POST menyertakan quota_used dan quota_remaining. Saat batas terlampaui, server merespons 429.
Antrian
Satu pekerjaan diproses dalam satu waktu. Jika beberapa pekerjaan dikirim secara bersamaan, mereka diantrekan dan diproses secara berurutan. Saat menunggu, respons status menyertakan:
queue_position— posisi pekerjaan dalam antrian (1 = berikutnya)queue_total— total pekerjaan yang menunggueta_minutes— perkiraan waktu sebelum pemrosesan dimulai
/api/v1/jobs.php menerima maksimal 12 panggilan per menit per token. Rekomendasi: 10 detik antar panggilan. Transisi yang tersedia
Sertakan transition_type=none (default) untuk penggabungan langsung, atau salah satu jenis di bawah ini untuk fade antar klip:
Durasi (transition_duration) antara 0.2 dan 2.0 detik.
Endpoint
Five modes, accessible via the mode field (omit mode with multiple MP4s to auto-detect fusion):
| Penggunaan | Mode API | File yang diperlukan | Deskripsi |
|---|---|---|---|
| Gabungkan video | fusion |
2–20 file MP4/MOV | Klip dirakit secara berurutan sesuai urutan yang diberikan. Transisi opsional antar klip. |
| Edit audio | add_audio atau mix_audio |
1 MP4/MOV + 1 MP3 | Mengganti atau memperkaya trek audio video. Trek video tidak pernah di-re-encode.add_audio — audio asli dihapus dan diganti sepenuhnya oleh MP3.mix_audio — audio asli dipertahankan dan MP3 ditumpangkan. |
| Buat video | image_to_video |
1 JPG/PNG + 1 MP3 — atau 1 JPG/PNG + teks (options.text + options.voice): suara dihasilkan |
Membuat video dari gambar diam dan MP3 Anda — atau hanya dari teks (options.text) yang suaranya dihasilkan (options.voice). Overlay teks (statis, kata demi kata, atau karaoke), fade, resolusi, dan fps dapat diatur melalui field options. |
| Overlay video | overlay_video |
2 MP4/MOV | Menempatkan video kedua di atas video utama. Posisi, ukuran, opasitas, dan audio dapat dikonfigurasi melalui kolom options. |
| Tambah teks | add_text |
1 MP4/MOV | Menempelkan teks pada video yang sudah ada (resolusi, frame rate, dan audio tetap terjaga). Pengaturan teks sama dengan image_to_video, ditambah waktu munculnya teks. options.text wajib diisi. |
| Teks ke MP3 | text_to_mp3 |
(hanya teks) | Mengonversi teks menjadi suara dan mengembalikan file MP3. Tidak perlu unggah file — kirim mode=text_to_mp3, text dan lang sebagai field formulir. Mendukung semua 20 bahasa situs. |
add_audio dan mix_audio hanya menerima 1 MP4/MOV + 1 MP3. image_to_video hanya menerima 1 JPG/PNG + 1 MP3. Pengecualian: dengan options.text + options.voice, image_to_video menerima 1 gambar saja — suara dihasilkan dari teks (tanpa MP3).options.voice, durasi image_to_video sama dengan suara yang dihasilkan dari teks (+0,6 dtk).Parameter umum (multipart/form-data)
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| videos[] | File[] | YA | File yang akan diproses. Tergantung mode: 2–20 MP4/MOV, atau 1 MP4/MOV + 1 MP3, atau 1 gambar (JPG/PNG) + 1 MP3. Maks 500 MB per file. |
| mode | string | * | image_to_video | add_audio | mix_audio | overlay_video | text_to_mp3. Wajib untuk mode non-fusion ini. Menghilangkan mode dengan hanya file MP4/MOV selalu memicu fusion (penggabungan stream-copy) — tidak pernah overlay_video, bahkan jika tepat 2 MP4/MOV diunggah. Untuk pengeditan audio: add_audio menghapus yang asli, mix_audio mempertahankannya dan menumpangkan. Jika bidang mode disediakan, file yang diunggah harus cocok persis — jika tidak permintaan ditolak. add_text juga diterima: ini satu-satunya mode yang menerima satu file MP4/MOV dan mewajibkan options.text. |
| order | JSON | Hanya mode fusion — array JSON indeks yang mendefinisikan urutan klip. | |
| transition_type | string | Hanya mode fusion. Default: none. | |
| transition_duration | float | Hanya mode fusion. Durasi 0.2–2.0 detik. Default: 0.5. | |
| options | JSON | Objek JSON parameter render untuk image_to_video, add_text, mix_audio dan overlay_video (lihat tabel di bawah). | |
| timings | File / string | image_to_video / add_text: file timing karaoke (SRT atau LRC, maks. 200 KB) — kolom file atau teks biasa. Teks yang ditampilkan berasal dari file; memaksa text_mode=karaoke; tidak dapat digabung dengan voice. | |
| callback_url | string | URL publik (http/https) yang dipanggil saat pekerjaan selesai. Respons menyertakan webhook_secret. |
Parameter options — mode image_to_video
Semua opsional. Nilai yang tidak disediakan → default yang diterapkan oleh worker.
| Kunci | Tipe | Default | Deskripsi |
|---|---|---|---|
| text | string | "" | Teks yang ditampilkan sebagai overlay. Kosong = tanpa teks. Maks 500 karakter. |
| font | string | "default" | Font teks, berdasarkan id. Nilai yang diterima: 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 = font standar (emoji didukung); amiri = font Naskh, ideal untuk teks Arab. Nilai lain akan mengembalikan error invalid_option. Emoji hanya dirender dengan default. |
| font_size | int | 60 | Ukuran font dalam piksel. Rentang: 10–300. |
| text_color | string | "white" | Warna teks (mis. white, yellow, #ffffff). |
| text_position | string | "center" | Posisi teks: center, top, bottom. |
| box | bool | true | Latar belakang semi-transparan di belakang teks. |
| box_color | string | "black@0.4" | Warna + opasitas dalam format FFmpeg: color@opacity. |
| fade_duration | float | 0.5 | Durasi fade in/out dalam detik (0–2). 0 = tanpa efek. |
| width | int | 1080 | Lebar video dalam piksel (64–3840, dipaksa genap). |
| height | int | 1920 | Tinggi video dalam piksel (64–3840, dipaksa genap). |
| fps | int | 24 | Frame rate (1–60). |
| image_fit | string | "contain" | contain: Tampilkan seluruh gambar atau video dan isi ruang kosong dengan latar yang dipilih. solid (bawaan) atau blur. Efek buram memerlukan image_fit=contain. Teks tetap tajam. cover: Gambar diperbesar untuk mengisi frame, dipusatkan — tepi dipotong. |
| bg_color | string | "black" | background_mode=solid: Warna latar belakang jika gambar tidak mengisi resolusi target. |
| background_mode | string | "solid" | solid (bawaan) atau blur. Efek buram memerlukan image_fit=contain. Teks tetap tajam. |
| blur_strength | number | 20 | Angka 1 hingga 50; bawaan 20. Buram Gaussian hanya pada latar. |
| enable_image_motion | bool | false | Mengaktifkan animasi foto. Jika false, gambar tetap statis. |
| image_motion_effect | string | "ken_burns" | Efek animasi. Nilai yang diterima: zoom_in, zoom_out, pan_left_to_right, pan_right_to_left, ken_burns, dll. |
| motion_intensity | float | 1.0 | Intensitas animasi foto (0.25–2.0). Mengalikan amplitudo zoom dan kecepatan pan. |
| text_effect | string | "none" | Animasi overlay teks. Nilai yang diterima: none, fade_in, slide_up, slide_down, slide_left, bounce. |
| text_effect_intensity | float | 1.0 | Intensitas animasi teks (0.25–2.0). Diabaikan jika text_effect adalah none. |
| text_border_width | int | 0 | Ketebalan garis hitam di sekitar karakter dalam piksel (0 = dinonaktifkan). |
| text_border_color | string | "black" | Warna garis tepi karakter (format sama dengan text_color, bawaan "black"). Digunakan jika text_border_width > 0. |
| text_mode | string | "static" | Mode tampilan teks. static (default): teks penuh terlihat dari frame pertama. word_by_word: kata-kata muncul satu per satu dengan kecepatan word_reveal_speed. Tidak bisa digunakan dengan text_effect: jika text_mode=word_by_word, text_effect diabaikan. "karaoke": teks berubah warna mengikuti irama audio, halaman demi halaman (hingga 1.000 karakter). Disinkronkan kata demi kata dengan voice, jika tidak dibagi sepanjang audio menurut panjang kata. |
| word_reveal_speed | float | 1.5 | Kecepatan pengungkapan kata per detik (0.3–5.0, default 1.5). Hanya dengan text_mode=word_by_word. Nilai yang direkomendasikan untuk sinkronisasi OpenAI TTS: 2.0. |
| word_anim | string | "none" | Animasi kemunculan setiap kata. none (default): tampil langsung. fade: setiap kata baru muncul dengan fade 0.2s dan crossfade ke blok sebelumnya. Hanya dengan text_mode=word_by_word. |
| karaoke_style | string | "fill" | Gaya karaoke: fill (kata yang diucapkan mendapat warna sorotan), sweep (setiap kata terisi bertahap; kata utuh untuk tulisan kanan-ke-kiri) atau highlight (hanya kata saat ini yang berwarna). |
| highlight_color | string | "#FFD200" | Warna kata yang diucapkan / kata saat ini dalam mode karaoke (format sama dengan text_color). |
| karaoke_lines | int | 2 | Jumlah baris per halaman dalam mode karaoke (1–4). |
| voice | string | "" | ID suara (daftar yang sama dengan text_to_mp3, mis. id-ID-GadisNeural): suara dibuat dari text dalam job yang sama. image_to_video lalu hanya membutuhkan gambar (MP3 yang ikut dikirim ditolak). Dalam mode karaoke, setiap kata tersinkron dengan suara. |
| voice_rate | int | 0 | Kecepatan suara buatan, dalam % (−50 hingga +50). |
Karaoke dengan timing Anda sendiri (SRT / LRC)
Kirim file SRT atau LRC di kolom timings: setiap baris muncul pada waktunya dan menjadi satu halaman karaoke (hingga 500 baris, 5.000 karakter). SRT: baris hilang pada waktu akhirnya. LRC: baris tetap hingga baris berikutnya (baris kosong menghentikannya); [offset:] dan timing per kata LRC enhanced <mm:ss.xx> didukung — jika tidak, setiap baris dibagi sepanjang durasinya. Pada add_text, waktu dihitung dari awal video, digeser sebesar text_start.
Parameter options — mode overlay_video
Semua opsional. Urutan unggahan penting: file pertama adalah video utama (latar belakang), file kedua adalah overlay (latar depan). Gunakan chroma_key untuk menghapus latar hijau dari overlay.
| Kunci | Tipe | Default | Deskripsi |
|---|---|---|---|
| position | string | "bottom-right" | Sudut penempatan overlay: top-left, top-right, bottom-left, bottom-right, atau center. |
| scale | float | 0.30 | Ukuran overlay sebagai pecahan dari lebar video utama. 0.25 = 25% dari lebar. Rentang: 0.05–1.0. |
| opacity | float | 1.0 | Transparansi overlay. 1.0 = sepenuhnya terlihat, 0.0 = tak terlihat. |
| margin | int | 10 | Jarak dalam piksel antara overlay dan tepi bingkai. Diabaikan jika position=center. Rentang: 0–200. |
| audio | string | "main" | Audio yang dipertahankan. main: hanya audio video utama. overlay: hanya audio overlay. mix: kedua trek dicampur. |
| chroma_key | bool | false | Atur ke true untuk menghapus latar hijau murni (#00FF00) dari overlay — berguna untuk webcam atau animasi yang difilmkan di latar hijau. |
| chroma_similarity | float | 0.20 | Toleransi chroma key. Rendah = kecocokan ketat. Tinggi = penghapusan lebih luas. Disarankan: 0.10–0.20 untuk hijau digital, 0.25–0.45 untuk layar fisik. Rentang: 0.01–0.60. |
Parameter options — mode add_text
Teks wajib diisi. Secara bawaan format, laju bingkai, dan audio dipertahankan. output_format mengaktifkan perubahan bingkai dengan image_fit, bg_color, dan background_mode. width, height, fps, dan gerakan foto tetap diabaikan. Durasi maksimum: 15 menit.
{"text":"Hello","output_format":"portrait","image_fit":"contain","background_mode":"blur","blur_strength":20}
| Kunci | Tipe | Default | Deskripsi |
|---|---|---|---|
| text | string | YA | Teks yang akan ditempelkan. Wajib, 1–200 karakter. |
| text_start | float | 0 | Detik saat teks muncul (≥ 0). Harus sebelum akhir video. |
| text_duration | float | 0 | Berapa lama teks tetap terlihat, dalam detik (0,1–3600). 0 = sampai akhir video. |
| font | string | "default" | Font teks, berdasarkan id. Nilai yang diterima: 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 = font standar (emoji didukung); amiri = font Naskh, ideal untuk teks Arab. Nilai lain akan mengembalikan error invalid_option. Emoji hanya dirender dengan default. |
| font_size | int | 60 | Ukuran font, dinyatakan untuk video dengan sisi terpendek 1080 px dan otomatis diskalakan ke resolusi sebenarnya — nilai yang sama terlihat identik di 720p dan 4K. Rentang: 10–300. |
| fade_duration | float | 0.5 | Durasi fade masuk/keluar teks (bukan video), dalam detik. Rentang: 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 | — | — | Identik dengan image_to_video (lihat tabel di atas). |
| original_volume | float | 0.3 | Dengan voice: volume suara asli video di bawah suara buatan (0–2, bawaan 0.3; 0 = diganti). Suara mulai pada text_start; teks tetap tampil hingga suara selesai dan, jika melewati akhir video, bingkai terakhir ditahan. |
| background_mode | string | "solid" | solid (bawaan) atau blur. Efek buram memerlukan image_fit=contain. Teks tetap tajam. |
| blur_strength | number | 20 | Angka 1 hingga 50; bawaan 20. Buram Gaussian hanya pada latar. |
| output_format | string | "original" | Hanya add_text: original (bawaan), portrait (1080×1920), square (1080×1080), landscape (1920×1080). Efek buram memerlukan format selain original. |
| image_fit | string | "contain" | contain: Tampilkan seluruh gambar atau video dan isi ruang kosong dengan latar yang dipilih. solid (bawaan) atau blur. Efek buram memerlukan image_fit=contain. Teks tetap tajam. cover: Gambar diperbesar untuk mengisi frame, dipusatkan — tepi dipotong. |
| bg_color | string | "black" | background_mode=solid: Warna latar belakang jika gambar tidak mengisi resolusi target. |
Parameter options — Edit audio (mix_audio)
Hanya tersedia dengan mode=mix_audio. Diabaikan untuk add_audio.
| Kunci | Tipe | Default | Deskripsi |
|---|---|---|---|
| mp3_volume | float | 1.0 | Volume MP3 yang ditumpangkan (0.0 = bisu, 1.0 = volume asli, 2.0 = ganda). |
Mode text_to_mp3 — parameter langsung (tanpa JSON options)
Berbeda dari mode lain, field ini dikirim langsung sebagai field formulir, bukan di dalam objek JSON options. Hanya text yang wajib.
| Kunci | Tipe | Default | Deskripsi |
|---|---|---|---|
| text | string | — | Teks yang akan diubah menjadi suara. Wajib. Maksimal 5.000 karakter. |
| lang | string | "en" | Kode bahasa yang digunakan untuk memilih suara default saat voice tidak diisi atau tidak valid. Salah satu dari 20 bahasa situs (lihat tabel di bawah). Kembali ke en jika tidak dikenali. |
| voice | string | otomatis | ID suara edge-tts (lihat tabel di bawah). Jika tidak diisi atau tidak valid, suara pertama dari lang digunakan secara otomatis. |
| slow | bool | false | Setel ke true (atau 1) untuk memperlambat kecepatan bicara sebesar 25%. Nilai lain dianggap sebagai false. |
text_to_mp3 tidak memerlukan videos[]. Kirim mode=text_to_mp3 beserta text / lang / voice / slow sebagai field formulir biasa.Suara yang tersedia (edge-tts, Microsoft Neural), dikelompokkan berdasarkan kode bahasa:
| Bahasa | Suara tersedia |
|---|---|
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 |
Respons sukses (HTTP 200)
text_to_mp3, respons tidak memiliki field file_count atau transition (tidak ada file yang diunggah) — sisanya identik: job_id, quota_used, quota_remaining, status_url, webhook_secret.Contoh curl — mode image_to_video
Teks karaoke dengan suara buatan (image_to_video, tanpa MP3)
Karaoke dengan file SRT (image_to_video + MP3 Anda)
Contoh curl — Edit audio
Contoh curl — mode overlay_video
Contoh curl — mode add_text
Contoh curl — Gabungkan video
Contoh curl — mode text_to_mp3
Status memuat tahap nyata dan waktu berlalu. Perkiraan bersifat indikatif; batas waktu klien bukan berarti tugas gagal. Lanjutkan pemeriksaan ID tugas yang sama. Berkas kedaluwarsa dua jam setelah selesai.
Status yang mungkin
| Status | Makna | Field tambahan |
|---|---|---|
| queued | Dalam antrian, belum diproses | queue_position, queue_total, eta_minutes |
| processing | Pemrosesan FFmpeg sedang berlangsung | processing_stage, processing_elapsed_seconds, stage_elapsed_seconds, last_activity_at, processed_media_seconds, eta_overrun |
| ready | Selesai — file tersedia | download_url, media_available, created_at, expires_at |
| error | Pemrosesan gagal | error (message), quota_refund_status: pending | confirmed | not_required |
| cancelled | Dibatalkan | quota_refund_status: pending | confirmed | not_required |
Respons berdasarkan status
Contoh curl
Parameter umum (multipart/form-data)
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
page | integer | 1 | Nomor halaman (dimulai dari 1) |
limit | integer | 20 | Hasil per halaman (maks. 50, bawaan 20) |
Respons berdasarkan status
Melakukan streaming file akhir. Content-Type adalah video/mp4 untuk mode video, atau audio/mpeg untuk text_to_mp3. Tidak memerlukan token. Hanya tersedia saat status ready.
File disimpan selama 2 jam setelah pekerjaan selesai, kemudian dihapus. Unduh segera saat status menjadi ready.
Parameter opsional
| Parameter | Deskripsi |
|---|---|
| filename | Nama yang disarankan untuk file yang diunduh (mis. video-saya.mp4) |
| preview | Setel ke 1 untuk pemutaran inline (menghilangkan Content-Disposition: attachment) alih-alih memicu unduhan — digunakan untuk pratinjau di browser. |
Contoh curl
Webhook
Webhook adalah alternatif dari polling: daripada memeriksa status setiap X detik, Anda menyediakan URL dan server memanggil Anda secara otomatis saat pekerjaan selesai.
Cara kerjanya
- Sertakan
callback_urldalam POST ke/api/v1/render.php - Respons berisi
webhook_secret— simpan untuk memverifikasi tanda tangan - Saat pekerjaan mencapai
readyatauerror, server mengirim JSONPOSTyang ditandatangani ke URL Anda - Verifikasi tanda tangan dengan
HMAC-SHA256(webhook_secret, raw_body)
callback_url harus URL yang dapat diakses publik (http atau https). Alamat IP pribadi, loopback, dan cadangan diblokir di sisi server. Batas waktu: 10 detik. Payload yang diterima
Header yang dikirim server
| Header | Nilai |
|---|---|
| Content-Type | application/json |
| X-RVM-Signature | sha256=<hmac_hex> — tanda tangan HMAC-SHA256 dari body mentah |
| X-RVM-Job-Id | job_id yang relevan |
Verifikasi tanda tangan
Kode kesalahan
| HTTP | Kode JSON | Penyebab |
|---|---|---|
| 401 | unauthorized | Token hilang, tidak valid, atau dicabut |
| 400 | missing_files | Tidak ada file yang diterima |
| 400 | too_few_files | Kurang dari 2 file dikirim |
| 400 | too_many_files | Lebih dari 20 file dikirim |
| 400 | invalid_mime | File tidak didukung — hanya MP4, MP3, dan JPG/PNG yang diterima |
| 400 | wrong_file_count | Jumlah file tidak cocok dengan mode yang dipilih |
| 400 | wrong_file_types | Jenis file tidak cocok dengan mode yang dipilih |
| 400 | invalid_file_combination | Kombinasi file tanpa mode yang ditentukan tidak cocok dengan mode yang didukung |
| 400 | invalid_options | Field options bukan JSON yang valid |
| 400 | invalid_option | Nilai dalam options tidak valid |
| 400 | file_too_large | Sebuah file melebihi 500 MB |
| 400 | text_required | Kolom options.text tidak ada atau kosong (mode add_text) |
| 400 | video_too_long | Video lebih panjang dari 15 menit (mode add_text) |
| 400 | text_start_out_of_range | text_start melewati akhir video |
| 400 | invalid_voice | ID voice tidak dikenal. |
| 400 | invalid_timings | File timing tidak terbaca (format tidak dikenali, tidak ada baris berwaktu, akhir sebelum awal, terlalu panjang…). |
| 400 | invalid_order | Array order bukan permutasi yang valid |
| 400 | invalid_job_id | Format job_id salah (harus 32 karakter hex) |
| 404 | job_not_found | Pekerjaan tidak ditemukan — job_id tidak dikenal atau tidak pernah ada |
| 410 | job_expired | Pekerjaan kedaluwarsa — ada tetapi jendela pemulihan 2 jam telah berlalu |
| 429 | quota_exceeded | 20 pekerjaan berhasil/hari tercapai |
| 429 | rate_limited | Lebih dari 12 panggilan/menit di /api/v1/jobs.php |
| 500 | server_error | Kesalahan server internal |
Contoh integrasi
Contoh untuk setiap mode — instal requests dengan pip install requests.
Konfigurasi umum
Mode image_to_video — gambar + audio → video
Edit audio
Mode overlay_video — gambar dalam gambar
Mode add_text — teks pada video
Gabungkan video
Mode text_to_mp3 — teks ke suara
Polling + unduhan (umum untuk semua mode)
Dua pendekatan di n8n: polling (loop status) atau webhook (server memanggil n8n). Webhook direkomendasikan.
Pendekatan A — Webhook (direkomendasikan)
Hanya 3 node, tanpa loop.
Node 1 — Pemicu Webhook
Tambahkan node Webhook sebagai input alur kerja (metode POST).
Node 2 — Buat pekerjaan (HTTP Request)
| Metode | POST |
| URL | https://rapidvideomaker.com/api/v1/render.php |
| Autentikasi | Header Auth — Authorization: Bearer rvm_… |
| Tipe Konten Body | Form-Data Multipart |
| Body params | Field biner videos[] untuk setiap klip + Field teks callback_url |
Simpan webhook_secret dari respons dalam variabel alur kerja untuk memverifikasi tanda tangan.
Node 3 — Proses hasil (dalam alur kerja yang dipicu webhook)
Saat n8n menerima POST server, $json.status adalah ready atau error.
{{ $headers['x-rvm-signature'] }} dengan HMAC-SHA256 dari webhook_secret Anda.Pendekatan B — Polling (tanpa webhook)
5 node, loop status setiap 10 detik.
Node 1 — Buat pekerjaan — konfigurasi yang sama tanpa callback_url.
Node 2 — Tunggu — 10 detik.
Node 3 — Poll status (HTTP Request GET)
| URL | https://rapidvideomaker.com/api/v1/jobs.php |
| Query params | job_id = {{ $('Node 1').item.json.job_id }} |
| Autentikasi | Header Auth — token yang sama |
Node 4 — If: {{ $json.status }} === 'ready' → true: Node 5 / false: kembali ke Node 2.
Node 5 — Unduh: HTTP Request GET pada {{ $json.download_url }}.
Langkah 1 — Buat pekerjaan (pilih mode)
Langkah 2 — Polling
Langkah 3 — Unduh
Praktik terbaik
- Periksa tugas yang sama setiap 5–10 detik. Durasi bergantung pada mode dan ukuran masukan.
- Status memuat tahap nyata dan waktu berlalu. Perkiraan bersifat indikatif; batas waktu klien bukan berarti tugas gagal. Lanjutkan pemeriksaan ID tugas yang sama. Berkas kedaluwarsa dua jam setelah selesai.
- Unduh dengan cepat: segera unduh file saat status
ready. Dihapus 2 jam setelah pekerjaan selesai. - Manajemen kuota: periksa
quota_remainingdalam respons POST. - Kesalahan jaringan: saat terjadi kesalahan jaringan selama polling, tunggu dan coba lagi.