> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usecroma.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SCJN Tesis Browse

> Deprecated since 2026-09-07; stops answering on 2026-12-15. Use `POST /mx/scjn/tesis-search/v1` instead.

Same request and response as `scjn-tesis-search`, which replaces it: the Mexican Supreme Court's case law in full, filtered by words in the title and text, binding force, subject, época, year, instance, court, formation, publication window and the court's modification date. Newest first, pages of up to 20 full records, with `as_of`.

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



## OpenAPI

````yaml /api-reference/openapi.json post /mx/scjn/tesis-browse/v1
openapi: 3.1.0
info:
  title: Croma Marketplace API
  version: 1.0.0
  description: >-
    Government-data APIs for Colombia, Peru, Mexico, United States, Brazil, El
    Salvador, Bolivia, and Japan, plus global web search. Croma normalizes
    public-sector data into structured JSON for product teams and AI agents.


    Every operation is a POST with a JSON body and an organization API key as a
    bearer token; every operation is an idempotent lookup and accepts an
    optional `Idempotency-Key` header. Paths carry their major version (`/v1`);
    the versioning and deprecation policy, including the `Deprecation` and
    `Sunset` headers a retiring endpoint sends, is at
    https://docs.usecroma.com/versioning. Rate limits are per organization and
    reported on every response (`RateLimit-Policy`, `X-RateLimit-*`):
    https://docs.usecroma.com/rate-limits.
  termsOfService: https://usecroma.com/en/terms
  contact:
    name: Croma support
    url: https://usecroma.com/en/support
    email: support@usecroma.com
servers:
  - url: https://api.croma.run
security: []
paths:
  /mx/scjn/tesis-browse/v1:
    post:
      tags:
        - Mexico
        - SCJN
      summary: SCJN Tesis Browse
      description: >-
        Deprecated since 2026-09-07; stops answering on 2026-12-15. Use `POST
        /mx/scjn/tesis-search/v1` instead.


        Same request and response as `scjn-tesis-search`, which replaces it: the
        Mexican Supreme Court's case law in full, filtered by words in the title
        and text, binding force, subject, época, year, instance, court,
        formation, publication window and the court's modification date. Newest
        first, pages of up to 20 full records, with `as_of`.


        **Dataset endpoint**: answers from the whole source in milliseconds and
        carries `as_of`.
      operationId: scjn_tesis_browse
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: []
              properties:
                query:
                  type: string
                  maxLength: 300
                  default: ''
                  description: Optional words to match in the title and text of the tesis.
                tesis_type:
                  type: string
                  enum:
                    - any
                    - jurisprudencia
                    - aislada
                  default: any
                  description: >-
                    Filter by tesis type: binding `jurisprudencia`, non-binding
                    `aislada`, or `any`.
                subject:
                  type: string
                  maxLength: 60
                  default: ''
                  description: Optional subject filter (e.g. `Civil`, `Constitucional`).
                epoch:
                  type: string
                  default: ''
                  description: Optional época number filter (`5` through `12`).
                year:
                  type: string
                  default: ''
                  description: Optional 4-digit year filter.
                instance:
                  type: string
                  maxLength: 80
                  default: ''
                  description: >-
                    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:
                  type: string
                  maxLength: 200
                  default: ''
                  description: >-
                    Optional court or chamber, exactly as `court` reads in
                    results (e.g. `Primera Sala`, `Pleno`).
                formation:
                  type: string
                  maxLength: 120
                  default: ''
                  description: >-
                    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:
                  type: string
                  format: date
                  default: ''
                  description: Optional date filter in yyyy-mm-dd format.
                published_to:
                  type: string
                  format: date
                  default: ''
                  description: Optional date filter in yyyy-mm-dd format.
                updated_after:
                  type: string
                  format: date
                  default: ''
                  description: Optional date filter in yyyy-mm-dd format.
                page:
                  type: integer
                  minimum: 1
                  maximum: 1000
                  default: 1
                  description: 1-based page number for paginated results.
                per_page:
                  type: integer
                  minimum: 1
                  maximum: 20
                  default: 10
                  description: >-
                    Results per page (1-20). Every result carries the full text
                    of the tesis.
              additionalProperties: false
            example:
              subject: Civil
              tesis_type: jurisprudencia
              published_from: '2026-01-01'
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            X-Cache:
              $ref: '#/components/headers/X-Cache'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScjnTesisBrowseResponse'
        '400':
          description: Invalid request body
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Missing or invalid API key
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Rate limit exceeded
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '502':
          description: Upstream source returned an error
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      deprecated: true
      security:
        - bearerAuth: []
      externalDocs:
        description: Interactive documentation and examples
        url: https://docs.usecroma.com/guides/mexico/scjn
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: >-
        Optional client-chosen key for this request (any string up to 255
        characters, e.g. a UUID). Every Croma operation is an idempotent lookup:
        repeating a request with the same body returns the same result and
        creates nothing, so retrying after a timeout or network failure is
        always safe. The key is echoed back in the `Idempotency-Key` response
        header so you can correlate a retry with its first attempt. Each attempt
        that reaches the API counts against the rate limit.
      schema:
        type: string
        maxLength: 255
        example: 0f8e9a42-6b7c-4d1e-9a3f-2c5d7e8f9a0b
  headers:
    X-Request-Id:
      description: Unique id for the request (req_…). Include it in support reports.
      schema:
        type: string
    RateLimit-Policy:
      description: >-
        Quota policy for this endpoint as an IETF RateLimit-Policy structured
        field, e.g. `"default";q=100;w=86400` (100 requests per 86400-second
        window per organization). Endpoints with an extra hourly ceiling list
        both policies, e.g. `"webSearch";q=100;w=3600, "default";q=100;w=86400`.
        Present on every response, including 401 and 429.
      schema:
        type: string
        example: '"default";q=100;w=86400'
    Idempotency-Key:
      description: >-
        The `Idempotency-Key` the request carried, echoed back unchanged. Absent
        when the request sent none.
      schema:
        type: string
    Deprecation:
      description: >-
        Present only on an endpoint version scheduled for removal: the date the
        deprecation took effect (RFC 9745). A `Sunset` header and a `Link` with
        `rel="successor-version"` accompany it. Policy:
        https://docs.usecroma.com/versioning
      schema:
        type: string
        example: '@1767225600'
    Sunset:
      description: >-
        Present only on an endpoint version scheduled for removal: the date
        after which it answers 410 (RFC 8594). Announced in the changelog at
        least 90 days ahead.
      schema:
        type: string
        format: date-time
        example: Wed, 01 Apr 2026 00:00:00 GMT
    X-RateLimit-Limit:
      description: Requests allowed in the current window.
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests left before you are throttled.
      schema:
        type: integer
    X-RateLimit-Reset:
      description: ISO 8601 timestamp when the window resets.
      schema:
        type: string
        format: date-time
    X-Cache:
      description: >-
        HIT or MISS. Cached hits spend no credits, but still count toward an
        hourly ceiling.
      schema:
        type: string
        enum:
          - HIT
          - MISS
    Retry-After:
      description: Seconds to wait before retrying.
      schema:
        type: integer
  schemas:
    ScjnTesisBrowseResponse:
      type: object
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/ScjnTesisBrowseData'
        deprecation:
          type: object
          description: >-
            Present only while this endpoint is being retired. Mirrors the
            Deprecation, Sunset and Link response headers.
          required:
            - since
            - sunset
            - successor
            - message
          properties:
            since:
              type: string
              format: date
            sunset:
              type: string
              format: date
            successor:
              type: string
              description: Path of the endpoint to use instead.
            message:
              type: string
    ApiError:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - code
            - message
          properties:
            type:
              type: string
              description: >-
                Broad category: invalid_request_error, authentication_error,
                not_found_error, rate_limit_error, upstream_error, api_error.
            code:
              type: string
              description: Machine-readable specific code.
            message:
              type: string
              description: Human-readable explanation, safe to surface in UI.
            param:
              type: string
              description: Field that triggered the error. Present on validation errors.
            details:
              type: object
              description: Free-form structured detail.
    ScjnTesisBrowseData:
      type: object
      properties:
        as_of:
          anyOf:
            - type: string
            - type: 'null'
          description: How current the data in this response is.
        query:
          type: string
        tesis_type:
          anyOf:
            - type: string
            - type: 'null'
        subject:
          anyOf:
            - type: string
            - type: 'null'
        epoch:
          anyOf:
            - type: string
            - type: 'null'
        year:
          anyOf:
            - type: string
            - type: 'null'
        instance:
          anyOf:
            - type: string
            - type: 'null'
        court:
          anyOf:
            - type: string
            - type: 'null'
        formation:
          anyOf:
            - type: string
            - type: 'null'
        published_from:
          anyOf:
            - type: string
            - type: 'null'
        published_to:
          anyOf:
            - type: string
            - type: 'null'
        updated_after:
          anyOf:
            - type: string
            - type: 'null'
        total:
          type: number
          description: Matches, counted up to 1000.
        total_is_exact:
          type: boolean
          description: >-
            False when more than 1000 match: `total` is then 1000, and the pages
            go on.
        page:
          type: number
        per_page:
          type: number
        total_pages:
          type: number
          description: Pages over `total`; there are more when `total_is_exact` is false.
        count:
          type: number
        results:
          type: array
          items:
            type: object
            properties:
              registration_number:
                type: string
                description: 'Registro digital: the court''s stable id for the tesis.'
              title:
                type: string
                description: 'Rubro: the heading of the tesis.'
              subtitle:
                anyOf:
                  - type: string
                  - type: 'null'
              type:
                anyOf:
                  - type: string
                    enum:
                      - jurisprudencia
                      - aislada
                  - type: 'null'
                description: >-
                  `jurisprudencia` (binding) or `aislada` (non-binding); null
                  when the source reports neither.
              citation:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Official citation key, e.g. "1a./J. 132/2012 (10a.)".
              epoch:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Judicial epoch name, e.g. "Décima Época".
              epoch_number:
                anyOf:
                  - type: number
                  - type: 'null'
                description: Judicial epoch number (5 through 12).
              instance:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  Deciding level, e.g. "Suprema Corte de Justicia de la Nación",
                  "Tribunales Colegiados de Circuito".
              circuit:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  Judicial circuit, e.g. "Trigésimo Circuito". Null for SCJN
                  chambers.
              court:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Specific court or chamber, e.g. "Primera Sala".
              source:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The publication, e.g. `Semanario Judicial de la Federación`.
              subjects:
                type: array
                items:
                  type: string
                description: Materias, e.g. `Civil`, `Constitucional`.
              location:
                anyOf:
                  - type: object
                    properties:
                      book:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: Semanario book, e.g. "Libro 28".
                      volume:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: Tome, e.g. "Tomo 2".
                      page:
                        anyOf:
                          - type: number
                          - type: 'null'
                      month:
                        anyOf:
                          - type: number
                          - type: 'null'
                        description: Month of the Semanario issue (1-12).
                      year:
                        anyOf:
                          - type: number
                          - type: 'null'
                        description: Year of the Semanario issue.
                    required:
                      - book
                      - volume
                      - page
                      - month
                      - year
                  - type: 'null'
              text:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Full text of the tesis; null when the source carries no text.
              facts:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  `Hechos`: the facts section, on tesis published in the
                  structured format (Undécima Época onward).
              legal_criteria:
                anyOf:
                  - type: string
                  - type: 'null'
                description: '`Criterio jurídico`: the holding, on structured tesis.'
              justification:
                anyOf:
                  - type: string
                  - type: 'null'
                description: '`Justificación`: the reasoning, on structured tesis.'
              notes:
                anyOf:
                  - type: string
                  - type: 'null'
              precedent_notes:
                type: array
                items:
                  type: string
                description: Precedent history entries, as plain text.
              linked_case_registrations:
                type: array
                items:
                  type: string
                description: Registro digital ids of the rulings this tesis derives from.
              linked_vote_registrations:
                type: array
                items:
                  type: string
                description: Registro digital ids of published votes linked to this tesis.
              formation:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  How the criterion was formed, e.g. "Reiteración",
                  "Contradicción de criterios (antes contradicción de tesis)".
              issue:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Semanario issue, e.g. "Libro 28, Agosto de 2023".
              publication_date:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  `yyyy-mm-dd` published in the Semanario; null on pre-Gaceta
                  tesis.
              binding_date:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  `yyyy-mm-dd` the criterion became obligatory; null on
                  pre-Gaceta tesis.
              updated_at:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  When the source last modified the record (ISO timestamp); null
                  on tesis it has not touched since it began recording changes.
              fingerprint:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Integrity hash the source publishes for this document.
              official_url:
                type: string
            required:
              - registration_number
              - title
              - subtitle
              - type
              - citation
              - epoch
              - epoch_number
              - instance
              - circuit
              - court
              - source
              - subjects
              - location
              - text
              - facts
              - legal_criteria
              - justification
              - notes
              - precedent_notes
              - linked_case_registrations
              - linked_vote_registrations
              - formation
              - issue
              - publication_date
              - binding_date
              - updated_at
              - fingerprint
              - official_url
      required:
        - as_of
        - query
        - tesis_type
        - subject
        - epoch
        - year
        - instance
        - court
        - formation
        - published_from
        - published_to
        - updated_after
        - total
        - total_is_exact
        - page
        - per_page
        - total_pages
        - count
        - results
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Use Authorization: Bearer YOUR_API_KEY'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.