Free
$0
250 requests / mo
Hosted PDF API · Edge runtime
I run several SaaS businesses, and kept hitting the same wall: every stack is on the edge, but every PDF library wants a backend. Invoices, filled forms, signed contracts, inspection reports, receipts — it never seems like it'll be a big problem, until I sit down to do it.
Hosted PDF APIs charge $0.05 to $0.20 per document and bill you for render time. Headless Chrome on Lambda works until it doesn't. So I built this once, as a hosted API, and made it self-serve so you can too: PDFops fills and merges real PDFs deterministically on the V8 edge — no headless browser, no Lambda layer, no per-document render tax.
Try it in your browser → Get a free API key
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
POST /api/fill-form (fill PDF form fields),
POST /api/merge (merge N PDFs into one),
POST /api/inspect (list a PDF's form fields),
POST /api/invoice (a complete invoice PDF from JSON),
POST /api/signup (self-serve API key),
GET /api/usage (quota check).
Prefer a UI? The free invoice
generator, field inspector, and
make-fillable editor run in
your browser. Prefer no code at all?
Email a blank form to
fill@pdfops.dev and get it back filled.
Zero friction. Copy, paste, run. 100 requests per IP per month are free with no key at all — grab a free API key (250/mo) on the pricing page when you outgrow that. No terminal handy? The playground, the free invoice generator, and the free field inspector run the same API from your browser.
No fillable PDF on hand?
Grab a sample invoice-template.pdf
— the field names match the curl below verbatim.
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
The fields JSON keys must match AcroForm field
names that already exist in your PDF —
customer_name and total in the
sample above. Bring a template with named form fields you
authored in Acrobat / Preview / LibreOffice, or use the
sample to see the round-trip first.
curl -X POST https://pdfops.dev/api/merge \
-F "pdf=@part1.pdf" \
-F "pdf=@part2.pdf" \
-F "pdf=@part3.pdf" \
-o merged.pdf
Full request/response schemas live in the docs. Calling from code? Per-language guides: fill a PDF in Python, in Node.js, or in JavaScript. For end-to-end patterns — invoices, contracts, reports — see the use cases.
The anonymous trial — 100 requests per IP per month, no signup — is what the playground and the curl above run on. Building for real? Pick a plan:
Free
$0
250 requests / mo
Indie Most popular
$16/mo
4K requests / mo
Pro
$79/mo
25K requests / mo
Enterprise
Custom
Volume · SLA
Coming from a different hosted PDF API? vs DocRaptor · vs PDFShift · vs PDFMonkey
Filling a government form? The form compatibility registry has tested field schemas and quirks for the W-9, W-4, 1040 and more.