MediaTofuServerless FFmpeg without managing servers
Serverless FFmpeg without managing servers
MediaTofu runs FFmpeg for you in a fresh container per job: no internet, no secrets, destroyed afterward. Call POST /v1/run with your command, or use /v1/tools/video/<name> and /v1/tools/image/<name>. You do not provision workers or keep FFmpeg installed.
Example
curl "https://api.mediatofu.com/v1/run?wait=25" \
-H "Authorization: Bearer $MEDIATOFU_KEY" \
-d '{
"input_files": { "in": "https://example.com/clip.mov" },
"output_files": { "out": "small.mp4" },
"ffmpeg_command": "-i {{in}} -vf scale=1280:-2 -crf 26 {{out}}"
}'With ?wait=25 a short job can return its result in the same request. Short jobs typically take about 5–15 seconds including container start. Leave wait off and poll GET /v1/jobs/:id, or pass webhook_url on a paid plan.
What “serverless” means here
You send HTTPS requests; MediaTofu starts an isolated job, runs FFmpeg or an image tool, returns output URLs, and tears the environment down. There is no long-lived FFmpeg host for you to patch.
Fit for Cloud automation
Useful when your runtime cannot install FFmpeg—n8n Cloud, many AI agents, and constrained serverless functions. Short jobs can return their result in the same request with ?wait=25.
Pricing
Free: $0, 5 minutes of compute a month, jobs up to 1 minute, inputs up to 50 MB, 1 job at a time. Pay per use: $0.024 per compute minute, billed by the second, no monthly fee. Jobs up to 5 minutes, inputs up to 2 GB, 3 jobs at once. Starter: $9/month includes 600 minutes, then $0.015 a minute. Jobs up to 5 minutes, inputs up to 2 GB. Pro: $19/month includes 1,500 minutes, then $0.0127 a minute. Jobs up to 10 minutes, inputs up to 2 GB.
Questions
How is each job isolated?
Every FFmpeg job gets a fresh container with no internet access and no secrets. Your input files are copied in, FFmpeg runs, outputs are saved, and the container is destroyed when the job ends. Image tools run without a container and are billed as shared compute seconds.
How do I get the result?
Add ?wait=25 and a short job can return its result in the same request. Short jobs typically take about 5–15 seconds including container start. 25 seconds is the longest wait. Otherwise you get a job id to check with GET /v1/jobs/:id, or on a paid plan you can pass webhook_url and we POST the result to you.
Do failed jobs cost anything?
A failure on our side is never charged, and neither is an input we couldn't download, one over your plan's size limit, or an image that could not be read. If your command runs and FFmpeg exits with an error, or the job reaches your plan's length limit, the seconds it used count. Nothing retries automatically.
What does MediaTofu cost?
Free: $0, 5 minutes of compute a month, jobs up to 1 minute, inputs up to 50 MB, 1 job at a time. Pay per use: $0.024 per compute minute, billed by the second, no monthly fee. Jobs up to 5 minutes, inputs up to 2 GB, 3 jobs at once. Starter: $9/month includes 600 minutes, then $0.015 a minute. Jobs up to 5 minutes, inputs up to 2 GB. Pro: $19/month includes 1,500 minutes, then $0.0127 a minute. Jobs up to 10 minutes, inputs up to 2 GB.