The node configuration
Everything happens in one standard HTTP Request node — no community node to install and no self-hosting requirement.
- Method — POST
- URL —
https://api.filecook.com/render/pdf - Authentication — Header Auth,
Authorization: Bearer YOUR_API_KEY - Body — JSON, with
htmlbuilt from an expression - Response — set the format to File so the PDF arrives as binary data
Why not a Code node
The usual n8n answer is to install Puppeteer and drive it from a Code node. That works on self-hosted n8n and not at all on n8n Cloud, it inflates your container, and it puts a Chromium process inside the same runtime as your workflows. An HTTP call has none of those properties and behaves identically on both.
Workflows this unlocks
Once the PDF is binary data in the workflow, every downstream n8n node can consume it — Gmail, Slack, S3, Google Drive, or an FTP upload.
- Invoice on payment. Stripe webhook → build HTML → render → attach to a Gmail node
- Scheduled reports. Cron → query the database → render → post to Slack
- Certificates on completion. Form submission → render → email the participant
- Archival snapshots. Daily URL render → upload to S3 with a dated key
Zapier and Make
The same approach works anywhere with a generic webhook or HTTP action. In Zapier use a Webhooks by Zapier POST step; in Make use the HTTP module with "Get a file" as the response type. There is nothing n8n-specific about the API.
