API-Referenz

v0.93.0

Die REST-API gibt Ihren eigenen Anwendungen die Funktionen des MCP-Servers: Suche, Entscheidungstexte, Verweisnetz, Datenpakete und Citation Check. Jeder Endpunkt entspricht einem MCP-Werkzeug, mit denselben Argumenten, derselben Antwort und demselben Preis.

Erste Schritte

Erstellen Sie ein API-Token unter Einstellungen, API-Token. Das Token handelt für die Organisation, die Sie beim Erstellen geöffnet haben, und jeder Aufruf wird dieser Organisation berechnet. Es läuft nach 365 Tagen ab, wenn Sie keine kürzere Laufzeit wählen. Das Token wird nur einmal angezeigt. Bewahren Sie es wie ein Passwort auf, und widerrufen Sie es sofort, wenn es in falsche Hände gerät.

API-Token in den Einstellungen öffnen

Senden Sie das Token bei jeder Anfrage als Bearer-Token:

curl "https://klaracase.de/api/v1/decisions/search?query=Untreue%20Gesch%C3%A4ftsf%C3%BChrer" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Berechtigungen des Tokens

Ein Token darf nur, was seine Berechtigungen erlauben. Jeder Endpunkt nennt die Berechtigung, die er braucht. Ein Token ohne diese Berechtigung erhält eine 403 mit dem Code token_ability_missing, und es wird nichts berechnet.

  • search: Entscheidungen durchsuchen, auch Gesetze und Entscheidungen zusammen.
  • read: Entscheidungen lesen, Abdeckung des Korpus und Filterwerte abrufen.
  • graph: das Verweisnetz einer Entscheidung abrufen.
  • datapackage: Datenpakete zusammenstellen.
  • citation-check: Zitate prüfen, Dokumente hochladen und die Ergebnisse abrufen.

Preise und Credits

Ein Aufruf kostet dieselben Credits wie das entsprechende MCP-Werkzeug. Jeder Endpunkt unten nennt seinen Preis. Ein Ergebnis, das Ihre Organisation in diesem Monat schon bezahlt hat, über die API oder über MCP, kostet nichts mehr. Die 30 kostenlosen Start-Credits für neue verifizierte Nutzer gelten auch für die API. Jede Antwort nennt im Feld credits ihre Kosten und das verbleibende Guthaben.

Ratenbegrenzung und Tageskontingente

Jedes Token darf 60 Anfragen pro Minute stellen. Für Datenpakete, Zitatprüfungen und Uploads gilt zusätzlich eine Grenze von 10 pro Minute. Jede Organisation hat außerdem ein tägliches Kontingent je Tarif für die Suchtreffer und die Volltexte, die sie erhält. Über einer Grenze erhalten Sie eine 429 mit retry_after_seconds. Es wurde nichts ausgeführt und nichts berechnet.

TarifSuchtreffer und Verweise pro TagVolltexte pro Tag
free1.00040
starter5.000200
professional20.000600
enterprise60.0002.000

Fehler

Jeder Fehler ist ein Problem nach RFC 9457 im Format application/problem+json, mit type, title, status, detail und einem festen code. Eine 402 enthält zusätzlich cost und balance. Eine 429 enthält retry_after_seconds. Eine 422 enthält errors mit den Meldungen je Argument. Eine 403 wegen einer fehlenden Berechtigung enthält required_ability. Schreibt Ihre Organisation allen Mitgliedern die Zwei-Faktor-Anmeldung vor und hat der Nutzer des Tokens sie nicht eingerichtet, erhält jeder Aufruf eine 403 mit dem Code two_factor_required, und es wird nichts berechnet, bis er sie einrichtet.

Versionierung

Die Hauptversion im Pfad, /api/v1, ist der Vertrag. Innerhalb von v1 kommt nur etwas hinzu: neue Felder, neue optionale Parameter und neue Werte. Eine Entfernung oder eine Änderung der Bedeutung erscheint als /api/v2. Das Ende eines Endpunkts kündigen wir mit den Headern Deprecation und Sunset mindestens sechs Monate vorher an. Jede Antwort trägt den Header X-Klaracase-Api-Release mit dem Release, das sie ausgeliefert hat.

OpenAPI-Spezifikation (JSON)

Citation Check

POST/api/v1/citation-checks
Berechtigung: citation-checkAb 2 Credits, nach Länge
Zitate in einem Text prüfen
Prüft jedes Zitat einer Gerichtsentscheidung und jedes Normzitat in einem deutschen juristischen Text gegen den Korpus und gibt je Zitat ein Ergebnis mit den Positionen in Ihrem Text zurück: das REST-Gegenstück zum MCP-Werkzeug `check_citations`. Synchron: Die Antwort ist die fertige Prüfung. Senden Sie den Text als `text` oder die `document_id` eines Uploads mit `status` `ready`. Der Preis richtet sich nach der Länge, ab 2 Credits; `quoted_credits` eines Uploads nennt ihn vor der Prüfung. Ein Text über der Höchstlänge wird vor jeder Berechnung abgelehnt, und derselbe Text kostet in diesem Monat nichts mehr.

Parameter

text
stringbody

Der zu prüfende deutsche Rechtstext (mindestens 50 Zeichen, höchstens 20000; längere Dokumente prüfen Sie im Citation Check der Web-App). Die Länge ist eine Untergrenze, nicht das Tor: Der Text muss außerdem mindestens zwei von fünf unabhängigen Kategorien von Rechtssignalen zeigen, daher wird ein einzelner Gesetzessatz abgelehnt, wie lang er auch sei. Die Offsets der Antwort sind Unicode-Codepoint-Offsets in genau DIESEN String.

reference_date
stringbody

OPTIONALES Dokumentdatum, ISO `YYYY-MM-DD`. Es gilt für jedes Gesetzeszitat, dessen eigener Satz kein Datum nennt; ein Satz, der sein eigenes Datum nennt, gewinnt immer. Es steuert den Hinweis zur Nummerierung vor der Reform und ändert kein Verdikt. Jeder Befund meldet in `evidence.citation_date_source` (`sentence` | `reference_date` | `none`), welches Datum er verwendet hat.

document_id
stringbody

Die ID eines Uploads mit `status` `ready` (POST /citation-checks nimmt dies oder `text`, nie beides). Die Prüfung verbraucht den Upload.

Anfrage

curl -X POST "https://klaracase.de/api/v1/citation-checks" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Antworten

200Erfolg
{
  "id": "0193b0c5-1a2b-7c3d-8e4f-5a6b7c8d9e0f",
  "status": "complete",
  "source": "api_v1",
  "progress": {
    "citations_total": 2,
    "citations_checked": 2,
    "unique_citations_total": 2
  },
  "verdict_counts": {
    "verified": 1,
    "not_found": 1
  },
  "partial": false,
  "unverified_count": 0,
  "reason_counts": [
    {
      "category": "statute_unknown",
      "count": 1
    }
  ],
  "unique_citations": [
    {
      "key_basis": "matched_decision",
      "target_artifact_id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d",
      "canonical": "BGH 1 StR 185/01",
      "spellings": [
        "BGH, Urt. v. 15.11.2001 – 1 StR 185/01"
      ],
      "occurrences": 1,
      "verdict": "verified",
      "reference_type": "case"
    },
    {
      "key_basis": "canonical",
      "target_artifact_id": null,
      "canonical": "§ 266a Abs. 9 StGB",
      "spellings": [
        "§ 266a Abs. 9 StGB"
      ],
      "occurrences": 1,
      "verdict": "not_found",
      "reference_type": "statute"
    }
  ],
  "extraction": {
    "detected": 2,
    "dropped": 0,
    "dropped_unreadable": 0,
    "dropped_truncation": 0,
    "dropped_trailing_noun": 0,
    "dropped_stacked_subdivision": 0,
    "dropped_refused_collision": 0,
    "dropped_by_token": [],
    "dropped_unreadable_texts": [],
    "refused_contract_collision": [],
    "not_verifiable": 0,
    "not_verifiable_by_type": [],
    "possible_citations_unparsed": 0,
    "possible_citations_unparsed_texts": []
  },
  "notes": [],
  "findings_unavailable_reason": null,
  "findings_purged_at": null,
  "findings": [
    {
      "id": "0193b0c5-2b3c-7d4e-9f50-6b7c8d9e0f1a",
      "raw_text": "BGH, Urt. v. 15.11.2001 – 1 StR 185/01",
      "canonical": "BGH 1 StR 185/01",
      "type": "case",
      "role": null,
      "verdict": "verified",
      "external_status": "skipped",
      "start_offset": 118,
      "end_offset": 157,
      "occurrence_index": 0,
      "confidence": null,
      "matched_decision": {
        "artifact_id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d",
        "ecli": "ECLI:DE:BGH:2001:151101U1STR185.01.0",
        "court": "BGH",
        "date": "2001-11-15"
      },
      "subdivision_check": "not_checked",
      "subdivision_advisory": null,
      "check_scope": {
        "subdivision": "not_applicable",
        "article_text_available": null,
        "article_text_read": false,
        "court": "checked"
      },
      "ambiguity_advisory": null,
      "coverage": null,
      "coverage_boundary": null,
      "coverage_advisory": null,
      "evidence": {
        "reason": "exact_match",
        "match_strength": "exact"
      },
      "disputed_at": null
    }
  ],
  "submitted_at": "2026-10-01T10:00:00+00:00",
  "completed_at": "2026-10-01T10:00:00+00:00",
  "created_at": "2026-10-01T10:00:00+00:00",
  "payload_truncated": false,
  "api_version": "0.93.0",
  "changelog_url": "https://klaracase.de/docs/mcp/changelog",
  "credits": {
    "metered": true,
    "cost": 2,
    "credits_remaining": 18
  }
}
401Nicht authentifiziert
{
  "type": "https://klaracase.de/docs/api/errors#unauthenticated",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required. Send a Klaracase API token as a Bearer token.",
  "code": "unauthenticated"
}
402Keine Credits mehr
{
  "type": "https://klaracase.de/docs/api/errors#insufficient_credits",
  "title": "Payment Required",
  "status": 402,
  "detail": "Insufficient credits: this call costs 2 credit(s), but organization \"Kanzlei Beispiel\" has 0 remaining this month. Credits renew automatically at the start of each calendar month (UTC). Ask your organization admin to raise the allotment, or retry next month.",
  "code": "insufficient_credits",
  "cost": 2,
  "balance": 0
}
403Nicht erlaubt
{
  "type": "https://klaracase.de/docs/api/errors#token_ability_missing",
  "title": "Forbidden",
  "status": 403,
  "detail": "This API token does not carry the `citation-check` ability this endpoint needs. Nothing was executed and nothing was charged. Create a token with that ability in Settings, API tokens.",
  "code": "token_ability_missing",
  "required_ability": "citation-check"
}
409Konflikt
{
  "type": "https://klaracase.de/docs/api/errors#token_org_missing",
  "title": "Conflict",
  "status": 409,
  "detail": "This API token was created before tokens named an organization, so the API cannot tell which organization it acts for. Create a new token in Settings, API tokens; it acts for the organization you have open.",
  "code": "token_org_missing"
}
422Validierungsfehler
{
  "type": "https://klaracase.de/docs/api/errors#validation_failed",
  "title": "Unprocessable Content",
  "status": 422,
  "detail": "The selected text is invalid.",
  "code": "validation_failed",
  "errors": {
    "text": [
      "The selected text is invalid."
    ]
  }
}
429Zu viele Anfragen
{
  "type": "https://klaracase.de/docs/api/errors#rate_limited",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Too many requests for this token. Wait `retry_after_seconds` and retry. Nothing was executed and nothing was charged.",
  "code": "rate_limited",
  "retry_after_seconds": 42
}
503Dienst nicht verfügbar
{
  "type": "https://klaracase.de/docs/api/errors#backend_unavailable",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "The backend could not complete this call, so nothing was charged. Retry in a few seconds.",
  "code": "backend_unavailable"
}
GET/api/v1/citation-checks/{run}
Berechtigung: citation-checkKostenlos
Prüfung abrufen
Eine Prüfung, die Ihre Organisation über die API erstellt hat, abgerufen über ihre ID. Kostenlos.

Anfrage

curl "https://klaracase.de/api/v1/citation-checks/{run}" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Antworten

200Erfolg
{
  "id": "0193b0c5-1a2b-7c3d-8e4f-5a6b7c8d9e0f",
  "status": "complete",
  "source": "api_v1",
  "progress": {
    "citations_total": 2,
    "citations_checked": 2,
    "unique_citations_total": 2
  },
  "verdict_counts": {
    "verified": 1,
    "not_found": 1
  },
  "partial": false,
  "unverified_count": 0,
  "reason_counts": [
    {
      "category": "statute_unknown",
      "count": 1
    }
  ],
  "unique_citations": [
    {
      "key_basis": "matched_decision",
      "target_artifact_id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d",
      "canonical": "BGH 1 StR 185/01",
      "spellings": [
        "BGH, Urt. v. 15.11.2001 – 1 StR 185/01"
      ],
      "occurrences": 1,
      "verdict": "verified",
      "reference_type": "case"
    },
    {
      "key_basis": "canonical",
      "target_artifact_id": null,
      "canonical": "§ 266a Abs. 9 StGB",
      "spellings": [
        "§ 266a Abs. 9 StGB"
      ],
      "occurrences": 1,
      "verdict": "not_found",
      "reference_type": "statute"
    }
  ],
  "extraction": {
    "detected": 2,
    "dropped": 0,
    "dropped_unreadable": 0,
    "dropped_truncation": 0,
    "dropped_trailing_noun": 0,
    "dropped_stacked_subdivision": 0,
    "dropped_refused_collision": 0,
    "dropped_by_token": [],
    "dropped_unreadable_texts": [],
    "refused_contract_collision": [],
    "not_verifiable": 0,
    "not_verifiable_by_type": [],
    "possible_citations_unparsed": 0,
    "possible_citations_unparsed_texts": []
  },
  "notes": [],
  "findings_unavailable_reason": null,
  "findings_purged_at": null,
  "findings": [
    {
      "id": "0193b0c5-2b3c-7d4e-9f50-6b7c8d9e0f1a",
      "raw_text": "BGH, Urt. v. 15.11.2001 – 1 StR 185/01",
      "canonical": "BGH 1 StR 185/01",
      "type": "case",
      "role": null,
      "verdict": "verified",
      "external_status": "skipped",
      "start_offset": 118,
      "end_offset": 157,
      "occurrence_index": 0,
      "confidence": null,
      "matched_decision": {
        "artifact_id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d",
        "ecli": "ECLI:DE:BGH:2001:151101U1STR185.01.0",
        "court": "BGH",
        "date": "2001-11-15"
      },
      "subdivision_check": "not_checked",
      "subdivision_advisory": null,
      "check_scope": {
        "subdivision": "not_applicable",
        "article_text_available": null,
        "article_text_read": false,
        "court": "checked"
      },
      "ambiguity_advisory": null,
      "coverage": null,
      "coverage_boundary": null,
      "coverage_advisory": null,
      "evidence": {
        "reason": "exact_match",
        "match_strength": "exact"
      },
      "disputed_at": null
    }
  ],
  "submitted_at": "2026-10-01T10:00:00+00:00",
  "completed_at": "2026-10-01T10:00:00+00:00",
  "created_at": "2026-10-01T10:00:00+00:00",
  "payload_truncated": false,
  "api_version": "0.93.0",
  "changelog_url": "https://klaracase.de/docs/mcp/changelog",
  "credits": {
    "metered": true,
    "cost": 0,
    "credits_remaining": 18
  }
}
401Nicht authentifiziert
{
  "type": "https://klaracase.de/docs/api/errors#unauthenticated",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required. Send a Klaracase API token as a Bearer token.",
  "code": "unauthenticated"
}
403Nicht erlaubt
{
  "type": "https://klaracase.de/docs/api/errors#token_ability_missing",
  "title": "Forbidden",
  "status": 403,
  "detail": "This API token does not carry the `citation-check` ability this endpoint needs. Nothing was executed and nothing was charged. Create a token with that ability in Settings, API tokens.",
  "code": "token_ability_missing",
  "required_ability": "citation-check"
}
404Nicht gefunden
{
  "type": "https://klaracase.de/docs/api/errors#not_found",
  "title": "Not Found",
  "status": 404,
  "detail": "The requested resource does not exist, or it belongs to another organization.",
  "code": "not_found"
}
409Konflikt
{
  "type": "https://klaracase.de/docs/api/errors#token_org_missing",
  "title": "Conflict",
  "status": 409,
  "detail": "This API token was created before tokens named an organization, so the API cannot tell which organization it acts for. Create a new token in Settings, API tokens; it acts for the organization you have open.",
  "code": "token_org_missing"
}
422Validierungsfehler
{
  "type": "https://klaracase.de/docs/api/errors#validation_failed",
  "title": "Unprocessable Content",
  "status": 422,
  "detail": "The selected id is invalid.",
  "code": "validation_failed",
  "errors": {
    "id": [
      "The selected id is invalid."
    ]
  }
}
429Zu viele Anfragen
{
  "type": "https://klaracase.de/docs/api/errors#rate_limited",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Too many requests for this token. Wait `retry_after_seconds` and retry. Nothing was executed and nothing was charged.",
  "code": "rate_limited",
  "retry_after_seconds": 42
}
POST/api/v1/citation-check-documents
Berechtigung: citation-checkKostenlos
Dokument zur Prüfung hochladen
Lädt eine PDF-, DOCX-, Markdown- oder Textdatei (bis 25 MB) als `multipart/form-data` im Feld `file` hoch. Der Text wird im Hintergrund ausgelesen: Die Antwort ist 202, und Sie fragen den Upload ab, bis `status` `ready` ist. Dann prüfen Sie ihn mit `POST /citation-checks` und seiner `document_id`. Kostenlos; das Upload-Kontingent Ihrer Organisation gilt.

Parameter

fileErforderlich
stringbody

Das Dokument: PDF, DOCX, Markdown oder reiner Text, bis 25 MB, gesendet als multipart/form-data.

Anfrage

curl -X POST "https://klaracase.de/api/v1/citation-check-documents" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Antworten

202Angenommen
{
  "id": "0193b0c6-3c4d-7e5f-8a60-7c8d9e0f1a2b",
  "filename": "schriftsatz.pdf",
  "format": "pdf",
  "status": "uploaded",
  "char_count": null,
  "page_count": null,
  "pages_without_text_layer": null,
  "check_max_chars": 20000,
  "quoted_credits": null,
  "error_code": null,
  "expires_at": "2026-10-02T10:00:00+00:00",
  "created_at": "2026-10-01T10:00:00+00:00",
  "api_version": "0.93.0",
  "changelog_url": "https://klaracase.de/docs/mcp/changelog",
  "credits": {
    "metered": true,
    "cost": 0,
    "credits_remaining": 18
  }
}
401Nicht authentifiziert
{
  "type": "https://klaracase.de/docs/api/errors#unauthenticated",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required. Send a Klaracase API token as a Bearer token.",
  "code": "unauthenticated"
}
403Nicht erlaubt
{
  "type": "https://klaracase.de/docs/api/errors#token_ability_missing",
  "title": "Forbidden",
  "status": 403,
  "detail": "This API token does not carry the `citation-check` ability this endpoint needs. Nothing was executed and nothing was charged. Create a token with that ability in Settings, API tokens.",
  "code": "token_ability_missing",
  "required_ability": "citation-check"
}
409Konflikt
{
  "type": "https://klaracase.de/docs/api/errors#token_org_missing",
  "title": "Conflict",
  "status": 409,
  "detail": "This API token was created before tokens named an organization, so the API cannot tell which organization it acts for. Create a new token in Settings, API tokens; it acts for the organization you have open.",
  "code": "token_org_missing"
}
422Validierungsfehler
{
  "type": "https://klaracase.de/docs/api/errors#validation_failed",
  "title": "Unprocessable Content",
  "status": 422,
  "detail": "The selected file is invalid.",
  "code": "validation_failed",
  "errors": {
    "file": [
      "The selected file is invalid."
    ]
  }
}
429Zu viele Anfragen
{
  "type": "https://klaracase.de/docs/api/errors#rate_limited",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Too many requests for this token. Wait `retry_after_seconds` and retry. Nothing was executed and nothing was charged.",
  "code": "rate_limited",
  "retry_after_seconds": 42
}
GET/api/v1/citation-check-documents/{document}
Berechtigung: citation-checkKostenlos
Upload abrufen
Der Stand eines Uploads über seine ID: `char_count` und `quoted_credits`, sobald der Text ausgelesen ist, ein `error_code`, wenn das Auslesen fehlschlug. Der ausgelesene Text selbst wird nie ausgeliefert. Kostenlos.

Anfrage

curl "https://klaracase.de/api/v1/citation-check-documents/{document}" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Antworten

200Erfolg
{
  "id": "0193b0c6-3c4d-7e5f-8a60-7c8d9e0f1a2b",
  "filename": "schriftsatz.pdf",
  "format": "pdf",
  "status": "ready",
  "char_count": 14830,
  "page_count": 6,
  "pages_without_text_layer": 0,
  "check_max_chars": 20000,
  "quoted_credits": 2,
  "error_code": null,
  "expires_at": "2026-10-02T10:00:00+00:00",
  "created_at": "2026-10-01T10:00:00+00:00",
  "api_version": "0.93.0",
  "changelog_url": "https://klaracase.de/docs/mcp/changelog",
  "credits": {
    "metered": true,
    "cost": 0,
    "credits_remaining": 18
  }
}
401Nicht authentifiziert
{
  "type": "https://klaracase.de/docs/api/errors#unauthenticated",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required. Send a Klaracase API token as a Bearer token.",
  "code": "unauthenticated"
}
403Nicht erlaubt
{
  "type": "https://klaracase.de/docs/api/errors#token_ability_missing",
  "title": "Forbidden",
  "status": 403,
  "detail": "This API token does not carry the `citation-check` ability this endpoint needs. Nothing was executed and nothing was charged. Create a token with that ability in Settings, API tokens.",
  "code": "token_ability_missing",
  "required_ability": "citation-check"
}
404Nicht gefunden
{
  "type": "https://klaracase.de/docs/api/errors#not_found",
  "title": "Not Found",
  "status": 404,
  "detail": "The requested resource does not exist, or it belongs to another organization.",
  "code": "not_found"
}
409Konflikt
{
  "type": "https://klaracase.de/docs/api/errors#token_org_missing",
  "title": "Conflict",
  "status": 409,
  "detail": "This API token was created before tokens named an organization, so the API cannot tell which organization it acts for. Create a new token in Settings, API tokens; it acts for the organization you have open.",
  "code": "token_org_missing"
}
422Validierungsfehler
{
  "type": "https://klaracase.de/docs/api/errors#validation_failed",
  "title": "Unprocessable Content",
  "status": 422,
  "detail": "The selected id is invalid.",
  "code": "validation_failed",
  "errors": {
    "id": [
      "The selected id is invalid."
    ]
  }
}
429Zu viele Anfragen
{
  "type": "https://klaracase.de/docs/api/errors#rate_limited",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Too many requests for this token. Wait `retry_after_seconds` and retry. Nothing was executed and nothing was charged.",
  "code": "rate_limited",
  "retry_after_seconds": 42
}

Verweisnetz

GET/api/v1/decisions/{id}/citations
Berechtigung: graph2 Credits
Verweisnetz einer Entscheidung
Die Entscheidungen, die eine Entscheidung zitiert, und die Entscheidungen, die sie zitieren, seitenweise: das REST-Gegenstück zum MCP-Werkzeug `get_citation_graph`. Zwei Credits je Entscheidung, Richtung und Tiefe pro Monat; weitere Seiten sind kostenlos.

Parameter

direction
outgoingincomingbothquery

„outgoing“ = Entscheidungen, die diese zitiert (references), „incoming“ = Entscheidungen, die diese zitieren (referenced_by), „both“ (Standard) = beide Richtungen.

depth
12query

1 (Standard) = nur direkte Nachbarn; 2 = zusätzlich Nachbarn von Nachbarn, begrenzt auf 50 verschiedene Nachbarentscheidungen neben der Ausgangsentscheidung und als begrenzte Stichprobe geliefert.

court
stringquery

Optionales Unterscheidungsmerkmal für ein Aktenzeichen als `id`: die kanonische Gerichts-Kurzform, z. B. „BVerfG“ oder „OLG Hamm“. Bei UUID-Abfragen ohne Wirkung.

date
stringquery

Optionales Unterscheidungsmerkmal für ein Aktenzeichen als `id`: das Entscheidungsdatum im Format YYYY-MM-DD.

page
integerquery

1-basierte Seite (Standard 1) über die Nachbarlisten der AUSGANGS-Entscheidung, 25 verschiedene Entscheidungen je Richtung, bis Seite 20. Nur bei Tiefe 1 definiert.

Anfrage

curl "https://klaracase.de/api/v1/decisions/{id}/citations" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Antworten

200Erfolg
{
  "source": {
    "id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d",
    "aktenzeichen": "1 StR 185/01",
    "court": "BGH",
    "date": "2001-11-15"
  },
  "references": [
    {
      "reference_canonical": "BGH 1 StR 50/15",
      "reference_role": "leitentscheidung",
      "resolution_status": "resolved",
      "in_corpus": true,
      "corpus": {
        "artifact_id": "0193b0c4-6a2d-7c4e-8f10-2b3c4d5e6f70",
        "court": "BGH",
        "date": "2015-03-12",
        "az": "1 StR 50/15",
        "document_type": "Urteil",
        "ecli": null,
        "corpus_url": "https://klaracase.de/decisions/0193b0c4-6a2d-7c4e-8f10-2b3c4d5e6f70"
      },
      "from_artifact_id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d",
      "hop": 1
    }
  ],
  "referenced_by": [
    {
      "reference_canonical": "BGH 1 StR 185/01",
      "reference_role": null,
      "resolution_status": "resolved",
      "in_corpus": true,
      "corpus": {
        "artifact_id": "0193b0c4-7b3e-7d5f-9a21-3c4d5e6f7a81",
        "court": "BGH",
        "date": "2022-06-08",
        "az": "4 StR 200/22",
        "document_type": "Beschluss",
        "ecli": null,
        "corpus_url": "https://klaracase.de/decisions/0193b0c4-7b3e-7d5f-9a21-3c4d5e6f7a81"
      },
      "from_artifact_id": "0193b0c4-7b3e-7d5f-9a21-3c4d5e6f7a81",
      "hop": 1
    }
  ],
  "served_direction": "both",
  "served_references_total": 1,
  "served_referenced_by_total": 1,
  "references_total": 1,
  "references_resolved_total": 1,
  "referenced_by_total": 1,
  "references_unresolved_total": 0,
  "references_withheld_reasons": [],
  "totals_scope": "source_decision_hop_1",
  "per_direction_cap": 25,
  "unresolved_cap": 25,
  "node_cap": 50,
  "truncated": false,
  "nodes_omitted": 0,
  "payload_truncated": false,
  "pagination": {
    "page": 1,
    "page_size": 25,
    "max_page": 20,
    "reachable_distinct_max": 500,
    "references_pages": 1,
    "referenced_by_pages": 1,
    "has_more_references": false,
    "has_more_referenced_by": false,
    "applies_at_depth": 1
  },
  "fortgeltung_checked": false,
  "fortgeltung_note": "Rechtskraft/Fortgeltung (whether a decision is still good law) is NOT checked. A decision returned here may have been quashed or superseded on appeal, and the ABSENCE of any such note is not evidence that it still stands.",
  "api_version": "0.93.0",
  "changelog_url": "https://klaracase.de/docs/mcp/changelog",
  "credits": {
    "metered": true,
    "cost": 2,
    "credits_remaining": 25
  }
}
401Nicht authentifiziert
{
  "type": "https://klaracase.de/docs/api/errors#unauthenticated",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required. Send a Klaracase API token as a Bearer token.",
  "code": "unauthenticated"
}
402Keine Credits mehr
{
  "type": "https://klaracase.de/docs/api/errors#insufficient_credits",
  "title": "Payment Required",
  "status": 402,
  "detail": "Insufficient credits: this call costs 2 credit(s), but organization \"Kanzlei Beispiel\" has 0 remaining this month. Credits renew automatically at the start of each calendar month (UTC). Ask your organization admin to raise the allotment, or retry next month.",
  "code": "insufficient_credits",
  "cost": 2,
  "balance": 0
}
403Nicht erlaubt
{
  "type": "https://klaracase.de/docs/api/errors#token_ability_missing",
  "title": "Forbidden",
  "status": 403,
  "detail": "This API token does not carry the `graph` ability this endpoint needs. Nothing was executed and nothing was charged. Create a token with that ability in Settings, API tokens.",
  "code": "token_ability_missing",
  "required_ability": "graph"
}
404Nicht gefunden
{
  "type": "https://klaracase.de/docs/api/errors#not_found",
  "title": "Not Found",
  "status": 404,
  "detail": "The requested resource does not exist, or it belongs to another organization.",
  "code": "not_found"
}
409Konflikt
{
  "type": "https://klaracase.de/docs/api/errors#token_org_missing",
  "title": "Conflict",
  "status": 409,
  "detail": "This API token was created before tokens named an organization, so the API cannot tell which organization it acts for. Create a new token in Settings, API tokens; it acts for the organization you have open.",
  "code": "token_org_missing"
}
422Validierungsfehler
{
  "type": "https://klaracase.de/docs/api/errors#validation_failed",
  "title": "Unprocessable Content",
  "status": 422,
  "detail": "The selected direction is invalid.",
  "code": "validation_failed",
  "errors": {
    "direction": [
      "The selected direction is invalid."
    ]
  }
}
429Zu viele Anfragen
{
  "type": "https://klaracase.de/docs/api/errors#rate_limited",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Too many requests for this token. Wait `retry_after_seconds` and retry. Nothing was executed and nothing was charged.",
  "code": "rate_limited",
  "retry_after_seconds": 42
}
503Dienst nicht verfügbar
{
  "type": "https://klaracase.de/docs/api/errors#backend_unavailable",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "The backend could not complete this call, so nothing was charged. Retry in a few seconds.",
  "code": "backend_unavailable"
}

Korpus

GET/api/v1/corpus/coverage
Berechtigung: readKostenlos
Abdeckung des Korpus
Was der Korpus enthält: je Gerichtsbarkeit und je Gericht die Zahl der Entscheidungen und das früheste und späteste Entscheidungsdatum, das REST-Gegenstück zum MCP-Werkzeug `corpus_coverage`. Kostenlos. Die Zahlen im Beispiel dienen nur der Veranschaulichung.

Parameter

branch
ordentlichverwaltungsozialarbeitfinanzverfassungpatentunbekanntquery

Den Bericht auf einen Gerichtsbarkeits-Slug einschränken. Eine Gerichtsbarkeit ist eine GERICHTSZUSTÄNDIGKEIT, nie ein Rechtsgebiet: „patent“ ist das Bundespatentgericht. Weglassen, um jede Gerichtsbarkeit zu melden.

top
integerquery

Obergrenze für die Zeilen je Gericht, die geschäftigsten zuerst (Standard 20, Maximum 100). Die Zusammenfassung je Gerichtsbarkeit wird nie begrenzt.

Anfrage

curl "https://klaracase.de/api/v1/corpus/coverage" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Antworten

200Erfolg
{
  "total_decisions": {
    "value": 100000,
    "is_floor": false
  },
  "branches": [
    {
      "branch": "ordentlich",
      "count": {
        "value": 60000,
        "is_floor": false
      },
      "earliest": "1950-10",
      "latest": "2026-09",
      "court_founding_year": 1950,
      "court_founding_basis": "branch_wide_weakest_court_floor",
      "has_dates_below_floor": false,
      "instance_mix": {
        "federal": {
          "value": 25000,
          "is_floor": false
        },
        "appellate": {
          "value": 20000,
          "is_floor": false
        },
        "first_instance_and_regional": {
          "value": 15000,
          "is_floor": false
        },
        "other": {
          "value": 0,
          "is_floor": false
        },
        "note": "Instanzmix: 42% Bundesgerichte, 33% Obergerichte, 25% Eingangs- und Landgerichte. …"
      },
      "top_courts": [
        {
          "court": "BGH",
          "count": {
            "value": 25000,
            "is_floor": false
          },
          "earliest": "1950-10",
          "latest": "2026-09"
        }
      ]
    }
  ],
  "courts": [
    {
      "court": "BGH",
      "branch": "ordentlich",
      "count": {
        "value": 25000,
        "is_floor": false
      },
      "earliest": "1950-10",
      "latest": "2026-09",
      "court_founding_year": 1950,
      "court_founding_basis": "court_floor",
      "has_dates_below_floor": false
    }
  ],
  "courts_returned": 20,
  "courts_total": 400,
  "corpus_floors": "Earliest decision we hold per Gerichtsbarkeit … ordentlich 1950+. …",
  "coverage_ranges": {
    "note": "The ingestion boundary every `out_of_coverage` verdict is decided against. …",
    "scope": "all",
    "verified_at": "2026-08-13",
    "ranges": [
      {
        "bucket": "BGH_STRAFRECHT",
        "court": "BGH",
        "label": "BGH Strafsachen",
        "from": "1950-10-02",
        "until": null,
        "sources": [
          "ris"
        ],
        "exhaustive": true,
        "ocr": true,
        "note": "Strafsenate ab 1950.",
        "holdings_earliest": null
      }
    ]
  },
  "as_of": "2026-10-01T09:58:12+00:00",
  "filter_coverage_caveats": "Three known blind spots, all on scanned decisions. …",
  "law_coverage": {
    "note": "The law texts behind the citation check are German federal statutes, plus the EU and international instruments listed beside this note. …",
    "eu": [
      "AEUV",
      "DSGVO"
    ],
    "international": [
      "EMRK"
    ]
  },
  "api_version": "0.93.0",
  "changelog_url": "https://klaracase.de/docs/mcp/changelog",
  "credits": {
    "metered": true,
    "cost": 0,
    "credits_remaining": 30
  }
}
401Nicht authentifiziert
{
  "type": "https://klaracase.de/docs/api/errors#unauthenticated",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required. Send a Klaracase API token as a Bearer token.",
  "code": "unauthenticated"
}
403Nicht erlaubt
{
  "type": "https://klaracase.de/docs/api/errors#token_ability_missing",
  "title": "Forbidden",
  "status": 403,
  "detail": "This API token does not carry the `read` ability this endpoint needs. Nothing was executed and nothing was charged. Create a token with that ability in Settings, API tokens.",
  "code": "token_ability_missing",
  "required_ability": "read"
}
409Konflikt
{
  "type": "https://klaracase.de/docs/api/errors#token_org_missing",
  "title": "Conflict",
  "status": 409,
  "detail": "This API token was created before tokens named an organization, so the API cannot tell which organization it acts for. Create a new token in Settings, API tokens; it acts for the organization you have open.",
  "code": "token_org_missing"
}
422Validierungsfehler
{
  "type": "https://klaracase.de/docs/api/errors#validation_failed",
  "title": "Unprocessable Content",
  "status": 422,
  "detail": "The selected branch is invalid.",
  "code": "validation_failed",
  "errors": {
    "branch": [
      "The selected branch is invalid."
    ]
  }
}
429Zu viele Anfragen
{
  "type": "https://klaracase.de/docs/api/errors#rate_limited",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Too many requests for this token. Wait `retry_after_seconds` and retry. Nothing was executed and nothing was charged.",
  "code": "rate_limited",
  "retry_after_seconds": 42
}
503Dienst nicht verfügbar
{
  "type": "https://klaracase.de/docs/api/errors#backend_unavailable",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "The backend could not complete this call, so nothing was charged. Retry in a few seconds.",
  "code": "backend_unavailable"
}
GET/api/v1/corpus/facets/{field}
Berechtigung: readKostenlos
Filterwerte eines Feldes
Die Werte, die der Index für ein filterbares Feld enthält, mit Anzahlen, damit ein Suchfilter vorhandene Werte nutzt: das REST-Gegenstück zum MCP-Werkzeug `list_facets`. Kostenlos. Die Zahlen im Beispiel dienen nur der Veranschaulichung.

Parameter

type
decisionlawquery

Die Zählung auf einen Artefakttyp beschränken. Weglassen, um über beide zu zählen. Bei field="cited_norms" ohne Wirkung.

norm
stringquery

Pflicht bei field="cited_norms", sonst ohne Wirkung: die Norm, deren Familie aufgelistet wird, z. B. „§ 543 BGB“. Wird vor der Verwendung kanonisiert und zurückgemeldet.

prefix
stringquery

Präfixfilter auf den Facettenwert, ohne Beachtung der Groß-/Kleinschreibung. Ein abschließendes Leerzeichen zählt mit: prefix="AG " schließt „AGH Niedersachsen“ aus, prefix="AG" behält es.

Anfrage

curl "https://klaracase.de/api/v1/corpus/facets/{field}" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Antworten

200Erfolg
{
  "field": "court_name",
  "applies_to": "DECISION",
  "values": {
    "BGH": {
      "value": 90000,
      "is_floor": false
    },
    "BVerfG": {
      "value": 20000,
      "is_floor": false
    },
    "BVerwG": {
      "value": 15000,
      "is_floor": false
    }
  },
  "total_values": 3,
  "truncated": false,
  "value_limit": 500,
  "count_basis": "indexed_passages",
  "as_of": "2026-10-01T09:40:00+00:00",
  "api_version": "0.93.0",
  "changelog_url": "https://klaracase.de/docs/mcp/changelog",
  "credits": {
    "metered": true,
    "cost": 0,
    "credits_remaining": 30
  }
}
401Nicht authentifiziert
{
  "type": "https://klaracase.de/docs/api/errors#unauthenticated",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required. Send a Klaracase API token as a Bearer token.",
  "code": "unauthenticated"
}
403Nicht erlaubt
{
  "type": "https://klaracase.de/docs/api/errors#token_ability_missing",
  "title": "Forbidden",
  "status": 403,
  "detail": "This API token does not carry the `read` ability this endpoint needs. Nothing was executed and nothing was charged. Create a token with that ability in Settings, API tokens.",
  "code": "token_ability_missing",
  "required_ability": "read"
}
409Konflikt
{
  "type": "https://klaracase.de/docs/api/errors#token_org_missing",
  "title": "Conflict",
  "status": 409,
  "detail": "This API token was created before tokens named an organization, so the API cannot tell which organization it acts for. Create a new token in Settings, API tokens; it acts for the organization you have open.",
  "code": "token_org_missing"
}
422Validierungsfehler
{
  "type": "https://klaracase.de/docs/api/errors#validation_failed",
  "title": "Unprocessable Content",
  "status": 422,
  "detail": "The selected type is invalid.",
  "code": "validation_failed",
  "errors": {
    "type": [
      "The selected type is invalid."
    ]
  }
}
429Zu viele Anfragen
{
  "type": "https://klaracase.de/docs/api/errors#rate_limited",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Too many requests for this token. Wait `retry_after_seconds` and retry. Nothing was executed and nothing was charged.",
  "code": "rate_limited",
  "retry_after_seconds": 42
}
503Dienst nicht verfügbar
{
  "type": "https://klaracase.de/docs/api/errors#backend_unavailable",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "The backend could not complete this call, so nothing was charged. Retry in a few seconds.",
  "code": "backend_unavailable"
}

Datenpakete

POST/api/v1/datapackages
Berechtigung: datapackage5 Credits
Datenpaket zusammenstellen
Bis zu zehn Entscheidungen mit ihren ausgehenden Verweisen in einer strukturierten Antwort, als belastbarer Kontext für ein Sprachmodell: das REST-Gegenstück zum MCP-Werkzeug `assemble_datapackage`. Fünf Credits je Auswahl von Entscheidungen und Optionen pro Monat.

Parameter

idsErforderlich
arraybody

1–10 Entscheidungs-ids. DIE REIHENFOLGE ZÄHLT: Das Antwortbudget verwirft Entscheidungen vom ENDE her. Duplikate werden zu einer Entscheidung zusammengefasst; `requested`, `included` und `deduped` melden das.

include_citations
booleanbody

Die ausgehenden Verweise jeder Entscheidung einbeziehen (Standard true).

full_text
booleanbody

Vollständige Urteile statt Auszügen von ~700 Zeichen liefern (Standard false). Token-intensiv: Bevorzugen Sie Auszüge plus gezielte get_decision-Aufrufe.

max_chars
integerbody

Textobergrenze je Entscheidung, wenn `full_text` true ist (Standard 60000, Minimum 500, Maximum 200000). Eine Obergrenze, keine Zusage: Das Antwortbudget geht vor.

Anfrage

curl -X POST "https://klaracase.de/api/v1/datapackages" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Antworten

200Erfolg
{
  "decisions": [
    {
      "id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d",
      "aktenzeichen": "1 StR 185/01",
      "court": "BGH",
      "date": "2001-11-15",
      "document_type": "Urteil",
      "ecli": "ECLI:DE:BGH:2001:151101U1STR185.01.0",
      "jurisdiction": "DE",
      "excerpt": "Tenor … Gründe: I. Der Angeklagte war Geschäftsführer …",
      "excerpt_span": "document_start",
      "text_length": 48213,
      "truncated": true,
      "fortgeltung_checked": false,
      "fortgeltung_note": "Rechtskraft/Fortgeltung (whether a decision is still good law) is NOT checked. A decision returned here may have been quashed or superseded on appeal, and the ABSENCE of any such note is not evidence that it still stands."
    }
  ],
  "citation_edges": [
    {
      "reference_canonical": "BGH 1 StR 50/15",
      "reference_role": "leitentscheidung",
      "resolution_status": "resolved",
      "in_corpus": true,
      "corpus": {
        "artifact_id": "0193b0c4-6a2d-7c4e-8f10-2b3c4d5e6f70",
        "court": "BGH",
        "date": "2015-03-12",
        "az": "1 StR 50/15",
        "document_type": "Urteil",
        "ecli": null,
        "corpus_url": "https://klaracase.de/decisions/0193b0c4-6a2d-7c4e-8f10-2b3c4d5e6f70"
      },
      "from_artifact_id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d"
    }
  ],
  "edge_accounting": [
    {
      "from_artifact_id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d",
      "unit": "edge_rows",
      "edges_total": 1,
      "edges_included": 1,
      "edges_resolved_included": 1,
      "edges_unresolved_included": 0,
      "edges_resolved_total": 1,
      "edges_unresolved_total": 0,
      "targets_resolved_included": 1,
      "targets_resolved_total": 1
    }
  ],
  "per_source_resolved_target_cap": 25,
  "per_source_unresolved_edge_row_cap": 25,
  "requested": 1,
  "included": 1,
  "deduped": 0,
  "text_mode": "excerpt",
  "max_chars": 700,
  "truncated": false,
  "payload_truncated": false,
  "assembled_at": "2026-10-01T10:00:00+00:00",
  "api_version": "0.93.0",
  "changelog_url": "https://klaracase.de/docs/mcp/changelog",
  "credits": {
    "metered": true,
    "cost": 5,
    "credits_remaining": 20
  }
}
401Nicht authentifiziert
{
  "type": "https://klaracase.de/docs/api/errors#unauthenticated",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required. Send a Klaracase API token as a Bearer token.",
  "code": "unauthenticated"
}
402Keine Credits mehr
{
  "type": "https://klaracase.de/docs/api/errors#insufficient_credits",
  "title": "Payment Required",
  "status": 402,
  "detail": "Insufficient credits: this call costs 5 credit(s), but organization \"Kanzlei Beispiel\" has 0 remaining this month. Credits renew automatically at the start of each calendar month (UTC). Ask your organization admin to raise the allotment, or retry next month.",
  "code": "insufficient_credits",
  "cost": 5,
  "balance": 0
}
403Nicht erlaubt
{
  "type": "https://klaracase.de/docs/api/errors#token_ability_missing",
  "title": "Forbidden",
  "status": 403,
  "detail": "This API token does not carry the `datapackage` ability this endpoint needs. Nothing was executed and nothing was charged. Create a token with that ability in Settings, API tokens.",
  "code": "token_ability_missing",
  "required_ability": "datapackage"
}
409Konflikt
{
  "type": "https://klaracase.de/docs/api/errors#token_org_missing",
  "title": "Conflict",
  "status": 409,
  "detail": "This API token was created before tokens named an organization, so the API cannot tell which organization it acts for. Create a new token in Settings, API tokens; it acts for the organization you have open.",
  "code": "token_org_missing"
}
422Validierungsfehler
{
  "type": "https://klaracase.de/docs/api/errors#validation_failed",
  "title": "Unprocessable Content",
  "status": 422,
  "detail": "The selected ids is invalid.",
  "code": "validation_failed",
  "errors": {
    "ids": [
      "The selected ids is invalid."
    ]
  }
}
429Zu viele Anfragen
{
  "type": "https://klaracase.de/docs/api/errors#rate_limited",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Too many requests for this token. Wait `retry_after_seconds` and retry. Nothing was executed and nothing was charged.",
  "code": "rate_limited",
  "retry_after_seconds": 42
}
503Dienst nicht verfügbar
{
  "type": "https://klaracase.de/docs/api/errors#backend_unavailable",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "The backend could not complete this call, so nothing was charged. Retry in a few seconds.",
  "code": "backend_unavailable"
}

Entscheidungen

GET/api/v1/decisions/{id}
Berechtigung: read1 Credit
Entscheidung lesen
Der Volltext einer Entscheidung oder ein benannter Abschnitt oder ein Randnummernbereich daraus, mit Metadaten: das REST-Gegenstück zum MCP-Werkzeug `get_decision`. Ein Credit je Entscheidung pro Monat; jedes weitere Lesen, in jedem Ausschnitt, kostet nichts mehr.

Parameter

max_chars
integerquery

Maximale Zeichenzahl des zurückzugebenden Textes (Standard 40000, Minimum 500).

rn_from
integerquery

Optionaler Bereichsanfang: die erste zurückzugebende Randnummer. Es kommen ganze Abschnitte zurück, lesen Sie die gelieferte Spanne daher an `returned_range` ab.

rn_to
integerquery

Optionales Bereichsende: die höchste zurückzugebende Randnummer (einschließlich). Muss >= rn_from sein.

section
stringquery

Optionaler benannter Abschnitt statt des ganzen Textes. Einer von: Tenor, Leitsatz, Tatbestand, Gründe (ohne Beachtung der Groß-/Kleinschreibung). Prüfen Sie `available_sections`, bevor Sie fragen.

court
stringquery

Optionales Unterscheidungsmerkmal für ein Aktenzeichen als `id`: die Gerichts-Kurzform, z. B. „BGH“. Wird als wortweises Präfix abgeglichen. Bei UUID-Abfragen ohne Wirkung.

date
stringquery

Optionales Unterscheidungsmerkmal für ein Aktenzeichen als `id`: das Entscheidungsdatum im Format YYYY-MM-DD.

Anfrage

curl "https://klaracase.de/api/v1/decisions/{id}" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Accept: application/json"

Antworten

200Erfolg
{
  "id": "0193b0c4-5f1e-7a2b-9c3d-4e5f6a7b8c9d",
  "aktenzeichen": "1 StR 185/01",
  "court": "BGH",
  "date": "2001-11-15",
  "jurisdiction": "DE",
  "metadata": {
    "document_type": "Urteil",
    "ecli": "ECLI:DE:BGH:2001:151101U1STR185.01.0",
    "file_numbers": [
      "1 StR 185/01"
    ]
  },
  "fortgeltung_checked": false,
  "fortgeltung_note": "Rechtskraft/Fortgeltung (whether a decision is still good law) is NOT checked. A decision returned here may have been quashed or superseded on appeal, and the ABSENCE of any such note is not evidence that it still stands.",
  "full_text": "Tenor … Gründe: I. … 21 Die Revision ist unbegründet …",
  "text_length": 48213,
  "truncated": true,
  "rn_source": "printed",
  "rn_source_note": "The Randnummern are the court's own printed numbers.",
  "available_sections": [
    "Tenor",
    "Gründe"
  ],
  "available_range": {
    "rn_from": 1,
    "rn_to": 64,
    "rn_source": "printed"
  },
  "available_range_scope": "decision",
  "has_rn_anchors": true,
  "api_version": "0.93.0",
  "changelog_url": "https://klaracase.de/docs/mcp/changelog",
  "credits": {
    "metered": true,
    "cost": 1,
    "credits_remaining": 27
  }
}
401Nicht authentifiziert
{
  "type": "https://klaracase.de/docs/api/errors#unauthenticated",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required. Send a Klaracase API token as a Bearer token.",
  "code": "unauthenticated"
}
402Keine Credits mehr
{
  "type": "https://klaracase.de/docs/api/errors#insufficient_credits",
  "title": "Payment Required",
  "status": 402,
  "detail": "Insufficient credits: this call costs 1 credit(s), but organization \"Kanzlei Beispiel\" has 0 remaining this month. Credits renew automatically at the start of each calendar month (UTC). Ask your organization admin to raise the allotment, or retry next month.",
  "code": "insufficient_credits",
  "cost": 1,
  "balance": 0
}
403Nicht erlaubt
{
  "type": "https://klaracase.de/docs/api/errors#token_ability_missing",
  "title": "Forbidden",
  "status": 403,
  "detail": "This API token does not carry the `read` ability this endpoint needs. Nothing was executed and nothing was charged. Create a token with that ability in Settings, API tokens.",
  "code": "token_ability_missing",
  "required_ability": "read"
}
404Nicht gefunden
{
  "type": "https://klaracase.de/docs/api/errors#not_found",
  "title": "Not Found",
  "status": 404,
  "detail": "The requested resource does not exist, or it belongs to another organization.",
  "code": "not_found"
}
409Konflikt
{
  "type": "https://klaracase.de/docs/api/errors#token_org_missing",
  "title": "Conflict",
  "status": 409,
  "detail": "This API token was created before tokens named an organization, so the API cannot tell which organization it acts for. Create a new token in Settings, API tokens; it acts for the organization you have open.",
  "code": "token_org_missing"
}
422Validierungsfehler
{
  "type": "https://klaracase.de/docs/api/errors#validation_failed",
  "title": "Unprocessable Content",
  "status": 422,
  "detail": "The selected max_chars is invalid.",
  "code": "validation_failed",
  "errors": {
    "max_chars": [
      "The selected max_chars is invalid."
    ]
  }
}
429Zu viele Anfragen
{
  "type": "https://klaracase.de/docs/api/errors#rate_limited",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Too many requests for this token. Wait `retry_after_seconds` and retry. Nothing was executed and nothing was charged.",
  "code": "rate_limited",
  "retry_after_seconds": 42
}
503Dienst nicht verfügbar
{
  "type": "https://klaracase.de/docs/api/errors#backend_unavailable",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "The backend could not complete this call, so nothing was charged. Retry in a few seconds.",
  "code": "backend_unavailable"
}

Suche