n8n-nodes-openqr
An n8n community node for OpenQR — generate QR codes and manage dynamic (editable) QR codes with scan analytics, straight from your workflows.
OpenQR is a free, open-source QR generator with a paid dynamic-code / API / MCP layer. This node wraps the public REST API so you can mint codes, re-point them, batch-create them, and pull scan analytics without writing HTTP nodes by hand.
Installation
From the n8n UI (recommended)
- Go to Settings → Community Nodes.
- Select Install.
- Enter
n8n-nodes-openqr and confirm.
Manually (self-hosted)
npm install n8n-nodes-openqr
Then restart n8n. (See the n8n community-node docs for details.)
Credentials
- Create a free OpenQR API key at https://openqr.uk/api (sign in with a magic link, then mint a key — it starts with
oqr_).
- In n8n, add a new OpenQR API credential and paste the key.
- The credential authenticates by sending
Authorization: Bearer <your key>. Its connection test hits GET /v1/dynamic, so a green test means the key works.
Leave Base URL as https://openqr.uk unless you're pointing at a self-hosted or staging instance.
Operations
QR Code
- Generate — render a static QR code (
POST /v1/qr) as SVG or PNG and write it to a binary property. Options: data (text/URL, max 2000 chars), format, size (64–2048), margin (0–16), foreground/background hex colours, and an optional saved theme.
Dynamic Code
A dynamic code is a re-pointable short link on oqr.to that you can encode once and edit forever.
- Create (
POST /v1/dynamic) — destination (public http(s) URL), optional label, optional theme.
- Create Many (
POST /v1/dynamic/bulk) — up to 200 codes at once, each with a destination and optional label, plus an optional theme applied to all.
- Get Many (
GET /v1/dynamic) — list your codes (limit 1–500, default 200).
- Update (
PATCH /v1/dynamic/{id}) — re-point (destination), rename (label), re-slug (slug), set tags, file under a folder_id, or restyle with a theme.
- Delete (
DELETE /v1/dynamic/{id}).
- Get Scans (
GET /v1/dynamic/{id}/scans) — scan totals plus by-country / by-device / by-referrer breakdowns over a days window (1–365, default 30).
Folder
- Create / Get Many / Rename / Delete (
/v1/folders). Deleting a folder un-files its codes; it doesn't delete them.
Theme
- Create / Get Many / Delete (
/v1/themes). Create takes a name and a style JSON object (fgColor, bgColor, dotType, gradient, logo, frame, margin, …).
Example: re-point a campaign QR
- OpenQR → Dynamic Code → Create with
destination: https://example.com/launch → encode short_url in your print run.
- Later, OpenQR → Dynamic Code → Update with the saved
Code ID and a new destination. The printed QR now points somewhere new — no reprint.
- OpenQR → Dynamic Code → Get Scans to chart engagement.
Compatibility
Built against n8n-workflow 2.x using the declarative routing API. Requires Node.js ≥ 20.15 (the n8n baseline).
Development
npm install
npm run build
npm run lint
Publishing
This package is published to npm as n8n-nodes-openqr. Publishing requires Sam's npm token (npm login / NPM_TOKEN) — the agent does not publish. To release:
npm version <patch|minor|major>
npm publish --access public
License
MIT — the same license as OpenQR. See LICENSE.