---
title: "Función Pública Norms Search"
method: POST
path: "/co/funcion-publica/norms-search/v1"
tags: ["Colombia", "Función Pública"]
---

# Función Pública Norms Search

`POST /co/funcion-publica/norms-search/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/funcion-publica/norms-search/v1`
- Auth: HTTP bearer

Search the Gestor Normativo, the Colombian state's register of the norms that govern public administration: laws, decrees, conceptos, rulings, circulares and acuerdos from 1620 to today, across every kind and year at once. Free text matches the norm's citation, the register's own one-line description and the full text of the norm itself. Filter by `document_type`, `year`, exact `number` (with or without leading zeros), issuing `entity`, the `subject` the register files it under, and the date it was issued (`issued_from`/`issued_to`). Served by Croma (`as_of` says how current the data is).

**Dataset endpoint**: answers from the whole source in milliseconds and carries `as_of`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `query` string: Optional search terms matched against the norm's citation, the register's one-line description and the full text of the norm itself.
  - `document_type` string: Optional kind of instrument: `ley`, `decreto`, `concepto`, `sentencia`, `acuerdo`, `resolucion`, `circular`, `circular-externa`, `decreto-ley`, `acto-legislativo`, `directiva`, `auto`, `constitucion-politica` and others. Case and accents are ignored.
  - `year` integer: Optional year in the norm's own designation (the 2008 of `Ley 1266 de 2008`). 0 searches every year.
  - `number` string: Optional norm number, with or without leading zeros (`1266`, `007`, `100-010`, `2017-00230`).
  - `entity` string: Optional issuing entity, matched from the start of the name: `congreso` finds the Congreso de la República, `ministerio-de-hacienda` the ministry. Case and accents are ignored. `nivel-nacional` is how the register labels norms of the national executive.
  - `subject` string: Optional subject heading the register files the norm under, matched exactly as it publishes it, e.g. `HABEAS DATA`, `CARRERA ADMINISTRATIVA`.
  - `issued_from` string, date: Optional date filter in yyyy-mm-dd format.
  - `issued_to` string, date: Optional date filter in yyyy-mm-dd format.
  - `page` integer: 1-based page number for paginated results.
  - `per_page` integer: Results per page (1-50).

## Response `200`

Successful response

- FuncionPublicaNormsSearchResponse
  - `data` FuncionPublicaNormsSearchData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `query` string, required
    - `document_type` string, nullable, required
    - `year` number, nullable, required
    - `number` string, nullable, required
    - `entity` string, nullable, required
    - `subject` string, nullable, required
    - `issued_from` string, nullable, required
    - `issued_to` string, nullable, required
    - `total` number, required: Matches, counted up to 1000.
    - `total_is_exact` boolean, required: False when more than 1000 match: `total` is then 1000, and the pages go on.
    - `page` number, required
    - `per_page` number, required
    - `total_pages` number, required: Pages over `total`; there are more when `total_is_exact` is false.
    - `count` number, required
    - `results` object[], required
      - `id` string, required: The register's own identifier for the norm, e.g. `34488`.
      - `title` string, required: How the norm is cited, e.g. "Ley 1266 de 2008".
      - `document_type` string, required: The kind of instrument, as the register writes it: "Ley", "Decreto", "Concepto", "Sentencia", "Acuerdo", "Circular Externa", "Acto Legislativo" and twenty more.
      - `document_type_key` string, required: The kind in canonical form: lowercased, unaccented, spaces hyphenated ("Circular Externa" becomes "circular-externa"). Filter on this so a caller need not reproduce the register's capitalisation, which is not consistent.
      - `number` string, required: The norm's number as the register prints it: "1266", "100-010", "2017-00230".
      - `number_key` string, required: The number in canonical form: lowercased, leading zeros dropped, anything but letters and digits collapsed to a hyphen ("007" becomes "7", "100-010" becomes "100-10").
      - `year` number, required: The year in the norm's own designation (the 2008 of `Ley 1266 de 2008`). This is what the register files it under, and it is not always the year it was issued in.
      - `entity` string, nullable, required: Who issued the norm, as the register names it: "Congreso de la República", "Departamento Administrativo de la Función Pública", "Consejo de Estado", or "Nivel Nacional" for a norm of the national executive.
      - `entity_key` string, nullable, required: The issuer in canonical form ("congreso-de-la-republica"). Filter on this by prefix, so "ministerio-de-hacienda" also matches the full ministry name.
      - `summary` string, nullable, required: The register's one-line description of what the norm does. Null on the many entries it publishes without one.
      - `issued_at` string, nullable, required: `yyyy-mm-dd` the norm was issued. Null when the register prints no date, which it marks with a placeholder rather than leaving blank.
      - `effective_at` string, nullable, required: `yyyy-mm-dd` the norm entered into force, when the register states one.
      - `published_in` string, nullable, required: Where the norm was officially published, as the register writes it, e.g. "Diario Oficial 47.219 de diciembre 31 de 2008." Null for the many instruments that are not gazetted, such as conceptos.
      - `subjects` string[], required: The subject headings the register files the norm under, for filtering. `topics` carries the same headings with their subheadings and editorial notes.
      - `topics` object[], required: What the norm is about, as the register classifies it. Empty when it files no subject.
        - `topic` string, required: The subject heading, e.g. "HABEAS DATA".
        - `subtopic` string, nullable, required: The subheading under it, e.g. "Regulación y Reglamentación", or null.
        - `note` string, nullable, required: What the register says the norm does on this subject, in its own editorial words. Null when it files the norm under the subject without a note.
      - `amendments` object[], required: Later norms that added to, modified or repealed this one, as the register records them. Empty when it records none; this is the register's own editorial tracking, not a guarantee that the norm is in force.
        - `description` string, required: The change in the register's own words, e.g. "Adicionado por Ley 2157 de 2021" on the norm that was changed, or "Adiciona Ley 1266 de 2008" on the one that changed it.
        - `norm_id` string, required: Identifier of the other norm, to look it up in turn. The register occasionally points at an id it no longer serves, so a lookup can come back `found: false`.
      - `official_url` string, required: The register page for this norm.
      - `document_url` string, required: The register's PDF of the norm.

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream source returned an error

---

[API](https://skmtc.dev/usecroma/apis/croma-marketplace-api.md) · [All operations](https://skmtc.dev/usecroma/apis/croma-marketplace-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecroma/apis/croma-marketplace-api/revisions/df016cdb29d7?raw)
