CiteProof / Vendors

Integrate without spending.

A fixture corpus with precomputed verdicts. Nothing here executes, spends quota, or touches an upstream — answers are fixed, so your client either parses them or it doesn't.

Fixture corpus, never a live check: every verdict below is precomputed. Build against it, then point the same code at the live API.

Joint eval, machine-readable: the same fixtures as JSON at /vendors/sandbox.json — same requests, same expected verdicts, no quota.

How it works

  1. Copy a fixture's cites-only request JSON into your client.
  2. POST it to your own staging first, or straight at POST /api/v1/verify with a vendor key when you are ready for live traffic (it spends quota there — here it spends nothing).
  3. Compare your parsing against the expected rows. Statuses arrive as machine words (VERIFIED, NOT_FOUND, CITE_POINTS_TO_DIFFERENT_CASE, NEEDS_REVIEW, CANNOT_VERIFY); map them to your own copy, never reword the evidence.

Fixtures

A citation that resolves to a different case

A fabrication documented in the Mata v. Avianca sanctions order (678 F. Supp. 3d 443 (S.D.N.Y. 2023)): the reporter location is real and occupied by Gibbs v. Maxwell House, but the case named at it does not exist. Existence checking alone passes this; only the identity check catches it.

fixture 1 citation found, 0 quotes found Open the visual walkthrough

Request JSON (cites-only)

{
  "citations": [
    "738 F.2d 1153 (11th Cir. 1984)"
  ]
}

Expected rows

CitationExpected status
738 F.2d 1153 (11th Cir. 1984)CITE_POINTS_TO_DIFFERENT_CASE

A brief whose citations check out

Real citations, correctly named, with a quoted passage copied verbatim from the opinion.

fixture 2 citations found, 1 quote found Open the visual walkthrough

Request JSON (cites-only)

{
  "citations": [
    "516 F.3d 1235, 1244 (11th Cir. 2008)",
    "Id. at 1245"
  ]
}

Expected rows

CitationExpected status
516 F.3d 1235, 1244 (11th Cir. 2008)VERIFIED
Id. at 1245VERIFIED

A real case, and a quote that does not say what the brief says

One word changed from the real opinion text. The closest passage is shown beside it.

fixture 1 citation found, 1 quote found Open the visual walkthrough

Request JSON (cites-only)

{
  "citations": [
    "516 F.3d 1235 (11th Cir. 2008)"
  ]
}

Expected rows

CitationExpected status
516 F.3d 1235 (11th Cir. 2008)NEEDS_REVIEW

A brief with a wrong case, a bad volume, and a changed quote

One brief, every failure shape: a swapped name that resolves to the real case, a volume that was never published, a word moved in a quote, and one clean cite. The sample Verification Record renders from this run.

fixture 5 citations found, 2 quotes found Open the visual walkthrough

Request JSON (cites-only)

{
  "citations": [
    "738 F.2d 1153 (11th Cir. 1984)",
    "999 U.S. 999 (2099)",
    "516 F.3d 1235 (11th Cir. 2008)",
    "516 F.3d 1235, 1244 (11th Cir. 2008)",
    "Id. at 1245"
  ]
}

Expected rows

CitationExpected status
738 F.2d 1153 (11th Cir. 1984)CITE_POINTS_TO_DIFFERENT_CASE
999 U.S. 999 (2099)NOT_FOUND
516 F.3d 1235 (11th Cir. 2008)NEEDS_REVIEW
516 F.3d 1235, 1244 (11th Cir. 2008)VERIFIED
Id. at 1245VERIFIED

A federal statute cite beside a clean case cite

Statute cites take a different road from case cites: the U.S. Code is checked against GovInfo, not the opinion corpus. This offline demo shows the shape without the live lookup.

fixture 2 citations found, 0 quotes found Open the visual walkthrough

Request JSON (cites-only)

{
  "citations": [
    "18 U.S.C. \u00a7 1001",
    "410 U.S. 113 (1973)"
  ]
}

Expected rows

CitationExpected status
18 U.S.C. § 1001CANNOT_VERIFY
410 U.S. 113 (1973)VERIFIED

The same brief with live data off

One cite resolves from the local snapshot; the other cannot be checked without live data, so it reads as uncheckable -- not missing, not wrong. Degradation with its reason stated.

fixture 2 citations found, 0 quotes found Open the visual walkthrough

Request JSON (cites-only)

{
  "citations": [
    "410 U.S. 113 (1973)",
    "999 F.3d 999 (2021)"
  ]
}

Expected rows

CitationExpected status
410 U.S. 113 (1973)VERIFIED
999 F.3d 999 (2021)CANNOT_VERIFY

Response envelope

Submits answer 202 with a job_id and record_url; poll GET /api/v1/records/{id} until status reads complete. The record carries per-row verdicts, a counts line, and the brief hash. Full shape in the integration docs.

Open the vendor console Integration docs

CiteProof verifies citation existence and quote accuracy against public court records. It is not legal advice and does not replace attorney review. Terms · Privacy · Contact