Limits
Every limit that applies to the API, in one place.
Conversion endpoints
/quickjob | /longjob | /bulkjob | |
|---|---|---|---|
| Mode | Synchronous, returns the PDF | Asynchronous, one document | Asynchronous, many documents |
| Input types | html, markdown, image, url | html, markdown | html or markdown bundles |
| Pages per PDF | 25 | 100 | 100 |
| Pages per job | 25 | 100 | 200 across all files |
| Request timeout | 30 seconds | Returns immediately after the page check | Returns immediately |
| Content size | 5 MB | 5 MB | See bulk limits below |
If a PDF exceeds the page limit the request fails with PAGE_LIMIT_EXCEEDED rather than being truncated.
Images
| Limit | Value |
|---|---|
| Formats | PNG and JPEG |
| Images per request | 25 (each image becomes one page, so the page limit applies) |
| Size per image | 5 MB |
| Total upload | About 4.5 MB of image data per request (request bodies are capped at 6 MB and uploads are base64-encoded on the way in) |
| Dimensions | 10,000 × 10,000 pixels |
Images that fail validation are skipped; if at least one image is usable the PDF is still produced, and X-PDF-Pages tells you how many were included.
URL input
| Limit | Value |
|---|---|
| Scheme | https:// only |
| Reachability | Must be public; private and internal addresses are rejected |
| Response time | 10 seconds |
| Response size | 5 MB |
| Redirects | 5 |
| Content types | HTML, Markdown, PNG, JPEG |
The page is fetched and converted from its returned content, so references that rely on the original location may not resolve.
Bulk conversion
| Limit | Value |
|---|---|
| Bundle types | html (.html, .htm), markdown (.md, .markdown) |
| ZIP upload | 50 MB |
| Inline upload (multipart or base64) | 4 MB of files |
| Uncompressed archive | 300 MB, up to 1000 entries |
| Convertible file size | 10 MB each |
| Files per job | 200 |
| Pages per job | 200 |
| Active bulk jobs per account | 2 |
Mail merge
| Limit | Value |
|---|---|
| Rows per campaign | 100, or up to 10,000 on request |
| Recipient list | 10 MB uploaded, 5 MB inline, 200 columns |
| Attachment | One PDF per email, up to 10 MB and the quick-job page limit |
| Campaigns sending at once | 1 per account |
| Sender connections | 3 per account |
| Test emails | 10 per sender per hour, 5 per campaign |
| SMTP ports | 465, 587, 2525 (port 25 is blocked) |
| Speed | About 100 emails a minute per parallel connection, depending on your mail server (1–4 per sender) |
Your own mail provider's limits apply too; see the mail merge guide.
PDF merge and split
Instant (/pdf/merge, /pdf/split) | Background job (/pdf/jobs) | |
|---|---|---|
| Upload size | 4 MB in total | 150 MB per file, 150 MB in total |
| Files in a merge | 20 | 100 |
| Pages processed | 500 | 5000 |
| Files from one split | 100 | 500 |
| Total output size | 300 MB | 1 GB |
| Time limit | 25 seconds | 15 minutes |
| Active jobs per account | — | 2 |
| Output retention | 7 days | 7 days |
| Uploaded files kept | — | Until the job finishes, at most 1 day |
PDF protect and unlock
One PDF per request, and always one request: there is no background job.
/pdf/protect, /pdf/unlock | |
|---|---|
| PDF sent in the request | 4 MB |
PDF uploaded first (source_key) | 150 MB |
| Pages | 5000 |
| Size of the result | 200 MB |
| Password length | 127 bytes |
| Time limit | 25 seconds |
| Output retention | 7 days |
PDF editor
The editor works on one document at a time, page by page. Everything is applied in a single save, so a save costs one operation however many changes it carries.
/pdf/edit | |
|---|---|
| Pages in one document | 200 |
| Document size | 150 MB |
| Size of a saved document | 200 MB |
| Changes in one save | 200 |
| Time limit | 25 seconds |
| Output retention | 7 days |
A document longer than 200 pages is refused when you open it. Split it first with
/pdf/split and edit the parts.
Checking what a set of changes would do (/pdf/edit/preflight) is
free and is not counted as an operation.
Output and retention
| Value | |
|---|---|
| Generated files kept | 30 days (merge and split outputs: 7 days) |
| Download link validity | 1 hour, reissue with GET /jobs/{job_id}/download |
| Job records | Kept indefinitely |
| Webhook delivery history | Kept indefinitely |
Webhooks
| Limit | Value |
|---|---|
| Webhooks per account | 5 on the standard plan (your plan's max_webhooks) |
| Delivery attempts | 4 (initial attempt plus 3 retries) |
| Retry delays | 1s, 2s, 4s |
| Request timeout | 10 seconds |
Rate limits
The standard paid plan has no per-account rate limit. Two limits still apply:
- The platform throttles very high request rates and returns
429 Too Many Requests. - Bulk conversion allows 2 active jobs per account, and merge/split allows another 2.
- Mail merge allows 1 campaign sending at a time.
Plans that define rate_limit_per_minute return 403 RATE_LIMIT_EXCEEDED when exceeded, with a retry_after value in the error details.
Credits
PDFs are charged per successfully generated document at your plan's price, from your monthly subscription allowance first, then free credits, then one-off credits. Failed and skipped files are not charged. Requests are rejected with 403 INSUFFICIENT_CREDITS when those together cannot cover the work — for bulk jobs, the whole archive is checked before any rendering starts.
Next Steps
- Error handling — every error code and what to do about it
- Bulk conversion guide
- Mail merge guide