> ## 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.

# CMF

> The regulation, rulings and sanctions of Chile's financial regulator: search the CMF's general regulation since 1979 with the SBIF's banking archive since 1956, its rulings since 2011 and its sanction resolutions since 2002, and read any one with its original document.

The Comisión para el Mercado Financiero (CMF) supervises Chile's banks, securities market and insurers; it took over the Superintendencia de Valores y Seguros in 2018 and the Superintendencia de Bancos e Instituciones Financieras (SBIF) in 2019. Three collections are here:

* **Regulation**: about 4,500 Normas de Carácter General, Circulares and Oficios Circulares since 1979, each with its resolution, the norms it amends or repeals and those that amend or repeal it, its consolidated text and regulatory report where published, plus about 1,100 banking circulars and cartas circulares of the SBIF from 1956 to 2019.
* **Rulings** (dictámenes): about 2,200 answers to consultations since 2011, each with the CMF's summary.
* **Sanctions**: about 1,450 sanction resolutions since 2002, naming the sanctioned party.

Every record comes with its original document as the CMF published it. Search first, then read one record by its `id`.

> [!NOTE]
>
> The whole source, organized and ready to query: every endpoint on this page answers in milliseconds. Every response carries `as_of`: how current the data is. [How datasets work](https://docs.usecroma.com/datasets.md).

## Search the regulation

`POST /cl/cmf/regulations-search/v1` [Dataset](https://docs.usecroma.com/datasets.md)

One search over the CMF's general regulation and the SBIF's banking archive, filtered by kind, number, year, market, date or the norms one amends or repeals.

| Field | Type | Notes |
| - | - | - |
| `query` | string | Optional words in Spanish, matched against the title, the SBIF's label and the issuing resolution, e.g. `deuda consolidada` or `liquidez`. |
| `collection` | enum | Optional: `cmf` for the CMF's general regulation, `sbif` for the SBIF's banking archive (to 2019). |
| `type` | string | Optional kind of norm: `NCG`, `CIR` or `OFC` for the CMF; `Circular` or `Carta Circular` for the SBIF. |
| `number` | string | Optional number, e.g. `577`. Numbers repeat across kinds and years. |
| `year` | integer | Optional year it was issued. 0 searches every year. Default `0`. |
| `market` | enum | Optional market: `banking`, `securities`, `insurance` or `other`. |
| `related_to` | string | Optional `id` of a norm, e.g. `ncg-30-1989`: every norm that amends or repeals it, or that it amends or repeals. |
| `from_date` | string | Optional: only those issued on or after this date, `yyyy-mm-dd`. |
| `to_date` | string | Optional: only those issued on or before this date, `yyyy-mm-dd`. |
| `page` | integer | 1-based page number. Default `1`. |
| `per_page` | integer | Results per page (1-50). Default `20`. |

```bash theme={"dark"}
curl https://api.croma.run/cl/cmf/regulations-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "deuda consolidada", "type": "NCG" }'
```

Returns `as_of` (how current the data is), the applied filters, `total` and `total_is_exact`, `page`, `per_page`, `total_pages`, `count` and `results[]`, most recent first. Every norm carries `id` (`ncg-577-2026`, or `sbif-17825` for the SBIF archive), `collection` (`cmf` or `sbif`), `type` (`NCG`, `CIR`, `OFC`; `Circular`, `Carta Circular` for the SBIF), `number`, `name` (the SBIF archive's own label), `issued_at`, `year`, `title`, `section` (the SBIF's addressees, e.g. Bancos), `markets` (`banking`, `securities`, `insurance`, `other`), `in_force` and `validity` (the CMF's note, e.g. No Vigente), `resolution` (`number`, `date`, `reference`), the norms it `amends` and `repeals` and those it is `amended_by` and `repealed_by` (each with `id`, `type`, `number`, `date` and `source_document_url`), `attachments` (consolidated text, regulatory report, resolution or annex, each with `kind`, `label`, `document_url` and `source_document_url`), `document_url` (the norm's original document, kept by Croma byte for byte) and `source_document_url` (the document at the CMF). Fields the CMF does not state are null.

## One norm

`POST /cl/cmf/regulation/v1` [Dataset](https://docs.usecroma.com/datasets.md)

| Field | Type | Notes |
| - | - | - |
| `regulation_id` | string | **Required.** The norm's `id` from a search result, e.g. `ncg-577-2026` or `sbif-17825`. `NCG 577 2026` works too. |

```bash theme={"dark"}
curl https://api.croma.run/cl/cmf/regulation/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "regulation_id": "ncg-556-2025" }'
```

Returns `as_of`, `found`, `regulation_id` and `regulation`. Every norm carries `id` (`ncg-577-2026`, or `sbif-17825` for the SBIF archive), `collection` (`cmf` or `sbif`), `type` (`NCG`, `CIR`, `OFC`; `Circular`, `Carta Circular` for the SBIF), `number`, `name` (the SBIF archive's own label), `issued_at`, `year`, `title`, `section` (the SBIF's addressees, e.g. Bancos), `markets` (`banking`, `securities`, `insurance`, `other`), `in_force` and `validity` (the CMF's note, e.g. No Vigente), `resolution` (`number`, `date`, `reference`), the norms it `amends` and `repeals` and those it is `amended_by` and `repealed_by` (each with `id`, `type`, `number`, `date` and `source_document_url`), `attachments` (consolidated text, regulatory report, resolution or annex, each with `kind`, `label`, `document_url` and `source_document_url`), `document_url` (the norm's original document, kept by Croma byte for byte) and `source_document_url` (the document at the CMF). Fields the CMF does not state are null.

> [!NOTE]
>
> An `id` the CMF has not published returns `found: false` with HTTP 200, not an error.

## Search the rulings

`POST /cl/cmf/opinions-search/v1` [Dataset](https://docs.usecroma.com/datasets.md)

The CMF's answers to consultations, searched by what they say.

| Field | Type | Notes |
| - | - | - |
| `query` | string | Optional words in Spanish, matched against the summary and the act, e.g. `fintec` or `corredora de seguros`. |
| `effects` | enum | Optional: `particulares` (answers one party) or `generales` (binds everyone). |
| `letter_number` | string | Optional number of the oficio ordinario, e.g. `248490`. |
| `year` | integer | Optional year it was issued. 0 searches every year. Default `0`. |
| `from_date` | string | Optional: only those issued on or after this date, `yyyy-mm-dd`. |
| `to_date` | string | Optional: only those issued on or before this date, `yyyy-mm-dd`. |
| `page` | integer | 1-based page number. Default `1`. |
| `per_page` | integer | Results per page (1-50). Default `20`. |

```bash theme={"dark"}
curl https://api.croma.run/cl/cmf/opinions-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "fintec", "year": 2025 }'
```

Returns `as_of` (how current the data is), the applied filters, `total` and `total_is_exact`, `page`, `per_page`, `total_pages`, `count` and `results[]`, most recent first. Every ruling carries `id` (its document number, e.g. `2025120910460`), `title` (e.g. Oficio Ordinario N°248490 de 31/12/2025), `letter_number`, `issued_at`, `year`, `published_at`, `medium` (how the letter was sent), `publication_format`, `effects` (`particulares` or `generales`), `updated_at`, `summary` (the CMF's summary of the question and the answer), `document_url` (the original letter, kept by Croma byte for byte) and `source_document_url` (the letter at the CMF).

## One ruling

`POST /cl/cmf/opinion/v1` [Dataset](https://docs.usecroma.com/datasets.md)

| Field | Type | Notes |
| - | - | - |
| `opinion_id` | string | **Required.** The ruling's `id` from a search result, e.g. `2025120910460`. |

```bash theme={"dark"}
curl https://api.croma.run/cl/cmf/opinion/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "opinion_id": "2025120910460" }'
```

Returns `as_of`, `found`, `opinion_id` and `opinion`. Every ruling carries `id` (its document number, e.g. `2025120910460`), `title` (e.g. Oficio Ordinario N°248490 de 31/12/2025), `letter_number`, `issued_at`, `year`, `published_at`, `medium` (how the letter was sent), `publication_format`, `effects` (`particulares` or `generales`), `updated_at`, `summary` (the CMF's summary of the question and the answer), `document_url` (the original letter, kept by Croma byte for byte) and `source_document_url` (the letter at the CMF).

> [!NOTE]
>
> An `id` the CMF has not published returns `found: false` with HTTP 200, not an error.

## Search the sanctions

`POST /cl/cmf/sanctions-search/v1` [Dataset](https://docs.usecroma.com/datasets.md)

Every sanction resolution since 2002, searched by the party's name or what the resolution does.

| Field | Type | Notes |
| - | - | - |
| `query` | string | Optional words in Spanish, matched against the subject and the party, e.g. a company's name or `multa`. |
| `kind` | enum | Optional: `sanction` (imposes one), `appeal` (decides an appeal against one) or `other`. |
| `resolution_number` | string | Optional resolution number, e.g. `11220`. Numbering restarts every year. |
| `year` | integer | Optional year it was issued. 0 searches every year. Default `0`. |
| `from_date` | string | Optional: only those issued on or after this date, `yyyy-mm-dd`. |
| `to_date` | string | Optional: only those issued on or before this date, `yyyy-mm-dd`. |
| `page` | integer | 1-based page number. Default `1`. |
| `per_page` | integer | Results per page (1-50). Default `20`. |

```bash theme={"dark"}
curl https://api.croma.run/cl/cmf/sanctions-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "corredores de bolsa", "kind": "sanction" }'
```

Returns `as_of` (how current the data is), the applied filters, `total` and `total_is_exact`, `page`, `per_page`, `total_pages`, `count` and `results[]`, most recent first. Every resolution carries `id` (its document number, e.g. `2026090593551`), `resolution_number`, `issued_at`, `year`, `subject` (what it does, as the CMF words it, naming the party), `kind` (`sanction`, `appeal` or `other`), `party` (the party named in `subject` when it reads "APLICA SANCIÓN A ..."), `document_url` (the original resolution, kept by Croma byte for byte) and `source_document_url` (the resolution at the CMF).

## One sanction

`POST /cl/cmf/sanction/v1` [Dataset](https://docs.usecroma.com/datasets.md)

| Field | Type | Notes |
| - | - | - |
| `sanction_id` | string | **Required.** The resolution's `id` from a search result, e.g. `2026090593551`. |

```bash theme={"dark"}
curl https://api.croma.run/cl/cmf/sanction/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "sanction_id": "2026090593551" }'
```

Returns `as_of`, `found`, `sanction_id` and `sanction`. Every resolution carries `id` (its document number, e.g. `2026090593551`), `resolution_number`, `issued_at`, `year`, `subject` (what it does, as the CMF words it, naming the party), `kind` (`sanction`, `appeal` or `other`), `party` (the party named in `subject` when it reads "APLICA SANCIÓN A ..."), `document_url` (the original resolution, kept by Croma byte for byte) and `source_document_url` (the resolution at the CMF).

> [!NOTE]
>
> An `id` the CMF has not published returns `found: false` with HTTP 200, not an error.

> **[Full reference](https://docs.usecroma.com/api-reference/overview.md)**
>
> Schemas, all response fields, and an interactive playground.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.