Is this directive transposed in this country?
In force, applicable and transposed are three different things. One call returns the national measures a Member State notified for an EU act, and how late they were.
By Matthias Begot · · Updated
An agent that has confirmed an EU directive is in force has confirmed almost
nothing about whether it binds anyone in a given country. A directive takes
effect on companies through national measures, and whether a Member State has
carried it into national law — and told the Commission it did — is a separate,
recorded fact.
GET /legal/transposition serves that record:
the national implementing measures a State notified for an act, each with its
national act type, reference, publication date and notification date, plus
the published transposition deadline and how many days the first notification
missed it. Ask for one country, or omit it for a one-line verdict across the
30 EEA States.
Three states, routinely collapsed into one
Agents — and the models behind them — treat “the NIS2 Directive exists” as equivalent to “NIS2 applies to my counterparty in Spain.” Three distinct facts sit between those two sentences.
| Question | What it means | Where it is answered |
|---|---|---|
| In force? | The act exists in the Union legal order | /legal/eu-act, field etat |
| Applicable? | The act has started to produce effects — sometimes years later | /legal/eu-act, field applicable_from |
| Transposed? | A directive has been carried into national law, and notified | /legal/transposition |
The first two are properties of the act. The third is a property of an act and a country together, and it is the one that decides whether a directive bites where your counterparty actually operates.
The gap between the first two is already wide enough to break naive reasoning — the AI Act entered into force on 1 August 2024 and its obligations land in tranches spread over years, on a calendar that has itself been amended since. The gap opened by the third is wider still, because it is twenty-seven answers, not one.
The notification is not paperwork — it is the sanctioned obligation
This is the part that makes a notification register worth querying rather than dismissing as bureaucracy. Under Article 260(3) TFEU, when the Commission brings a Member State before the Court of Justice for failing to notify measures transposing a directive adopted under a legislative procedure, the referral is accompanied directly by a request for financial sanctions — a lump sum, a daily penalty payment, or both. The failure to notify is itself what the Court is asked to fine.
NIS2 (Directive (EU) 2022/2555, CELEX 32022L2555) is the live illustration:
- 17 October 2024 — the transposition deadline. Most States miss it.
- 28 November 2024 — the Commission sends letters of formal notice.
- 7 May 2025 — reasoned opinions go to 19 Member States, named, for failing to notify full transposition.
- 8 July 2026 — the Commission refers Ireland, Spain, France and the Netherlands to the Court of Justice, with a request for a lump sum and daily penalties running until complete transposition is notified.
An agent doing supplier due diligence, drafting a cybersecurity clause, or scoping a security questionnaire across the EU in mid-2026 cannot treat “NIS2 applies” as a uniform continental fact. It did not, for four Member States, resolve into the same national obligations at the same time. That divergence is in the register, dated, and it is exactly the kind of thing a model’s weights smooth over.
The call: one act, one country — or the whole map
GET /legal/transposition?celex=32019L0790&country=FR
GET /legal/transposition?celex=32019L0790
celex is required; country is an ISO 3166-1 alpha-2 code. Dropping country
switches the response into summary mode. Two shapes under one schema:
- With
country— that State’sstatus, itsmeasures[],measure_count,first_measure_notified_onanddeadline_gap_days. - Without
country— asummary[]carrying one{ country, status, measure_count }line per State, and none of the per-country fields.
The answer comes from a table pre-ingested from EUR-Lex, so a covered act resolves in milliseconds, with no network call and no secret at request time.
deadline_gap_days: positive means late
The single most useful number in the response is the distance between the published transposition deadline and the earliest measure the State notified. Positive means the first notification came after the deadline.
France on the DSM copyright directive (32019L0790, deadline 2021-06-07) returns
-587: the first French measure — the July 2019 law creating a neighbouring
right for press publishers — was notified on 2019-10-29, well ahead of a deadline
that had not yet arrived.
The same country on NIS2 returns +640. The first French notification landed
640 days after the 17 October 2024 deadline — in July 2026, after the referral to
the Court. One country, two directives, opposite postures. No model holds that
pair.
Two rules keep the number honest. It is null the moment either date is missing
— never estimated. And when an act publishes several deadlines, the earliest
is used: NIS2 publishes two (2024-10-17 and 2024-10-18), both listed in
transposition_deadlines[].
publication_date is not notified_on
They can be years apart, and only one of them counts.
A Member State frequently notifies a pre-existing national 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. Reason on publication_date and you conclude France
transposed a directive before it was written.
deadline_gap_days is computed from notified_on only, and a publication date
is never substituted for a missing notification date. Fields absent at the source
are absent or null in the response, never guessed — national_ref is null
for States that published none.
One more ordering trap the endpoint removes: measures[] comes back in source
order, not chronological order. In the French DSM register the earliest
notification is the last entry of eight. That is why
first_measure_notified_on is served rather than left for the caller to derive.
Four statuses, and none of them concludes on national law
status | Meaning |
|---|---|
measures_notified | At least one national measure is recorded for this act and country |
no_measures_notified | An act subject to transposition, nothing recorded for this country |
not_applicable | An act carrying no transposition obligation — a regulation or a decision — and nothing notified |
out_of_scope | A non-EEA country carrying no measure for this act: it was never an addressee |
Two of these carry a subtlety worth wiring in.
act_type does not decide the status. The GDPR is a regulation, applies
directly, and France notified nothing under it — not_applicable, with a
status_reason saying why. But MiCA (32023R1114) is also a regulation and
France notified four measures under it, so it comes back measures_notified,
with transposition_deadline: null and therefore no deadline_gap_days.
A regulation can carry national implementing measures; the register reports
what was notified, not what the act type predicts.
out_of_scope is read act by act. GB on NIS2 (2022) is out of scope, while
GB on the 2000 e-Commerce Directive still returns measures_notified with the
two measures it notified before withdrawal. The summary sweep covers the 30 EEA
States plus any non-EEA State that actually notified something — silencing the
United Kingdom’s pre-Brexit measures would make the totals lie. The criterion is
structural, never historical: a current Member State is never reported out of
scope.
A register of notifications, and it says so four times
This is the boundary that defines the product, and it travels in data.limits
with every answer, summary mode included:
- It is a register, not a verdict on conformity. The measures are those the State chose to notify. Whether they transpose the act correctly or completely is not something a notification register can say. The Commission’s own transposition tracking carries the same caveat — a state of play based on information provided by Member States, without prejudice to the formal assessment.
no_measures_notifiedis not “untransposed”. A State may transpose through pre-existing or unnotified provisions. The endpoint reports the state of the register and stops.- Direct effect is out of scope. Vertical direct effect, consistent interpretation and State liability mean an untransposed directive is not without legal effect. This endpoint draws no conclusion on national applicability.
- Coverage follows the addressees of each act. Enlargements and withdrawals are not reconstructed act by act.
It also does not serve the text of national measures, rank States, or score
transposition quality. An agent that needs the wording of a French implementing
act goes to GET /legal/article with the reference
this endpoint handed it.
”Nothing has been notified” is a paid answer
The x402 golden rule applied to a register: the agent pays for the answer to its
question. A covered act returns its register state — a 200 — including when
that state is no_measures_notified, not_applicable or out_of_scope. The
measures array comes back empty, not absent, and status_reason says in one
sentence what the status means and 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
}
}
“Iceland has notified nothing for NIS2” is the answer the agent came for. Only
questions the service cannot answer leave the 200 range, and they are not billed:
a malformed CELEX or an unsupported country is a 400, and a well-formed CELEX
outside the corpus is a 404 — one that lists what is covered, so a second
call can succeed.
The corpus is selective, and that is the honest limit
GET /legal/transposition covers the same nine 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 is a 404 naming these nine. This is a curated digital- and
financial-regulation corpus, not a mirror of EUR-Lex. An agent should treat the
404 as “ask elsewhere”, not as “no such act”.
Freshness is a snapshot, and the notification dump runs on its own weekly
cycle — distinct from the consolidated EUR-Lex dump behind /legal/eu-act.
provenance.freshness.as_of dates the register you were served, which matters
precisely because a register whose whole point is a moving deadline gap must
never be read undated.
Where it sits in the x402 loop
No account, no key, no contract review precedes the first call:
- Discover the endpoint in the live catalog, call it, receive the
402challenge. - Pay — sign the chosen rail and replay the request.
- Read —
status,measure_count,first_measure_notified_on,deadline_gap_days, and theas_ofthat dates all of it. - Branch — cite the national measure, escalate a country whose gap is
sharply positive, or record
no_measures_notifiedas a register state rather than a legal conclusion.
The natural first call is summary mode: one settlement returns the whole map, and
only the countries that matter are worth a second, per-country call. The
Quickstart walks the full discover → 402 → pay → replay
cycle with runnable snippets. Price and accepted rails are served live by the
catalog, never pinned in an article.
Chain it with the rest of the legal family
The triptych is meant to be walked in order:
GET /legal/eu-act— the consolidated act at a date, withetatandapplicable_from: the in force and applicable halves (see Is this EU act in force? Look it up in EUR-Lex by CELEX or ELI).GET /legal/transposition— the transposed half, country by country.GET /legal/article— the French text a notified measure points to, in force at a date.GET /legal/deadline— when a time limit actually falls, under an explicitly chosen computation regime (see What date does this legal deadline fall on?).GET /legal/historyandGET /legal/diff— when a provision last changed, and what changed.
An agent that asks “is this in force?” and stops has asked a third of the
question. For the full field reference and error codes, see the
GET /legal/transposition documentation; for how
agents discover and call Invoket endpoints, see
For agents.
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.