---
title: "Citing Cases"
method: GET
path: "/v1/norm/{abbrev}/{ref}/citing-cases"
---

# Citing Cases

`GET /v1/norm/{abbrev}/{ref}/citing-cases`

## Request

- Base URL: `https://recht.nulegal.eu` (the document declares no server; this is the origin it was published from)
- URL: `https://recht.nulegal.eu/v1/norm/{abbrev}/{ref}/citing-cases`
- Auth: none declared

Decisions that cite this provision, most significant first.

Every court is in scope — Bundesgerichte, Obergerichte and Instanzgerichte alike,
plus the Court of Justice where it cites EU law. The ranking is: how often the
deciding text cites the provision, then the court's tier, then recency.

**Parameters**

  limit   rows per page, 1-100, default 10.
  offset  rows to skip, for reading past the first page. `total` is the full
          count, so `offset` up to `total` walks every citing decision.
  sort    `weight` (default, the ranking above) or `recent`, newest decision
          first. The default response is byte-identical to what it was before
          this parameter existed.

**`sort=recent` is BOUNDED, and says so when the bound bites.** Ordering a norm's
citation edges by decision date has no index to walk, so the planner sorts every
edge; past ~20.000 edges it flips to a sequential scan of the whole `caselaw`
table with a ~45 MB external merge. The norm page has run this query under a
citer-count gate and a statement timeout since and this reuses both
(`web._NORM_RECENT_MAX_CITERS`, `web._NORM_RECENT_TIMEOUT_MS`) — 99,95 % of cited
norms are inside the gate; the procedural giants (§ 154 VwGO, § 708 ZPO) are not.
Outside it, or on a timeout, the response falls back to the weight ranking and
SAYS SO in `ranking` — it never serves a weight-ranked list under a label that
claims recency.

**Response**

  norm      the provision, as "§ 288 BGB"
  total     how many citing decisions there are in all
  offset    the offset these rows start at, echoed back
  limit     the page size in force
  cases     the page: court, decided, aktenzeichen, ecli, doknr, slug, url,
            `citations` (how often this decision cites the provision) and the
            first 300 characters of its Leitsatz
  ranking   present ONLY when a `sort` was asked for: `sort` is the ordering
            actually served, and `requested_sort`/`sort_note` appear when that is
            not the one asked for
  coverage  present ONLY when `total` is 0 for a jurisdiction whose statutes the
            citation index does not reach — see below

**A zero that is not a zero.** The citation index links decisions to FEDERAL and EU
provisions. For a Land statute there are no links at all, so `total: 0` used to be
indistinguishable from "no court has ever cited this" — and an agent researching
Saxon or Brandenburg law read it as a finding and wrote it down. Such a response now
carries `coverage: {"state": "none-for-jurisdiction", …}` naming the Land and
pointing at the case search, where that Land's decisions really are.

Rows are also filtered to decisions that have an addressable page here, so `total`
never promises a link `cases` cannot contain.

## Path parameters

- `abbrev` string, required
- `ref` string, required

## Query parameters

- `limit` integer
- `offset` integer
- `sort` string

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/nulegal/apis/nu-legal-deutsches-recht-api.md) · [All operations](https://skmtc.dev/nulegal/apis/nu-legal-deutsches-recht-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nulegal/apis/nu-legal-deutsches-recht-api/revisions/b4695d8006b1?raw)
