---
title: "Tribunal Constitucional Rulings Search"
method: POST
path: "/pe/tribunal-constitucional/rulings-search/v1"
tags: ["Peru", "Tribunal Constitucional"]
---

# Tribunal Constitucional Rulings Search

`POST /pe/tribunal-constitucional/rulings-search/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/pe/tribunal-constitucional/rulings-search/v1`
- Auth: HTTP bearer

Search every resolution the Tribunal Constitucional del Perú has published since 1996: sentencias, autos and sentencias interlocutorias. Free text matches the case file number, the resolution number and the full text. Filter by `type`, `proceeding_type` (`AA` amparo, `HC` hábeas corpus, `HD` hábeas data, `AC` cumplimiento, `AI`/`PI` inconstitucionalidad, `CC` competencial, `Q` queja), `chamber`, `registration_number` (the expediente), `year` and the publication date (`from_date`/`to_date`). Each result links to the document on the court's own site. 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 case file number, the resolution number and the full text.
  - `type` '' | 'sentencia' | 'auto' | 'sentencia_interlocutoria': Optional kind of resolution: `sentencia`, `auto` (autos and decretos) or `sentencia_interlocutoria`.
  - `proceeding_type` string: Optional kind of proceeding, by code or by name: `AA` (amparo), `HC` (hábeas corpus), `HD` (hábeas data), `AC` (cumplimiento), `AI` or `PI` (inconstitucionalidad), `CC` (competencial), `Q` (queja).
  - `chamber` string: Optional chamber: `Pleno`, `Sala Primera` or `Sala Segunda`.
  - `registration_number` string: Optional case file number (expediente) as the court writes it, e.g. `05005-2025-HC`. Returns every document of that case. Case and spaces are ignored.
  - `year` integer: Optional year of publication. 0 searches every year.
  - `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

- TribunalConstitucionalRulingsSearchResponse
  - `data` TribunalConstitucionalRulingsSearchData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `query` string, required
    - `type` string, nullable, required
    - `proceeding_type` string, nullable, required
    - `chamber` string, nullable, required
    - `registration_number` string, nullable, required
    - `year` number, 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 document's permanent identifier: its path on the court's site, e.g. "2026/05005-2025-HC.pdf" or "2021/04841-2019-HC Aclaracion.pdf". One case can have several documents, so the case file number is not unique.
      - `registration_number` string, required: The case file number (expediente) as the court prints it, e.g. "05005-2025-HC".
      - `proceeding_type_code` string, nullable, required: The kind of proceeding as the court's code, read off the case file number: `AA` amparo, `HC` hábeas corpus, `HD` hábeas data, `AC` cumplimiento, `AI` or `PI` inconstitucionalidad, `CC` competencial, `Q` queja.
      - `proceeding_type` string, nullable, required: The kind of proceeding by name: "Amparo", "Hábeas corpus", "Hábeas data", "Cumplimiento", "Inconstitucionalidad", "Competencial" or "Queja". Null for a code outside that list.
      - `type` 'sentencia' | 'auto' | 'sentencia_interlocutoria', nullable, required: The kind of resolution: `sentencia`, `auto` (autos and decretos) or `sentencia_interlocutoria`.
      - `number` string, nullable, required: The number the court gives a sentencia, e.g. "181/2026". Null on autos and on many older sentencias.
      - `publication_date` string, required: `yyyy-mm-dd` the court published the resolution on its site.
      - `year` number, required: The year of publication.
      - `chamber` string, nullable, required: "Pleno", "Sala Primera" or "Sala Segunda". Null when the court records none.
      - `judicial_district` string, nullable, required: The judicial district the case came from, e.g. "Distrito Judicial de Lima". Recorded for about half the resolutions.
      - `case_id` number, nullable, required: The court's own identifier for the case, shared by every document of that case.
      - `text_status` 'ok' | 'scanned' | 'missing', required: `ok` when the full text is here; `scanned` when the court published the resolution as an image with no text in it; `missing` when it published no readable document.
      - `official_url` string, required: The resolution's document on the Tribunal Constitucional's own site.
      - `case_url` string, nullable, required: The case's page on the Tribunal Constitucional's own site.

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