SnapPDF + n8n
Self-hosted automation with full SnapPDF node support as of n8n 1.52.
n8n is the open-source automation platform of choice when you need to keep data on infrastructure you own. The SnapPDF node (shipped in n8n core since 1.52, April 2026) wraps every v1 endpoint with TypeScript-typed inputs. Run n8n in Docker on a VPS, keep customer PDFs inside your VPC, and call SnapPDF only for the compute-heavy operations — or call it for everything and use n8n purely as orchestration glue.
What you can build
- Native node with typed parameters for all 15 operations.
- Credential store encrypts your SnapPDF key at rest (fernet on self-host).
- n8n Expressions let you transform SnapPDF output with JavaScript inline.
- Works in parallel with any other n8n node — S3, Postgres, HTTP Request, RabbitMQ, etc.
- The community fork also ships a lower-level "SnapPDF HTTP" node for bleeding-edge endpoints.
Setup
- 01Install or upgrade n8n to 1.52+Docker: `docker pull n8nio/n8n:latest`. npm: `npm i -g n8n@latest`. The SnapPDF node is bundled in core — no extra package needed.
- 02Add a SnapPDF credentialn8n UI → Credentials → New → search "SnapPDF API". Paste the `sk_live_…` key. Hit "Test" — n8n pings /api/v1/health with the key and reports success.
- 03Create a new workflowWorkflow → New. Add your trigger (Webhook, Cron, Email, etc.).
- 04Add the SnapPDF nodeClick + → search "SnapPDF" → select. Pick the credential and the operation.
- 05Bind inputs via expressionsUse the `={{ $json.file }}` expression syntax to reference earlier nodes. File inputs accept URLs, base64, or binary data from the previous node (n8n auto-converts).
- 06Handle errors explicitlySet the "On Error" mode to "Continue (using error output)". Route the error branch to a Slack notifier or DLQ.
- 07Activate the workflowFlip the toggle. n8n runs it on its schedule or on webhook hit.
- 08Monitor in execution logEvery run shows the SnapPDF request + response JSON. Save executions for debugging.
Code example
Webhook → OCR incoming scanned invoices → extract vendor + amount → append to Postgres.
{
"nodes": [
{
"parameters": { "path": "scan-inbox", "method": "POST" },
"name": "Webhook",
"type": "n8n-nodes-base.webhook"
},
{
"parameters": {
"resource": "pdf",
"operation": "ocr",
"fileSource": "url",
"fileUrl": "={{ $json.pdf_url }}",
"searchablePdf": true,
"languages": ["eng"]
},
"name": "SnapPDF OCR",
"type": "n8n-nodes-base.snappdf",
"credentials": { "snappdfApi": "SnapPDF Prod" }
},
{
"parameters": {
"resource": "pdf",
"operation": "extractText",
"fileSource": "binary",
"binaryProperty": "pdf"
},
"name": "SnapPDF Extract Text",
"type": "n8n-nodes-base.snappdf"
},
{
"parameters": {
"functionCode": "const text = $input.item.json.text;\nconst vendor = text.match(/Bill to: (.+)/)?.[1];\nconst amount = text.match(/Total: \\$(\\d+\\.\\d{2})/)?.[1];\nreturn { json: { vendor, amount } };"
},
"name": "Parse",
"type": "n8n-nodes-base.function"
},
{
"parameters": {
"table": "scanned_invoices",
"columns": "vendor,amount,received_at"
},
"name": "Postgres",
"type": "n8n-nodes-base.postgres"
}
]
}Known limits
- · Binary mode must be "filesystem" for files > 16MB on community edition.
- · Cloud n8n enforces a 5-minute execution timeout — use async for large OCR.
Pricing notes
n8n itself is free self-hosted or paid cloud. SnapPDF counts each node execution as one API op against your key.
Available from the Free plan.
FAQ
Can I run n8n on-prem and still use SnapPDF?
Yes. The SnapPDF node makes HTTPS calls to api.snappdf.dev from your n8n host. PDFs traverse that boundary; everything else stays on-prem.
What if I need an operation SnapPDF doesn't expose via the node yet?
Use n8n's built-in HTTP Request node with your SnapPDF key as a Bearer header. You can hit any v1 endpoint directly.
How does binary data flow between nodes?
n8n uses an internal "binary data" property on items. The SnapPDF node auto-reads and auto-writes this, so chaining Merge → Watermark → Compress is just three nodes with no manual conversion.
Is there a community version of the node?
The node ships in n8n core. The n8n community nodes repo also has an older "SnapPDF-light" node maintained by a community member; prefer the core version.
Performance tips?
Enable the "Split in Batches" node upstream when you're iterating large arrays — it prevents n8n from holding thousands of PDFs in memory. Also increase `N8N_DEFAULT_BINARY_DATA_MODE` to `filesystem` for big jobs.