Rate Limits
The Developer API enforces rate limits to ensure fair usage and system stability.| Limit | Value | Description |
|---|---|---|
| Requests per minute | 100 | Maximum API requests per API key within a 60-second window |
| Concurrent render jobs | 5–50 | Maximum running jobs per organization (depends on plan, see below) |
| Max items per bulk job | 100 | Maximum documents in a single bulk render request |
| Max image upload size | 25 MB | Maximum file size for temporary image uploads |
| Max bulk file upload size | 10 MB | Maximum CSV/JSON file size for bulk render |
| Max tool file upload size | 50 MB | Maximum file size for tool file uploads |
429 Too Many Requests response:
Credit Costs
Each API operation consumes credits from your organization’s balance.| Operation | Credit Cost |
|---|---|
| Image upload | Free |
| Single render | 5 credits |
| Bulk render (per item) | 4 credits |
| Tool file upload | Free |
| Tool PDF action | 1 credit |
TTLs (Time-To-Live)
| Resource | TTL | Description |
|---|---|---|
| Temporary images | 24 hours | Images uploaded via /images endpoint |
| Render jobs | 1 hour | Job metadata and download availability |
| Download URLs | 1 hour | Pre-signed S3 URLs for file downloads |
| Tool files | 60 minutes | Files uploaded for PDF tools (input and output) |
Cleanup Schedule
The API runs automatic cleanup to remove expired resources:- Expired temporary images are deleted from storage (every 60 minutes)
- Completed render jobs older than 1 hour are removed (every 60 minutes)
- Expired tool files and completed tool jobs are removed (every 10 minutes)
- Associated files are permanently deleted
Concurrent Job Limits
The maximum number of concurrent render jobs depends on your subscription plan:| Plan | Concurrent Job Limit |
|---|---|
| Free | 5 |
| Pro | 50 |
| Team | 50 |
- Single render jobs (each counts as 1)
- Bulk render jobs (each counts as 1, regardless of item count)
Best Practices
Implement exponential backoff
Implement exponential backoff
When you receive a
429 response, wait before retrying. Start with 1 second and double the wait time for each subsequent retry, up to a maximum of 60 seconds.Download files promptly
Download files promptly
Download completed renders immediately after job completion. The 1-hour TTL is a hard limit — files are permanently deleted after expiration.
Monitor your credit balance
Monitor your credit balance
Check your credit balance before submitting large bulk jobs. Use the billing endpoints to verify sufficient credits are available.
Use webhooks for bulk jobs
Use webhooks for bulk jobs
Instead of polling, provide a
webhookUrl when creating bulk jobs to receive instant completion notifications.Batch efficiently
Batch efficiently
For bulk renders, group up to 100 items per job to minimize API calls while staying within limits.
Summary Table
| Category | Limit | Value |
|---|---|---|
| Rate Limit | Requests/minute | 100 |
| Rate Limit | Window duration | 60 seconds |
| Concurrency | Max parallel jobs | 5 (Free) · 50 (Pro/Team) |
| Bulk | Max items/job | 100 |
| Upload | Max image size | 25 MB |
| Upload | Max bulk file size | 10 MB |
| Upload | Max tool file size | 50 MB |
| TTL | Temporary images | 24 hours |
| TTL | Render jobs | 1 hour |
| TTL | Download URLs | 1 hour |
| TTL | Tool files | 60 minutes |
| Credits | Image upload | Free |
| Credits | Single render | 5 |
| Credits | Bulk render/item | 4 |
| Credits | Tool file upload | Free |
| Credits | Tool PDF action | 1 |
