---
title: "Corte Constitucional Ruling"
method: POST
path: "/co/corte-constitucional/ruling/v1"
tags: ["Colombia", "Corte Constitucional"]
---

# Corte Constitucional Ruling

`POST /co/corte-constitucional/ruling/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/corte-constitucional/ruling/v1`
- Auth: HTTP bearer

Retrieve one ruling of the Corte Constitucional de Colombia by its number (`T-013/25`, `SU.502/25`, `A. 006/25`) or its `relatoria_id`: its full text, what the court decided, the rights at stake, the magistrado ponente, the case file number and the link to the ruling on the court's own site. The text comes back a character range at a time (`offset`, `limit`); follow `next_offset` until `has_more` is false.

**Dataset endpoint**: answers from the whole source in milliseconds and carries `as_of`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `ruling_id` string, required: The ruling's number in any of the court's notations (`T-013/25`, `SU.502/25`, `A. 006/25`, `T-013-25`) or its `relatoria_id` (`47977`).
  - `offset` integer: First character of the range to return. Pass the previous response's `next_offset` to continue reading.
  - `limit` integer: Maximum characters to return (1000-1000000).

## Response `200`

Successful response

- CorteConstitucionalRulingResponse
  - `data` CorteConstitucionalRulingData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `found` boolean, required
    - `ruling_id` string, required
    - `ruling` object, nullable, required
      - `id` string, required: The ruling's number in canonical form: the type code, the number padded to three digits with its letter suffix if any, and the two-digit year, e.g. "T-013/25", "SU-502/25", "A-006/25", "C-155A/93". A lookup accepts the court's own notation too ("SU.502/25", "A. 006/25", "T-013-25").
      - `number` string, required: The ruling's number exactly as the court prints it, e.g. "T-013/25", "SU.502/25", "A. 006/25".
      - `relatoria_id` string, required: The court's internal identifier for the ruling, e.g. `47977`. The rulings listed in `related_relatoria_ids` use the same identifier, and the ruling lookup accepts it.
      - `type` string, nullable, required: The kind of ruling as the court names it: "Tutela", "Constitucionalidad", "Sentencia de unificación" or "Auto".
      - `type_code` 'T' | 'C' | 'SU' | 'A', required: The kind of ruling as a code: `T` tutela, `C` constitucionalidad, `SU` unificación, `A` auto.
      - `year` number, required: The year of the ruling (the 2025 of T-013/25).
      - `ruling_date` string, nullable, required: `yyyy-mm-dd` the court handed the ruling down.
      - `publication_date` string, nullable, required: `yyyy-mm-dd` the court published the ruling. Null on most rulings before 2016, which the court lists without one.
      - `proceeding_type` string, nullable, required: The kind of proceeding, e.g. "Acciones de Tutela", "Demandas de inconstitucionalidad", "Conflictos de jurisdicción".
      - `chamber` string, nullable, required: The chamber as the court records it: "Sala plena/Revisión" for almost every ruling, or the name of a follow-up chamber for the ones it monitors.
      - `registration_number` string, nullable, required: The case file number (expediente), e.g. "T-10417884", "D-15234", "CJU-6063".
      - `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: "jorge-enrique-ibanez-najar"), which is what the `reporting_judge` filter matches.
      - `subject` string, nullable, required: The topics the relatoría records for the ruling. Null when it records none.
      - `summary` string, nullable, required: The relatoría's synopsis of the ruling. Null when it publishes none.
      - `decision` string, nullable, required: What the court decided: the RESUELVE of the ruling, as the relatoría records it.
      - `rights_invoked` string[], required: The rights the relatoría records as at stake in the case. Empty when it records none.
      - `rights_protected` string[], required: The rights the court protected, for a tutela that granted them. Empty otherwise.
      - `lower_instances` string[], required: The lower-court decisions the ruling reviewed, as the relatoría lists them. Empty when there were none.
      - `related_relatoria_ids` string[], required: `relatoria_id`s of the rulings the relatoría links to this one. Each can be looked up in turn.
      - `updated_at` string, nullable, required: When the relatoría last updated the ruling's record, as an ISO 8601 timestamp in Bogotá time.
      - `official_url` string, nullable, required: The ruling's page on the Corte Constitucional's own site, where the full document is published.
      - `content` object, nullable, required: A range of the ruling's text, or null when the court published none.
        - `text` string, required: The requested character range of the ruling's text.
        - `offset` number, required: First character of the range, which is where the reading actually started.
        - `total_length` number, required: Length of the whole text in characters, however much of it this response carries.
        - `has_more` boolean, required: Whether the text continues past this range.
        - `next_offset` number, nullable, required: Pass this back as `offset` to read the next range. Null at the end of the text.

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