Video Merge API
POST /merge_urls
About this tool
Playlist stitching, episodic compilations, and automated highlight reels belong on `/merge_urls`, where FFmpeg concatenates multiple remote assets with optional stylistic transitions. Pass an array-derived list of HTTPS locations plus `transition` (`fade`, `pixelize`, or `dissolve`) and the `duration` of the transition envelope in JSON; we handle demux synchronization, timeline assembly, and the async bookkeeping you’d rather not reimplement atop raw ffmpeg CLI strings. Subscription-gated API keys ensure fair sharing of muxer slots during traffic spikes.
Because merges pull every source sequentially, weakest-link networking dominates runtime: one slow CDN hop stalls the graph. Operational teams prefetch URLs via signed HEAD requests on their side, verify codecs match when possible, and only then trigger Droid Apps jobs. Unlike consumer joiners that upload each file manually, everything stays declarative—you emit JSON referencing already-hosted media, preserving provenance trails for rights management.
Transition math is FFmpeg-accurate, not Premiere-flexible; read the anchored docs when you wonder whether audio crossfades align with pixel transitions or if certain pixelization radii imply extra scaling. Extend the pipeline by preceding merges with `/cut` trims so bumpers snap cleanly between segments. When something fails midway, reuse the logged task IDs in support tickets so engineers can correlate internal traces quickly.
Expect larger output bitrates whenever transitions force full re-encoding; budget storage accordingly. QA teams often diff loudness profiles after merges—if levels swing wildly between sources, preprocess with normalization tools before hitting this endpoint. Throughout, remember there is zero multipart shortcut: every reel must already live at stable HTTPS URIs reachable without session cookies.
Operational playbooks mirror broadcast master control: log each constituent URL’s codec id, FPS, PAR, and channel layout before enqueueing merges so mismatches surface in spreadsheets instead of surprises at midnight. Teams on enterprise subscriptions occasionally mirror our queue depth dashboards into PagerDuty, waking someone only when SLA timers exceed thresholds. Developers building “one click highlight” UXes should prefetch poster frames from `/frame/last` in parallel while merges run so thumbnails appear instantly after polling completes.
Try it now
How it works
List HTTPS sources
Collect one URL per line in the `urls` textarea equivalent to a JSON array of strings. Each must be public and fetchable anonymously over TLS.
Choose transition metadata
Select `fade`, `pixelize`, or `dissolve`, then specify `duration` seconds so FFmpeg builds the matching filter graph before muxing outputs.
Submit and poll asynchronously
POST with your API key, capture `status_url`, and GET it until FFmpeg finishes or surfaces a descriptive failure for a given input index.
Distribute merged master
Download the stitched asset from the success payload and publish to streaming packaging workflows or archival buckets under your retention policy.
Frequently asked questions
How many URLs can I merge at once?
Practical limits follow subscription tier timeouts and FFmpeg graph size. Extremely long playlists should be chunked into multiple merges or pre-trimmed to avoid multi-hour CPU holds.
What if codecs differ between clips?
FFmpeg tries to reconcile layouts, mismatched FPS, or audio channel counts, but some combinations trigger errors. Normalize inputs upstream or transcode outliers first.
Do transitions touch audio?
Behavior depends on the filter graph documented for `/merge_urls`. Read the anchored reference for specifics on crossover curves and redundant sample drops.
Why is multipart disallowed?
Large simultaneous uploads overwhelm edge nodes. Hosting sources yourself and referencing URLs keeps bursts predictable for every customer sharing the fleet.
Can I retry a partially failed merge?
Yes—fix the offending URL or parameter, mint a fresh JSON payload, and issue a new POST. Task IDs remain unique per attempt for auditing.
How do keys relate to quotas?
Each subscription tier maps API keys to burst and monthly limits; rotate compromised keys instantly from the dashboard without pausing unrelated environments.