> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usecroma.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CNSF

> Search Mexico's insurance and surety rulebook: the LISF and the Circular Única, provision by provision, and the amendments behind them.

The rules Mexican insurers and sureties actually have to comply with, in
force and in full: the Ley de Instituciones de Seguros y de Fianzas (the law)
and the Circular Única de Seguros y de Fianzas (the circular that implements it,
with its annexes). Search across both at once, or pull one artículo, disposición
or anexo by its number. A second endpoint tracks every Circular Modificatoria
since 2014: what changed, and the Diario Oficial publication behind it.

## Search provisions

`POST /mx/cnsf/provisions-search/v1` One search across the law and the circular at once, which the commission's own site does not offer.

| Field             | Type    | Notes                                                                                                                                                              |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `query`           | string  | Optional words to match in the text of the provision and in its chapter and título names.                                                                          |
| `instrument`      | enum    | `LISF` for the law, `CUSF` for the circular, or `any` for both. Default `any`.                                                                                     |
| `kind`            | enum    | `articulo` (LISF), `disposicion` or `anexo` (CUSF), or `any`. Default `any`.                                                                                       |
| `number`          | string  | Optional exact number as the instrument writes it: `41`, `3.1.2`, `14.2.1-a`.                                                                                      |
| `chapter_number`  | string  | Optional chapter, e.g. `6.3`. Annexes hang off a chapter rather than sitting in one and carry no chapter number.                                                   |
| `source_circular` | string  | Optional, for transitional provisions: the Circular Modificatoria that introduced them (e.g. `3/2026`), or `original` for those issued with the instrument itself. |
| `amended_from`    | string  | Optional: only provisions whose chapter was amended on or after this date, `yyyy-mm-dd`.                                                                           |
| `amended_to`      | string  | Optional: only provisions whose chapter was amended on or before this date, `yyyy-mm-dd`.                                                                          |
| `page`            | integer | 1-based page number. Default `1`.                                                                                                                                  |
| `per_page`        | integer | Results per page (1-25). Every result carries the full text. Default `10`.                                                                                         |

```bash theme={"dark"}
curl https://api.croma.run/mx/cnsf/provisions-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "requerimiento de capital", "instrument": "CUSF" }'
```

<Note>
  Croma serves this endpoint from its own infrastructure, so the answer comes back fast and the same way every time. Every response carries `as_of`: how current the data is.
</Note>

Returns `as_of` (how current the data is), the applied filters, `total`
(matches across every page), `page`, `per_page`, `total_pages`, `count` and
`results[]` in reading order. Every result carries `id`, `instrument` (`LISF` or `CUSF`), `kind`, `number`
as the instrument writes it, `title_number` and `title_name`, `chapter_number`
and `chapter_name`, `heading` (the official title, on annexes and referenced
documents), `text` (the full provision, fracciones and incisos included),
`source_circular` (on transitional provisions, the Circular Modificatoria that
introduced them), `external_url` (on referenced documents), `amendment_note` and
`last_amended_at`, `position` (reading order within the instrument) and
`official_url`.

`kind` is one of `articulo` (LISF), `disposicion`, `anexo`, `anexo_transitorio`
or `documento` (CUSF), `transitoria` (either), or `capitulo` for a chapter
repealed in full, which carries the repeal notice and no numbered provisions.

<Note>
  Answered from Croma's copy of both instruments, refreshed weekly.
  `last_amended_at` is null on a provision whose chapter the source flags as
  never amended, which means it has stood unchanged since the instrument was
  issued.
</Note>

## One provision

`POST /mx/cnsf/provision/v1`

| Field          | Type   | Notes                                                          |
| -------------- | ------ | -------------------------------------------------------------- |
| `provision_id` | string | **Required.** The `id` of a provision from the search results. |

```bash theme={"dark"}
curl https://api.croma.run/mx/cnsf/provision/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "provision_id": "cusf:disp:3.1.2" }'
```

<Note>
  Croma serves this endpoint from its own infrastructure, so the answer comes back fast and the same way every time. Every response carries `as_of`: how current the data is.
</Note>

Returns `as_of`, `found`, `provision_id` and `provision`. Every result carries `id`, `instrument` (`LISF` or `CUSF`), `kind`, `number`
as the instrument writes it, `title_number` and `title_name`, `chapter_number`
and `chapter_name`, `heading` (the official title, on annexes and referenced
documents), `text` (the full provision, fracciones and incisos included),
`source_circular` (on transitional provisions, the Circular Modificatoria that
introduced them), `external_url` (on referenced documents), `amendment_note` and
`last_amended_at`, `position` (reading order within the instrument) and
`official_url`.

`kind` is one of `articulo` (LISF), `disposicion`, `anexo`, `anexo_transitorio`
or `documento` (CUSF), `transitoria` (either), or `capitulo` for a chapter
repealed in full, which carries the repeal notice and no numbered provisions.

## Amendments

`POST /mx/cnsf/amendments/v1` What changed in the circular, when, and where to read the official publication.

| Field            | Type    | Notes                                                                                                  |
| ---------------- | ------- | ------------------------------------------------------------------------------------------------------ |
| `query`          | string  | Optional words to match in the amendment's title and in what it describes changing.                    |
| `chapter_number` | string  | Optional: only amendments that touched this chapter, e.g. `6.3`.                                       |
| `published_from` | string  | Optional earliest publication date, `yyyy-mm-dd`. Amendments with no stated date never match a window. |
| `published_to`   | string  | Optional latest publication date, `yyyy-mm-dd`.                                                        |
| `page`           | integer | 1-based page number. Default `1`.                                                                      |
| `per_page`       | integer | Results per page (1-25). Default `10`.                                                                 |

```bash theme={"dark"}
curl https://api.croma.run/mx/cnsf/amendments/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "chapter_number": "6.3" }'
```

<Note>
  Croma serves this endpoint from its own infrastructure, so the answer comes back fast and the same way every time. Every response carries `as_of`: how current the data is.
</Note>

Returns `as_of`, the applied filters, `total`, `page`, `per_page`,
`total_pages`, `count` and `results[]`, most recent first. Each amendment
carries `title` (`CIRCULAR Modificatoria 3/26`), `circular_number`,
`published_at`, `dof_document_id` and `dof_url` (the gazette publication behind
it), `changes[]` (what it did, as the commission describes it),
`affected_chapters[]`, `affected_annexes[]` and `affected_urls[]`.

<Note>
  `published_at` is null on amendments where the commission does not state the
  exact date. It is never guessed from the year in the circular's number, which
  disagrees with the gazette on roughly one amendment in ten.
</Note>

<Card title="Full reference" icon="code" href="/api-reference/overview">
  Schemas, all response fields, and an interactive playground.
</Card>
