Free
$0
250 requests / mo
Hosted PDF API · MCP · n8n · Python
PDFops is a hosted API for deterministic PDF work: fill AcroForm fields, merge documents, list a form's fields, generate an invoice from JSON. Same input, byte-identical output, every time — no headless browser, no Lambda layer, no per-document render tax. Why I built it.
Three kinds of callers use it most, and each has a first-class path. Plain HTTP works from everything else.
npx -y pdfops-mcp
Claude Code, Claude Desktop, Cursor, any MCP client. Setup →
n8n-nodes-pdfops
Community node, verified by n8n. Walkthrough →
pip install pdfops
Zero dependencies, Python 3.9+; inspect, fill, merge, invoice. Guide →
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.