Discovery & Exploration
Explore what's available: countries, sources, courts, filters, and statistics.
GET /v1/discover/countries
List all countries with document counts by type. No parameters required.
{
"countries": [
{
"code": "FR",
"case_law_sources": 3,
"legislation_sources": 1,
"doctrine_sources": 1,
"total_documents": 1850000
},
{
"code": "DE",
"case_law_sources": 2,
"legislation_sources": 1,
"total_documents": 920000
}
]
}
GET /v1/discover/countries/{code}/sources
List all data sources for a specific country.
| Parameter | In | Description |
|---|---|---|
code | path | ISO country code (e.g. FR, DE, EU) |
Response Fields
| Field | Type | Description |
|---|---|---|
source_id | string | Unique source identifier (e.g. FR/Judilibre) |
data_type | string | case_law, legislation, or doctrine |
court_name | string | Court or institution name |
tier | number | Quality tier (1 = highest) |
document_count | number | Total documents in this source |
date_range | object | {min, max} date strings |
notes | string | Additional notes about the source |
Example: GET /v1/discover/countries/FR/sources
{
"sources": [
{
"source_id": "FR/Judilibre",
"data_type": "case_law",
"court_name": "Cour de cassation",
"tier": 1,
"document_count": 520000,
"date_range": {"min": "1790-01-01", "max": "2026-04-01"},
"notes": "Cour de cassation and cours d'appel decisions"
}
]
}
GET /v1/discover/sources/{source}/filters
Get the available filter values for a specific source. Use these to build precise search queries.
| Parameter | In | Description |
|---|---|---|
source | path | Source identifier (e.g. FR/Judilibre) |
FilterOptions Response
| Field | Type | Description |
|---|---|---|
courts[] | string[] | Available court names |
jurisdictions[] | string[] | Jurisdiction values |
chambers[] | string[] | Court chambers |
decision_types[] | string[] | Types of decisions |
languages[] | string[] | Available languages |
court_tiers[] | number[] | Tier levels (1–3) |
subdivisions[] | string[] | Court subdivisions |
date_range | object | {min, max} date strings |
GET /v1/discover/courts
List all courts with document counts. Optionally filter by country or source.
| Parameter | In | Default | Description |
|---|---|---|---|
country | query | — | ISO country code to filter by |
source | query | — | Source identifier to filter by |
{
"courts": [
{"court": "Cour de cassation", "count": 520000},
{"court": "Bundesgerichtshof", "count": 185000},
{"court": "Court of Justice of the EU", "count": 42000}
]
}
GET /v1/stats
Global statistics across the entire dataset. No parameters required.
{
"legislation_total": 245000,
"case_law_total": 3200000,
"doctrine_total": 18000,
"total": 3463000,
"countries": 28,
"sources": 47,
"pinecone_vectors": 3463000
}
GET /v1/manifest
Returns the full pre-computed manifest with stats, countries, sources by country, courts by country, and build timestamp.
The manifest is built at startup in a background thread. If the server just started, this endpoint may return {"loading": true} until the manifest is ready (typically a few seconds).
{
"stats": { ... },
"countries": [ ... ],
"sources_by_country": { "FR": [...], "DE": [...] },
"courts_by_country": { "FR": [...], "DE": [...] },
"built_at": "2026-04-04T10:30:00Z"
}
Recommended Exploration Flow
Follow this sequence to discover available data and build targeted search queries.