Developer API

Fill and parse PDFs with a simple API

Two REST endpoints: fill PDF form fields programmatically, and parse a PDF into structured JSON (fields, metadata, and text). Base URL https://fillable.ca.

Get a test API key

Free tier: 100 requests per day. Upgrade on the API plan for production volume.

Authentication

Send your key as a bearer token on every request:

Authorization: Bearer fk_live_your_key

The free/test tier allows 100 requests per day. Each response includes a remaining count. For production volume, subscribe to the API plan.

POST /api/v1/parse

Extract form fields, page count, metadata, and text from a PDF. Send the PDF as base64 in JSON, or as multipart form-data in a file field.

curl -X POST https://fillable.ca/api/v1/parse \
  -H "Authorization: Bearer fk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"pdf":"<base64-encoded-pdf>"}'

Response:

{
  "pageCount": 12,
  "title": "Client Intake Form",
  "fieldCount": 18,
  "fields": [
    { "name": "full_name", "type": "TextField", "value": "" },
    { "name": "agree", "type": "CheckBox", "value": false }
  ],
  "text": ["Page 1 text ...", "Page 2 text ..."],
  "remaining": 99
}

text is best-effort and may be null for scanned or image-only PDFs (OCR is on the roadmap).

POST /api/v1/fill

Fill a PDF’s form fields and get the completed PDF back as base64. Set flatten to true to lock the values into the page.

curl -X POST https://fillable.ca/api/v1/fill \
  -H "Authorization: Bearer fk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "pdf": "<base64-encoded-pdf>",
    "fields": { "full_name": "Jane Smith", "agree": true },
    "flatten": true
  }'

Response:

{
  "applied": ["full_name", "agree"],
  "skipped": [],
  "remaining": 98,
  "pdf": "<base64-encoded-filled-pdf>"
}

Errors

  • 401 missing or invalid API key
  • 429 daily limit reached
  • 400 bad request (missing pdf or fields)
  • 422 the PDF could not be processed

Notes

  • PDFs are processed in memory and are not stored.
  • Field names come from the PDF’s form. Use /parse first to discover them, then /fill.
  • Need higher limits, OCR, or a signed SLA? See the API plan.