Plans and limits
Compute, job length, file size and concurrency for each plan.
The table below is generated from the same plan data the API enforces.
| Free | Pay per use | Starter | Pro | |
|---|---|---|---|---|
| Price | Free | No monthly fee | $9 a month | $19 a month |
| Included compute | 5 minutes a month | None | 600 minutes a month | 1,500 minutes a month |
| Compute past that | Not available | $0.024 a minute | $0.015 a minute | $0.0127 a minute |
| Longest job | 1 minute | 5 minutes | 1 minute | 10 minutes |
| Largest input | 50 MB | 2 GB | 500 MB | 2 GB |
| Largest upload | 50 MB | 100 MB | 100 MB | 100 MB |
| Jobs at once | 1 | 3 | 2 | 5 |
| Webhooks | No | Yes | Yes | Yes |
| Outputs kept | 24 hours | 7 days | 7 days | 7 days |
Usage past your included compute is limited by a spending cap for each billing period. New accounts start at $25, and the cap rises to $250 after your first paid renewal.
What counts as compute
Compute is the time FFmpeg spends running your job, rounded up to a whole second, with a minimum of 1 second per job. Waiting in the queue and copying files in and out don't count.
A job that fails because of a problem on our side, an input we couldn't download, or an input over your size limit isn't charged. A job that runs and exits with an error, or that reaches your plan's job length limit, is charged for the compute it used. See Why a job fails.
What happens at a limit
| Limit | What you see |
|---|---|
| Included compute on Free | Requests return status 429 until the next calendar month or until you upgrade. |
| Included compute on paid plans | Usage continues and is billed at the per-minute rate above. |
| Spending cap | Requests return status 429 for the rest of the billing period. |
| Longest job | The job is stopped and fails with Stopped at your plan's <n> second limit. |
| Largest input | The job fails with Input is larger than your plan allows. |
| Jobs at once | Requests return status 429 until a running job finishes. |
Free periods are calendar months in UTC. Paid periods follow your billing date.
Checking usage
GET /v1/usage shows your usage this period and your plan's limits. The values below are examples.
curl "https://api.mediatofu.com/v1/usage" \
-H "Authorization: Bearer $MEDIATOFU_API_KEY"{
"plan": "starter",
"period_start": "2026-01-01T00:00:00Z",
"commands_used": 42,
"compute_seconds_used": 1284,
"compute_seconds_included": 36000,
"running": 1,
"usage_charge_usd": 0,
"spend_cap_usd": 25,
"limits": {
"max_seconds_per_job": 60,
"max_input_bytes": 524288000,
"concurrent_jobs": 2,
"webhooks": true
}
}spend_cap_usd is absent on Free, which has no billed usage. running is the number of jobs queued or running right now.
The Free tier stops at its included compute rather than billing you. Plans change from the dashboard at app.mediatofu.com, under Billing.