OpenTree DashboardSign in

$ HTTP Request → a private link

Turn an n8n workflow's output into a private link

n8n workflows produce HTML all the time — a rendered report, a summary email's body, a generated dashboard. The last node usually emails it or drops it in storage. One more HTTP Request node turns it into a link instead, with a gate and an expiry you set from the same node.

There is no custom node to install

Publishing here is one HTTP call, so the built-in HTTP Request node is the whole integration — nothing to add from a community registry, nothing to keep in sync with our API. Point it at the publish endpoint and pass the HTML your earlier nodes produced.

The node configuration

Set the HTTP Request node to POST against the publish endpoint, JSON body, and map the HTML in from a previous node:

Method:  POST
URL:     https://read.botook.ai/v1/publish
Body:    JSON
  {
    "content": "{{ $json.html }}",
    "expires_in_hours": 168,
    "password": "optional"
  }

The response comes back with the shareable URL on {{ $json.url }}, ready to feed into the next node — an email, a Slack message, a database row.

With an API key, to keep and update it

The anonymous endpoint above is fine for throwaway output. To claim the site and rewrite it on the next run, add an Authorization header and keep the returned id:

Header:  Authorization: Bearer otr_live_YOUR_KEY
URL:     https://read.botook.ai/sites          (first run — returns an id)
URL:     https://read.botook.ai/sites/{{ $json.id }}   (later runs — PUT, same link)

A nightly workflow that regenerates a report can PUT the same site id every run, so the address you circulated once always shows last night's numbers.

A scheduled report, end to end

  1. A Schedule trigger fires nightly.
  2. Your data nodes build the numbers and render them to a single HTML string.
  3. An HTTP Request node publishes it — first run creates the site, later runs PUT the same id.
  4. A gate node is optional: pass password or set an email-domain gate via PATCH /sites/:id.
  5. A final node sends the link — the reader opens it with no account.

What travels and what does not

The same boundary as everywhere else: publish a document, not an application. A self-contained HTML report rendered inside the workflow travels intact. A page that still calls a service on your private network does not — render the view first, then publish the render.

Questions

Is there an official n8n community node?

You do not need one — the standard HTTP Request node covers publish, update and gating. If a wrapper node appears it is convenience over the same HTTP calls shown here.

How do I keep the link stable across runs?

Store the id from the first publish (n8n static data or a database), then PUT to /sites/{id} on every later run. The token never changes.

Can the workflow publish without a key?

Yes — POST /v1/publish is anonymous and rate-limited, and the link is short-lived by default. Add a key when the output needs to outlive a day or be updated in place.

Keep reading