BÊTA · API stable · ingestion du CGI en cours
legifrance.devdocumentation

Référence de l'API · v1

Documentation

Le droit français en vigueur en JSON : un article à n'importe quelle date, la recherche plein-texte et sémantique, le tout filtré par validité. Base : https://api.legifrance.dev

Authentification

Toutes les routes /v1/* (sauf /v1/health) exigent une clé d'API passée dans l'en-tête X-API-Key. Les clés ont le préfixe bk_.

en-tête d'authentification
curl https://api.legifrance.dev/v1/article/777 \
  -H "X-API-Key: bk_votre_cle"
Bêta : l'auto-inscription n'est pas encore ouverte. Pour obtenir une clé pendant la bêta, contacte-nous — l'API et le format des clés sont stables.

Article par numéro

GET /v1/article/:num

Renvoie l'unique version d'un article en vigueur à une date. Sans asOf, la version en vigueur aujourd'hui.

ParamètreTypeDescription
numcheminnuméro de l'article (ex. 777)
asOfquery · optiondate YYYY-MM-DD ; défaut = aujourd'hui
codequery · optioncode visé ; défaut CGI
GET /v1/article/777?asOf=2010-01-01
{
  "legiarti_id": "LEGIARTI000020549039",
  "code": "CGI", "num": "777", "etat": "MODIFIE",
  "date_debut": "2009-04-10", "date_fin": "2010-05-01",
  "asOf": "2010-01-01", "version_label": "9.0",
  "texte": "…", "url": "https://www.legifrance.gouv.fr/codes/article_lc/…",
  "source": "Légifrance — Etalab 2.0"
}

404 si aucune version n'est en vigueur à la date demandée (vacance de texte).

GET /v1/article

Recherche FTS5 (français, stemmée) restreinte par défaut aux versions en vigueur à asOf.

ParamètreTypeDescription
qqueryrequête (2–200 caractères)
asOfquery · optiondate de validité ; défaut aujourd'hui
codequery · optionfiltre par code
limitquery · option1–100 ; défaut 20
GET /v1/article?q=donation
{
  "total": 2, "asOf": "2026-06-04",
  "results": [{ "legiarti_id": "LEGIARTI000033809289", "num": "784",
    "extrait": "…<mark>donation</mark>…", "score": 8.4 }],
  "source": "Légifrance — Etalab 2.0"
}

Recherche sémantique

POST /v1/article/semantic

Recherche par le sens (embeddings), avec le même post-filtre temporel asOf. Corps JSON : query, topK (1–20), asOf?, code?.

POST /v1/article/semantic
curl -X POST https://api.legifrance.dev/v1/article/semantic \
  -H "X-API-Key: bk_…" -H "Content-Type: application/json" \
  -d '{"query":"abattement transmission entre vifs","topK":5}'
Bêta : l'index sémantique est en cours de constitution — les résultats peuvent être partiels tant que le corpus n'est pas entièrement vectorisé.

Statut

GET /v1/health

Public, sans clé. Renvoie l'état du service.

Serveur MCP

Branche un assistant (Claude, ChatGPT, Cursor…) sur le droit en vigueur via le Model Context Protocol. Deux transports : HTTP (https://mcp.legifrance.dev/mcp) ou stdio (package npm).

claude_desktop_config.json
{
  "mcpServers": {
    "legifrance": {
      "command": "npx",
      "args": ["@legifrance/mcp-server"],
      "env": { "LEGIFRANCE_API_KEY": "bk_…" }
    }
  }
}

Erreurs

Le contrat complet est décrit dans /openapi.json (OpenAPI 3).