fal AI FFmpeg API: endpoints, inputs and prices

fal hosts FFmpeg as model endpoints: merge videos, merge audio and video, extract a frame, compose tracks. Called with a fal key, priced per second.

5 min readSume
All posts

Yes, fal has an FFmpeg API. It hosts FFmpeg operations as separate model endpoints under fal-ai/ffmpeg-api/: merge-videos joins clips in order, merge-audio-video lays an audio file on a video, extract-frame pulls the first, middle or last frame, and compose builds a video from several media tracks. You call them like any fal model, with URLs in and a file URL out.

Every fal fact here is quoted from fal's own model pages, read on 2026-09-29: merge-videos, merge-audio-video, extract-frame, compose and metadata. The Sume section comes from Timeline 1.0 and Video frames.

Which FFmpeg endpoints does fal have?

Each endpoint does one job and takes typed fields, not a raw FFmpeg command line. The table lists the ones this post read. fal also lists waveform data and EBU R128 loudness normalization endpoints for audio files.

From fal's FFmpeg API model pages (merge-videos, merge-audio-video, extract-frame, compose, metadata), read 2026-09-29. Prices quoted as written.
EndpointWhat it doesInputsListed price
fal-ai/ffmpeg-api/merge-videosMerge 2 or more videosvideo_urls in order; optional target_fps (1–60) and resolution (width and height 512–2048)$0 per compute seconds
fal-ai/ffmpeg-api/merge-audio-videoPut an audio file on a videovideo_url, audio_url; optional start_offset in seconds (default 0)$0.0002 per seconds
fal-ai/ffmpeg-api/extract-frameFirst, middle or last framevideo_url; optional frame_type (first default, middle, last)$0.0002 per seconds
fal-ai/ffmpeg-api/composeCompose a video from multiple media sourcestracks (each with id, type, keyframes)$0.0002 per seconds
fal-ai/ffmpeg-api/metadataEncoding metadata of a video or audio filemedia_url; optional extract_frames$0 per compute seconds

How do I merge videos or audio with the fal FFmpeg API?

Send a POST with your fal key in an Authorization: Key header. This is fal's own cURL example with placeholder URLs. The response carries a video file object with its url.

  • merge-videos without target_fps uses the lowest FPS of the inputs.
  • Without resolution, merge-videos uses the minimum width and height across the inputs, or the aspect ratio of the input you name in resolution_aspect_ratio_video_index.
  • extract-frame returns an images list; compose returns video_url and thumbnail_url.
  • For the queue and client libraries (fal_client.subscribe, fal.subscribe), see fal vs Replicate.
curl --request POST \
  --url https://fal.run/fal-ai/ffmpeg-api/merge-audio-video \
  --header "Authorization: Key $FAL_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "video_url": "https://example.com/clip.mp4",
    "audio_url": "https://example.com/voice.wav"
  }'

How much does the fal FFmpeg API cost?

fal lists merge-videos and metadata at "$0 per compute seconds", and merge-audio-video, extract-frame and compose at "$0.0002 per seconds". The pages don't say which seconds the second rate counts. They point to fal's pricing page for details, so check it before you budget at volume.

Can I do the same edits on Sume?

Yes, for clips already on Sume. Sume's media tools read only this workspace's media.sume.com files, such as an artifact from an earlier Sume job, not arbitrary URLs.

  • Join clips: Timeline 1.0 takes one audio spine plus 1–200 ordered video[] slots and returns one MP4. Callers never send filtergraphs or codecs.
  • Sound: in current code a Timeline render takes sound only from the audio spine and an optional soundtrack; each clip's own audio is dropped.
  • Frames: Video frames returns stills from one clip and is unbilled; see how to extract frames with the Sume API.
  • Filters: Video filter takes an allowlisted, filters-only filtergraph; see the FFmpeg filter allowlist.
  • Price: a Timeline render reserves $0.10 per output minute, counted in whole minutes (API pricing).

Sources

Related posts

More in Developers

All Developers posts

Written by Sume