Promvel
Privacy-first processing

Fill a PDFs

Use JSON, CSV, or TXT input to populate fields and generate a PDF.

Input field names must exactly match the PDF field names. To rename, replace, or overwrite fields, upload the document again in Edit and update the field setup there.

Workflow

  1. 1On Edit - verify field names
  2. 2Choose format
  3. 3Paste / upload data
  4. 4Generate filled PDF

Template preview

  • full_name█████
  • email█████
  • accept_terms☑ checkbox
  • contact_method◉ email ○ phone ○ sms

Field mapping

Field name Type Required
full_name text Yes
email text Yes
accept_terms boolean Yes
contact_method radio No
Example input - csv
Sheet: Sheet1 (first worksheet is used)
full_name | email | contact_method | accept_terms
Anna Kovacs | [email protected] | email | true
Mark Horvath | [email protected] | sms | true
[
  {
    "full_name": "Anna Kovacs",
    "email": "[email protected]",
    "contact_method": "email",
    "accept_terms": true
  },
  {
    "full_name": "Mark Horvath",
    "email": "[email protected]",
    "contact_method": "sms",
    "accept_terms": true
  }
]

How matching works

  • Each input key or column header must match a PDF field name.
  • Missing required fields return a validation error.
  • Unknown fields are ignored or rejected.
  • TXT must use strict key=value format.

Need to change fields?

/fill-pdf only supplies values. To rename, replace, or overwrite existing fields, use /edit-pdf">/edit-pdf to update the document and field configuration, then return here with matching keys.

Checkbox field accepted values

Checkbox inputs are normalized to boolean. These values are treated as checked:

  • true, yes, y, 1, checked, on
  • false, no, n, 0, unchecked, off are treated as unchecked
  • Values are matched case-insensitively and trimmed before validation

Radio field expected values

  • For contact_method, use one of: email, phone, sms
  • Unknown option values should return a validation error

Common errors

  • missing_required_field: full_name
  • invalid_json
  • missing_column: email
  • invalid_txt_line: line 3