This tool requires a publicly accessible PDF URL. If your file is stored locally or in memory, you can upload it to our temporary bucket first using the Get Signed Upload URL endpoint.
Request
Response
metadata object with compression details so you can see exactly how much the file size was reduced.
The compressed file is stored persistently and can be re-downloaded at any time from the dashboard logs.
Compression Levels
| Level | Quality | Best for |
|---|---|---|
low | Highest quality, least compression | Print-ready documents |
medium | Balanced quality and size | General use, email attachments |
high | Most compression, lower quality | Web viewing, maximum size reduction |
The
medium compression level is the default and works well for most use cases. Use low when you need to preserve maximum quality (e.g., print materials) and high when file size is the priority.Operation Tracking
Each compress operation creates a record in your dashboard logs, allowing you to:- View all past compress operations with their status and metadata
- Re-download compressed files at any time via the logs table
- Track usage across your team
Business and Scale plans: Compress operations are unlimited and do not count toward your PDF generation quota.Starter plans: Compress operations count toward your total volume quota.
Async Mode
By default, the request waits for the compression to complete before returning a response. If you setasync: true, the endpoint returns immediately with a requestId and statusUrl that you can use to poll for the result.
Async Response (200 OK)
Request Timeout (>30 seconds)
If the compression takes longer than 30 seconds, you’ll receive a202 Accepted response with a requestId and statusUrl to poll for the result:
Timeout (202 Accepted)
Parameters
A valid, publicly accessible URL pointing to the PDF file you want to
compress.
The compression intensity. Must be one of:
"low", "medium", or "high".
Default: "medium".The desired filename for the compressed PDF. Must end with
.pdf. If not
provided, the original filename from the URL will be used, or a random name
will be generated.Number of seconds that the generated signed URL will take to expire. Must be
between 60 (1 minute) and 604800 (7 days). Default: 3600 (1 hour).
If
true, the request returns immediately with a requestId and statusUrl
instead of waiting for the operation to complete. You can then poll the
Get Tool Status endpoint to check
when the result is ready.