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

# Corte Suprema de Justicia

> Search every ruling of Colombia's Supreme Court of Justice since 1886, from every chamber, tutelas included, and read any ruling's full text.

The Corte Suprema de Justicia is Colombia's highest court in civil, agrarian, labour and criminal matters. Its relatoría holds more than 660,000 rulings, from 1886 to this week: cassation judgments, autos and tutela decisions of the civil, labour and criminal chambers, the full court, and the historic constitutional and general-affairs chambers. Each one comes here with its chamber, the kind of ruling and of proceeding, the case file number, the magistrado ponente, the relatoría's summary and topics, the full text wherever the court publishes one, and a link to the ruling's document at the court.

Search across all of them at once, by chamber, kind, tutela or not, year, case file, ponente or date, or with free text that reaches into the body of every ruling. Search first, then read one ruling 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](/datasets).
</Note>

## Search the rulings

`POST /co/corte-suprema/rulings-search/v1` <a className="dataset-pill" href="/datasets">Dataset</a>

One search over the full text of every ruling since 1886, filtered by chamber, kind, tutela, year, case file, ponente or date.

| Field                 | Type         | Notes                                                                                                                                                                                                             |
| --------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `query`               | string       | Optional words matched against the ruling's number, case file number, ponente, summary, topics and full text.                                                                                                     |
| `chamber`             | string       | Optional chamber: `civil`, `laboral`, `penal`, `plena`, or the historic `constitucional` and `negocios-generales`. `penal` includes the criminal chamber's special chambers; `laboral` its decongestion chambers. |
| `type`                | string       | Optional kind of ruling as the court names it: `SENTENCIA`, `AUTO`, `AUTO INTERLOCUTORIO`. It matches the start of the name, so `AUTO` finds every kind of auto. Case is ignored.                                 |
| `is_tutela`           | boolean,null | Optional: `true` for tutela decisions only, `false` for the chambers' own matters only. Leave it out for both. Default `null`.                                                                                    |
| `year`                | integer      | Optional year of the ruling. 0 searches every year. Default `0`.                                                                                                                                                  |
| `registration_number` | string       | Optional case file number (radicado): `11001-02-03-000-2026-04999-00`, or the same digits without dashes. Only the digits are compared.                                                                           |
| `reporting_judge`     | string       | Optional magistrado ponente, by full name as it appears in `reporting_judges`. Case and accents are ignored.                                                                                                      |
| `from_date`           | string       | Optional: only rulings handed down on or after this date, `yyyy-mm-dd`.                                                                                                                                           |
| `to_date`             | string       | Optional: only rulings handed down 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/co/corte-suprema/rulings-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "prescripción adquisitiva", "chamber": "civil" }'
```

Returns `as_of` (how current the data is), the applied filters, `total` (matches across every page), `page`, `per_page`, `total_pages`, `count` and `results[]`, most recent ruling first. Every result carries `id` (the relatoría's identifier, e.g. `978662`), `number` (as the court prints it, e.g. `AC6049-2026`), `type`, `proceeding_class`, `chamber` and `chamber_group`, `is_tutela`, `registration_number` (the radicado) and `registration_digits`, `reporting_judges[]` and `reporting_judge_keys[]`, `year`, `ruling_date`, `subject` (the relatoría's summary), `descriptors[]`, `text_status`, `text_source` and `official_url` (the ruling's document as the court publishes it).

<Note>
  Search results leave out the ruling's text: a single ruling can run to hundreds of thousands of characters. `query` still matches against it, so a phrase from the body finds the ruling; read the text itself with the Corte Suprema Ruling endpoint.
</Note>

## One ruling, in full

`POST /co/corte-suprema/ruling/v1` <a className="dataset-pill" href="/datasets">Dataset</a>

| Field       | Type    | Notes                                                                                                                                                                              |
| ----------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ruling_id` | string  | **Required.** The ruling's `id` from a search result (`978662`), or its number as the court prints it (`AC6049-2026`, `SL1234-2024`, `STC5959-2026`). Case and spaces are ignored. |
| `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 rulings fit in one response; the longest run to hundreds of thousands of characters. Default `200000`.                             |

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

Returns `as_of`, `found`, `ruling_id` and `ruling`, which carries everything the search returns plus `content`: a window onto the ruling's full text, with `text`, `offset`, `total_length`, `has_more` and `next_offset`. Every result carries `id` (the relatoría's identifier, e.g. `978662`), `number` (as the court prints it, e.g. `AC6049-2026`), `type`, `proceeding_class`, `chamber` and `chamber_group`, `is_tutela`, `registration_number` (the radicado) and `registration_digits`, `reporting_judges[]` and `reporting_judge_keys[]`, `year`, `ruling_date`, `subject` (the relatoría's summary), `descriptors[]`, `text_status`, `text_source` and `official_url` (the ruling's document as the court publishes it).

<Note>
  Long rulings run to hundreds of thousands of characters, so the text is read a range at a time: send `offset` and `limit`, then pass the response's `next_offset` back as `offset` until `has_more` is false.
</Note>

<Note>
  `text_status` says whether the full text is here: `extracted` means it is; `scanned` means the court's document is a scanned image with no text in it, and `content` is null; `unavailable` means the court publishes no document for the ruling, as with many historic rulings. `official_url` always links the ruling at the court.
</Note>

<Note>
  An id or number the relatoría does not hold returns `found: false` with HTTP 200, not an error. The court publishes a ruling weeks or months after handing it down, so a recent one can be `found: false` today and present later.
</Note>

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