---
title: "SCJN Tesis Search"
method: POST
path: "/mx/scjn/tesis-search/v1"
tags: ["Mexico", "SCJN"]
---

# SCJN Tesis Search

`POST /mx/scjn/tesis-search/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/mx/scjn/tesis-search/v1`
- Auth: HTTP bearer

Search the Mexican Supreme Court's case law: every tesis and jurisprudencia the Semanario Judicial de la Federación has published since 1911 (300k+), each in full. Match words in the title and text (`query`, optional; every word must appear) and filter by binding force (`tesis_type`: jurisprudencia vs aislada), subject (materia), época number, year, deciding level (`instance`), court or chamber, how the criterion was formed (`formation`), publication window (`published_from`/`published_to`) and the court's own modification date (`updated_after`). Newest first, pages of up to 50 full records; `as_of` says how current the data is. Read one by its registro digital with `scjn-tesis`.

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

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `query` string: Optional words to match in the title and text of the tesis.
  - `tesis_type` 'any' | 'jurisprudencia' | 'aislada': Filter by tesis type: binding `jurisprudencia`, non-binding `aislada`, or `any`.
  - `subject` string: Optional subject filter (e.g. `Civil`, `Constitucional`).
  - `epoch` string: Optional época number filter (`5` through `12`).
  - `year` string: Optional 4-digit year filter.
  - `instance` string: Optional deciding level, exactly as the source names it (e.g. `Suprema Corte de Justicia de la Nación`, `Tribunales Colegiados de Circuito`, `Plenos Regionales`).
  - `court` string: Optional court or chamber, exactly as `court` reads in results (e.g. `Primera Sala`, `Pleno`).
  - `formation` string: Optional way the criterion was formed, exactly as the source names it (e.g. `Reiteración`, `Contradicción de criterios (antes contradicción de tesis)`).
  - `published_from` string, date: Optional date filter in yyyy-mm-dd format.
  - `published_to` string, date: Optional date filter in yyyy-mm-dd format.
  - `updated_after` 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). Every result carries the full text of the tesis.

## Response `200`

Successful response

- ScjnTesisSearchResponse
  - `data` ScjnTesisSearchData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `query` string, required
    - `tesis_type` string, nullable, required
    - `subject` string, nullable, required
    - `epoch` string, nullable, required
    - `year` string, nullable, required
    - `instance` string, nullable, required
    - `court` string, nullable, required
    - `formation` string, nullable, required
    - `published_from` string, nullable, required
    - `published_to` string, nullable, required
    - `updated_after` 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
      - `registration_number` string, required: Registro digital: the court's stable id for the tesis.
      - `title` string, required: Rubro: the heading of the tesis.
      - `subtitle` string, nullable, required
      - `type` 'jurisprudencia' | 'aislada', nullable, required: `jurisprudencia` (binding) or `aislada` (non-binding); null when the source reports neither.
      - `citation` string, nullable, required: Official citation key, e.g. "1a./J. 132/2012 (10a.)".
      - `epoch` string, nullable, required: Judicial epoch name, e.g. "Décima Época".
      - `epoch_number` number, nullable, required: Judicial epoch number (5 through 12).
      - `instance` string, nullable, required: Deciding level, e.g. "Suprema Corte de Justicia de la Nación", "Tribunales Colegiados de Circuito".
      - `circuit` string, nullable, required: Judicial circuit, e.g. "Trigésimo Circuito". Null for SCJN chambers.
      - `court` string, nullable, required: Specific court or chamber, e.g. "Primera Sala".
      - `source` string, nullable, required: The publication, e.g. `Semanario Judicial de la Federación`.
      - `subjects` string[], required: Materias, e.g. `Civil`, `Constitucional`.
      - `location` object, nullable, required
        - `book` string, nullable, required: Semanario book, e.g. "Libro 28".
        - `volume` string, nullable, required: Tome, e.g. "Tomo 2".
        - `page` number, nullable, required
        - `month` number, nullable, required: Month of the Semanario issue (1-12).
        - `year` number, nullable, required: Year of the Semanario issue.
      - `text` string, nullable, required: Full text of the tesis; null when the source carries no text.
      - `facts` string, nullable, required: `Hechos`: the facts section, on tesis published in the structured format (Undécima Época onward).
      - `legal_criteria` string, nullable, required: `Criterio jurídico`: the holding, on structured tesis.
      - `justification` string, nullable, required: `Justificación`: the reasoning, on structured tesis.
      - `notes` string, nullable, required
      - `precedent_notes` string[], required: Precedent history entries, as plain text.
      - `linked_case_registrations` string[], required: Registro digital ids of the rulings this tesis derives from.
      - `linked_vote_registrations` string[], required: Registro digital ids of published votes linked to this tesis.
      - `formation` string, nullable, required: How the criterion was formed, e.g. "Reiteración", "Contradicción de criterios (antes contradicción de tesis)".
      - `issue` string, nullable, required: Semanario issue, e.g. "Libro 28, Agosto de 2023".
      - `publication_date` string, nullable, required: `yyyy-mm-dd` published in the Semanario; null on pre-Gaceta tesis.
      - `binding_date` string, nullable, required: `yyyy-mm-dd` the criterion became obligatory; null on pre-Gaceta tesis.
      - `updated_at` string, nullable, required: When the source last modified the record (ISO timestamp); null on tesis it has not touched since it began recording changes.
      - `fingerprint` string, nullable, required: Integrity hash the source publishes for this document.
      - `official_url` string, required

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