docs/start/pricing and limits

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.

JobConversionsCost
report.docx to PDF1$0.02
slides.pdf to 12 PNGs1$0.02
a.pdf b.pdf c.pdf joined1$0.02
Three files, one by one3$0.06
A video that takes 8 minutes1$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-upAfter a top-upPlus
Jobs at once21020
File size100 MB500 MB2 GB
Uploads kept at once1 GB20 GB100 GB
Output files per job1001,0005,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

WhatLimit
Requests300 every 10 seconds for each project. Over it, rate_limited with HTTP 429 and Retry-After: 1.
Inputs per job5,000.
WaitingPrefer: wait holds a request for up to 60 seconds.
Event streams20 open at once for each project.
Upload in one request32 MiB. Larger files take upload instructions.
Kept files24 hours for uploads and outputs, unless ttl_s asks for less.
Metadata16 KB of JSON for each job.

Updated 3 November 2026