Plans and limits
Quota is counted in jobs per calendar month, not in minutes of video. One API call that creates a job costs one job, whatever the source length and however many renditions the preset produces.
Plans
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Price | $0 | $9.99 per month | $29.99 per month | By agreement |
| Jobs per month | 10 | 100 | 1,000 | By agreement |
| Longest source | 10 minutes | 60 minutes | 180 minutes | 480 minutes |
| Presets | 7 | 13 | 19 | 23 |
| Download link valid for | 4 hours | 7 days | 7 days | 7 days |
| Webhooks | Yes | Yes | Yes | Yes |
Free needs no card. Paid plans are billed through Paddle and can be cancelled at any time; access continues to the end of the period you have paid for.
Enterprise is not a self-service plan. Contact us to arrange one.
What each limit means
Jobs per month. The slot is claimed when the job is created, before any work happens. That is what stops two simultaneous requests from both slipping past the limit. The counter resets at the start of the calendar month.
A slot is returned only when the job could not be queued at all. It is not returned when a job fails during processing or when you cancel it. A job that fails because the source was unreachable still costs you a job.
Exhausting the quota returns 429:
{
"error": "Usage limit exceeded",
"message": "Monthly limit of 10 jobs reached",
"usage": { "current": 10, "limit": 10, "plan": "Free" }
}Longest source. Measured by the worker after it downloads the file, not at
creation time. A source over the limit fails with DURATION_EXCEEDED, is not
retried, and consumes a job. Check duration on your side before submitting if
your users upload arbitrary files.
Presets. Plans are cumulative: Pro includes everything Free has, Business
includes everything Pro has. Requesting a preset above your plan returns 403
naming both the presets you can use and the plan you would need. The
preset catalogue marks the plan for each one.
Download link lifetime. Links are signed fresh every time you read a job, so an expired link is never a problem: read the job again. Seven days is a hard ceiling in the storage signer, so no link lasts longer on any plan.
Storage retention is not currently enforced. Deletion by plan is planned but not switched on, so output is not being removed on a schedule today. Build against the link lifetime, not against an assumption that the file will still be there next month, and copy anything you need to keep to your own storage. See Downloading output.
Timeline editing limits
EDL jobs have their own limits, checked at validation time.
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Clips | 5 | 20 | 100 | 1,000 |
| Distinct source files | 5 | 20 | 100 | 500 |
| Timeline duration | 10 minutes | 30 minutes | 120 minutes | 600 minutes |
| Tracks | 2 | 5 | 20 | 50 |
An EDL job counts as one job regardless of how many clips it has. Validating a
timeline with PUT /api/v1/edl costs nothing and does not touch your quota, so
validate before creating whenever a user built the timeline.
Limits that do not exist
Some things you might expect to be limited are not.
- No request rate limit. There is no per-second or per-minute throttle. The only limit is the monthly job quota.
- No per-account concurrency limit. Jobs queue rather than being rejected. The service processes two jobs at a time across all accounts, so a large batch will wait.
- No overage billing. Exceeding the quota refuses new jobs; it never produces a surprise charge.
- No storage quota. There is no size allowance on stored output.
Changing plan
Upgrades take effect immediately, including access to the presets the new plan unlocks. Your monthly counter is not reset by an upgrade; the limit it is compared against changes.
Cancelling keeps you on the paid plan until the end of the period you have paid for, after which the account returns to Free. Jobs already created are not affected, but the lifetime of a download link follows your plan at the time you ask for the link, so links signed after a downgrade last 4 hours.
Checking your usage
The job creation response tells you where you stand, so you rarely need a separate call.
{
"user": {
"remainingJobs": 97,
"plan": "Indie/Pro"
}
}Plan display names differ from the identifiers used elsewhere in the API. Free
is displayed as Starter and Pro as Indie/Pro, while yourPlan in a 403
body and userPlan in the presets response use free, pro, business and
enterprise.