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.
Tam iş akışı
Her entegrasyon aynı 4 adımlı diziyi izler:
POST /api/v1/render.phpmultipart/form-data olarak gönderin. 1 JPG/PNG resim + 1 MP3 + mode=image_to_video → video oluşturma. 1 MP4/MOV + 1 MP3 → ses düzenleme (mode=mix_audio ekle). Birden fazla MP4/MOV → birleştirme. Sunucu benzersiz bir job_id döndürür. Ya da 1 görsel + options.text + options.voice: ses metinden üretilir, MP3 gerekmez.GET /api/v1/jobs.php?job_id=…queued → processing → ready (veya error) aşamalarından geçer.ready olduğunda yanıt, kullanıma hazır bir download_url alanı içerir.GET /api/download.php?job_id=…Kimlik doğrulama
Her istek API token'ınızı içermelidir. İki format kabul edilir:
Token'ınız üye alanında mevcuttur — hesap başına bir token, kayıtta otomatik oluşturulur. Yalnızca bir kez açık olarak gösterilir — güvende tutun.
Kota
Her üye hesabının, web arayüzü ve API arasında paylaşılan günde 20 isteği vardır. Başarısız işler kota tüketmez. Sayaç gece yarısı UTC'de sıfırlanır.
POST yanıtları quota_used ve quota_remaining içerir. Limit aşıldığında sunucu 429 ile yanıt verir.
Kuyruk
Bir seferde bir iş işlenir. Birden fazla iş aynı anda gönderilirse kuyruğa alınır ve sırayla işlenir. Beklerken durum yanıtı şunları içerir:
queue_position— işin kuyruktaki konumu (1 = sıradaki)queue_total— bekleyen toplam iş sayısıeta_minutes— işlemin başlamasına tahmini süre
/api/v1/jobs.php uç noktası dakikada en fazla 12 çağrı kabul eder. Öneri: çağrılar arası 10 saniye. Kullanılabilir geçişler
Doğrudan birleştirme için transition_type=none (varsayılan) geçirin, veya klipsler arasında solma için aşağıdaki türlerden birini kullanın:
Süre (transition_duration) 0.2 ile 2.0 saniye arasındadır.
Uç noktalar
Five modes, accessible via the mode field (omit mode with multiple MP4s to auto-detect fusion):
| Kullanım | API Modu | Gerekli dosyalar | Açıklama |
|---|---|---|---|
| Videoları birleştir | fusion |
2–20 MP4/MOV dosyası | Klipsler sağlanan sırayla arka arkaya birleştirilir. Klipsler arasında isteğe bağlı geçişler. |
| Sesi düzenle | add_audio veya mix_audio |
1 MP4/MOV + 1 MP3 | Videonun ses parçasını değiştirir veya zenginleştirir. Video parçası asla yeniden kodlanmaz.add_audio — orijinal ses silinir ve tamamen MP3 ile değiştirilir.mix_audio — orijinal ses korunur ve MP3 üzerine eklenir. |
| Video oluştur | image_to_video |
1 JPG/PNG + 1 MP3 — veya 1 JPG/PNG + bir metin (options.text + options.voice): ses üretilir |
Sabit bir görsel ve MP3’ünüzden — ya da sesi üretilen (options.voice) yalnızca bir metinden (options.text) — video üretir. Metin bindirme (sabit, kelime kelime veya karaoke), geçişler, çözünürlük ve fps options alanıyla ayarlanabilir. |
| Overlay video | overlay_video |
2 MP4/MOV | İkinci bir videoyu ana videonun üzerine yerleştirir. Konum, boyut, opaklık ve ses options alanı ile ayarlanabilir. |
| Metin ekle | add_text |
1 MP4/MOV | Mevcut bir videonun üzerine metin ekler (çözünürlük, kare hızı ve ses korunur). image_to_video ile aynı metin ayarları ve ek olarak metnin görünme anı. options.text zorunludur. |
| Metinden MP3 | text_to_mp3 |
(yalnızca metin) | Metni konuşmaya dönüştürür ve bir MP3 dosyası döndürür. Dosya yükleme gerekmez — mode=text_to_mp3, text ve lang alanlarını form olarak gönderin. Sitenin 20 dilini destekler. |
add_audio ve mix_audio yalnızca 1 MP4/MOV + 1 MP3 kabul eder. image_to_video yalnızca 1 JPG/PNG + 1 MP3 kabul eder. İstisna: options.text + options.voice ile image_to_video tek bir görsel kabul eder — ses metinden üretilir (MP3 olmadan).options.voice ile image_to_video, metinden üretilen ses kadar sürer (+0,6 sn).Ortak parametreler (multipart/form-data)
| Alan | Tür | Zor. | Açıklama |
|---|---|---|---|
| videos[] | File[] | EVET | İşlenecek dosyalar. Moda bağlı olarak: 2–20 MP4/MOV, veya 1 MP4/MOV + 1 MP3, veya 1 görüntü (JPG/PNG) + 1 MP3. Dosya başına max 500 MB. |
| mode | string | * | image_to_video | add_audio | mix_audio | overlay_video | text_to_mp3. Bu fusion dışı modlar için zorunludur. Yalnızca MP4/MOV dosyalarıyla mode alanının atlanması her zaman fusion'ı tetikler (stream-copy birleştirme) — tam olarak 2 MP4/MOV yüklense bile asla overlay_video'yu değil. Ses düzenleme için: add_audio orijinali siler, mix_audio onu korur ve üzerine bindirir. mode alanı sağlanırsa, yüklenen dosyalar tam olarak eşleşmelidir — aksi takdirde istek reddedilir. add_text da kabul edilir: tek bir MP4/MOV dosyası alan tek moddur ve options.text gerektirir. |
| order | JSON | Yalnızca fusion modu — klip sırasını tanımlayan indeks JSON dizisi. | |
| transition_type | string | Yalnızca fusion modu. Varsayılan: none. | |
| transition_duration | float | Yalnızca fusion modu. Süre 0.2–2.0 sn. Varsayılan: 0.5. | |
| options | JSON | image_to_video, add_text, mix_audio ve overlay_video için render parametrelerinin JSON nesnesi (aşağıdaki tablolara bakın). | |
| timings | File / string | image_to_video / add_text: karaoke zamanlama dosyası (SRT veya LRC, en fazla 200 KB) — dosya alanı veya düz metin. Gösterilen metin dosyadan alınır; text_mode=karaoke zorunlu olur; voice ile birlikte kullanılamaz. | |
| callback_url | string | İş tamamlandığında çağrılan genel URL (http/https). Yanıt bir webhook_secret içerir. |
options parametreleri — image_to_video modu
Tümü isteğe bağlı. Sağlanmayan değerler → worker tarafından uygulanan varsayılanlar.
| Anahtar | Tür | Varsayılan | Açıklama |
|---|---|---|---|
| text | string | "" | Yerleştirme olarak gösterilen metin. Boş = metin yok. Max 500 karakter. |
| font | string | "default" | Metnin yazı tipi, kimliğiyle belirtilir. Kabul edilen değerler: 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 = standart yazı tipi (emoji desteklenir); amiri = Nesih yazı tipi, Arapça metin için ideal. Diğer tüm değerler invalid_option hatası döndürür. Emojiler yalnızca default ile işlenir. |
| font_size | int | 60 | Piksel cinsinden yazı tipi boyutu. Aralık: 10–300. |
| text_color | string | "white" | Metin rengi (ör. white, yellow, #ffffff). |
| text_position | string | "center" | Metin konumu: center, top, bottom. |
| box | bool | true | Metnin arkasında yarı saydam arka plan. |
| box_color | string | "black@0.4" | FFmpeg formatında renk + opaklık: color@opacity. |
| fade_duration | float | 0.5 | Saniye cinsinden açılış/kapanış süresi (0–2). 0 = efekt yok. |
| width | int | 1080 | Piksel cinsinden video genişliği (64–3840, çift zorlanmış). |
| height | int | 1920 | Piksel cinsinden video yüksekliği (64–3840, çift zorlanmış). |
| fps | int | 24 | Kare hızı (1–60). |
| image_fit | string | "contain" | contain: Görselin veya videonun tamamını gösterir ve boş alanları seçilen arka planla doldurur. solid (varsayılan) veya blur. Bulanıklık için image_fit=contain gerekir. Metin net kalır. cover: Görsel çerçeveyi doldurmak için yakınlaştırılır, ortalanır — kenarlar kırpılır. |
| bg_color | string | "black" | background_mode=solid: Görüntü hedef çözünürlüğü doldurmadığında arka plan rengi. |
| background_mode | string | "solid" | solid (varsayılan) veya blur. Bulanıklık için image_fit=contain gerekir. Metin net kalır. |
| blur_strength | number | 20 | 1 ile 50 arasında sayı; varsayılan 20. Yalnızca arka plana Gauss bulanıklığı uygular. |
| enable_image_motion | bool | false | Fotoğraf animasyonunu etkinleştirir. false ise görüntü sabit kalır. |
| image_motion_effect | string | "ken_burns" | Animasyon efekti. Kabul edilen değerler: zoom_in, zoom_out, pan_left_to_right, pan_right_to_left, ken_burns vb. |
| motion_intensity | float | 1.0 | Fotoğraf animasyon yoğunluğu (0.25–2.0). Yakınlaştırma genliğini ve kaydırma hızını çarpar. |
| text_effect | string | "none" | Metin katmanı animasyonu. Kabul edilen değerler: none, fade_in, slide_up, slide_down, slide_left, bounce. |
| text_effect_intensity | float | 1.0 | Metin animasyon yoğunluğu (0.25–2.0). text_effect none ise yok sayılır. |
| text_border_width | int | 0 | Karakterlerin etrafındaki siyah dış çizginin kalınlığı piksel cinsinden (0 = devre dışı). |
| text_border_color | string | "black" | Karakter kenarının rengi (text_color ile aynı biçim, varsayılan "black"). text_border_width > 0 ise kullanılır. |
| text_mode | string | "static" | Metin görüntüleme modu. static (varsayılan): tam metin 1. kareden itibaren görünür. word_by_word: kelimeler word_reveal_speed hızında tek tek görünür. text_effect ile birlikte kullanılamaz: text_mode=word_by_word ise text_effect yok sayılır. "karaoke": metin sesin ritmiyle, sayfa sayfa renklenir (en fazla 1.000 karakter). voice ile kelime kelime eşitlenir, aksi hâlde kelime uzunluğuna göre sese dağıtılır. |
| word_reveal_speed | float | 1.5 | Saniyedeki kelime gösterme hızı (0.3–5.0, varsayılan 1.5). Yalnızca text_mode=word_by_word ile kullanılır. OpenAI TTS için önerilen değer: 2.0. |
| word_anim | string | "none" | Her kelimenin görünüm animasyonu. none (varsayılan): anlık görünüm. fade: her yeni kelime 0.2s fade ile önceki bloktan geçişle görünür. Yalnızca text_mode=word_by_word ile kullanılır. |
| karaoke_style | string | "fill" | Karaoke stili: fill (söylenen kelimeler vurgu rengini alır), sweep (her kelime kademeli olarak dolar; sağdan sola yazılarda kelimenin tamamı) veya highlight (yalnızca geçerli kelime renklenir). |
| highlight_color | string | "#FFD200" | Karaoke modunda söylenen kelimelerin / geçerli kelimenin rengi (text_color ile aynı biçim). |
| karaoke_lines | int | 2 | Karaoke modunda sayfa başına gösterilen satır sayısı (1–4). |
| voice | string | "" | Ses kimliği (text_to_mp3 ile aynı liste, örn. tr-TR-EmelNeural): ses aynı işte text içeriğinden oluşturulur. Bu durumda image_to_video yalnızca görsele ihtiyaç duyar (ayrıca gönderilen MP3 reddedilir). Karaoke modunda her kelime sesle eşitlenir. |
| voice_rate | int | 0 | Oluşturulan sesin hızı, % olarak (−50 ile +50 arası). |
Kendi zamanlamalarınızla karaoke (SRT / LRC)
timings alanında bir SRT veya LRC dosyası gönderin: her satır kendi anında görünür ve bir karaoke sayfası oluşturur (en fazla 500 satır, 5.000 karakter). SRT: satır bitiş zamanında kaybolur. LRC: satır bir sonrakine kadar kalır (boş satır onu bitirir); [offset:] ve gelişmiş LRC kelime zamanlamaları <mm:ss.xx> desteklenir — aksi hâlde her satır kendi süresine dağıtılır. add_text modunda süreler videonun başına göredir ve text_start kadar kaydırılır.
options parametreleri — overlay_video modu
Tümü isteğe bağlı. Yükleme sırası önemlidir: birinci dosya ana video (arka plan), ikinci dosya overlay (ön plan). Overlay'deki yeşil ekranı kaldırmak için chroma_key kullanın.
| Anahtar | Tür | Varsayılan | Açıklama |
|---|---|---|---|
| position | string | "bottom-right" | Overlay'in yerleştirileceği köşe: top-left, top-right, bottom-left, bottom-right veya center. |
| scale | float | 0.30 | Ana video genişliğine oranla overlay boyutu. 0.25 = genişliğin %25'i. Aralık: 0.05–1.0. |
| opacity | float | 1.0 | Overlay şeffaflığı. 1.0 = tamamen görünür, 0.0 = görünmez. |
| margin | int | 10 | Overlay ile çerçeve kenarı arasındaki piksel boşluğu. position=center ise yok sayılır. Aralık: 0–200. |
| audio | string | "main" | Hangi sesin korunacağı. main: sadece ana video sesi. overlay: sadece overlay sesi. mix: her iki parça karışımı. |
| chroma_key | bool | false | Overlay'deki saf yeşil (#00FF00) arka planı kaldırmak için true olarak ayarla — yeşil ekranda çekilen webcam veya animasyonlar için kullanışlıdır. |
| chroma_similarity | float | 0.20 | Yeşil ekran toleransı. Düşük = katı eşleşme. Yüksek = daha geniş kaldırma. Önerilen: dijital yeşil için 0.10–0.20, fiziksel ekran için 0.25–0.45. Aralık: 0.01–0.60. |
options parametreleri — add_text modu
Metin zorunludur. Varsayılan olarak biçim, kare hızı ve ses korunur. output_format; image_fit, bg_color ve background_mode ile yeniden çerçevelemeyi etkinleştirir. width, height, fps ve fotoğraf hareketi yok sayılır. En uzun süre: 15 dakika.
{"text":"Hello","output_format":"portrait","image_fit":"contain","background_mode":"blur","blur_strength":20}
| Anahtar | Tür | Varsayılan | Açıklama |
|---|---|---|---|
| text | string | EVET | Eklenecek metin. Zorunlu, 1–200 karakter. |
| text_start | float | 0 | Metnin göründüğü saniye (≥ 0). Videonun bitiminden önce olmalıdır. |
| text_duration | float | 0 | Metnin ekranda kalma süresi, saniye cinsinden (0,1–3600). 0 = videonun sonuna kadar. |
| font | string | "default" | Metnin yazı tipi, kimliğiyle belirtilir. Kabul edilen değerler: 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 = standart yazı tipi (emoji desteklenir); amiri = Nesih yazı tipi, Arapça metin için ideal. Diğer tüm değerler invalid_option hatası döndürür. Emojiler yalnızca default ile işlenir. |
| font_size | int | 60 | Kısa kenarı 1080 px olan bir video için belirtilen ve gerçek çözünürlüğe otomatik ölçeklenen yazı boyutu — aynı değer 720p ve 4K'da aynı görünür. Aralık: 10–300. |
| fade_duration | float | 0.5 | Metnin (videonun değil) belirme/kaybolma solma süresi, saniye cinsinden. Aralık: 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 ile aynıdır (yukarıdaki tabloya bakın). |
| original_volume | float | 0.3 | voice ile: videonun orijinal sesinin, oluşturulan sesin altındaki düzeyi (0–2, varsayılan 0.3; 0 = değiştirilir). Ses text_start anında başlar; metin ses bitene kadar ekranda kalır ve ses videonun sonunu aşarsa son kare dondurulur. |
| background_mode | string | "solid" | solid (varsayılan) veya blur. Bulanıklık için image_fit=contain gerekir. Metin net kalır. |
| blur_strength | number | 20 | 1 ile 50 arasında sayı; varsayılan 20. Yalnızca arka plana Gauss bulanıklığı uygular. |
| output_format | string | "original" | Yalnızca add_text: original (varsayılan), portrait (1080×1920), square (1080×1080), landscape (1920×1080). Bulanıklık için original dışında bir biçim gerekir. |
| image_fit | string | "contain" | contain: Görselin veya videonun tamamını gösterir ve boş alanları seçilen arka planla doldurur. solid (varsayılan) veya blur. Bulanıklık için image_fit=contain gerekir. Metin net kalır. cover: Görsel çerçeveyi doldurmak için yakınlaştırılır, ortalanır — kenarlar kırpılır. |
| bg_color | string | "black" | background_mode=solid: Görüntü hedef çözünürlüğü doldurmadığında arka plan rengi. |
options parametreleri — Ses düzenleme (mix_audio)
Yalnızca mode=mix_audio ile kullanılabilir. add_audio için yok sayılır.
| Anahtar | Tür | Varsayılan | Açıklama |
|---|---|---|---|
| mp3_volume | float | 1.0 | Eklenen MP3'ün ses seviyesi (0.0 = sessiz, 1.0 = orijinal, 2.0 = çift). |
text_to_mp3 modu — doğrudan parametreler (options JSON'u yok)
Diğer modların aksine, bu alanlar options JSON nesnesi içinde değil, doğrudan form alanları olarak gönderilir. Sadece text zorunludur.
| Anahtar | Tür | Varsayılan | Açıklama |
|---|---|---|---|
| text | string | — | Sese dönüştürülecek metin. Zorunlu. En fazla 5.000 karakter. |
| lang | string | "en" | voice belirtilmediğinde veya geçersiz olduğunda varsayılan sesi seçmek için kullanılan dil kodu. Sitenin 20 dilinden biri (aşağıdaki tabloya bakın). Bilinmiyorsa en'e döner. |
| voice | string | otomatik | edge-tts ses kimliği (aşağıdaki tabloya bakın). Belirtilmemişse veya geçersizse, lang için otomatik olarak ilk ses kullanılır. |
| slow | bool | false | Konuşmayı %25 yavaşlatmak için true (veya 1) olarak ayarlayın. Diğer tüm değerler false olarak kabul edilir. |
text_to_mp3 videos[] gerektirmez. mode=text_to_mp3'ü text / lang / voice / slow ile birlikte normal form alanları olarak gönderin.Kullanılabilir sesler (edge-tts, Microsoft Neural), dil koduna göre gruplandırılmıştır:
| Dil | Kullanılabilir sesler |
|---|---|
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 |
Başarılı yanıt (HTTP 200)
text_to_mp3 için yanıt, file_count veya transition alanları içermez (dosya yüklenmedi) — geri kalanı aynıdır: job_id, quota_used, quota_remaining, status_url, webhook_secret.curl örneği — image_to_video modu
Oluşturulan sesle karaoke metni (image_to_video, MP3 olmadan)
SRT dosyasıyla karaoke (image_to_video + MP3 dosyanız)
curl örneği — Sesi düzenle
curl örneği — overlay_video modu
curl örneği — add_text modu
curl örneği — Videoları birleştir
curl örneği — text_to_mp3 modu
Durum gerçek aşamayı ve geçen süreyi içerir. Tahminler yaklaşık değerlerdir; istemci zaman aşımı işin başarısız olduğu anlamına gelmez. Aynı iş kimliğini sorgulamaya devam edin. Dosyalar tamamlandıktan iki saat sonra sona erer.
Olası durumlar
| Durum | Anlam | Ek alanlar |
|---|---|---|
| queued | Kuyrukta, henüz işlenmedi | queue_position, queue_total, eta_minutes |
| processing | FFmpeg işlemi devam ediyor | processing_stage, processing_elapsed_seconds, stage_elapsed_seconds, last_activity_at, processed_media_seconds, eta_overrun |
| ready | Tamamlandı — dosya mevcut | download_url, media_available, created_at, expires_at |
| error | İşlem başarısız oldu | error (message), quota_refund_status: pending | confirmed | not_required |
| cancelled | İptal edildi | quota_refund_status: pending | confirmed | not_required |
Duruma göre yanıtlar
curl örneği
Ortak parametreler (multipart/form-data)
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
page | integer | 1 | Sayfa numarası (1'den başlar) |
limit | integer | 20 | Sayfa başına sonuç (en fazla 50, varsayılan 20) |
Duruma göre yanıtlar
Son dosyayı akış olarak yayınlar. Content-Type, video modları için video/mp4, text_to_mp3 için audio/mpeg'dir. Token gerektirmez. Yalnızca durum ready olduğunda kullanılabilir.
Dosya iş tamamlandıktan 2 saat sonra silinir. Durum ready olur olmaz indirin.
İsteğe bağlı parametreler
| Parametre | Açıklama |
|---|---|
| filename | İndirilen dosya için önerilen ad (ör. benim-videoum.mp4) |
| preview | Bir indirmeyi tetiklemek yerine satır içi oynatma için (Content-Disposition: attachment'ı atlar) 1 olarak ayarlayın — tarayıcı içi önizleme için kullanılır. |
curl örneği
Webhook'lar
Webhook'lar polling'e alternatiftir: durum her X saniyede kontrol etmek yerine bir URL sağlarsınız ve sunucu iş tamamlandığında sizi otomatik olarak çağırır.
Nasıl çalışır
callback_url'yi/api/v1/render.php'ye gönderilen POST'a ekleyin- Yanıt bir
webhook_secretiçerir — imzaları doğrulamak için saklayın - İş
readyveyaerrorolduğunda sunucu URL'nize imzalı JSONPOSTgönderir HMAC-SHA256(webhook_secret, raw_body)ile imzayı doğrulayın
callback_url genel erişilebilir bir URL olmalıdır (http veya https). Özel, loopback ve ayrılmış IP adresleri sunucu tarafında engellenir. Zaman aşımı: 10 saniye. Alınan yük
Sunucu tarafından gönderilen başlıklar
| Başlık | Değer |
|---|---|
| Content-Type | application/json |
| X-RVM-Signature | sha256=<hmac_hex> — ham gövdenin HMAC-SHA256 imzası |
| X-RVM-Job-Id | İlgili job_id |
İmza doğrulama
Hata kodları
| HTTP | JSON kodu | Neden |
|---|---|---|
| 401 | unauthorized | Token eksik, geçersiz veya iptal edilmiş |
| 400 | missing_files | Hiç dosya alınmadı |
| 400 | too_few_files | 2'den az dosya gönderildi |
| 400 | too_many_files | 20'den fazla dosya gönderildi |
| 400 | invalid_mime | Desteklenmeyen dosya — yalnızca MP4, MP3 ve JPG/PNG kabul edilir |
| 400 | wrong_file_count | Dosya sayısı seçilen moda uymuyor |
| 400 | wrong_file_types | Dosya türleri seçilen moda uymuyor |
| 400 | invalid_file_combination | Belirtilen mod olmayan dosya kombinasyonu desteklenen hiçbir moda uymuyor |
| 400 | invalid_options | options alanı geçerli JSON değil |
| 400 | invalid_option | options içindeki bir değer geçersiz |
| 400 | file_too_large | Bir dosya 500 MB'ı aşıyor |
| 400 | text_required | options.text alanı eksik veya boş (add_text modu) |
| 400 | video_too_long | Video 15 dakikadan uzun (add_text modu) |
| 400 | text_start_out_of_range | text_start videonun bitişini aşıyor |
| 400 | invalid_voice | Bilinmeyen voice kimliği. |
| 400 | invalid_timings | Okunamayan zamanlama dosyası (tanınmayan biçim, zaman damgalı satır yok, bitiş başlangıçtan önce, çok uzun…). |
| 400 | invalid_order | order dizisi geçerli bir permütasyon değil |
| 400 | invalid_job_id | Hatalı job_id formatı (32 karakterli hex olmalı) |
| 404 | job_not_found | İş bulunamadı — job_id bilinmiyor veya hiç oluşturulmamış |
| 410 | job_expired | İş süresi doldu — mevcuttu ama 2 saatlik kurtarma penceresi geçti |
| 429 | quota_exceeded | Günde 20 başarılı iş limitine ulaşıldı |
| 429 | rate_limited | /api/v1/jobs.php'de dakikada 12 çağrı aşıldı |
| 500 | server_error | Dahili sunucu hatası |
Entegrasyon örnekleri
Her mod için örnekler — pip install requests ile requests kurun.
Ortak yapılandırma
image_to_video modu — resim + ses → video
Sesi düzenle
overlay_video modu — görüntü içinde görüntü
add_text modu — video üzerine metin
Videoları birleştir
text_to_mp3 modu — metinden sese
Sorgulama + indirme (tüm modlar için ortak)
n8n'de iki yaklaşım: sorgulama (durum döngüsü) veya webhook (sunucu n8n'yi çağırır). Webhook önerilir.
Yaklaşım A — Webhook (önerilen)
Yalnızca 3 düğüm, döngü yok.
Düğüm 1 — Webhook tetikleyicisi
İş akışı girişi olarak bir Webhook düğümü ekleyin (yöntem POST).
Düğüm 2 — İş oluştur (HTTP İsteği)
| Yöntem | POST |
| URL | https://rapidvideomaker.com/api/v1/render.php |
| Kimlik Doğrulama | Header Auth — Authorization: Bearer rvm_… |
| Gövde İçerik Türü | Form-Data Multipart |
| Body params | Her klip için ikili alan videos[] + Metin alanı callback_url |
İmzayı doğrulamak için yanıttaki webhook_secret'i bir iş akışı değişkeninde saklayın.
Düğüm 3 — Sonucu işle (webhook tarafından tetiklenen iş akışında)
n8n sunucunun POST'unu aldığında $json.status ready veya error'dur.
{{ $headers['x-rvm-signature'] }}'ı webhook_secret'inizden HMAC-SHA256 ile karşılaştırın.Yaklaşım B — Sorgulama (webhook olmadan)
5 düğüm, her 10 sn'de durum döngüsü.
Düğüm 1 — İş oluştur — callback_url olmadan yukarıdakiyle aynı yapılandırma.
Düğüm 2 — Bekle — 10 saniye.
Düğüm 3 — Durum sorgula (HTTP İsteği GET)
| URL | https://rapidvideomaker.com/api/v1/jobs.php |
| Sorgu parametreleri | job_id = {{ $('Düğüm 1').item.json.job_id }} |
| Kimlik Doğrulama | Başlık Kimlik Doğrulama — aynı token |
Düğüm 4 — Eğer: {{ $json.status }} === 'ready' → doğru: Düğüm 5 / yanlış: Düğüm 2'ye geri.
Düğüm 5 — İndir: {{ $json.download_url }} üzerinde HTTP İsteği GET.
Adım 1 — İş oluştur (bir mod seçin)
Adım 2 — Sorgulama
Adım 3 — İndir
En iyi uygulamalar
- Aynı işi 5–10 saniye aralıklarla sorgulayın. Süre, moda ve girdi boyutuna bağlıdır.
- Durum gerçek aşamayı ve geçen süreyi içerir. Tahminler yaklaşık değerlerdir; istemci zaman aşımı işin başarısız olduğu anlamına gelmez. Aynı iş kimliğini sorgulamaya devam edin. Dosyalar tamamlandıktan iki saat sonra sona erer.
- Hızlı indirin: durum
readyolur olmaz dosyayı indirin. İş tamamlandıktan 2 saat sonra silinir. - Kota yönetimi: POST yanıtındaki
quota_remaining'i kontrol edin. - Ağ hataları: sorgulama sırasında ağ hatası durumunda bekleyin ve yeniden deneyin.