Quickstart

Getting started with PDFops

30 seconds to a working PDF API call. No auth, no signup.

PDFops is live. Here's how to make your first call in three lines of shell.

Fill a PDF form

Pull a PDF with form fields off your desktop and swap in the field-name JSON.

curl -X POST https://pdfops.dev/api/fill-form \
  -F "pdf=@invoice-template.pdf" \
  -F 'fields={"customer_name":"Acme Co","total":"$1,250.00"}' \
  -o filled.pdf

You get a filled PDF back. The fields JSON keys match the AcroForm field names in your template (in the example above, an invoice template with customer_name and total fields).

Merge PDFs

Any number of pdf form parts. They're concatenated in the order you pass them.

curl -X POST https://pdfops.dev/api/merge \
  -F "pdf=@cover.pdf" \
  -F "pdf=@body.pdf" \
  -F "pdf=@appendix.pdf" \
  -o combined.pdf

Limits

100 requests per IP per month during beta. No signup, no auth. Hit the cap and you'll get a 429 Too Many Requests response with a Retry-After header set to the seconds until the next calendar month rolls (UTC).

If 100/mo is going to be the wrong number for you, join the waitlist — keys with 1,000–10,000/mo are coming, free during beta, and the form is how I'm prioritizing which endpoints ship next.

What's coming

The two endpoints above are what's live today. Next on the list:

Vote on the waitlist form for which one matters most for your use case. The waitlist is the only thing prioritizing what ships next.

Why this exists

The longer story is in Why I built PDFops — short version: every SaaS I've shipped eventually needs PDFs, the existing options either cost too much at scale or assume a backend stack I don't use, and I got tired of solving it from scratch every time.