---
title: "Detail of a single mercantile-law norm (with act↔norm bridge)"
method: GET
path: "/api/v1/legal/norm/{slug}"
tags: ["Legal"]
---

# Detail of a single mercantile-law norm (with act↔norm bridge)

`GET /api/v1/legal/norm/{slug}`

Return one norm's BOE/ELI identification, its key articles (each with canonical URL + a flag for seeded consolidated text), the BORME act types it governs (the law→data bridge) and a single AI-citable atomic fact (`citable_fact`). LICENSE: consolidated text from the BOE, re-used under Ley 37/2007; the official version is boe.es. Informational only — NOT legal advice. Cached 24h.

## Path parameters

- `slug` string, required

## Response `200`

Norm detail with key articles, regulated acts and a citable fact

- LegalNormResponse — License/attribution/disclaimer envelope present in every legal-layer response. The legal corpus is consolidated BOE text re-used under Ley 37/2007 (NOT CC BY 4.0).
  - `norm` LegalNormFull, required
    - `slug` string
    - `title` string
    - `short_name` string, nullable
    - `norm_type` string
    - `norm_type_label` string
    - `boe_id` string, nullable
    - `eli` string, nullable
    - `official_url` string, uri — Canonical, authentic source at boe.es.
    - `in_force` boolean
    - `repealed_by` string, nullable
    - `summary` string
    - `date_published` string, date, nullable
    - `date_modified` string, date
    - `url` string, uri
  - `key_articles` LegalKeyArticle[]
    - `article_num` string
    - `label` string
    - `rule` string — Plain-language rule extracted from the article.
    - `has_text` boolean — Whether the consolidated BOE text is seeded for this article.
    - `url` string, uri
    - `api_url` string, uri
  - `regulated_acts` LegalRegulatedAct[]
    - `act_type` string
    - `label` string
    - `articles` string
    - `microtext` string
    - `url` string, uri — Bridge page listing real companies with this act (/ley/{slug}/empresas).
  - `citable_fact` LegalCitableFact, nullable — Single atomic, verbatim-citable fact for AI answers (GEO envelope).
    - `statement` string
    - `source` string
    - `source_url` string, uri
    - `date` string, date
    - `verify_url` string, uri
  - `license` string
  - `license_url` string, uri
  - `attribution` string
  - `disclaimer` string
  - `generated_at` string, date-time

## Other responses

- `404` — Resource not found
- `429` — Rate limit exceeded
- `503` — Controlled fail-closed denial: the required dataset or legal layer is absent, invalid, unsupported or not authorized for this public surface.

---

[API](https://skmtc.net/openmercantil/apis/openmercantil-public-api.md) · [All operations](https://skmtc.net/openmercantil/apis/openmercantil-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openmercantil/openmercantil-public-api/revisions/996f96a11758/schema)
