Start
Pricing and limits
You pay for conversions from a balance. The plan sets how many jobs run at once and how large files can be.
What a job costs
A conversion costs $0.02 and includes five minutes of work. Each minute past that costs $0.01.
A job counts the smaller of its number of inputs and its number of outputs. A PDF made into 12 page pictures is one conversion, and so are three files joined into one. Three files converted one by one are three.
A job that fails or that you cancel costs nothing if it ran for less than a minute. If it ran for a minute or more, it costs $0.02, however many files it had.
| Job | Conversions | Cost |
|---|---|---|
report.docx to PDF | 1 | $0.02 |
slides.pdf to 12 PNGs | 1 | $0.02 |
a.pdf b.pdf c.pdf joined | 1 | $0.02 |
| Three files, one by one | 3 | $0.06 |
| A video that takes 8 minutes | 1 | $0.05 |
Balance
A new account gets $2 of conversions, good for 90 days. Top up from $10 to $5,000 at a time on the billing page of the dashboard. A top-up never expires.
Each job sets aside what it can cost when it starts and settles when it ends. When the balance cannot cover it, the request fails with insufficient_balance, HTTP 402 or exit code 5, and the message has the cost, the balance and the link to top up.
An owner can also give a project a monthly spend limit on its settings page. A job that would take the project past it fails the same way, and the message has what the project spent and the link to raise the limit. The month starts on the 1st in UTC.
Plus, coming soon, is $30 a month for $30 of conversions, with the higher limits below. See pricing.
Plan limits
The limits rise after your first top-up. They hold for the whole organization.
| Before a top-up | After a top-up | Plus | |
|---|---|---|---|
| Jobs at once | 2 | 10 | 20 |
| File size | 100 MB | 500 MB | 2 GB |
| Uploads kept at once | 1 GB | 20 GB | 100 GB |
| Output files per job | 100 | 1,000 | 5,000 |
Past a limit a job fails before it runs: concurrency_limit for jobs at once, too_large for a file or for too many outputs, and storage_limit for uploads. cv waits and tries again within --wait when too many jobs are running. Delete uploads you no longer need to make room.
Request limits
| What | Limit |
|---|---|
| Requests | 300 every 10 seconds for each project. Over it, rate_limited with HTTP 429 and Retry-After: 1. |
| Inputs per job | 5,000. |
| Waiting | Prefer: wait holds a request for up to 60 seconds. |
| Event streams | 20 open at once for each project. |
| Upload in one request | 32 MiB. Larger files take upload instructions. |
| Kept files | 24 hours for uploads and outputs, unless ttl_s asks for less. |
| Metadata | 16 KB of JSON for each job. |
Updated 3 November 2026