diariz

n8n community node for Diariz meeting transcription: react to transcriptions and drive the full REST API.

Package Information

Released: this month
Downloads: 0 weekly / 0 monthly
Latest Version: 0.276.4
Author: Ken Hayward

Documentation

n8n-nodes-diariz

An n8n community node for Diariz, a self-hosted
meeting transcription platform with speaker diarization.

Two nodes and one credential:

Node What it does
Diariz Trigger Starts a workflow when something happens in Diariz. Registers its own webhook and verifies every delivery's signature.
Diariz Drives the Diariz REST API: recordings, transcripts, formulas, folders, search, action items, chat, and everything else.

Installation

In n8n, go to Settings > Community Nodes > Install and enter:

n8n-nodes-diariz

Self-hosted n8n only - community nodes cannot be installed on n8n Cloud. To pick up a newer version later,
use Settings > Community Nodes > n8n-nodes-diariz > Update, and restart n8n if a new option does not
appear.

The node's version number is the Diariz version it was built against - 0.169.1 here means Diariz
0.169.1 - so you can tell at a glance whether your node matches your server. It is published automatically
whenever the node changes.

Before you start

Two things must be switched on by whoever administers your Diariz server, in Settings:

Setting Needed for
API access Everything. Without it, no personal API token works at all.
Automations The Diariz Trigger only. Action nodes work without it.

Then create a token in Diariz under Settings > Developers:

  • Read-only tokens are enough for reading transcripts and searching. Every write operation is refused.
  • A token can carry an expiry date, which is worth setting for a token pasted into another tool.
  • The token is shown once. Copy it straight into the n8n credential.

Credential

Create a Diariz API credential with:

  • Base URL - your server, for example https://diariz.example.com
  • API Token - the dz_api_... token from above

Press Test. As well as checking the token, the test reports whether API access or Automations are turned
off on the server, so you find out now rather than at the first execution.

Diariz Trigger

Scope decides whose events you listen to. It is Personal unless you change it, so an existing
workflow behaves exactly as it did before.

Scope What it listens to Who can use it
Personal Events about your own recordings Any Diariz account
Platform (Administrator) Events across every user, routed by Workflow Signal, plus platform-only events such as Feedback Received A Platform Administrator

Pick one or more events:

Event Fires when
Recording Created A recording is uploaded or captured, before transcription
Recording Transcribed The transcript is ready, with speaker labels and timings
Transcription Failed A recording could not be transcribed
Summary Ready The AI summary is ready. The text rides along in the event.
Meeting Minutes Ready The minutes document is ready, and rides along in the event
Action Items Ready Action items were extracted from the transcript
Tags Ready Topic tags were generated
Formula Result Completed A formula finished and produced a document
Formula Result Failed A formula run failed

In Platform scope one more event is available:

Event Fires when
Feedback Received Someone submitted feedback through Provide Feedback in Diariz

Simplify (on by default) returns just the event's data. Turn it off to get the full envelope with the
event ID, type and timestamp.

Platform scope

A platform subscription fires across every user, so Diariz scopes it with Workflow Signals: choose
the signals this workflow routes on, and it receives only events carrying one of them. That is why the
Signal Filter is required, with one exception - Feedback Received carries no signal and always
fires, so a workflow listening only for feedback needs no signal at all.

Feedback Received is the reason the scope exists. Feedback is readable only by a Platform Administrator
in Diariz, so it is never available on a personal subscription; a personal one would hand one user another
user's words. The event carries who sent it, the page they were on and the release - enough to route it,
raise a ticket or post it to a channel.

Include Feedback Text adds what the person actually wrote. It is off by default and deliberately so:
the description is free text and may quote meeting content, so it only leaves Diariz when you ask for it.

Two things to know before you switch an existing trigger to Platform scope:

  • The credential must belong to a Platform Administrator. A normal account gets a 403 when the workflow
    is activated.
  • Changing Scope rebuilds the subscription, because personal and platform subscriptions are different
    objects at different endpoints. The node deletes the old one from where it was created, so nothing is
    left behind.

Include Attendee Contacts is Personal-scope only - the platform endpoint does not accept it.

How it works

Activating the workflow creates a subscription in Diariz pointing at this node's webhook URL, and stores the
signing secret Diariz returns. Deactivating deletes it again. You will see it in Diariz under
Settings > Automations, named after your workflow.

Every delivery is verified against that secret using the
Standard Webhooks signature scheme. An unsigned or tampered request is
rejected with a 401 and starts no execution.

Things worth knowing

  • Diariz allows 20 automations per user. Each active Diariz Trigger uses one, and clicking
    Listen for test event briefly registers a second, temporary one.
  • Failed deliveries are retried with a growing backoff over about 24 hours, so a workflow that was briefly
    down still receives its events. Watch Settings > Automations in Diariz for the delivery log.
  • If a workflow is not firing, check the delivery log there first - it records the HTTP status your n8n
    instance returned.

Diariz (action node)

Every published Diariz endpoint is available, grouped by resource. Several are given extra handling:

  • Dropdowns. Recording, folder, room, formula, speaker profile and meeting type fields list your actual
    records rather than asking for an ID.
  • Files. Transcript exports (text, Markdown, RTF, subtitles), audio, attachments and formula documents
    come back as binary data. Uploading a recording or attaching a file takes binary data from a previous node.
  • Return All / Limit on anything that returns a list.
  • Run a formula over a recording has Wait for Completion on by default. Diariz answers immediately
    with a document that is still generating, so the node polls until it is finished and returns the Markdown.
    Turn it off if a Diariz Trigger will pick up the completion event instead.
  • Ask a question consumes the chat stream and returns one finished answer, with any citations.
  • Custom API Call on every resource, for anything added to the API after this version was published.

Example: summarise a meeting and post it to Slack

  1. Diariz Trigger - event Recording Transcribed
  2. Diariz - resource Formula, operation Run a formula over a recording
    • Recording ID: {{ $json.recordingId }}
    • Formula: pick yours from the dropdown
    • Wait for Completion: on
  3. Slack - post {{ $json.text }}

Add a second trigger event, Summary Ready, if you would rather act on the summary that Diariz generates
automatically than run a formula of your own.

Compatibility

Requires Node.js 20.15 or newer, matching n8n's own requirement. Tested against Diariz 0.159 and later; the
AI-output trigger events (Summary Ready, Meeting Minutes Ready, Action Items Ready, Tags Ready) need 0.159 or
newer, and everything else works with 0.153 and newer. Platform scope and the Feedback Received event need
Diariz 0.177.0 or newer
- on an older server the subscription is rejected when the workflow is activated.

Development

This node lives in the Diariz repository under
integrations/n8n-nodes-diariz, so it stays in step with the API it wraps.

npm install
npm test      # unit tests
npm run lint  # n8n community node linter
npm run build

Publishing

Changing anything the package actually ships, on main, publishes it to npm
(.github/workflows/n8n-publish.yml) using the version in package.json - which mirrors the repository's
/version.json and is bumped by every pull request.

A version bump alone does not publish. Because the version mirrors the repository, package.json
changes on every merge, so it is excluded from the trigger; otherwise every merge would publish an
identical package under a new number. The job also skips when its version is already on npm, so it is safe
to re-run by hand from any commit - and workflow_dispatch will publish whatever is on main if you need
to force one out.

The long tail of operations is generated from Diariz's own OpenAPI document
(nodes/Diariz/generated/openapi.snapshot.json). Regenerate with npm run generate. Continuous integration
regenerates both the snapshot and the operations on every build and fails if either has drifted, so the node
cannot fall behind the API unnoticed.

Licence

MIT. The Diariz platform itself is AGPL-3.0.

Discussion