Email as API
Fill a PDF by email
Attach a blank fillable PDF and your field values to an email, send it to fill@pdfops.dev, and the reply comes back with the filled PDF — plus the exact API call that produced it. No code, no signup, works from any mail client.
How it works
- Attach a blank fillable PDF — a template with AcroForm fields and nothing filled in yet. Not sure your PDF has fields? The free field inspector lists them in your browser.
- Add the field values — in the email body or as a
values.jsonattachment (formats below). - Send it to fill@pdfops.dev. The reply contains the filled PDF and the equivalent
curlcommand, so when you're ready to automate, the integration is copy-paste.
Sending the values
Whichever your mail client makes easiest — all three parse identically:
- Plain lines in the body, one per field:
customer_name: Acme Co total: $1,250.00 Check here: true - Raw JSON in the body:
{"customer_name": "Acme Co", "total": "$1,250.00"} - A
values.jsonattachment — same JSON, as a file. Handy when the values come out of another system.
Field names must match the template's AcroForm field names — they're often not what the visible labels say, which is exactly what the inspector is for. Add flatten: true as a value to bake the filled fields into the page content so the result is no longer editable — same as the API's flatten option.
Try it in 30 seconds
Grab the sample invoice-template.pdf (it has customer_name + total fields), attach it to an email with this body:
customer_name: Acme Co
total: $1,250.00
Send to fill@pdfops.dev. The filled invoice comes back in the reply.
Limits, and what happens to your PDF
- Blank templates only. PDFs that already contain data — pre-filled text, checked boxes — are refused. That's deliberate: attachment contents aren't stored or logged, and refusing filled-in forms means this address can never become the thing that forwards someone's data around by accident.
- 5 MB max per PDF. Larger files belong on the API directly.
- AcroForm fields required. A flat PDF with no form-field layer can't be filled — the reply will say so rather than guess. Verify first with the inspector.
- Evaluation volume, not production volume. For sustained use, get a free API key (250 requests/month, emailed, no card) and make the same call over HTTP.
From email to API
fill@pdfops.dev runs on the same /api/fill-form endpoint you'd call in production — deterministic output, no headless Chrome, built for edge runtimes. Every reply includes the equivalent call, which looks like this:
curl -X POST https://pdfops.dev/api/fill-form \
-F "pdf=@your-template.pdf" \
-F 'fields={"customer_name":"Acme Co","total":"$1,250.00"}' \
-o filled.pdf
When the template checks out by email, that one command is the whole integration. Language-specific walkthroughs: Python, Node.js, JavaScript.
FAQ
Is this really free?
Yes — no signup, no key, no card. It exists so you can see exactly what the API does before writing a line of code. Sustained production volume belongs on the API's own tiers.
Which PDFs work?
Blank fillable PDFs — AcroForm templates with nothing filled in yet — up to 5 MB. No fields at all? The reply says so and points you at the free inspector to check.
What happens to the PDF I send?
It's filled and sent back. Attachment contents aren't stored or logged, and PDFs that already contain data are refused outright.
Why email instead of an API call?
Email is the zero-install client everyone already has. It's the fastest way to check that a specific template fills correctly — from a phone, a locked-down work machine, or before deciding to integrate anything. The reply hands you the exact curl for the jump to code.
My PDF has no form fields — now what?
Most scanned or exported PDFs don't. Use the free make-fillable tool — draw the fields onto your PDF in the browser (nothing uploaded), download the fillable version, and that template works everywhere — by email and by API.