Skip to content

Add fact-checking to any n8n workflow.

Drop it in after an AI content step, before a send, or wherever a false claim would cause a problem. Verify (Deep) gives you a sourced verdict, score and citations back as structured JSON. Review Draft checks a whole draft in one step.

  • NodeCommunity registry
  • SetupLenz sign-in or API key
  • OperationsNineteen, in five groups
  • OutputStructured JSON

01What you can build

Anywhere content is generated, there’s a place to verify it.

Screen AI-written content before it publishes

Route by verdict to approve, revise, or escalate to your reviewers.

Verify claims before they feed downstream

Check what you extract from documents or web content before it reaches other systems or summaries.

Add a sourced step to content QA

Verify (Deep) returns the verdict, score and source URLs as structured fields, ready to branch on.

Queue low-confidence results for people

Send uncertain results to your reviewers, then continue automatically once they clear.

02Operations

Nineteen operations, each with its own JSON shape.

OperationTimeReturns
Claim · check something
Verify (Deep)~90 sstatus, passed, verdict, confidence, lenz_score, key_finding, executive_summary, citations, suggested_rewrite, verification_id. Detailed below.
Assess (Fast)~15 sstatus (ok | no_claim) and claims[], one entry per claim found, each with claim, verdict, confidence, passed and verification_url. No score, summary or citations.
Extract ClaimsfreeTakes a block of text, or a single public web page URL (http or https, nothing else in the field): Lenz reads the page, a Google Doc, a PDF (.pdf), a YouTube video’s transcript, or an image (.png, .jpg, .jpeg, .webp), up to its first 50,000 characters. Pages behind a login can’t be read. Returns the /extract response: claim, identified_claims and the rest of the public extract fields.
Verification · submitted and stored work
Get Status—The state of a submitted verification, by task_id, and its result once it completes.
Select Claims—Resolves a verification paused at needs_input: one verification per claim you pick, one item each.
Submit Batch—A batch of claims at once, without waiting: one item per task, each with its task_id.
Get—A stored verification, by verification_id.
Get Many—The verifications stored on your account, across all its keys.
List Related—Public verifications related to a given one.
Delete—Deletes one of your stored verifications.
Review · a whole draft, or its citations
Review Draft2–4 minChecks a whole draft (up to 50,000 characters, or one public web page, Google Doc, PDF, YouTube video, or image by URL) in one step: finds its claims, quick-checks each, deep-checks the doubtful ones and, with Suggest Edits on, returns the smallest edits that fix the draft. outcome (clean | issues_found | incomplete | unchecked), passed, issues[] and credits.charged.
Check Citations—Checks whether each cited source says what the text attributes to it, from a text with its links, DOIs or [n] markers, or from statement-source pairs you list. 1 credit per citation checked; a source that could not be read is refunded. citation_issues[], worst first.
Get Review—A review by review_id, for one that outlasted the wait.
Get Citation Check—A citation check by citecheck_id.
Ask · follow-up questions
Send—answer: a grounded reply about a completed Verify (Deep) result, addressed by its verification_id.
Get History—The stored conversation for a verification, and how many follow-up questions are left.
Reset History—Deletes the stored conversation for a verification.
Account
Get Usage—The /me/usage response: your credit balance and the price of each call.
Get Webhook Secret—For a connection made by signing in: webhook_secret, the secret Lenz signs that connection’s webhook deliveries with. Run it once before you set a Webhook URL.

Nodes saved before v0.1.10 keep the original flat list of five: Verify (Deep), Assess (Fast), Extract Claims, Ask Follow-Up (Send) and Check Usage (Get Usage).

03Verify (Deep) output

Branch on status. Then on passed.

  1. Check status firstOnly completed carries a verdict. needs_input, timeout and failed need their own path.
  2. Use passed to approve or escalateThe ready-made boolean. Add verdict or lenz_score for a finer threshold. When no public record settles the claim, verdict reads No Public Record and passed and lenz_score are null: an answer that is neither a pass nor a fail, and not a False. Route it to your reviewers.
  3. Send key_finding to peopleOne sentence, sized for Slack or email. executive_summary is the longer write-up; citations is an array of sources, each with a title and a url.
  4. Read suggested_rewrite before you use itThe claim with its wrong part corrected, written from the findings for a person to review. It is not verified itself, and it is empty when there is nothing to correct.
  5. Keep verification_idAsk → Send needs it, and it pulls the full reasoning trace from the API later: the node doesn’t carry the trace inline.

Verify (Deep) output · JSON

{
  "status": "completed",  // needs_input | timeout | failed
  "passed": true,  // True and Mostly True; null for No Public Record
  "verdict": "Mostly True",
  "lenz_score": 7,  // 1–10; null for No Public Record
  "confidence": "high",  // high | medium | low
  "key_finding": "…",
  "executive_summary": "…",
  "citations": [ { "title": "…", "url": "…" } ],
  "suggested_rewrite": "",  // not verified; empty when none
  "verification_id": "a1b2c3d4"
}
Empty inputEvery operation returns { "skipped": true, "reason": "empty_input" }, with no status field. Test skipped before branching.
ErrorsWith the node set to continue on fail, an error arrives as { "error": "…" } on the item.
TimingVerify polls for up to Max Wait (300 seconds by default) before returning status: "timeout" with the task_id; nothing is lost, and Get Status collects it later. Screen in bulk with Assess and save Verify for the claims that matter.

04Getting started

Three steps to a working node.

Create a free Lenz account

No credit card required.

Start free

Add the Lenz node

Search for Lenz in the n8n node panel and drag it into your workflow. It’s in the community nodes registry: no manual install.

Connect it and wire it

Create a credential, click Connect my account and sign in to Lenz (n8n 2.12.0 or later). On an older n8n, pick API Key and paste a lenz_… key instead. Then connect input and output.

Add fact-checking to your n8n workflow.

Self-serve from day one · free tier, no card