> ## Documentation Index
> Fetch the complete documentation index at: https://docs.consensus.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify that every citation is real and supports its claim

> Verify every reference in a document actually exists, then confirm each one says what the text citing it claims.

## What you get

A per-reference verdict: verified with a DOI, metadata mismatch, or not found. Then, for the ones that exist, a second verdict on whether the paper actually supports the sentence citing it.

Two different failures, caught separately. A fabricated reference is obvious once you look. A real paper cited for something it never claimed is the one that survives review.

## Who it's for

Anyone reviewing AI-assisted drafts, grant text, vendor reports, or student submissions. Also worth wiring into a submission pipeline if you handle volume.

## The prompt

```text theme={null}
You are a reference-checking specialist. You are auditing a bibliography for
fabricated and misapplied citations using Consensus.

Stage 1 — does the reference exist?

For each reference in the list below:
1. Search Consensus for the exact title, verbatim, in quotes.
2. Compare what comes back against the reference as given, field by field:
   title, first author surname, journal, and publication year.
3. Assign a status:
   - VERIFIED — title matches near-exactly and the first author, journal, and
     year all agree. Record the DOI you matched.
   - METADATA MISMATCH — a paper with this title exists, but one or more of
     author, journal, or year is wrong. Say which field and give the correct value.
   - NOT FOUND — no near-title match. Before concluding this, retry once with
     the distinctive noun phrase from the title rather than the full string.

Do not mark a reference VERIFIED on topical similarity. A different paper about
the same subject is NOT a match — that is the exact failure being hunted here.

Stage 2 — does it support the sentence?

For each VERIFIED reference, take the sentence in the document that cites it and
search Consensus for that claim. Then judge:
   - SUPPORTS — the paper substantiates the sentence. Quote the supporting text.
   - DOES NOT SUPPORT — the paper exists and is on-topic but does not make this
     claim. Say what it does claim instead.
   - CANNOT TELL — the abstract is insufficient to judge. Say what you would
     need to read.

Output two tables, one per stage. End with counts: verified, mismatched,
not found, and how many verified references fail to support their sentence.

References:
[PASTE THE BIBLIOGRAPHY]

Document text (for stage 2):
[PASTE THE TEXT, or omit to run stage 1 only]
```

## How it works

<Steps>
  <Step title="Exact title search separates real from invented">
    A real paper returns a near-exact `title` match. A fabricated one returns only loose topical neighbours — which is precisely why the prompt forbids accepting topical similarity as a match.
  </Step>

  <Step title="Metadata is the tiebreak, not judgment">
    Requiring `publish_year`, `journal_name`, and first author to agree before marking anything verified turns a soft call into a mechanical one. Hallucinated references very often pair a real title with a wrong year or journal.
  </Step>

  <Step title="One retry on the distinctive phrase">
    Long titles with subtitles sometimes miss on the full string. A single retry on the distinctive noun phrase prevents false `NOT FOUND` verdicts without opening the door to loose matching.
  </Step>

  <Step title="Stage 2 is the one that finds real problems">
    In AI-assisted drafts, most references exist. The failure that matters is a genuine paper attached to a claim it never made.
  </Step>
</Steps>

## The API equivalent

Stage 1, per reference — search the title and compare metadata:

```bash theme={null}
curl -G "https://api.consensus.app/v1/search" \
  -H "x-api-key: $CONSENSUS_API_KEY" \
  --data-urlencode "query=Effects of intermittent fasting on cardiometabolic risk factors" \
  --data-urlencode "page_size=5"
```

Match on a normalized `title` comparison, then assert `publish_year`, `journal_name`, and the first entry of `authors`. Record `doi` on success.

Stage 2 — search the citing claim and read the excerpt:

```bash theme={null}
curl -G "https://api.consensus.app/v1/search" \
  -H "x-api-key: $CONSENSUS_API_KEY" \
  --data-urlencode "query=intermittent fasting LDL cholesterol reduction magnitude" \
  --data-urlencode "include_full_text_chunks=true" \
  --data-urlencode "page_size=10"
```

<Note>
  `include_full_text_chunks` requires a paid plan or an Enterprise API key and currently covers open-access papers. Stage 1 needs none of it — title and metadata matching works on every plan.
</Note>

## What to check before you trust it

* **A `NOT FOUND` is not proof of fabrication.** Book chapters, conference proceedings, grey literature, and very recent papers may sit outside coverage. Treat it as "needs a human look", not a verdict.
* **Beware near-identical titles.** Some fields have several papers with nearly the same title across different years. The author and year assertions are what keep these apart.
* **Run stage 1 alone first.** It is cheap, needs no full text, and usually surfaces the worst problems on its own.
* **Do not auto-reject on this output.** It is a triage tool that tells a human where to look.

## Related

<CardGroup cols={2}>
  <Card title="Find a real citation for every claim in a draft" icon="quote-left" href="/use-cases/ground-a-manuscript">
    The upstream fix: get real citations attached as you write.
  </Card>

  <Card title="Substantiate a product claim with published evidence" icon="clipboard-check" href="/use-cases/claim-substantiation">
    The same verification discipline, applied to claims that ship.
  </Card>

  <Card title="Best practices" icon="shapes" href="/use-cases/best-practices">
    Fan-out, the filter ladder, and the rest of the primitives.
  </Card>

  <Card title="All use cases" icon="grid-2" href="/use-cases">
    Browse the gallery by persona.
  </Card>
</CardGroup>
