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.
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 + 1 MP3 → ses düzenleme (mode=mix_audio ekle). Birden fazla MP4 → birleştirme. Sunucu benzersiz bir job_id döndürür.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 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 + 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 | Sabit bir görüntü ve ses dosyasından video oluşturur. Metin yerleşimi, solmalar, çözünürlük ve fps options alanı aracılığıyla yapılandırılabilir. |
| Overlay video | overlay_video |
2 MP4 | İkinci bir videoyu ana videonun üzerine yerleştirir. Konum, boyut, opaklık ve ses options alanı ile ayarlanabilir. |
| 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 + 1 MP3 kabul eder. image_to_video yalnızca 1 JPG/PNG + 1 MP3 kabul eder.Ortak parametreler (multipart/form-data)
| Alan | Tür | Zor. | Açıklama |
|---|---|---|---|
| videos[] | File[] | EVET | İşlenecek dosyalar. Moda bağlı olarak: 2–20 MP4, veya 1 MP4 + 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. Bu üç mod için zorunludur. Yalnızca tüm dosyalar MP4 olduğunda yok sayılır (fusion). |
| 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 | Yalnızca image_to_video modu — render parametrelerinin JSON nesnesi. | |
| 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_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" | Çerçeveleme modu: contain = tam görüntü görünür; cover = tüm çerçeveyi doldurmak için yakınlaştırılmış. |
| bg_color | string | "black" | Görüntü hedef çözünürlüğü doldurmadığında arka plan rengi. |
| 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_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. |
| 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. |
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 — 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). |
Başarılı yanıt (HTTP 200)
curl örneği — image_to_video modu
curl örneği — Sesi düzenle
curl örneği — overlay_video modu
curl örneği — Videoları birleştir
Olası durumlar
| Durum | Anlam | Ek alanlar |
|---|---|---|
| queued | Kuyrukta, henüz işlenmedi | queue_position, queue_total, eta_minutes |
| processing | FFmpeg işlemi devam ediyor | — |
| ready | Tamamlandı — dosya mevcut | download_url, created_at, expires_at |
| error | İşlem başarısız oldu | error (message) |
Duruma göre yanıtlar
curl örneği
Ortak parametreler (multipart/form-data)
| apidocs_th_param | Tür | Varsayılan | apidocs_th_desc |
|---|---|---|---|
page | integer | 1 | Page number (starts at 1) |
limit | integer | 20 | Results per page (max 50, default 20) |
Duruma göre yanıtlar
Bir veya daha fazla sosyal hesaba tamamlanmış bir job (status=ready) yayınlar. Token bir üye hesabına ait olmalıdır (yönetici token'ı değil).
account_id'si orada görüntülenir.Ortak parametreler (multipart/form-data)
| apidocs_th_param | Tür | apidocs_th_required | apidocs_th_desc |
|---|---|---|---|
job_id | string | apidocs_required | Tamamlanan videonun job ID'si (hex 32 karakter) |
publications | array | apidocs_required | Yayın nesneleri dizisi (maks. 10) |
Yayın nesnesi
| apidocs_th_param | Tür | apidocs_th_required | apidocs_th_desc |
|---|---|---|---|
account_id | integer | apidocs_required | Bağlı sosyal hesabın ID'si — üye alanındaki Yayınlar sayfasında görünür |
title | string | — | Video başlığı (maks. 512 karakter) |
description | string | — | Video açıklaması (maks. 5 000 karakter) |
tags | string | — | Virgülle ayrılmış etiketler (maks. 1 024 karakter) |
visibility | string | — | public | private | unlisted — Varsayılan: public |
tiktok_mode | string | — | draft | direct — Yalnızca TikTok — varsayılan: direct |
tiktok_privacy | string | direct mod | Yalnızca TikTok — direct modda zorunlu |
allow_comment | boolean | — | Yalnızca TikTok — yorumlara izin ver |
allow_duet | boolean | — | Yalnızca TikTok — düetlere izin ver |
allow_stitch | boolean | — | Yalnızca TikTok — stitch'e izin ver |
your_brand | boolean | — | Yalnızca TikTok — organik tanıtım içeriği ("Markanız"). |
branded_content | boolean | — | Yalnızca TikTok — markalı içerik açıklaması |
tiktok_cover_ms | integer | — | Yalnızca TikTok — kapak karesi zaman damgası ms cinsinden (0–60 000, varsayılan 1 000) |
Duruma göre yanıtlar
Yayın başına hata kodları
| apidocs_th_code | Anlam |
|---|---|
job_not_ready | Job henüz tamamlanmadı |
mode_not_supported | text_to_mp3 job'ları yayınlanamaz |
account_not_found | Hesap bulunamadı veya bağlantısı kesildi |
tiktok_privacy_required | Direct modda gizlilik düzeyi gereklidir |
publication_failed | Sağlayıcı yükleme sırasında hata döndürdü |
cURL örneği
Son MP4 dosyasını akış olarak döndürür (Content-Type: video/mp4). 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ı parametre
| Parametre | Açıklama |
|---|---|
| filename | İndirilen dosya için önerilen ad (ör. benim-videoum.mp4) |
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 | 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ü
Videoları birleştir
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
- Sorgulama sıklığı:
/api/v1/jobs.phpuç noktası token başına dakikada 12 çağrı ile sınırlıdır. Çağrılar arası en az 5 saniye bekleyin. - Zaman aşımı: istemci tarafında bir zaman aşımı uygulayın (ör. 10 dakika).
- 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.