# Share an n8n Workflow's Output — One HTTP Request Node

Canonical: https://commareports.com/agents/share-n8n-output
Published: 2026-09-14

> n8n can build the report but not host it. Add an HTTP Request node that publishes the HTML, then send the URL to Slack or email instead of an attachment.

# Share what an n8n workflow produced

n8n is very good at assembling a report. Pull yesterday's rows, run them
through a Code node, template the HTML, and you have a clean daily summary.

Then you reach the last node and discover n8n does not host anything. The
options on offer are: email it as an attachment, drop it in Drive, or paste a
truncated version into Slack. All three are worse than the report you just
built.

## One HTTP Request node

Add an **HTTP Request** node at the end:

- **Method** — `POST`
- **URL** — `https://commareports.com/api/v1/reports`
- **Authentication** — Generic Credential → Header Auth, with `Authorization`
  set to `Bearer comma_sk_…` (create the token under
  [API tokens](/docs/api-tokens))
- **Body** — JSON:

```json
{
  "title": "Daily pipeline summary — {{ $now.format('yyyy-LL-dd') }}",
  "html": "{{ $json.html }}"
}
```

The response gives you `url` and `id`. Feed `url` into the Slack or Gmail node
and send a link:

> Daily pipeline summary is up: {{ $json.url }}

That message is three lines long, renders as a card, and opens as a page. The
attachment version is a file your finance lead will not double-click.

## Stop creating a new link every night

The first version of this workflow makes a fresh report per run, and after a
month the channel has thirty links, twenty-nine of which are wrong.

Store the id once — in a data table, a static workflow variable, wherever your
setup keeps state — and switch the node to `PATCH`:

`https://commareports.com/api/v1/reports/{{ $json.report_id }}`

Now the same address always shows today's numbers, and every comment anyone
left is still attached to it. If you would rather not own the schedule at all,
[routines](/docs/routines) run the job and update the report for you.

## The AI Agent node

If the report is written by n8n's AI Agent node rather than templated, give the
agent the publish call as a tool — an HTTP Request tool, or Comma's
[MCP endpoint](/mcp) — and instruct it to end with the URL. The run then
finishes with an address instead of a long string that has to pass through
every subsequent node.

## Worth knowing

- **Header Auth credential, not a hardcoded header.** The token stays in n8n's
  credential store rather than in the workflow JSON you export and share.
- **`reports:write` is the only scope a publisher needs** — see
  [scoped tokens for AI agents](/agents/scoped-tokens-for-ai-agents).
- **5 MB per report body.** Trim embedded base64 images before the node.
- **Reports render sandboxed**, so charts run without touching anything else.

## Try it

Free — unlimited reports, commenters and revisions.

**[Read the API reference →](/docs/api)**

### Related

- [Email an HTML report](/email-html-report) ·
  [Share an HTML report in Slack](/share-html-report-in-slack)
- [Publish from CI](/ci) · [Routines](/docs/routines)
- [Where should my agent post?](/agents/where-should-my-agent-post) ·
  [The API](/docs/api)
