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.
Joint eval, machine-readable: the same fixtures as JSON at /vendors/sandbox.json — same requests, same expected verdicts, no quota.
How it works
- Copy a fixture's cites-only request JSON into your client.
- POST it to your own staging first, or straight at
POST /api/v1/verifywith a vendor key when you are ready for live traffic (it spends quota there — here it spends nothing). - 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
| Citation | Expected 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
| Citation | Expected status |
|---|---|
| 516 F.3d 1235, 1244 (11th Cir. 2008) | VERIFIED |
| Id. at 1245 | VERIFIED |
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
| Citation | Expected 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
| Citation | Expected 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 1245 | VERIFIED |
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
| Citation | Expected status |
|---|---|
| 18 U.S.C. § 1001 | CANNOT_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
| Citation | Expected 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