Skip to content

Use caseFor AI product teams

Check AI-generated content before it ships or publishes.

A fact-checking API for AI-generated content: a chatbot’s answer, a summary, an article your pipeline publishes. It checks the factual statements against independent public sources, not against the model that produced them, and returns structured results. It checks public sources, not your own documents.

Your model’s answer“Python 3.12 was released on 2 October 2023. It removed the distutils package from the standard library. On the official benchmark suite it runs about 20% faster than Python 3.11.”

What Lenz found

Two of the three statements hold. One does not.

FalsePython 3.12 averages roughly 4–5% faster than Python 3.11.

A model states a wrong figure as plainly as a right one. Lenz checks each statement against public sources the model never saw, so your code can hold the answer before a customer reads it.

  • Independent public sourcesnot the model that produced the text
  • Structured resultsverdict, score, sources, reasoning
  • Warranted verdictson qualifying checks, on Pro and Scale

01Example

Three statements. One of them is wrong.

Full verification · Checked 7 September 2026.

Open a row for the sources it used and the reasoning that weighed them.

A full verification returns the fields your code branches on — verdict, confidence, lenz_score, key_finding and sources — so the routing decision is yours to make in code: publish, hold, or send it to your reviewers.

02How it checks

Hallucination detection against public sources.

  1. Text a model wrote goes in

    An answer, a summary, an article: send Lenz the whole text. It pulls out the factual statements.

  2. Each statement is checked against public sources

    Models from multiple vendors check each one. On a full verification, models argue for and against each statement, three reviewers assess it, and the result ships with the trace.

  3. The check sits outside the model

    A model grading its own output is not an outside check. Lenz sits outside the model vendor and outside your own team, and the evidence it cites is public, so a customer or an auditor can follow it.

03Publishing

The same check, before an article publishes.

Example: an article paragraphChecked 7 September 2026
The article says

“The company was founded in Stockholm in 2006 and launched in the United States in July 2009.”

What Lenz found

False Spotify launched in the United States on July 14, 2011. Open the check

What you do

Hold the article, or pass the suggested rewrite to an editor: “Spotify launched in the United States in July 2011.”

A pipeline that drafts articles, summaries or product descriptions can send each draft to Lenz before it publishes, and hold any draft with a statement that does not check out.

Lenz checks public sources, not your own documents.

A guardrail filters. Lenz investigates.

A fast guardrail

Compares the answer with the context the model was given, and passes or fails it. Built to filter at low latency.

LenzFull verification

Checks the answer against independent public sources the model was never given, to establish whether each statement is true, and shows how it got there.

Models from several vendors argue both sides and three reviewers weigh them. A split panel stays visible in the result.

The open evaluation: where frontier models disagree on real-world fact-checks

04The API

Assess to sort. Verify to establish.

The API: two different checks, one sequence.

Check LLM output with Python.

  1. 01
    An answer is draftedA support reply, a RAG answer, a summary: anything a model wrote that a customer is about to read.
  2. 02
    Extract the statementsPOST /extract · up to 100 self-contained statements · no credits, 1,000 calls a day
  3. 03
    Sort, then establishPOST /assess · verdict and confidence · sync, ~15 seconds
    POST /verify · sources and reasoning · async, ~90 seconds, webhook
  4. 04
    Your gate decidesYour thresholds and routing. Lenz never holds, edits or publishes your text.
  5. 05
    Ship, with the recordEvery source with its date, the arguments on both sides, the reasoning. Private to your account by default; visibility: "unlisted" returns a link you can pass on.

Try it on your own output

# pip install lenz-io
from lenz_io import Lenz

client = Lenz(api_key="lenz_...")
extracted = client.extract(text=model_output)
# extract finds up to 100, most check-worthy first;
# one assess call takes 20, so this checks the first 20
claims = [c.claim for c in extracted.claims][:20]
rows = client.assess(claims=claims).claims if claims else []

# a failed row was not checked: never ship it as clean
bad = ("False", "Mostly False", "Mixed")
for c in rows:
    if c.status == "failed" or c.verdict in bad or c.confidence == "low":
        print("HOLD:", c.claim, c.verdict, c.confidence)

# HOLD: Python 3.12 runs about 20% faster … False high

Inside Cursor and Claude Code with one command and your key; from a script in Python or TypeScript; or through the REST API. Webhooks replace the wait on /verify. TypeScript SDK: npm install lenz-io. The same examples, and the recorded responses, are on the developer page.

05RAG answers

Fact-checking RAG answers.

  1. The facts in the answer

    Retrieval narrows what the model says; it does not make it true. Lenz checks the factual statements in the answer against public sources. Faithfulness to your own retrieved documents is a different check, and not this one.

  2. The citations in an answer

    When an answer cites web pages or papers, POST /citecheck checks each citation against its source: a DOI that is not registered, a page that is gone, a quote the page does not contain, or a source that may not support the statement, returned with its passage for your gate to judge. A reference with no link and no DOI is not checked.

    The citation check, field by field

  3. A whole draft in one call

    POST /review runs extract, assess and verify on a whole draft in one call, asynchronous with a webhook. It can also check the draft's citations: whether each source says what the draft attributes to it.

06What comes back

Verdict, score, sources, reasoning.

Branch on verdict and confidence from either endpoint; the rest exists only on a full verification.

FieldMeaning/assess/verify
verdictTrue, Mostly True, Mixed, Mostly False, False. /verify can also return No Public Record (no score) when no public record settles the claim; /assess cannotYesYes
confidenceHow much the reviewers agreed and how sure each one wasYesYes
verification_urlA link to the full verification, when one of that statement completed in the last hourYesNo
rationaleThe reviewers’ notes on the verdict, not checked sourcesYesNo
lenz_scoreInteger score, 1–10; null for No Public RecordNoYes
key_findingThe decisive fact in one lineNoYes
sourcesTitle, snippet and date for each sourceNoYes
executive_summaryPlain-language summary of the verificationNoYes
warningsCautions the verification raisedNoYes
auditThe debate and the reviewers’ reasoningNoYes
coverageWhether the verdict qualified for the warranty, on a full verification fetched with your API keyNoYes

Your API submissions are private to your account.

The recorded responses, field by field, on the developer page

Warranty

Vendors disclaim accuracy. Lenz warrants the verdict.

A verdict can qualify when a full verification returns True or False with high panel confidence and enough independent sources behind it. Your code reads that from the coverage block.

On a paid Pro or Scale plan, every full verification that qualifies carries a contractual warranty, at no extra charge.

How the warranty works

07Pricing

Try free, no card.

Free

$0

100 assessments or 10 full verifications a month, in any combination.

Try free
Plus

$7.99/ month

500 assessments or 50 full verifications a month, in any combination.

Or $6.59 a month, billed $79 a year

Choose Plus
Pro · warranty included

$99/ month

5,000 assessments or 500 full verifications a month, in any combination. The warranty on qualifying verdicts.

Or $83 a month, billed $990 a year

Choose Pro
Scale · warranty included

$399/ month

20,000 assessments or 2,000 full verifications a month, for production volumes. The warranty on qualifying verdicts.

Or $333 a month, billed $3,990 a year

Choose Scale

Every plan includes 1,000 extractions a day, an extraction being one call however long the text.

Compare plans

08Questions

A content detector guesses who wrote a text. Lenz checks whether what the text says is true: it takes an answer you already know came from a model and checks each factual statement against independent public sources.

For the facts, yes: Lenz checks the factual statements in the generated answer against public sources. For faithfulness to your own retrieved context, no; that is a different check, and Lenz does not compare the answer with your documents. It does check the public pages and papers the answer cites.

Different questions, different budgets. /assess is synchronous, ~15 seconds per call, and fits inside a chat completion. /verify is an asynchronous investigation against public sources, ~90 seconds per statement, and returns on a webhook. /review is the same sequence on a whole draft, asynchronous, about 2 to 4 minutes, and returns the issues with suggested rewrites.

Every full verification ships the sources it used, the arguments on both sides and the reviewers’ reasoning, so you can check the check. Lenz also publishes an open evaluation of where frontier models disagree on real-world fact-checks.

Not answered here? Talk to us

Catch the next hallucination before a customer does.