Overview
The same engine that fills PDFs in the FillWise extension and in your account is available as an HTTP endpoint. You send a PDF and the source data, FillWise matches the data to the form and returns the completed PDF. No template to build, no field map to maintain: the first form works the same as the hundredth.
It is built for the boring part of document pipelines. A CRM record that has to become a visa application. A client intake form that has to become an insurance PDF. A batch of onboarding packets that all take the same twelve values. Instead of hand-mapping every field name, you pass the data as plain text and let the engine read the form.
Key Capabilities
| Capability | What it means for you |
|---|---|
| One endpoint | POST /api/v1/pdf/fill with the PDF and your data, the filled PDF comes back in the same response |
| Any input format | Plain text in any language, a CRM export, an email, or up to four attached documents the AI reads (photos, scans, PDFs) |
| Interactive and flat PDFs | Real form fields are filled through the fields. Flat forms get values drawn at the label positions. The response says which |
| Page selection | Fill only pages 1 to 3 of a long packet with the pages parameter |
| Keys in your account | Create, name and revoke keys yourself. Up to five active keys per account |
| Same balance | Every successful fill spends one auto-fill from your plan, nothing to set up separately |
How It Works
- Create a key at fillwise.ai/account, section API keys. It is shown once, so copy it right away.
- Send the request. Base64-encode the PDF, put the source data in
data, add the key asAuthorization: Bearer <key>. - Save the result. The response carries the completed PDF as base64 plus
filled_countandmode. Decode and store it.
curl -sS https://fillwise.ai/api/v1/pdf/fill \
-H "Authorization: Bearer $FILLWISE_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"pdf\": \"$(base64 -w0 application.pdf)\",
\"data\": \"Maria Petrova, born 14.03.1992 in Riga, Latvian, passport LV4482913 valid until 05.02.2031\"
}"
A 200 response looks like this:
{
"success": true,
"filled_count": 26,
"mode": "acroform",
"pdf": "<base64 of the filled PDF>"
}
Full field reference, error codes and Python and Node examples are in the PDF form API guide.
Use Cases
| Who | What they automate |
|---|---|
| Travel and visa agencies | Applicant data from the booking system into embassy and visa center PDFs |
| Insurance and finance | Client records into policy, claim and KYC forms |
| HR and staffing | Candidate details into onboarding and government packets |
| Legal | Intake data into court, immigration and compliance forms |
| Internal tools | Any workflow where the same data has to land in a PDF nobody wants to retype |
Limits and Honest Gaps
- PDF up to 20 MB, source text up to 60 000 characters, attachments up to 5 MB each and four per request.
- 20 requests per minute per account. Bigger batches: space them out or ask us.
- Scanned PDFs without a text layer are rejected with
422. XFA forms have no standard fields and usually come back with a lowfilled_count. - Review the output before you send it anywhere, especially when
modeisflat. The engine places values by reading the form, it does not know your business rules.