Deterministic PDF form filling

Fill any PDF form.
One API call.

Turn a row from your workflow into a perfectly filled, flattened PDF — native AcroForm or scanned paper — in milliseconds. Processed in Germany, deleted afterwards.

~64 ms / page100% placement on native formsHosted in Germany, GDPR-compliant

application_form.pdf

12 fields · 74 ms

Ready

Last name

Mustermann

acroform

First name

Erika

acroform

Street address

King Street 12

template

Insurance no.

K 123 456 789

ocr

Placement from the document itself — never guessed by a model.

Drops straight into

n8nMake.comcurl / HTTPRESTZapierWebhooks

The node your paperwork was waiting for

One HTTP call between “new row” and “send email.”

FormFill handles the part that used to be somebody’s Tuesday afternoon — no clicking, no typing.

Trigger

New application arrives

Webhook · POST

Data

Master data looked up

Postgres · SELECT

FormFill

The form gets filled

HTTP Request → /v1/fill

12 fields · 74 ms

Output

Filled PDF sent on

Send Email · attach

webhook → data → formfill → sent · nobody typed anything

1

Send the form

Upload the PDF or point us at a URL. Native AcroForm or a scanned paper form — both just work.

2

We register every field

Positions come from the document itself — widget rectangles, template boxes, OCR anchors. Never guessed.

3

Get the sheet back

A flattened PDF plus a JSON report: what was filled, from where, and how confidently — ready to route.

The whole integration

One request.
No SDK to babysit.

  • PDF in, filled PDF out. Flattened and ready to send — or take the JSON report alone.
  • Every field accounted for. Value, source, and a confidence score you can route reviews on.
  • Dynamic XFA refused loudly. A 422, never a silent wrong answer — while static XFA hybrids simply fill.
curl -s https://forms.baldin.io/v1/fill \
  -H "Authorization: Bearer $FORMFILL_KEY" \
  -F "document=@application_form.pdf" \
  -F 'values={"applicant_last_name":"Mustermann","applicant_first_name":"Erika"}'

Fine print, large type

Asked & answered.

Honesty is a feature. If something doesn’t work, we say so — loudly, with a status code.

Does it handle scanned paper forms?

Yes — that’s the party trick. Register the blank once; every incoming scan is aligned against it with computer-vision registration and filled. Paper-only forms included.

What about XFA forms?

Static XFA hybrids — LiveCycle forms with a real widget layer, which covers most government forms — are filled through their widgets and flattened. Dynamic XFA is refused loudly with a 422 — never silently wrong.

Where does my data go?

To our own servers in Germany (Hetzner, Nuremberg) — and nowhere else. No third-party AI clouds, no model training on your data, and uploaded documents and filled values are deleted automatically after 30 days at the latest. The details are in our privacy policy.

How does it plug into n8n or Make.com?

The dashboard writes the node for you — copy, paste, done. Anywhere else, it’s one curl.

Start filling forms in
five minutes.

Create an account, upload a form, and paste the node into n8n or Make. The first filled PDF is the demo.