GET /legal/transposition

Returns the national implementing measures a Member State has notified to the European Commission for an EU act: each measure with its national act type, title, national reference, publication date and notification date, plus the published transposition deadline and how far the first notification fell from it. The answer is served from a local table pre-ingested from EUR-Lex, so a covered act resolves in milliseconds with no network call and no secret at request time.

In force, applicable and transposed are three different things, and agents routinely collapse them into one.

  • In force - the act exists in the Union legal order: GET /legal/eu-act, field etat.
  • Applicable - the act has started to produce effects, which may be years after entry into force: the same endpoint, field applicable_from.
  • Transposed - a directive has been carried into national law by national measures. That is this endpoint, and it is the one that decides whether a directive bites in a given Member State.

What is served here is the register of notifications. It is not, and never becomes, an assessment of conformity or completeness.

See the live /catalog for the authoritative endpoint listing and price.

x402 golden rule: the agent pays for the answer to its question. A covered act returns its register state -> 200, including when the register is empty (no_measures_notified) or when the act carries no transposition obligation at all (not_applicable): “nothing has been notified” is the answer the agent came for, and it is a paid answer. An act outside the corpus is a 404, not billed.

Parameters

ParameterTypeRequiredDescription
celexstringyesCELEX identifier of the EU act, for example 32019L0790
countrystringnoISO 3166-1 alpha-2 code of the Member State. Omitted, the response switches to summary mode
GET /legal/transposition?celex=32019L0790&country=FR
GET /legal/transposition?celex=32019L0790

Two response shapes under one schema

  • With country - that State’s status, its measures[], its measure_count, first_measure_notified_on and deadline_gap_days.
  • Without country - a summary[] with one line per State (country, status, measure_count) and none of the per-country fields. The sweep covers the 30 EEA States - the EU-27 plus IS, LI and NO - plus any non-EEA State that actually notified measures for the act. The United Kingdom carries some, from before its withdrawal: silencing them would make the total lie.

Covered acts

The corpus is selective - the same acts as GET /legal/eu-act:

32000L0031 (e-Commerce) · 32014R0910 (eIDAS) · 32016R0679 (GDPR) · 32019L0790 (DSM copyright) · 32022L2555 (NIS2) · 32022R1925 (DMA) · 32022R2065 (DSA) · 32023R1114 (MiCA) · 32024R1689 (AI Act)

Any other CELEX returns a 404 that lists these nine.

200 response - UnifiedResponse

{
  "data": { ... },
  "provenance": {
    "source": "eur-lex-ntm",
    "fetched_at": "2026-07-29T16:05:05Z",
    "freshness": { "kind": "snapshot", "as_of": "2026-07-29T00:00:00Z" }
  }
}
  • provenance.source: eur-lex-ntm - the national transposition measures published by EUR-Lex.
  • freshness.kind: snapshot; as_of dates the notification dump, which has its own weekly cycle, distinct from the consolidated EUR-Lex dump behind /legal/eu-act.

Fields of data

FieldTypeDescription
actobjectThe act: celex, act_type, transposition_deadline, transposition_deadlines[], and title when the consolidated corpus carries one - never rebuilt from the number
countrystringEcho of the requested State, upper-cased. Absent in summary mode
statusstringClosed enumeration, below. Absent in summary mode
status_reasonstringWhy that status, in one sentence. Served when the status calls for it
measuresarrayThe notified measures, in source order. Empty, never absent, when nothing is notified. Absent in summary mode
measure_countnumberReal count for that country - and, in summary mode, the total across States
first_measure_notified_onstringThe earliest known notified_on. Absent when nothing is notified
deadline_gap_daysnumber|nullDays between the deadline and the earliest notification. Positive means late
summaryarraySummary mode only: one { country, status, measure_count } line per State
limitsarrayThree fixed sentences on what this verdict is not. Served with every answer

status

ValueMeaning
measures_notifiedAt least one national measure is recorded for this act and country
no_measures_notifiedAn act subject to transposition, with nothing recorded for this country
not_applicableAn act carrying no transposition obligation - a regulation or a decision - and nothing notified

None of the three concludes on national law. And a regulation can carry national implementing measures: when it does, it is reported as measures_notified like any other act (see the MiCA example below).

measures[]

FieldTypeDescription
celex_ntmstringIdentifier of the notified measure in EUR-Lex
titlestringTitle as notified, in the national language
national_act_typestringLoi, Ordonnance, Décret, Arrêté, Mesures administratives
national_refstringNational reference as notified (French NOR, official journal number). null when the State published none
publication_datestringPublication in the national official journal
notified_onstringDate the State notified the measure to the Commission - the date this endpoint reasons on
linkstringNational text at the Member State, when it was notified

Fields missing at the source are absent or null - never guessed.

publication_date is not notified_on

They can be years apart, and only one of them counts. A Member State often notifies a pre-existing act as transposing a directive: in the French register for the DSM Directive, an Arrêté published on 2016-10-20 - two and a half years before the directive existed - was notified on 2021-10-05. deadline_gap_days is computed from notified_on only, and a publication date is never substituted for a missing notification date.

Reading deadline_gap_days

Days between the published transposition deadline and the earliest notified measure. Positive means the first notification came after the deadline (late); negative means before it. It is null as soon as either date is missing - never estimated.

The act’s deadline is the earliest one published when the act carries several: NIS2 publishes two (2024-10-17 and 2024-10-18), and both are listed in transposition_deadlines[].

Example - one country: France and the DSM Directive

Eight measures, of which two are shown here (measures[] abridged for this page - the service returns all eight). Note that the earliest notification is the last entry: measures come in source order, not chronological order, which is exactly why first_measure_notified_on is served rather than left for the caller to derive.

{
  "data": {
    "act": {
      "celex": "32019L0790",
      "act_type": "directive",
      "transposition_deadline": "2021-06-07",
      "transposition_deadlines": ["2021-06-07"]
    },
    "country": "FR",
    "status": "measures_notified",
    "measures": [
      {
        "celex_ntm": "72019L0790FRA_202058837",
        "title": "LOI no 2020-1508 du 3 décembre 2020 portant diverses dispositions d'adaptation au droit de l'Union européenne en matière économique et financière",
        "national_ref": "ECOM1935457L",
        "national_act_type": "Loi",
        "publication_date": "2020-12-04",
        "notified_on": "2020-12-18",
        "link": null
      },
      { "…": "six more measures, in source order: two Ordonnances, three Décrets and the 2016 Arrêté discussed above" },
      {
        "celex_ntm": "72019L0790FRA_278035",
        "title": "LOI no 2019-775 du 24 juillet 2019 tendant à créer un droit voisin au profit des agences de presse et des éditeurs de presse (1)",
        "national_ref": "MICX1902858L",
        "national_act_type": "Loi",
        "publication_date": "2019-07-26",
        "notified_on": "2019-10-29",
        "link": null
      }
    ],
    "measure_count": 8,
    "first_measure_notified_on": "2019-10-29",
    "deadline_gap_days": -587,
    "limits": [
      "Measures are those notified to the European Commission by the Member State; this is a register of notifications, not an assessment of conformity or completeness.",
      "`no_measures_notified` means nothing is recorded for this act; it does not mean the directive is untransposed in national law, which may transpose it through pre-existing or unnotified provisions.",
      "Direct effect (vertical), consistent interpretation and State liability are out of scope: an untransposed directive is not without legal effect, and this endpoint draws no conclusion on national applicability."
    ]
  },
  "provenance": {
    "source": "eur-lex-ntm",
    "fetched_at": "2026-07-29T16:05:05Z",
    "freshness": { "kind": "snapshot", "as_of": "2026-07-29T00:00:00Z" }
  }
}

France notified 587 days before the deadline. For NIS2, the same country comes out at +640: the first French notification landed 640 days after the 2024-10-17 deadline.

Example - summary mode: one line per State

Omit country and the answer becomes a portfolio view: which States have notified anything for this act, and how much.

{
  "data": {
    "act": {
      "celex": "32019L0790",
      "act_type": "directive",
      "transposition_deadline": "2021-06-07",
      "transposition_deadlines": ["2021-06-07"]
    },
    "measure_count": 102,
    "summary": [
      { "country": "AT", "status": "measures_notified", "measure_count": 2 },
      { "country": "CZ", "status": "measures_notified", "measure_count": 17 },
      { "country": "FR", "status": "measures_notified", "measure_count": 8 },
      { "country": "IS", "status": "no_measures_notified", "measure_count": 0 },
      { "country": "LI", "status": "no_measures_notified", "measure_count": 0 },
      { "country": "NO", "status": "no_measures_notified", "measure_count": 0 },
      { "…": "the remaining EEA States, one line each" }
    ],
    "limits": ["… the three fixed sentences …"]
  }
}

measure_count at the top level is the total across States (102 here), not the length of the abridged extract above. There is no status, no measures[] and no deadline_gap_days in this shape.

Example - a regulation: not_applicable

The GDPR is a regulation. It applies directly, carries no transposition obligation, and France has notified nothing under it. That is a 200 with a motivated not_applicable, not an error and not an empty page:

{
  "data": {
    "act": {
      "celex": "32016R0679",
      "act_type": "regulation",
      "transposition_deadline": null,
      "transposition_deadlines": []
    },
    "country": "FR",
    "status": "not_applicable",
    "status_reason": "act `32016R0679` is a regulation and carries no transposition obligation: it applies directly in national law. National implementing measures are served when a Member State notifies them",
    "measures": [],
    "measure_count": 0
  }
}

Example - a regulation that does carry measures

MiCA is also a regulation, and France has notified four measures under it - so the status is measures_notified, transposition_deadline is null (a regulation publishes none) and deadline_gap_days is therefore absent. The act_type never decides the status on its own.

{
  "data": {
    "act": {
      "celex": "32023R1114",
      "act_type": "regulation",
      "transposition_deadline": null,
      "transposition_deadlines": []
    },
    "country": "FR",
    "status": "measures_notified",
    "measures": [
      {
        "celex_ntm": "72023R1114FRA_202502106",
        "title": "Ordonnance n°2024-936 du 15 octobre 2024 relative aux marchés de crypto-actifs",
        "national_ref": "ECOT2415927R",
        "national_act_type": "Ordonnance",
        "publication_date": null,
        "notified_on": "2025-04-14",
        "link": null
      },
      { "…": "three more Décrets, notified between 2025-04-14 and 2025-12-26" }
    ],
    "measure_count": 4,
    "first_measure_notified_on": "2025-04-14"
  }
}

Example - nothing notified, said as such

Iceland has notified no measure for NIS2. The measures array is empty, not absent, and status_reason says in one sentence what the status means - and, just as importantly, what it does not mean.

{
  "data": {
    "act": {
      "celex": "32022L2555",
      "act_type": "directive",
      "transposition_deadline": "2024-10-17",
      "transposition_deadlines": ["2024-10-17", "2024-10-18"]
    },
    "country": "IS",
    "status": "no_measures_notified",
    "status_reason": "no national implementing measure is recorded for this act and country; this is the state of the notification register, not a finding of non-transposition",
    "measures": [],
    "measure_count": 0
  }
}

What this endpoint will not do

The three sentences below travel in data.limits with every answer, including the summary mode. They are the contract, not small print.

  • It is a register, not a verdict on conformity. The measures are those the Member State chose to notify; whether they transpose the act correctly or completely is not something a notification register can say.
  • no_measures_notified is not “untransposed”. A State may transpose through pre-existing or unnotified provisions. The endpoint reports the state of the register, and stops there.
  • Direct effect is out of scope. Vertical direct effect, consistent interpretation and State liability mean an untransposed directive is not without legal effect - and this endpoint draws no conclusion on national applicability.

It also does not serve the text of the national measures, rank States, or score transposition quality.

Errors

Only requests the service cannot answer leave the 200 range.

StatuscodeCase
400INVALID_REFNo celex supplied
400INVALID_INPUTMalformed celex, or a country outside the covered list
404UNKNOWN_ACTThe CELEX is well formed but outside the selective corpus
404NOT_FOUNDThe served store carries no transposition table
500INTERNALInternal error (detail logged, not exposed)
{ "code": "UNKNOWN_ACT", "error": "no national transposition data for act `39999R9999`; the corpus is selective and covers 32000L0031, 32014R0910, 32016R0679, 32019L0790, 32022L2555, 32022R1925, 32022R2065, 32023R1114, 32024R1689" }
{ "code": "INVALID_INPUT", "error": "country `XX` is not covered; supported countries are AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, IE, IS, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK" }

Each refusal lists what is covered, so a second call can succeed.

Attribution

Transposition data is derived from the national implementing measures published by EUR-Lex / Cellar by the Publications Office of the European Union; reuse must preserve attribution to the European Union and EUR-Lex.

See also

  • GET /legal/eu-act - the consolidated text of an EU act at a date, with etat and applicable_from: the in force and applicable halves of the triptych.
  • GET /legal/deadline - the due date of a time limit under an explicitly chosen computation regime.
  • GET /legal/history - the version timeline of an article.
  • For agents - discovery surfaces, the live /catalog and how settlement works.