API RapidVideoMaker
REST APIを使用すると、PythonスクリプトやN8nワークフローなどあらゆるHTTPクライアントからビデオを処理できます。5つのモード: 動画を結合(複数MP4)、音声を編集(1 MP4/MOV + 1 MP3)、動画を作成(1 JPG/PNG + 1 MP3)、ビデオオーバーレイ(2 MP4/MOV ピクチャーインピクチャー)。処理は非同期です。
完全なワークフロー
すべての統合は同じ4ステップのシーケンスに従います:
POST /api/v1/render.phpmultipart/form-dataとして送信します。1枚のJPG/PNG画像 + 1つのMP3 + mode=image_to_video → 動画生成。1つのMP4/MOV + 1つのMP3 → 音声編集。複数のMP4/MOV → 結合。サーバーは一意のjob_idを返します。または画像1枚 + options.text + options.voice:音声はテキストから生成され、MP3は不要です。GET /api/v1/jobs.php?job_id=…queued → processing → ready(またはerror)と進みます。readyになると、レスポンスに使用可能なdownload_urlフィールドが含まれます。GET /api/download.php?job_id=…認証
すべてのリクエストにAPIトークンを含める必要があります。2つの形式が受け入れられます:
トークンはメンバーエリアで利用可能です — アカウントごとに1つのトークン、登録時に自動的に作成されます。
クォータ
各メンバーアカウントはWebインターフェースとAPI間で共有される1日20リクエストを持ちます。失敗したジョブはクォータを消費しません。カウンターはUTC深夜にリセットされます。
POSTレスポンスにはquota_usedとquota_remainingが含まれます。制限を超えると、サーバーは429で応答します。
キュー
一度に1つのジョブが処理されます。複数のジョブが同時に送信された場合、キューに入れられ順番に処理されます。待機中、ステータスレスポンスには以下が含まれます:
queue_position— キュー内のジョブの位置(1 = 次に処理)queue_total— 待機中のジョブの総数eta_minutes— 処理開始までの推定時間
/api/v1/jobs.phpエンドポイントはトークンあたり1分間に12回までの呼び出しを受け入れます。推奨:呼び出し間隔10秒。 利用可能なトランジション
直接マージにはtransition_type=none(デフォルト)を指定し、クリップ間のフェードには以下のいずれかの種類を使用します:
期間(transition_duration)は0.2〜2.0秒です。
エンドポイント
5つのモードをmodeフィールドで指定します(複数MP4でmodeを省略するとfusionを自動検出):
| 使用法 | APIモード | 必要なファイル | 説明 |
|---|---|---|---|
| 動画を結合 | fusion |
2〜20個のMP4/MOVファイル | クリップは提供された順序で端から端へ組み立てられます。クリップ間にオプションのトランジションを設定できます。 |
| 音声を編集 | add_audio または mix_audio |
1つのMP4/MOV + 1つのMP3 | 動画の音声トラックを置き換えまたは強化します。動画トラックは再エンコードされません。add_audio — 元の音声が削除され、MP3に完全に置き換えられます。mix_audio — 元の音声が保持され、MP3がオーバーレイされます。 |
| 動画を作成 | image_to_video |
JPG/PNG 1枚 + MP3 1つ — またはJPG/PNG 1枚 + テキスト(options.text + options.voice):音声を生成 |
静止画像と手持ちのMP3から — またはテキスト(options.text)だけから(音声はoptions.voiceで生成)— 動画を生成します。テキストオーバーレイ(固定・単語ごと・カラオケ)、フェード、解像度、fpsはoptionsフィールドで設定可能です。 |
| ビデオオーバーレイ | overlay_video |
2 MP4/MOV | メイン動画の上に2本目の動画を重ねます。位置・サイズ・不透明度・音声はoptionsフィールドで設定できます。 |
| テキスト追加 | add_text |
MP4/MOV 1本 | 既存の動画にテキストを重ねます(解像度、フレームレート、音声は維持されます)。image_to_video と同じテキスト設定に加え、テキストの表示タイミングを指定できます。options.text は必須です。 |
| テキストをMP3に | text_to_mp3 |
(テキストのみ) | テキストを音声に変換してMP3ファイルを返します。ファイルのアップロード不要 — mode=text_to_mp3、text、lang をフォームフィールドとして送信してください。サイトの20言語すべてをサポート。 |
add_audioとmix_audioは1つのMP4/MOV + 1つのMP3のみを受け入れます。image_to_videoは1枚のJPG/PNG + 1つのMP3のみを受け入れます。例外:options.text + options.voiceを指定すると、image_to_videoは画像1枚のみを受け付けます。音声はテキストから生成されます(MP3なし)。options.voiceを指定した場合、image_to_videoの長さはテキストから生成した音声の長さになります(+0.6秒)。共通パラメータ(multipart/form-data)
| フィールド | 種類 | 必須 | 説明 |
|---|---|---|---|
| videos[] | File[] | はい | 処理するファイル。モードによって異なります:2〜20個のMP4/MOV、または1つのMP4/MOV + 1つのMP3、または1枚の画像(JPG/PNG)+ 1つのMP3。1ファイルあたり最大500 MB。 |
| mode | string | * | image_to_video | add_audio | mix_audio | overlay_video | text_to_mp3。これらの非fusionモードには必須です。MP4/MOVファイルのみでmodeを省略すると、常にfusionがトリガーされます(ストリームコピー結合)— 正確に2つのMP4/MOVがアップロードされてもoverlay_videoには決してなりません。音声編集の場合:add_audioは元の音声を削除し、mix_audioは保持して重ねます。modeフィールドが指定された場合、アップロードされたファイルは正確に一致する必要があります — そうでない場合リクエストは拒否されます。 add_text も指定できます。MP4/MOV ファイルを1本だけ受け付ける唯一のモードで、options.text が必要です。 |
| order | JSON | fusionモードのみ — クリップの順序を定義するインデックスのJSON配列。 | |
| transition_type | string | fusionモードのみ。デフォルト:none。 | |
| transition_duration | float | fusionモードのみ。期間0.2〜2.0秒。デフォルト:0.5。 | |
| options | JSON | image_to_video, add_text, mix_audio、overlay_videoのレンダリングパラメータのJSONオブジェクト(下の表を参照)。 | |
| timings | File / string | image_to_video / add_text:カラオケのタイミングファイル(SRT または LRC、最大200 KB)。ファイル項目またはプレーンテキストで送信。表示テキストはファイルから取得し、text_mode=karaoke が適用されます。voice とは併用できません。 | |
| callback_url | string | ジョブ完了時に呼び出される公開URL(http/https)。レスポンスにはwebhook_secretが含まれます。 |
optionsパラメータ — image_to_videoモード
すべてオプションです。指定されていない値 → ワーカーによってデフォルトが適用されます。
| キー | 種類 | デフォルト | 説明 |
|---|---|---|---|
| text | string | "" | オーバーレイとして表示されるテキスト。空 = テキストなし。最大500文字。 |
| font | string | "default" | テキストのフォント(ID で指定)。使用できる値: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 = 標準フォント(絵文字に対応)、amiri = ナスク体フォント(アラビア語テキストに最適)。それ以外の値は invalid_option エラーを返します。絵文字は default でのみ表示されます。 |
| 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: 画像や動画全体を表示し、余白を選択した背景で埋めます。 solid(既定)またはblur。ぼかしにはimage_fit=containが必要です。文字は鮮明に保たれます。 cover: 画像はフレームを埋めるようにズームされ、中央配置 — 端がトリミングされます。 |
| bg_color | string | "black" | background_mode=solid: 画像がターゲット解像度を満たさない場合の背景色。 |
| background_mode | string | "solid" | solid(既定)またはblur。ぼかしにはimage_fit=containが必要です。文字は鮮明に保たれます。 |
| blur_strength | number | 20 | 1~50の数値。既定値は20。背景だけにガウスぼかしを適用します。 |
| enable_image_motion | bool | false | 写真アニメーションを有効にします。falseの場合、画像は静止したままです。 |
| image_motion_effect | string | "ken_burns" | アニメーションエフェクト。受け入れられる値:zoom_in、zoom_out、pan_left_to_right、ken_burnsなど。 |
| motion_intensity | float | 1.0 | 写真アニメーションの強度(0.25〜2.0)。ズーム振幅とパン速度を乗算します。 |
| text_effect | string | "none" | テキストオーバーレイアニメーション。受け入れられる値:none、fade_in、slide_up、slide_down、bounce。 |
| text_effect_intensity | float | 1.0 | テキストアニメーション強度(0.25〜2.0)。text_effectがnoneの場合は無視されます。 |
| text_border_width | int | 0 | ピクセル単位の文字の黒いアウトラインの太さ(0 = 無効)。 |
| text_border_color | string | "black" | 文字の縁取りの色(text_color と同じ形式、既定値 "black")。text_border_width > 0 のときに使われます。 |
| text_mode | string | "static" | テキストの表示モード。static(デフォルト):最初のフレームからテキスト全体を表示。word_by_word:word_reveal_speedの速度で1語ずつ表示。text_effectとは同時使用不可:text_mode=word_by_wordの場合、text_effectは無視されます。 "karaoke":音声に合わせてテキストの色がページごとに変わります(最大1,000文字)。voice を指定すると語ごとに同期し、指定しない場合は語の長さに応じて音声全体に割り振ります。 |
| word_reveal_speed | float | 1.5 | 1秒あたりの単語表示速度(0.3〜5.0、デフォルト1.5)。text_mode=word_by_word時のみ使用。OpenAI TTS同期の推奨値:2.0。 |
| word_anim | string | "none" | 各単語の表示アニメーション。none(デフォルト):即座に表示。fade:各単語が0.2秒のフェードで表示されクロスフェード。text_mode=word_by_wordのみ。 |
| karaoke_style | string | "fill" | カラオケのスタイル:fill(読まれた語がハイライト色になる)、sweep(各語が徐々に塗られる。右から左に書く文字では語単位)、highlight(現在の語だけを色付け)。 |
| highlight_color | string | "#FFD200" | カラオケモードで読まれた語/現在の語の色(text_color と同じ形式)。 |
| karaoke_lines | int | 2 | カラオケモードで1ページに表示する行数(1〜4)。 |
| voice | string | "" | 音声ID(text_to_mp3 と同じリスト、例:ja-JP-NanamiNeural):同じジョブ内で text から音声を生成します。この場合 image_to_video は画像だけで済みます(MP3を同時に送ると拒否されます)。カラオケモードでは各語が音声に同期します。 |
| voice_rate | int | 0 | 生成音声の速度(%、−50〜+50)。 |
独自タイミングでのカラオケ(SRT / LRC)
timings 項目で SRT または LRC ファイルを送信します。各行はそれぞれの時刻に表示され、カラオケの1ページになります(最大500行・5,000文字)。SRT:行は終了時刻に消えます。LRC:行は次の行まで表示されます(空行で終了)。[offset:] と拡張LRCの語ごとのタイミング <mm:ss.xx> に対応し、ない場合は各行をその長さに割り振ります。add_text では時刻は動画の先頭基準で、text_start 分ずらされます。
optionsパラメータ — overlay_videoモード
すべて任意。アップロード順が重要: 1ファイル目はメイン動画(背景)、2ファイル目はオーバーレイ(前景)。chroma_keyでオーバーレイのグリーンスクリーンを除去できます。
| キー | 種類 | デフォルト | 説明 |
|---|---|---|---|
| position | string | "bottom-right" | オーバーレイを配置するコーナー: top-left、top-right、bottom-left、bottom-right、またはcenter。 |
| scale | float | 0.30 | メイン動画幅に対するオーバーレイのサイズ比率。0.25 = 幅の25%。範囲: 0.05–1.0。 |
| opacity | float | 1.0 | オーバーレイの透明度。1.0 = 完全不透明、0.0 = 不可視。 |
| margin | int | 10 | オーバーレイとフレーム端の間のピクセル数。position=centerの場合は無視。範囲: 0–200。 |
| audio | string | "main" | 保持するオーディオ。main: メイン動画のみ。overlay: オーバーレイのみ。mix: 両方をミックス。 |
| chroma_key | bool | false | trueに設定するとオーバーレイの純緑色(#00FF00)の背景を除去します。グリーンスクリーンで撮影したウェブカメラや映像に有効です。 |
| chroma_similarity | float | 0.20 | グリーンスクリーンの許容範囲。低い = 厳密な一致。高い = より広い除去。推奨: デジタルグリーンは0.10–0.20、物理スクリーンは0.25–0.45。範囲: 0.01–0.60。 |
options パラメータ — add_text モード
テキストは必須です。既定では元の形式、フレームレート、音声を維持します。output_formatを指定するとimage_fit、bg_color、background_modeで再配置できます。width、height、fps、写真の動きは無視されます。最大動画長は15分です。
{"text":"Hello","output_format":"portrait","image_fit":"contain","background_mode":"blur","blur_strength":20}
| キー | 種類 | デフォルト | 説明 |
|---|---|---|---|
| text | string | はい | 重ねるテキスト。必須、1〜200文字。 |
| text_start | float | 0 | テキストが表示される秒数(0 以上)。動画の終了より前である必要があります。 |
| text_duration | float | 0 | テキストが表示され続ける時間(秒、0.1〜3600)。0 = 動画の最後まで。 |
| font | string | "default" | テキストのフォント(ID で指定)。使用できる値: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 = 標準フォント(絵文字に対応)、amiri = ナスク体フォント(アラビア語テキストに最適)。それ以外の値は invalid_option エラーを返します。絵文字は default でのみ表示されます。 |
| font_size | int | 60 | フォントサイズ。短辺が 1080 px の動画を基準とした値で、実際の解像度に自動でスケーリングされます。同じ値なら 720p でも 4K でも同じ見た目になります。範囲:10〜300。 |
| fade_duration | float | 0.5 | テキスト(動画ではありません)のフェードイン/アウト時間(秒)。範囲: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 と同じです(上の表を参照)。 |
| original_volume | float | 0.3 | voice 使用時:音声の下に流れる動画の元の音の音量(0〜2、既定値 0.3、0 = 置き換え)。音声は text_start から始まり、終わるまでテキストが表示されます。動画の終わりを超える場合は最後のフレームを静止表示します。 |
| background_mode | string | "solid" | solid(既定)またはblur。ぼかしにはimage_fit=containが必要です。文字は鮮明に保たれます。 |
| blur_strength | number | 20 | 1~50の数値。既定値は20。背景だけにガウスぼかしを適用します。 |
| output_format | string | "original" | add_textのみ:original(既定)、portrait(1080×1920)、square(1080×1080)、landscape(1920×1080)。ぼかしにはoriginal以外の形式が必要です。 |
| image_fit | string | "contain" | contain: 画像や動画全体を表示し、余白を選択した背景で埋めます。 solid(既定)またはblur。ぼかしにはimage_fit=containが必要です。文字は鮮明に保たれます。 cover: 画像はフレームを埋めるようにズームされ、中央配置 — 端がトリミングされます。 |
| bg_color | string | "black" | background_mode=solid: 画像がターゲット解像度を満たさない場合の背景色。 |
optionsパラメータ — 音声編集(mix_audio)
mode=mix_audioでのみ利用可能。add_audioでは無視されます。
| キー | 種類 | デフォルト | 説明 |
|---|---|---|---|
| mp3_volume | float | 1.0 | オーバーレイされたMP3の音量(0.0 = ミュート、1.0 = 元の音量、2.0 = 2倍)。 |
text_to_mp3モード — 直接パラメータ(options JSONなし)
他のモードと異なり、これらのフィールドはoptionsJSONオブジェクトの中ではなく、直接フォームフィールドとして送信されます。必須なのはtextのみです。
| キー | 種類 | デフォルト | 説明 |
|---|---|---|---|
| text | string | — | 音声に変換するテキスト。必須。最大5,000文字。 |
| lang | string | "en" | voiceが省略または無効な場合にデフォルトの音声を選ぶために使われる言語コード。サイトの20言語のいずれか(下表参照)。不明な場合はenにフォールバックします。 |
| voice | string | 自動 | edge-ttsの音声ID(下表参照)。省略または無効な場合、langの最初の音声が自動的に使用されます。 |
| slow | bool | false | 話す速度を25%遅くするにはtrue(または1)を設定します。それ以外の値はfalseとして扱われます。 |
text_to_mp3はvideos[]を必要としません。mode=text_to_mp3とtext / lang / voice / slowを通常のフォームフィールドとして送信してください。利用可能な音声(edge-tts、Microsoft Neural)、言語コード別:
| 言語 | 利用可能な音声 |
|---|---|
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 |
成功レスポンス(HTTP 200)
text_to_mp3の場合、レスポンスにfile_countやtransitionフィールドは含まれません(ファイルがアップロードされないため)— それ以外は同じです: job_id、quota_used、quota_remaining、status_url、webhook_secret。curlの例 — image_to_videoモード
生成音声付きのカラオケテキスト(image_to_video、MP3なし)
SRTファイルでカラオケ(image_to_video + お手持ちのMP3)
curlの例 — 音声編集
curlの例 — overlay_videoモード
curl の例 — add_text モード
curlの例 — 動画結合
curlの例 — text_to_mp3モード
ステータスには実際の工程と経過時間が含まれます。見積もりは目安で、クライアントのタイムアウトは失敗を意味しません。同じジョブIDの確認を再開してください。ファイルは完了の2時間後に期限切れになります。
可能なステータス
| ステータス | 意味 | 追加フィールド |
|---|---|---|
| queued | キュー待ち、未処理 | queue_position, queue_total, eta_minutes |
| processing | FFmpeg処理中 | processing_stage, processing_elapsed_seconds, stage_elapsed_seconds, last_activity_at, processed_media_seconds, eta_overrun |
| ready | 完了 — ファイル利用可能 | download_url, media_available, created_at, expires_at |
| error | 処理失敗 | error (message), quota_refund_status: pending | confirmed | not_required |
| cancelled | キャンセル済み | quota_refund_status: pending | confirmed | not_required |
ステータス別レスポンス
curlの例
共通パラメータ(multipart/form-data)
| パラメータ | 種類 | デフォルト | 説明 |
|---|---|---|---|
page | integer | 1 | ページ番号(1から) |
limit | integer | 20 | 1ページあたりの件数(最大50、既定値20) |
ステータス別レスポンス
最終ファイルをストリーム配信します。Content-Typeは動画モードではvideo/mp4、text_to_mp3ではaudio/mpegになります。トークン不要。ステータスがreadyの場合のみ利用可能。
ファイルはジョブ完了後2時間保持され、その後削除されます。ステータスがreadyになったらすぐにダウンロードしてください。
オプションパラメータ
| パラメータ | 説明 |
|---|---|
| filename | ダウンロードするファイルの推奨名(例:my-video.mp4) |
| preview | ダウンロードを開始する代わりにインライン再生する場合は1を設定します(Content-Disposition: attachmentを省略)— ブラウザ内プレビューに使用します。 |
curlの例
Webhooks
Webhookはポーリングの代替手段です:X秒ごとにステータスを確認する代わりに、URLを指定するとサーバーがジョブ完了時に自動的に通知します。
仕組み
callback_urlを/api/v1/render.phpへのPOSTに含めます- レスポンスには
webhook_secretが含まれます — 署名の検証のために保存してください - ジョブが
readyまたはerrorになると、サーバーはあなたのURLに署名されたJSONPOSTを送信します HMAC-SHA256(webhook_secret, raw_body)で署名を検証します
callback_urlは公開アクセス可能なURL(httpまたはhttps)である必要があります。プライベート、ループバック、予約済みIPアドレスはサーバー側でブロックされます。タイムアウト:10秒。 受信ペイロード
サーバーが送信するヘッダー
| ヘッダー | 値 |
|---|---|
| Content-Type | application/json |
| X-RVM-Signature | sha256=<hmac_hex> — 生のボディの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 | text_required | options.text フィールドがないか空です(add_text モード) |
| 400 | video_too_long | 動画が15分を超えています(add_text モード) |
| 400 | text_start_out_of_range | text_start が動画の終了を超えています |
| 400 | invalid_voice | 不明な voice ID です。 |
| 400 | invalid_timings | タイミングファイルを読み取れません(形式が不明、時刻付きの行がない、終了が開始より前、長すぎる など)。 |
| 400 | invalid_order | order配列が有効な順列ではありません |
| 400 | invalid_job_id | job_idの形式が正しくありません(32文字の16進数である必要があります) |
| 404 | job_not_found | ジョブが見つかりません — job_idが不明または存在したことがありません |
| 410 | job_expired | ジョブが期限切れ — 存在しましたが2時間の回復ウィンドウが過ぎています |
| 429 | quota_exceeded | 1日20件の成功ジョブ制限に達しました |
| 429 | rate_limited | /api/v1/jobs.phpで1分あたり12回を超える呼び出しがありました |
| 500 | server_error | 内部サーバーエラー |
統合例
各モードの例 — pip install requestsでrequestsをインストール。
共通設定
image_to_videoモード — 画像 + 音声 → 動画
音声編集
overlay_videoモード — ピクチャーインピクチャー
add_text モード — 動画にテキストを追加
動画結合
text_to_mp3モード — テキスト読み上げ
ポーリング + ダウンロード(すべてのモードに共通)
n8nでの2つのアプローチ:ポーリング(ステータスループ)またはWebhook(サーバーがn8nを呼び出す)。Webhookを推奨。
アプローチA — Webhook(推奨)
ノード3つのみ、ループなし。
ノード1 — Webhookトリガー
ワークフロー入力としてWebhookノードを追加します(メソッドPOST)。
ノード2 — ジョブを作成(HTTPリクエスト)
| メソッド | POST |
| URL | https://rapidvideomaker.com/api/v1/render.php |
| 認証 | Header Auth — Authorization: Bearer rvm_… |
| ボディコンテンツタイプ | Form-Data Multipart |
| Body params | 各クリップのバイナリフィールドvideos[] + テキストフィールドcallback_url |
署名を検証するために、レスポンスのwebhook_secretをワークフロー変数に保存してください。
ノード3 — 結果を処理(Webhookがトリガーするワークフロー内)
n8nがサーバーのPOSTを受信すると、$json.statusはreadyまたはerrorです。
{{ $headers['x-rvm-signature'] }}とwebhook_secretからHMAC-SHA256を比較します。アプローチB — ポーリング(Webhookなし)
5ノード、10秒ごとのステータスループ。
ノード1 — ジョブを作成 — callback_urlなしで同じ設定。
ノード2 — 待機 — 10秒。
ノード3 — ステータスをポーリング(HTTPリクエストGET)
| URL | https://rapidvideomaker.com/api/v1/jobs.php |
| クエリパラメータ | job_id = {{ $('ノード1').item.json.job_id }} |
| 認証 | ヘッダー認証 — 同じトークン |
ノード4 — If:{{ $json.status }} === 'ready' → true:ノード5 / false:ノード2に戻る。
ノード5 — ダウンロード:{{ $json.download_url }}でHTTPリクエストGET。
ステップ1 — ジョブを作成(モードを選択)
ステップ2 — ポーリング
ステップ3 — ダウンロード
ベストプラクティス
- 同じジョブを5~10秒間隔で確認してください。処理時間はモードと入力サイズによって異なります。
- ステータスには実際の工程と経過時間が含まれます。見積もりは目安で、クライアントのタイムアウトは失敗を意味しません。同じジョブIDの確認を再開してください。ファイルは完了の2時間後に期限切れになります。
- 素早くダウンロード:ステータスが
readyになったらすぐにダウンロード。ジョブ完了後2時間で削除されます。 - クォータ管理:POSTレスポンスの
quota_remainingを確認してください。 - ネットワークエラー:ポーリング中にネットワークエラーが発生した場合、待機して再試行してください。