---
title: "Corte Suprema Rulings Search"
method: POST
path: "/co/corte-suprema/rulings-search/v1"
tags: ["Colombia", "Corte Suprema de Justicia"]
---

# Corte Suprema Rulings Search

`POST /co/corte-suprema/rulings-search/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/corte-suprema/rulings-search/v1`
- Auth: HTTP bearer

Search every ruling the Corte Suprema de Justicia de Colombia has published since 1886, from every chamber, tutelas included. Free text matches the ruling's number, case file number, ponente, summary, topics and full text. Filter by `chamber` (civil, laboral, penal, plena and the historic chambers), `type` (SENTENCIA, AUTO...), `is_tutela`, `year`, `registration_number` (the radicado), `reporting_judge` (the magistrado ponente) and the ruling date (`from_date`/`to_date`). Each result links to the ruling's document at the court. 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 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`.
  - `type` string: Optional kind of ruling as the court names it (`SENTENCIA`, `AUTO`, `AUTO INTERLOCUTORIO`), matched from the start of the name.
  - `is_tutela` boolean, nullable: Optional: `true` for tutela decisions only, `false` for the chambers' own matters only. Omit it for both.
  - `year` integer: Optional year of the ruling. 0 searches every year.
  - `registration_number` string: Optional case file number (radicado), with or without dashes: `11001-02-03-000-2026-04999-00`. 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, date: Optional date filter in yyyy-mm-dd format.
  - `to_date` 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

- CorteSupremaRulingsSearchResponse
  - `data` CorteSupremaRulingsSearchData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `query` string, required
    - `chamber` string, nullable, required
    - `type` string, nullable, required
    - `is_tutela` boolean, nullable, required
    - `year` number, nullable, required
    - `registration_number` string, nullable, required
    - `reporting_judge` string, nullable, required
    - `from_date` string, nullable, required
    - `to_date` 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 ruling's identifier in the Corte Suprema's relatoría, e.g. "978662". The ruling lookup accepts it.
      - `number` string, nullable, required: The ruling's number as the court prints it (número de providencia), e.g. "AC6049-2026", "SL1234-2024", "STC5959-2026". Null on most older rulings, which the court lists without one.
      - `type` string, nullable, required: The kind of ruling as the court names it (tipo de providencia): "SENTENCIA", "AUTO", "AUTO INTERLOCUTORIO".
      - `proceeding_class` string, nullable, required: The kind of proceeding (clase de actuación), e.g. "RECURSO DE CASACIÓN", "ACCIÓN DE TUTELA - PRIMERA INSTANCIA", "CONFLICTO DE COMPETENCIA". Null when the court records none.
      - `chamber` string, nullable, required: The chamber (sala) that handed the ruling down, as the court names it, e.g. "SALA DE CASACIÓN CIVIL", "Sala de Casación Penal", "SALA DE DESCONGESTIÓN LABORAL N.º 1", "SALA PLENA - NEGOCIOS GENERALES".
      - `chamber_group` 'civil' | 'laboral' | 'penal' | 'plena' | 'constitucional' | 'negocios-generales', nullable, required: The chamber as one of six groups, which is what the `chamber` filter matches: `civil`, `laboral`, `penal` (the criminal cassation chamber and its special chambers), `plena`, and the historic `constitucional` and `negocios-generales`.
      - `is_tutela` boolean, required: Whether the ruling decides a tutela, as the court marks it. False for the chambers' own matters.
      - `registration_number` string, nullable, required: The case file number (número de proceso) as the court prints it: the 23-digit radicado on modern rulings, e.g. "11001-02-03-000-2026-04999-00". Null on most historic rulings.
      - `registration_digits` string, nullable, required: The digits of `registration_number` alone, without dashes, spaces or letters. This is what the `registration_number` filter matches.
      - `reporting_judges` string[], required: The magistrado or magistrados ponentes, as the court names them.
      - `reporting_judge_keys` string[], required: The same names in canonical form (lowercased, unaccented, spaces hyphenated: "francisco-ternera-barrios"), which is what the `reporting_judge` filter matches.
      - `year` number, nullable, required: The year of the ruling.
      - `ruling_date` string, nullable, required: `yyyy-mm-dd` the court handed the ruling down.
      - `subject` string, nullable, required: The relatoría's summary of the ruling (tema): each topic in capitals followed by what the court held on it, one paragraph per topic. Null when it records none.
      - `descriptors` string[], required: The topics the relatoría indexes the ruling under, in order, e.g. ["CONFLICTO DE COMPETENCIA", "COMPETENCIA"]. Empty when it records none.
      - `text_status` 'extracted' | 'scanned' | 'unavailable', required: `extracted` when `text` holds the ruling's full text; `scanned` when the court's document is a scanned image with no text in it; `unavailable` when the court publishes no document for the ruling.
      - `text_source` 'html' | 'pdf' | 'doc' | 'none', required: The format of the court's document the text comes from: `html`, `pdf` or `doc` (a Word file). `none` when the court publishes no document.
      - `official_url` string, required: The link to the ruling's document as the court publishes it, in the format `text_source` names; the PDF when the court publishes no text of the ruling.

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