What this does
n8n is an automation tool you can self-host. With its HTTP Request node, a workflow can send content to Snapy, receive a link, and use it in the next node. The Snapy publish endpoint is open and free, so there is no custom node, credential, or key to configure. The built-in HTTP Request node does everything.
How to set it up
- Add an HTTP Request node.
- Method: POST.
- URL:
https://api.snapy.host/api/publish. - Body content type: JSON, with:
{ "content": "={{ $json.html }}", "name": "optional-name", "filename": "index.html" } - Run it. The response contains
url, which you can reference in later nodes as{{ $json.url }}.
The response also returns stats_url (a private analytics page) and token (for managing the link). Reference them the same way, as {{ $json.stats_url }} and {{ $json.token }}. Leave name out for a random address.
Example workflow
A clear pattern is new file in Google Drive, publish to Snapy, post link to Slack:
- Google Drive Trigger fires on a new file in a chosen folder.
- HTTP Request POSTs to
https://api.snapy.host/api/publish, mapping the file text intocontent. For a binary file like a PDF, base64 encode it first and send it ascontent_base64with afilename. - Slack node posts a message containing
={{ $json.url }}from the HTTP Request node.
Each new file becomes a live link in your channel automatically.
Other workflows that follow the same shape:
- A workflow watches a webhook, turns each payload into a page, publishes it, and writes the returned link into a database.
- A scheduled workflow builds a nightly report as HTML, publishes it, and emails the fresh link.
- A new row in a database becomes a hosted one-pager whose link is sent onward.
Common uses
- Self-hosted pipelines that publish reports, summaries, or dashboards as links.
- Turning incoming webhooks and records into shareable pages.
- Sharing files from storage as clean URLs.
- Writing a hosted link back into a database or sending it to chat and email.
Snapy serves static files. Self-contained HTML and documents work well, while anything needing a live server or database is out of scope.
Troubleshooting
- No
urlin the next node. Confirm the body content type is JSON and that the expression filledcontentwith real data. An emptycontentproduces no page. - Expression not resolving. Make sure the field starts with
=so n8n evaluates it, for example={{ $json.html }}. - Binary file is broken. A PDF or image cannot go into
contentas text. Base64 encode it and sendcontent_base64with a matchingfilename. - Name already taken. Choose a different
name, or omit it for a random address.
Using the link downstream
The HTTP Request node returns JSON, so later nodes can read ={{ $json.url }}, ={{ $json.stats_url }}, and ={{ $json.token }} directly. Drop url into a Slack, Gmail, or Set node, write it to a Postgres or Airtable node, or return it from a Respond to Webhook node so a caller gets the link back instantly. Store token if a later workflow needs to manage the link. Passing the same name on every run keeps the address stable, which is handy when a downstream system expects a fixed URL.
Common patterns
- Trigger driven: a file, webhook, or new record kicks off the workflow, which publishes and forwards the link.
- Scheduled: a cron node builds a report on an interval, publishes it, and sends the link onward.
- Mid-workflow: an existing workflow adds one HTTP Request node to turn generated HTML into a link before the next step.
Because n8n is often self-hosted, the same workflow runs identically on n8n cloud or your own server, with no extra credentials for Snapy in either case.
Good to know
- Free, no account, no API key.
- The same pattern works in Zapier and Make, and you can browse all integrations.
Full reference is in the developer docs. One HTTP Request node turns any workflow output into a link.
