Reference

n8n

The community node package — a webhook trigger with dynamic event dropdowns and signature verification, plus an action node for sessions and tools.

The n8n-nodes-thirdfactor-obsidian community package (repo: sdks/n8n/) adds two nodes to n8n — a good fit when you self-host your automation next to an on-prem or private-cloud deployment.

Install

In n8n: Settings → Community Nodes → Installn8n-nodes-thirdfactor-obsidian (once published to npm). From source:

cd sdks/n8n
npm install && npm run build
# then link/copy into your n8n custom-nodes directory, e.g.
#   ~/.n8n/custom/  →  npm install /path/to/thirdfactor-obsidian/sdks/n8n

Credentials

One credential type, ThirdFactor Obsidian API:

FieldValue
Base URLYour deployment's API origin, e.g. https://acme.thirdfactor.ai
API keyA tenant API key (sk_…) from Console → Settings → API keys

The credential test calls GET /v3/automation/me/. All requests send the key as X-API-Key.

Note

A failing credential test with a permissions error means the Connect feature isn't enabled for your account — it's switched on per account by the platform administrator.

Tip

n8n is often deployed inside the same network as an on-prem Obsidian. Webhook targets must pass the SSRF guard — for private/internal n8n URLs, have the deployment set WEBHOOK_ALLOWED_HOSTS (or WEBHOOK_ALLOW_PRIVATE) so the subscription's delivery target is accepted.

Trigger node — ThirdFactor Obsidian Trigger

A webhook trigger that manages its own Connect subscription (created with source: "n8n", so it shows up on the console Connect page):

  • Events — multi-select, loaded live from GET /v3/automation/events/ and grouped by category; pick one event or twenty.
  • Workflow filter — optional multi-select of your workflows.
  • Module filter — optional, for module.completed / aml.hit granularity.
  • Verify signature (default on) — checks the delivery's X-Webhook-Signature HMAC against the subscription secret (stored in the workflow's static data when the subscription is created), rejects tampered or stale (>5 min) deliveries with HTTP 401.

Activating the workflow subscribes; deactivating unsubscribes. If the subscription vanished server-side (deleted from the console), the node detects it on activation and re-subscribes cleanly.

Each delivery becomes one item whose JSON is the Connect envelope — route on {{ $json.event }} and read {{ $json.data.session.vendor_data }}, {{ $json.data.module.status }}, etc.

Action node — ThirdFactor Obsidian

ResourceOperations
SessionCreate (workflow dropdown, vendor data, contacts, expiry → returns the hosted url) · Get · Get Decision · Get Many · Add Tag
ToolsAML Check (name, DOB, nationality → matches)

Example workflows

  • Trigger (session.in_review) → Slack → Wait → HTTP Request: alert compliance, then poll GET /v3/session/{{id}}/decision/ for the final outcome.
  • Cron → Postgres → Session: Create → SMTP: nightly batch — create verification sessions for new signups and email each applicant their link.
  • Trigger (aml.hit) → IF (risk_level = high) → PagerDuty: page on high-risk watchlist matches only.
  • Trigger (module.completed, filter ID_VERIFICATION) → Code → Google Sheets: extract OCR'd document fields into a review sheet in real time.