Citation check API

Citation check API: compare every citation with the corpus

Send a text to the API. You get a result for every citation in it, such as verified in the corpus, not found or discrepancy. Built for legal software, agents and review steps in your workflow.

Built and operated in Germany
Server location: GermanyOne dedicated server hosted by Hetzner in Germany. Backups are stored encrypted in Frankfurt (eu-central-1).
Recipients disclosedEvery service that receives data from you is named in the privacy policy, with its purpose and location.
Built in GermanyBuilt for German law: court decisions, statutes and citations from German sources.

Data processing. The AI services that receive your search query process it in the EU. The providers belong to companies based in the USA. More on privacy and security

Example

One text in, one result per citation out

The check runs synchronously. The response names the status of the run, the number of results per value and the result of every citation. In the example a decision of the Federal Court of Justice is in the corpus, and the Higher Regional Court Atlantis does not exist.

Request

curl -X POST "https://klaracase.de/api/v1/citation-checks" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Der Bundesgerichtshof hat mit Urteil vom 11.12.2014, Az. 3 StR 265/14, eine Vermögensbetreuungspflicht des Fraktionsvorsitzenden bejaht. Das Oberlandesgericht Atlantis hat dagegen mit Urteil vom 03.05.2019, Az. 4 U 123/18, anders entschieden."
}'

Example response, shortened

{
    "id": "01a1996a-2c2e-72dd-8227-96f4204c2aa8",
    "status": "complete",
    "verdict_counts": {
        "verified_corpus": 1,
        "not_found": 1
    },
    "unique_citations": [
        {
            "canonical": "3 StR 265/14",
            "occurrences": 1,
            "verdict": "verified_corpus",
            "reference_type": "case"
        },
        {
            "canonical": "4 U 123/18",
            "occurrences": 1,
            "verdict": "not_found",
            "reference_type": "case"
        }
    ],
    "api_version": "0.96.0",
    "credits": {
        "metered": true,
        "cost": 2,
        "credits_remaining": 17
    }
}

Both examples were recorded once. This page does not call the API itself.

Verdicts

The seven verdicts

The list is closed. A verdict says something about the citation in the corpus, never about the author of the text.

Value in the APIDisplayMeaning
verified_corpusVerified in our holdingsA decision with this file number is in the corpus. This does not say that it is still good law today.
verified_externalVerified in external registerNot in the corpus, but confirmed in an external register. Over the API only our own corpus is checked for now. The web app knows this verdict, and your code should be able to handle it.
ambiguousMatches in our holdingsThe file number matches several decisions in the corpus. Your code or your user picks the one that was meant.
out_of_coverageOutside our coverageThe citation lies outside the period or the area of law that the corpus covers. It was not checked and does not count as a problem.
not_foundNot foundNot found in the corpus. This does not prove that the decision does not exist. Please check the citation by hand.
unverifiableCould not be verifiedThe citation could not be turned into a form that can be checked.
discrepancyDiscrepancyThe citation was found, but a detail of it does not fit, such as the court, the date or a paragraph that does not exist.
Important

What not_found means

not_found means: we did not find the citation in our corpus. It does not mean the decision does not exist, and it says nothing about the author of the text. The API checks our own corpus only. The web app also asks an external register, so not_found over the API is the weaker signal. Treat it as a task for a manual check, not as a ruling.

What the check does not do

A verified result shows that the decision exists. It does not show that it is still good law. The API does not check whether a decision was set aside.

Price

Price per check

A check costs at least 2 credits. Above that, the length counts: 1 credit per started 5,000 characters. The same text in the same period costs 0 credits. Uploading a file costs nothing.

Length of the textCredits
up to 10,000 characters2
up to 15,000 characters3
up to 20,000 characters4

Length and pace

A text may be up to 20,000 characters long. The API refuses a longer text before it charges any credits. Or upload a file (PDF, DOCX, MD or TXT) and check it afterwards. Checks are limited to 10 requests per minute per token.

Klaracase is not affiliated with any court or the federal government.

Start with the citation check API

Data processing. The API and the MCP server use the same search as the web app. OpenRouter and Voyage AI process the text of a search query in the EU. Citation Check examines texts on our server in Germany, without AI services. More on privacy and security