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

# SII

> SII's tax rulings, circulares and resoluciones: search Chile's tax authority's administrative rulings, its circulares and resoluciones and its compilation of court rulings on tax matters, with the full text of each; read any one in full.

The Servicio de Impuestos Internos (SII) is Chile's tax authority. It publishes how it reads the tax laws in four collections, and this source keeps all four: its oficios (the answers it gives to taxpayers' questions, the jurisprudencia administrativa) from 1994 on, about 7,500 of them on income tax, VAT and every other norm; its circulares from 1975 on, about 3,100; its resoluciones from 1975 on, about 4,200; and its compilation of court rulings on tax matters, about 3,600 rulings of the Corte Suprema, the Cortes de Apelaciones, the Tribunales Tributarios y Aduaneros and the Tribunal Constitucional since 2008.

Each document comes with its number, date, SII's summary, the norms it applies, its full text, and a copy of every file SII publishes with it, kept byte for byte. Search each collection by number, year or date, or with free text that reaches into the body of every document. Search first, then read one document in full.

> [!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 oficios

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

One search over the full text of every oficio, filtered by tax, number, year or date.

| Field | Type | Notes |
| - | - | - |
| `query` | string | Optional words matched against the summary, the cited norms and the full text. |
| `subject` | enum | Optional tax: `renta` (income tax), `iva` (VAT) or `otras` (every other norm). `any` searches all three. Default `any`. |
| `number` | string | Optional number, e.g. `41`. Dots and leading zeros are ignored. Numbers restart every year, so combine it with `year`. |
| `year` | integer | Optional year SII files the document under. 0 searches every year. Default `0`. |
| `from_date` | string | Optional: only documents issued on or after this date, `yyyy-mm-dd`. |
| `to_date` | string | Optional: only documents 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/sii/oficios-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "incobrables", "subject": "renta", "year": 2026 }'
```

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 recently issued first. Every result carries `id`, `subject` (`renta`, `iva` or `otras`), `number`, `document_type` (e.g. `Oficio Ordinario`), `year`, `issued_at`, `published_at` (2019 on), `legal_references` (the norms the oficio interprets), `summary`, `text_status` (`ok`, `scanned` or `missing`) and `official_url` (the year's listing at SII). `document_url` is Croma's copy of the main document, byte for byte as SII published it, which stays available whatever happens to SII's link; `source_document_url` is the same document on SII's own site; `documents[]` lists every file SII publishes with it (`name`, `format`, `document_url`, `source_document_url`, `bytes`).

> [!NOTE]
>
> Search results leave out the text; `query` still matches it, so a phrase from the body finds the document. Read the text itself with the SII Oficio endpoint.

## One oficio, in full

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

| Field | Type | Notes |
| - | - | - |
| `oficio_id` | string | **Required.** The oficio's `id` from a search result, e.g. `3109` or `renta-2015-ja3298`. |
| `offset` | integer | First character of the text to return. Pass the previous response's `next_offset` to read on. Default `0`. |
| `limit` | integer | How many characters of the text to return. Most documents fit in one response. Default `200000`. |

```bash theme={"dark"}
curl https://api.croma.run/cl/sii/oficio/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "oficio_id": "3109" }'
```

Returns `as_of`, `found`, `oficio_id` and `oficio`, which carries everything the search returns plus `content`: a window onto the full text, with `text`, `offset`, `total_length`, `has_more` and `next_offset`. Every result carries `id`, `subject` (`renta`, `iva` or `otras`), `number`, `document_type` (e.g. `Oficio Ordinario`), `year`, `issued_at`, `published_at` (2019 on), `legal_references` (the norms the oficio interprets), `summary`, `text_status` (`ok`, `scanned` or `missing`) and `official_url` (the year's listing at SII). `document_url` is Croma's copy of the main document, byte for byte as SII published it, which stays available whatever happens to SII's link; `source_document_url` is the same document on SII's own site; `documents[]` lists every file SII publishes with it (`name`, `format`, `document_url`, `source_document_url`, `bytes`).

> [!NOTE]
>
> An id Croma's copy does not hold returns `found: false` with HTTP 200, not an error.

## Search the circulars

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

One search over the full text of every circular, filtered by number, year or date.

| Field | Type | Notes |
| - | - | - |
| `query` | string | Optional words matched against the summary, the cited norms and the full text. |
| `number` | string | Optional number, e.g. `41`. Dots and leading zeros are ignored. Numbers restart every year, so combine it with `year`. |
| `year` | integer | Optional year SII files the document under. 0 searches every year. Default `0`. |
| `from_date` | string | Optional: only documents issued on or after this date, `yyyy-mm-dd`. |
| `to_date` | string | Optional: only documents 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/sii/circulars-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "unidad de fomento", "year": 2026 }'
```

Returns `as_of` (how current the data is), the applied filters, `total` and `total_is_exact`, `page`, `per_page`, `total_pages`, `count` and `results[]`, newest first. Every result carries `id` (year and number, e.g. `2026-41`), `number`, `year`, `title`, `issued_at`, `summary`, `issuing_office` (the office SII names as its source), `status` (the note SII prints beside it, e.g. `modificada`), `text_status` and `official_url` (the year's listing at SII). `document_url` is Croma's copy of the main document, byte for byte as SII published it, which stays available whatever happens to SII's link; `source_document_url` is the same document on SII's own site; `documents[]` lists every file SII publishes with it (`name`, `format`, `document_url`, `source_document_url`, `bytes`).

> [!NOTE]
>
> Search results leave out the text; `query` still matches it, so a phrase from the body finds the document. Read the text itself with the SII Circular endpoint.

## One circular, in full

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

| Field | Type | Notes |
| - | - | - |
| `circular_id` | string | **Required.** The circular's year and number, e.g. `2026-41`. |
| `offset` | integer | First character of the text to return. Pass the previous response's `next_offset` to read on. Default `0`. |
| `limit` | integer | How many characters of the text to return. Most documents fit in one response. Default `200000`. |

```bash theme={"dark"}
curl https://api.croma.run/cl/sii/circular/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "circular_id": "2026-41" }'
```

Returns `as_of`, `found`, `circular_id` and `circular`, which carries everything the search returns plus `content`: a window onto the full text, with `text`, `offset`, `total_length`, `has_more` and `next_offset`. Every result carries `id` (year and number, e.g. `2026-41`), `number`, `year`, `title`, `issued_at`, `summary`, `issuing_office` (the office SII names as its source), `status` (the note SII prints beside it, e.g. `modificada`), `text_status` and `official_url` (the year's listing at SII). `document_url` is Croma's copy of the main document, byte for byte as SII published it, which stays available whatever happens to SII's link; `source_document_url` is the same document on SII's own site; `documents[]` lists every file SII publishes with it (`name`, `format`, `document_url`, `source_document_url`, `bytes`).

> [!NOTE]
>
> An id Croma's copy does not hold returns `found: false` with HTTP 200, not an error.

## Search the resolutions

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

One search over the full text of every resolution, filtered by number, year or date.

| Field | Type | Notes |
| - | - | - |
| `query` | string | Optional words matched against the summary, the cited norms and the full text. |
| `number` | string | Optional number, e.g. `41`. Dots and leading zeros are ignored. Numbers restart every year, so combine it with `year`. |
| `year` | integer | Optional year SII files the document under. 0 searches every year. Default `0`. |
| `from_date` | string | Optional: only documents issued on or after this date, `yyyy-mm-dd`. |
| `to_date` | string | Optional: only documents 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/sii/resolutions-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "factura electrónica", "year": 2026 }'
```

Returns `as_of` (how current the data is), the applied filters, `total` and `total_is_exact`, `page`, `per_page`, `total_pages`, `count` and `results[]`, newest first. Every result carries `id` (year and number, e.g. `2026-41`), `number`, `year`, `title`, `issued_at`, `summary`, `issuing_office` (the office SII names as its source), `status` (the note SII prints beside it, e.g. `modificada`), `text_status` and `official_url` (the year's listing at SII). `document_url` is Croma's copy of the main document, byte for byte as SII published it, which stays available whatever happens to SII's link; `source_document_url` is the same document on SII's own site; `documents[]` lists every file SII publishes with it (`name`, `format`, `document_url`, `source_document_url`, `bytes`).

> [!NOTE]
>
> Search results leave out the text; `query` still matches it, so a phrase from the body finds the document. Read the text itself with the SII Resolution endpoint.

## One resolution, in full

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

| Field | Type | Notes |
| - | - | - |
| `resolution_id` | string | **Required.** The resolution's year and number, e.g. `2026-148`. |
| `offset` | integer | First character of the text to return. Pass the previous response's `next_offset` to read on. Default `0`. |
| `limit` | integer | How many characters of the text to return. Most documents fit in one response. Default `200000`. |

```bash theme={"dark"}
curl https://api.croma.run/cl/sii/resolution/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "resolution_id": "2026-148" }'
```

Returns `as_of`, `found`, `resolution_id` and `resolution`, which carries everything the search returns plus `content`: a window onto the full text, with `text`, `offset`, `total_length`, `has_more` and `next_offset`. Every result carries `id` (year and number, e.g. `2026-41`), `number`, `year`, `title`, `issued_at`, `summary`, `issuing_office` (the office SII names as its source), `status` (the note SII prints beside it, e.g. `modificada`), `text_status` and `official_url` (the year's listing at SII). `document_url` is Croma's copy of the main document, byte for byte as SII published it, which stays available whatever happens to SII's link; `source_document_url` is the same document on SII's own site; `documents[]` lists every file SII publishes with it (`name`, `format`, `document_url`, `source_document_url`, `bytes`).

> [!NOTE]
>
> An id Croma's copy does not hold returns `found: false` with HTTP 200, not an error.

## Search the court rulings

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

One search over SII's compilation of court rulings, filtered by court, case number, year or date.

| Field | Type | Notes |
| - | - | - |
| `query` | string | Optional words matched against the case number, the parties, SII's headnote and extract and the ruling's text. |
| `court` | string | Optional court, e.g. `Corte Suprema`, `Corte de Apelaciones de Santiago`, `Primer Tribunal Tributario y Aduanero`, matched from the start. Case and accents are ignored. |
| `registration_number` | string | Optional rol or RIT, e.g. `5501-12`. Spaces and punctuation are ignored. |
| `year` | integer | Optional year of the ruling. 0 searches every year. Default `0`. |
| `from_date` | string | Optional: only rulings dated on or after this date, `yyyy-mm-dd`. |
| `to_date` | string | Optional: only rulings dated 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/sii/rulings-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "prescripción", "court": "Corte Suprema" }'
```

Returns `as_of` (how current the data is), the applied filters, `total` and `total_is_exact`, `page`, `per_page`, `total_pages`, `count` and `results[]`, newest first. Every result carries `id`, `code_type` (`ROL` or `RIT`), `registration_number`, `case_ruc`, `ruling_date`, `year`, `court`, `court_group` (e.g. `Corte Suprema`, `Tribunal Tributario y Aduanero`), `ruling_type`, `parties` (as SII's compilation names them), `summary` (SII's headnote), `extract` (SII's extract of the reasoning), `norms[]` (`norm_body`, `articles[]`), `text_status`, `document_url` (Croma's copy of the ruling's text as SII publishes it) and `source_document_url` (the ruling's document at SII, when it links one).

> [!NOTE]
>
> Search results leave out the text; `query` still matches it, so a phrase from the body finds the document. Read the text itself with the SII Court Ruling endpoint.

## One court ruling, in full

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

| Field | Type | Notes |
| - | - | - |
| `ruling_id` | string | **Required.** The ruling's `id` from a search result, e.g. `3638`. |
| `offset` | integer | First character of the text to return. Pass the previous response's `next_offset` to read on. Default `0`. |
| `limit` | integer | How many characters of the text to return. Most documents fit in one response. Default `200000`. |

```bash theme={"dark"}
curl https://api.croma.run/cl/sii/ruling/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "ruling_id": "3638" }'
```

Returns `as_of`, `found`, `ruling_id` and `ruling`, which carries everything the search returns plus `content`: a window onto the full text, with `text`, `offset`, `total_length`, `has_more` and `next_offset`. Every result carries `id`, `code_type` (`ROL` or `RIT`), `registration_number`, `case_ruc`, `ruling_date`, `year`, `court`, `court_group` (e.g. `Corte Suprema`, `Tribunal Tributario y Aduanero`), `ruling_type`, `parties` (as SII's compilation names them), `summary` (SII's headnote), `extract` (SII's extract of the reasoning), `norms[]` (`norm_body`, `articles[]`), `text_status`, `document_url` (Croma's copy of the ruling's text as SII publishes it) and `source_document_url` (the ruling's document at SII, when it links one).

> [!NOTE]
>
> An id Croma's copy does not hold 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.