DocumentationBrowse
Citation check
The library half of citation verification, callable on its own. Each citation is looked up in the Texas law index and in the offline table of 18,123,788 reporter citations across 989 reporters. The wider concept, including the statuses the chat endpoint can return, is in Citation verification.
Request
| Field | Type | Notes |
|---|---|---|
citations | string[] | 1 to 100 citation strings, each 1 to 200 characters, as written: 488 U.S. 222, 928 S.W.2d 483. Whitespace is normalised; order is preserved in the response. |
{
"results": [
{ "input": "488 U.S. 222", "status": "found", "note": "in CourtListener bulk table",
"match": { "name": "", "citation": ["488 U.S. 222"], "court": "", "date": "",
"url": "https://www.courtlistener.com/?q=cluster_id%3A112345" } },
{ "input": "999 F.9th 1", "status": "unverified",
"note": "not in the DocketRouter library or the bulk citation table; absence is not evidence the citation is fabricated" }
],
"checked": 2,
"found": 1,
"took_ms": 21
}The two statuses
| Status | Meaning | Show it as |
|---|---|---|
| found | The citation exists in the DocketRouter index or in the offline citation table. When the table supplied the answer, match.url is a CourtListener search for the cluster and the other match fields may be empty. | Verified. |
| unverified | The library has no record of it. That is all it means. | Not verified. Never "fabricated" or "nonexistent". |
The offline table is the public-domain bulk export and is incomplete for some reporters; the index covers Texas and the Supreme Court. Presence proves a citation exists. Absence proves nothing, so the negative status is unverified, not not_found. If your product needs an affirmative negative, that is a different check with an external source and its own rate limits; do not derive it from this endpoint.
Strings that are not reporter citations at all, such as Tex. R. Civ. P. 166a, come back unverified: the table only holds volume, reporter and page. Use POST /rag/rules to resolve a rule citation to its text.
Examples
curl https://docketrouter.ai/api/v1/citations/check \
-H "Authorization: Bearer dr-…" -H "content-type: application/json" \
-d '{ "citations": ["488 U.S. 222", "928 S.W.2d 483", "999 F.9th 1"] }' \
| jq '.results[] | {input, status}'Limits
| Limit | Value | On breach |
|---|---|---|
citations | 1 to 100 per request | 400 |
| Each citation | 200 characters | 400 |
| Request body | 64 KB | 413 |
| Calls per key or session | 30 per minute, burst 10 | 429 with Retry-After |
| Calls from the site demo | 10 per minute per IP, burst 3 | 429 with Retry-After |
Results are deterministic for the same library build. A citation the index confirms is cached for the process, so repeated checks of the same list are fast.
Something here wrong or missing? Mail hello@docketrouter.ai with the request_id and we will fix the docs or the API, whichever is broken.