Examples

39 worked requests and responses across 14 endpoints. Each one also appears on its own endpoint page.

POST/api/cjeu

Request

{
  "arguments": {
    "eclis": [
      "ECLI:EU:C:2026:297"
    ],
    "degreesSource": 1,
    "degreesTarget": 1,
    "pageSize": 5
  }
}

POST/api/combined

- sourceScope "ANY" only for fields in both datasets
- Root op AND excludes datasets missing scoped rules
- year: 4-digit, must not be in the future
- Dates: YYYY-MM-DD, must not be in the future
- respondent_state: ISO-3 (ARM, DEU, TUR)
- language: ISO-3 (ENG, FRE, DEU)
- document_type RS: DEC, OPI
- document_type ECHR: JUD, DEC, COM, CLIN, PR
- selectedLaws: "BWBx123|456" format
- Cursor must match current sort settings

Unified query with nested group

{
  "queryBuilder": {
    "op": "AND",
    "rules": [
      {
        "field": "year",
        "operator": "equals",
        "value": "2020",
        "sourceScope": "ANY"
      },
      {
        "field": "respondent_state",
        "operator": "equals",
        "value": "ARM",
        "sourceScope": "ECHR"
      },
      {
        "field": "document_type",
        "operator": "equals",
        "value": "DEC",
        "sourceScope": "RS"
      }
    ],
    "groups": [
      {
        "op": "OR",
        "rules": [
          {
            "field": "keywords",
            "operator": "contains",
            "value": "right to life",
            "sourceScope": "ANY"
          },
          {
            "field": "domain",
            "operator": "equals",
            "value": "Human rights",
            "sourceScope": "RS"
          }
        ]
      }
    ]
  },
  "sort": { "by": "date", "direction": "desc" },
  "pagination": { "pageSize": 20 }
}

Response

{
  "nodes": [
    {
      "id": "ECLI:NL:HR:2020:...",
      "data": {
        "isResult": "True",
        "dataset": "RS",
        "cites_count": 5,
        "cited_by_count": 12,
        "languages": ["NLD"],
        "document_type": "DEC"
      }
    },
    {
      "id": "ECLI:CE:ECHR:2020:...",
      "data": {
        "isResult": "True",
        "dataset": "ECHR",
        "cites_count": 3,
        "cited_by_count": 8,
        "languages": ["ENG", "FRE"],
        "document_type": "JUD"
      }
    }
  ],
  "pagination": {
    "pageSize": 20,
    "nextCursor": "eyJ...",
    "total": 1234,
    "rsTotal": 800,
    "echrTotal": 434
  },
  "facets": {
    "rs_document_type": [{"value": "DEC", "count": 750}],
    "rs_domain": [{"value": "Strafrecht", "count": 200}],
    "rs_instance": [{"value": "Hoge Raad", "count": 100}],
    "echr_document_type": [{"value": "JUD", "count": 300}],
    "echr_respondent_state": [{"value": "TUR", "count": 50}],
    "echr_importance": [{"value": 1, "count": 40}],
    "echr_language": [{"value": "ENG", "count": 400}],
    "echr_article_violated": [{"value": "6", "count": 500}, {"value": "6-1", "count": 480}],
    "echr_article_applied": [{"value": "41", "count": 1200}, {"value": "35-1", "count": 900}],
    "echr_article_non_violated": [{"value": "6", "count": 50}]
  },
  "warnings": []
}

Response

- nodes[].data.cites_count / cited_by_count — citation counts per node
- pagination.total — combined total hits across both datasets
- pagination.rsTotal / echrTotal — per-dataset totals
- facets — only returned on the first page (no cursor). Contains filter
  value counts grouped by rs_* and echr_* prefixes.
- sort.by = "citations" sorts by cited_by_count (most cited first)

Response

1. Search — POST /api/combined
   → returns nodes + totals + facets (first page only)

2. User selects a node to explore

3. Expand — POST /api/combined/expand
   → returns edges + neighbour nodes

POST/api/combined/expand

- nodeId is required and must be non-empty
- At least one of degreesSource or degreesTarget
  must be 1 (otherwise nothing to expand)
- Degrees accept only 0 or 1 (integer, not boolean)
- nodeDataset must be "ECHR" or "RS" if provided
- Unknown request keys are rejected

Expand ECHR node (both directions)

{
  "nodeId": "ECLI:CE:ECHR:1968:0723JUD000147462",
  "degreesSource": 1,
  "degreesTarget": 1
}

Expand RS node (outgoing only)

{
  "nodeId": "ECLI:NL:HR:2018:1234",
  "degreesTarget": 1
}

With explicit dataset

{
  "nodeId": "ECLI:CE:ECHR:2019:0101JUD001234567",
  "degreesSource": 1,
  "nodeDataset": "ECHR"
}

Response

{
  "nodeId": "ECLI:CE:ECHR:1968:0723JUD000147462",
  "edges": [
    {
      "id": "ECLI:CE:ECHR:2006:..._ECLI:CE:ECHR:1968:...",
      "source": "ECLI:CE:ECHR:2006:...",
      "target": "ECLI:CE:ECHR:1968:..."
    },
    {
      "id": "ECLI:CE:ECHR:1968:..._ECLI:CE:ECHR:1961:...",
      "source": "ECLI:CE:ECHR:1968:...",
      "target": "ECLI:CE:ECHR:1961:..."
    }
  ],
  "expandedNodes": [
    {
      "id": "ECLI:CE:ECHR:2006:...",
      "data": {
        "dataset": "ECHR",
        "ecli": "ECLI:CE:ECHR:2006:...",
        "date_judgment": "2006-07-11",
        "respondent_state": "GRC",
        "document_type": "JUD",
        "languages": ["ENG", "FRE"]
      }
    }
  ]
}

POST/api/echr

Keywords only

{
  "arguments": {
    "keywords": ["Armenia"],
    "degreesSource": 1,
    "degreesTarget": 1,
    "attributesToFetch": "MINIMAL"
  }
}

Article filter with respondent state

{
  "arguments": {
    "article_violated": ["6", "8"],
    "article_violated_mode": "OR",
    "respondent_state": ["GRC"],
    "degreesSource": 1,
    "degreesTarget": 1,
    "pageSize": 100
  }
}

Response

{
  "nodes": [
    {
      "id": "ECLI:CE:ECHR:2019:...",
      "data": {
        "isResult": "True",
        "dataset": "ECHR",
        "ecli": "ECLI:CE:ECHR:2019:...",
        "date_judgment": "2019-03-14",
        "respondent_state": "GRC",
        "document_type": "HEJUD",
        "article_violated": "6",
        "importance": 2,
        "languages": { "ENG": "001-...", "FRE": "001-..." },
        "cites": ["ECLI:CE:ECHR:2015:..."],
        "cited_by": []
      }
    }
  ],
  "edges": [...],
  "message": "",
  "limits": {
    "queryResultLimit": 10000,
    "responseNodeLimit": 5000,
    "responseEdgeLimit": 30000,
    "pageSizeDefault": 1000,
    "pageSizeMax": 1000
  },
  "graph": {
    "paginationRequested": false,
    "graphComplete": true,
    "statisticsSafe": true,
    "partialReasons": []
  }
}

POST/api/rechtspraak

Exact ECLI (fast path)

{
  "arguments": {
    "eclis": ["ECLI:NL:HR:2020:1097"],
    "degreesSource": 0,
    "degreesTarget": 0
  }
}

Typed-edge filter

{
  "arguments": {
    "eclis": ["ECLI:NL:HR:2020:1097"],
    "degreesSource": 1,
    "degreesTarget": 1,
    "relationTypes": ["cassatie", "hogerBeroep"],
    "edgeSources": ["formal-relation"]
  }
}

Publication-date window + BWB filter

{
  "arguments": {
    "bwbResources": ["BWBR0001840"],
    "datePublishedStart": "2020-01-01",
    "datePublishedEnd": "2020-12-31",
    "docTypes": ["DEC"],
    "degreesSource": 0,
    "degreesTarget": 0,
    "pageSize": 50
  }
}

Response

{
  "nodes": [
    {
      "id": "ECLI:NL:HR:2020:1097",
      "data": {
        "isResult": "True",
        "ecli": "ECLI:NL:HR:2020:1097",
        "date_decision": "2020-06-23",
        "date_published": "2020-06-23",
        "document_type": "Uitspraak",
        "instance": "Hoge Raad",
        "domains": ["Strafrecht", "Strafrecht-Algemeen/Overig/Niet-gelabeld"],
        "jurisdiction_country": "NL",
        "procedure_type": "Cassatie",
        "opendata_status": "public",
        "cites": ["ECLI:NL:HR:2018:..."],
        "cited_by": ["ECLI:NL:RBAMS:2021:..."],
        "url_publication": "https://uitspraken.rechtspraak.nl/..."
      }
    }
  ],
  "edges": [
    {
      "id": "ECLI:NL:HR:2020:1097_ECLI:NL:HR:2018:...",
      "source": "ECLI:NL:HR:2020:1097",
      "target": "ECLI:NL:HR:2018:...",
      "relation_type": "cassatie",
      "edge_source": "formal-relation"
    }
  ],
  "message": "",
  "limits": {
    "queryResultLimit": 10000,
    "responseNodeLimit": 5000,
    "responseEdgeLimit": 30000,
    "pageSizeDefault": 1000,
    "pageSizeMax": 1000
  },
  "graph": {
    "paginationRequested": false,
    "graphComplete": true,
    "statisticsSafe": true,
    "partialReasons": []
  }
}

POST/api/cjeu/text

Request

{
  "ecli": "ECLI:EU:C:2026:297",
  "language": "EN"
}

POST/api/echr/text

POST (batch)

{
  "ecli": [
    "ECLI:CE:ECHR:2000:1026JUD003098596",
    "ECLI:CE:ECHR:2005:0315JUD007009801"
  ],
  "language": "ENG"
}

Response (single)

{
  "ecli": "ECLI:CE:ECHR:2000:1026JUD003098596",
  "itemid": "001-0001",
  "full_text": "THIRD SECTION CASE OF...",
  "full_text_available": true,
  "language": "ENG"
}

Response (all languages)

{
  "ecli": "ECLI:CE:ECHR:2000:1026JUD003098596",
  "default_language": "ENG",
  "languages": {
    "ENG": { "itemid": "001-0001", "full_text": "...", "full_text_available": true },
    "FRE": { "itemid": "001-0002", "full_text": null, "full_text_available": false, "message": "Full text not available for this ECLI." }
  }
}

POST/api/rechtspraak/text

POST (single)

{
  "ecli": "ECLI:NL:HR:2020:1097"
}

POST (batch)

{
  "ecli": [
    "ECLI:NL:HR:2020:1097",
    "ECLI:NL:PHR:2020:739"
  ]
}

Response (single)

{
  "ecli": "ECLI:NL:HR:2020:1097",
  "full_text": "HOGE RAAD DER NEDERLANDEN\nSTRAFKAMER\n...",
  "full_text_available": true
}

Response (no text)

{
  "ecli": "ECLI:NL:HR:2020:1097",
  "full_text": null,
  "full_text_available": false,
  "message": "Full text not available for this ECLI."
}

POST/api/community

Request

{
  "community_id": 1,
  "nodes": [
    {
      "id": "ECLI:NL:...",
      "summary": "Vreemdelingenrecht en asielaanvraag..."
    },
    {
      "id": "ECLI:NL:...",
      "summary": "Verblijfsvergunning en terugkeerbesluit..."
    }
  ]
}

Response

{
  "community_id": 1,
  "keywords": {
    "keywords": [
      "asiel",
      "vreemdeling",
      "verblijfsvergunning"
    ],
    "category": "IMMIGRATION",
    "scores": [0.29, 0.22, 0.18]
  },
  "node_count": 2,
  "summary_count": 2
}

POST/api/statistics

Request

{
  "nodes": [
    { "id": "ECLI:NL:HR:2018:1234", "data": { "date_decision": "2018-05-01" } },
    { "id": "ECLI:NL:HR:2017:5678", "data": { "date_decision": "2017-11-15" } },
    { "id": "ECLI:NL:RBAMS:2019:9012", "data": { "date_decision": "2019-02-20" } }
  ],
  "edges": [
    { "source": "ECLI:NL:HR:2018:1234", "target": "ECLI:NL:HR:2017:5678" },
    { "source": "ECLI:NL:RBAMS:2019:9012", "target": "ECLI:NL:HR:2018:1234" }
  ]
}

Response

{
  "ECLI:NL:HR:2018:1234": {
    "parent": "ECLI:NL:HR:2018:1234",
    "degree": 2,
    "in-degree": 1,
    "out-degree": 1,
    "degree centrality": 1.0,
    "in-degree centrality": 0.5,
    "out-degree centrality": 0.5,
    "relative in-degree": 0.5,
    "pageRank": 0.4,
    "betweenness centrality": 1.0,
    "closeness centrality": 1.0,
    "community": 0,
    "year": 2018
  },
  "ECLI:NL:HR:2017:5678": { ... },
  "ECLI:NL:RBAMS:2019:9012": { ... }
}

POST/api/summaries

Request

{
  "eclis": [
    "ECLI:NL:RBAMS:2018:1234",
    "ECLI:NL:RBAMS:2019:5678"
  ]
}

Response

{
  "summaries": [
    {
      "ecli": "ECLI:NL:RBAMS:2018:1234",
      "data": {
        "procesverloop": "Op 12 maart 2018...",
        "overwegingen": "De rechtbank overweegt...",
        "beslissing": "De rechtbank verklaart...",
        "proces_summary": "Procedure betreffende...",
        "overw_summary": "De rechtbank heeft...",
        "beslis_summary": "Vordering toegewezen..."
      }
    }
  ]
}

GET/api/links

Request

GET /api/links?q=artikel%206%20evrm

Response

[
  {
    "type": "LAW",
    "number": "6",
    "bwb_id": "BWBV0001000",
    "bwb_label_id": "6",
    "title": "Europees Verdrag voor de Rechten van de Mens",
    "cases": [
      ["ECLI:NL:HR:2020:...", "RS"],
      ["ECLI:NL:RBAMS:2019:...", "RS"]
    ]
  }
]

GET/api/links/cases

Request

GET /api/links/cases?b=BWBV0001000&bl=6

Response

[
  ["ECLI:NL:HR:2020:1234", "RS"],
  ["ECLI:NL:RBAMS:2019:5678", "RS"],
  ["ECLI:NL:RBDHA:2021:9012", "RS"]
]

GET POST/api/links/laws

GET

GET /api/links/laws?q=artikel%206%20evrm

POST

{ "q": "artikel 6 evrm" }

Response

[
  {
    "bwb_id": "BWBV0001000",
    "bwb_label_id": "6",
    "title": "Europees Verdrag voor de Rechten van de Mens",
    "amount_related_cases": 42
  }
]