Skip to content

Codes

codes da acceso al catálogo de normativas. Cada normativa (code) es un cuerpo normativo, como el CTE DB-HE o el PGOU de Sevilla, y agrupa uno o varios documentos, que la API llama versiones.

Ruta base: /api/v1/codes

Todos estos endpoints pertenecen al grupo de datos: 60 peticiones por minuto y sin consumo de cuota. Con una clave de prueba responden 403 not_available_in_sandbox.

Estas rutas devuelven los metadatos y el índice de secciones, no el texto. El texto de cada sección, artículo a artículo, lo da GET /v1/regulations/{slug}/sections/{section}; para preguntar sobre una norma en lenguaje natural, con citas a artículos concretos, POST /api/v2/ask.

ValorDescripción
nationalNormativa estatal (CTE, RITE, LOE)
regionalNormativa autonómica
provincialNormativa provincial
municipalPlaneamiento y ordenanzas municipales
sectoralNormativa sectorial, como la Ley de Costas
supramunicipalÁmbitos supramunicipales: mancomunidades, áreas metropolitanas
europeanNormativa europea
ValorDescripción
activeEn vigor
repealedDerogada
draftBorrador
in_progressEn tramitación

GET Buscar normativas

Búsqueda paginada de normativas por título, ámbito o etiqueta.

ParámetroTipoPor defectoDescripción
qstringTexto que debe aparecer en el título (no distingue mayúsculas)
normative_scopestringFiltra por ámbito (valores de la tabla anterior)
tagstringFiltra las normativas que tienen esta etiqueta
pageinteger1Número de página, desde 1
page_sizeinteger20Resultados por página. Máximo 50

Sin ningún filtro, devuelve el catálogo completo paginado.

GET /api/v1/codes/search?q=ahorro&normative_scope=national
Authorization: Bearer sk-normatia-...
{
"items": [
{
"slug": "cte-db-he",
"title": "CTE DB-HE Ahorro de energía",
"short_title": "CTE DB-HE",
"normative_scope": "national",
"tags": ["cte", "energia"]
}
],
"total": 1,
"page": 1,
"page_size": 20,
"total_pages": 1
}
CampoTipoDescripción
itemsarrayNormativas de la página, ordenadas por ámbito y título
items[].slugstringIdentificador de la normativa
items[].titlestringTítulo completo
items[].short_titlestring | nullTítulo abreviado
items[].normative_scopestringÁmbito normativo
items[].tagsstring[] | nullEtiquetas
totalintegerTotal de resultados
pageintegerPágina actual
page_sizeintegerTamaño de página pedido
total_pagesintegerTotal de páginas

GET Detalle de una normativa

Devuelve la normativa con todas sus versiones, primero las vigentes.

ParámetroTipoDescripción
slugstringIdentificador de la normativa. Ej.: cte-db-he
GET /api/v1/codes/cte-db-he
Authorization: Bearer sk-normatia-...

Ejemplo abreviado, con valores ilustrativos:

{
"slug": "cte-db-he",
"title": "CTE DB-HE Ahorro de energía",
"short_title": "CTE DB-HE",
"normative_scope": "national",
"description": "Documento Básico de ahorro de energía del Código Técnico de la Edificación.",
"tags": ["cte", "energia"],
"country_code": "es",
"documents": [
{
"version": "2022",
"title": "CTE DB-HE (modificación del RD 450/2022)",
"status": "active",
"published_date": "2022-06-15",
"effective_date": "2022-06-16",
"is_internal": true
}
]
}
CampoTipoDescripción
slugstringIdentificador de la normativa
titlestringTítulo completo
short_titlestring | nullTítulo abreviado
normative_scopestringÁmbito normativo
descriptionstring | nullDescripción
tagsstring[] | nullEtiquetas
country_codestringPaís de la normativa (ISO 3166-1 alfa-2). Hoy siempre es
documentsobject[]Versiones de la normativa, primero las vigentes
documents[].versionstringIdentificador de la versión. Es el que se usa en /api/v1/codes/{slug}/{version}
documents[].titlestringTítulo de la versión
documents[].statusstringactive, repealed, draft o in_progress
documents[].published_datestring | nullFecha de publicación (YYYY-MM-DD)
documents[].effective_datestring | nullFecha de entrada en vigor (YYYY-MM-DD)
documents[].is_internalbooleantrue si el texto de la versión está curado a mano por Normatia (en /v1, curated). false si está convertido de forma automática o no tiene texto
Estadodetail.errorCuándo
404not_foundEl slug no existe

GET Versiones vigentes

Devuelve los documentos vigentes (status = active) de una normativa, con sus metadatos. No incluye el índice de secciones: para eso, usa el endpoint de una versión concreta. Si no hay ninguna versión vigente, devuelve una lista vacía.

ParámetroTipoDescripción
slugstringIdentificador de la normativa. Ej.: cte-db-he
GET /api/v1/codes/cte-db-he/latest
Authorization: Bearer sk-normatia-...

Con valores ilustrativos:

[
{
"slug": "cte-db-he",
"version": "2022",
"title": "CTE DB-HE (modificación del RD 450/2022)",
"status": "active",
"published_date": "2022-06-15",
"effective_date": "2022-06-16",
"description": null,
"author": "Ministerio de Transportes, Movilidad y Agenda Urbana",
"source_url": "https://www.boe.es/eli/es/rd/2022/06/14/450",
"is_internal": true
}
]

Cada elemento tiene los mismos campos que la respuesta de una versión concreta (ver más abajo), salvo sections.

Estadodetail.errorCuándo
404not_foundEl slug no existe

GET Detalle de una versión

Devuelve una versión concreta, vigente o no, con su índice de secciones. Sirve para conocer la estructura de una norma y enlazar a sus secciones.

ParámetroTipoDescripción
slugstringIdentificador de la normativa. Ej.: cte-db-he
versionstringIdentificador de la versión, tal como aparece en documents[].version. Ej.: 2022
GET /api/v1/codes/cte-db-he/2022
Authorization: Bearer sk-normatia-...

Ejemplo abreviado, con valores ilustrativos:

{
"slug": "cte-db-he",
"version": "2022",
"title": "CTE DB-HE (modificación del RD 450/2022)",
"status": "active",
"published_date": "2022-06-15",
"effective_date": "2022-06-16",
"description": null,
"author": "Ministerio de Transportes, Movilidad y Agenda Urbana",
"source_url": "https://www.boe.es/eli/es/rd/2022/06/14/450",
"is_internal": true,
"sections": [
{ "slug": "he-0", "title": "Sección HE 0. Limitación del consumo energético", "order": 1 },
{ "slug": "he-1", "title": "Sección HE 1. Condiciones para el control de la demanda energética", "order": 2 }
]
}
CampoTipoDescripción
slugstringIdentificador de la normativa
versionstringIdentificador de esta versión
titlestringTítulo de esta versión
statusstringactive, repealed, draft o in_progress
published_datestring | nullFecha de publicación (YYYY-MM-DD)
effective_datestring | nullFecha de entrada en vigor (YYYY-MM-DD)
descriptionstring | nullDescripción de esta versión
authorstring | nullOrganismo emisor
source_urlstring | nullURL de la fuente oficial
is_internalbooleantrue si el texto de esta versión está curado a mano por Normatia (en /v1, curated). false si está convertido de forma automática o no tiene texto
sectionsobject[]Índice de secciones, en orden
sections[].slugstringIdentificador de la sección (el ancla que usa la web)
sections[].titlestringTítulo de la sección
sections[].orderintegerPosición en el índice

Las secciones no traen texto: solo identificador, título y orden.

Estadodetail.errorCuándo
404not_foundEl slug o la versión no existen