Skip to main content
Chile’s Tribunal Constitucional decides whether laws and other rules fit the Constitution: requests to declare a legal provision inapplicable in a pending case (inaplicabilidad, the bulk of its work), declarations of unconstitutionality, the preventive review of organic laws, and challenges to autos acordados, decrees and bills. Each case here is one rol with its procedure, the sentence date, the outcome, who filed it and the proceeding it comes from, the legal provisions challenged and the articles of the Constitution at issue, the Tribunal’s keywords and doctrine, the justices of the majority, the dissent and any concurrence with who wrote each, every ficha of the Tribunal’s case-law search for the case, and every distinct document of the case, kept byte for byte, with the sentence’s text. Recent sentences arrive the day after the Tribunal signs them, with the signed PDF and the case caption; the ficha follows when the Tribunal’s case-law search catches up, usually about three months later. Search by rol, procedure, outcome or date, or with free text that reaches into the provisions, the justices and the sentence itself. Search first, then read one case in full.
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.

Search the sentencias

POST /cl/tc-cl/rulings-search/v1 Dataset One search over every case of the Tribunal Constitucional with a published sentence since 1981, filtered by rol, procedure, outcome or date.
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 recent sentence first. Every result is one case: rol (the case’s number, e.g. 16770), case_number (with its filing year, e.g. 17637-2026, for recent sentences), procedure (e.g. INA) and procedure_name, ruling_type (e.g. INA-STC), sentence_date and sentence_date_raw (the date as the Tribunal records it, kept when it is mistyped; sentence_date is then null) and year, caption (the carátula, for recent sentences), outcome and outcomes, resolution_types, requesters, pending_proceeding, challenged_provisions (each with legal_body, article, paragraph, number, letter, section, phrase and text) and challenged_laws, constitutional_articles, keywords, majority and majority_author, dissent and dissent_author, concurrence and concurrence_author, bench, chamber, related_rulings, doctrine, justices (everyone named on the case), fichas (every ficha of the Tribunal’s case-law search for the case, each with id, type, type_name, sentence_date, status, updated_at and every one of its fields with its name and values), documents (every distinct document of the case, each with id, collection: case_file for the signed sentence or case_law for the copy in the case-law search, name, date, pages, bytes, text_status, document_url, Croma’s byte-identical copy, and source_document_url), text_status, document_url and source_document_url (those of the first document). Fields the Tribunal does not state are null or empty.
Search results leave out the sentence’s text. query still matches against it; read the text itself with the Tribunal Constitucional Chile Ruling endpoint.
A new sentence appears the day after the Tribunal signs it, with its signed PDF and caption. Its ficha (outcome, provisions, votes, doctrine) follows when the Tribunal’s case-law search catches up, usually about three months later.

One case, in full

POST /cl/tc-cl/ruling/v1 Dataset
Returns as_of, found, rol and ruling, which carries everything the search returns plus content (a window onto the sentence’s text, with text, offset, total_length, has_more and next_offset). Every result is one case: rol (the case’s number, e.g. 16770), case_number (with its filing year, e.g. 17637-2026, for recent sentences), procedure (e.g. INA) and procedure_name, ruling_type (e.g. INA-STC), sentence_date and sentence_date_raw (the date as the Tribunal records it, kept when it is mistyped; sentence_date is then null) and year, caption (the carátula, for recent sentences), outcome and outcomes, resolution_types, requesters, pending_proceeding, challenged_provisions (each with legal_body, article, paragraph, number, letter, section, phrase and text) and challenged_laws, constitutional_articles, keywords, majority and majority_author, dissent and dissent_author, concurrence and concurrence_author, bench, chamber, related_rulings, doctrine, justices (everyone named on the case), fichas (every ficha of the Tribunal’s case-law search for the case, each with id, type, type_name, sentence_date, status, updated_at and every one of its fields with its name and values), documents (every distinct document of the case, each with id, collection: case_file for the signed sentence or case_law for the copy in the case-law search, name, date, pages, bytes, text_status, document_url, Croma’s byte-identical copy, and source_document_url), text_status, document_url and source_document_url (those of the first document). Fields the Tribunal does not state are null or empty.
Long sentences are 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.
A rol the Tribunal has not published a sentence for returns found: false with HTTP 200, not an error.

Full reference

Schemas, all response fields, and an interactive playground.