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

# Tribunal Constitucional Chile Rulings Search

> Search the sentencias of Chile's Tribunal Constitucional: about 13,000 cases since 1981, one result per case (rol). Free text matches the rol, caption, requesters, pending proceeding, challenged laws, constitutional articles, keywords, justices, doctrine and the sentence's text. Filter by `rol`, `procedure` (e.g. `INA`, `CPR`), `outcome` (e.g. `Acoge`, `Rechaza`) and the sentence date (`from_date`/`to_date`). Each result carries the challenged provisions, the votes and their authors, every ficha with all its fields, and every document with Croma's copy of its PDF. Served by Croma (`as_of` says how current the data is).

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



## OpenAPI

````yaml /api-reference/openapi.json post /cl/tc-cl/rulings-search/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, Japan, and Chile, 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:
  /cl/tc-cl/rulings-search/v1:
    post:
      tags:
        - Chile
        - Tribunal Constitucional (Chile)
      summary: Tribunal Constitucional Chile Rulings Search
      description: >-
        Search the sentencias of Chile's Tribunal Constitucional: about 13,000
        cases since 1981, one result per case (rol). Free text matches the rol,
        caption, requesters, pending proceeding, challenged laws, constitutional
        articles, keywords, justices, doctrine and the sentence's text. Filter
        by `rol`, `procedure` (e.g. `INA`, `CPR`), `outcome` (e.g. `Acoge`,
        `Rechaza`) and the sentence date (`from_date`/`to_date`). Each result
        carries the challenged provisions, the votes and their authors, every
        ficha with all its fields, and every document with Croma's copy of its
        PDF. Served by Croma (`as_of` says how current the data is).


        **Dataset endpoint**: answers from the whole source in milliseconds and
        carries `as_of`.
      operationId: tc_cl_rulings_search
      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 matched against the rol, the case caption,
                    the requesters, the pending proceeding, the challenged laws,
                    the constitutional articles, the keywords, the justices, the
                    doctrine and the sentence's text, e.g. `debido proceso` or
                    `Código del Trabajo 472`. Every word must appear.
                rol:
                  type: string
                  maxLength: 30
                  default: ''
                  description: >-
                    Optional rol of the case, e.g. `16770`, `16.770-25` or
                    `16770-2025-INA`: only its number counts.
                procedure:
                  type: string
                  maxLength: 10
                  default: ''
                  description: >-
                    Optional procedure code, e.g. `INA` (inaplicabilidad, art.
                    93 N° 6), `INC` (inconstitucionalidad), `CPR` (control
                    preventivo), `CAA` (auto acordado), `CPT`, `CDS`.
                    Case-insensitive.
                outcome:
                  type: string
                  maxLength: 60
                  default: ''
                  description: >-
                    Optional outcome as the Tribunal records it, e.g. `Acoge`,
                    `Rechaza`, `Acoge parcialmente`, `Empate`, `Inadmisible`.
                    Accents and case are ignored.
                from_date:
                  type: string
                  format: date
                  default: ''
                  description: Optional date filter in yyyy-mm-dd format.
                to_date:
                  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: 50
                  default: 20
                  description: Results per page (1-50).
              additionalProperties: false
            example:
              query: debido proceso
              procedure: INA
      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/TcClRulingsSearchResponse'
        '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'
      security:
        - bearerAuth: []
      externalDocs:
        description: Interactive documentation and examples
        url: https://docs.usecroma.com/guides/chile/tribunal-constitucional
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:
    TcClRulingsSearchResponse:
      type: object
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/TcClRulingsSearchData'
    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.
    TcClRulingsSearchData:
      type: object
      properties:
        as_of:
          anyOf:
            - type: string
            - type: 'null'
          description: How current the data in this response is.
        query:
          type: string
        rol:
          anyOf:
            - type: string
            - type: 'null'
        procedure:
          anyOf:
            - type: string
            - type: 'null'
        outcome:
          anyOf:
            - type: string
            - type: 'null'
        from_date:
          anyOf:
            - type: string
            - type: 'null'
        to_date:
          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:
              rol:
                type: string
                description: >-
                  The case's rol number at the Tribunal Constitucional, e.g.
                  "16770". The Tribunal cites it with the year and procedure,
                  "16.770-25-INA".
              case_number:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The rol with its filing year, e.g. "17637-2026", when the case
                  file gives it.
              procedure:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The procedure code, e.g. "INA" (inaplicabilidad), "INC", "CPR"
                  (control preventivo), "CAA", "CPT", "CDS".
              procedure_name:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The procedure's full name, e.g. "Inaplicabilidad de Precepto
                  Legal (Art. 93 N° 6 - STC)".
              ruling_type:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The kind of the latest resolution recorded, e.g. "INA-STC"
                  (sentence), "INA-Inadmisibilidad".
              sentence_date:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  `yyyy-mm-dd` of the latest sentence the Tribunal records for
                  the case. Null when its only date is not a real one.
              sentence_date_raw:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  That date as the Tribunal records it; kept even when it is
                  mistyped (a year `0205`).
              year:
                anyOf:
                  - type: number
                  - type: 'null'
                description: The year of `sentence_date`.
              caption:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The case caption (carátula): who brings it, against which
                  provision, in which proceeding. From the case file, for recent
                  sentences.
              outcome:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The outcome of the latest resolution, e.g. "Rechaza", "Acoge",
                  "Acoge parcialmente".
              outcomes:
                type: array
                items:
                  type: string
                description: Every outcome the case's resolutions record.
              resolution_types:
                type: array
                items:
                  type: string
                description: The type of resolution (tipo de resolución), e.g. "Sentencia".
              requesters:
                type: array
                items:
                  type: string
                description: Who filed the requirement (requirente).
              pending_proceeding:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The proceeding where the provision is to be applied (gestión
                  pendiente), for an inaplicabilidad.
              challenged_provisions:
                type: array
                items:
                  type: object
                  properties:
                    legal_body:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        The law or code the provision belongs to (cuerpo legal),
                        e.g. "Código del Trabajo".
                    article:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The article (artículo), e.g. "472".
                    paragraph:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The paragraph (inciso), e.g. "final" or "1 y 7".
                    number:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The numeral (numeral), when stated.
                    letter:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The letter (letra), when stated.
                    section:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The párrafo, when stated.
                    phrase:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        The phrase challenged (frase), quoted as the Tribunal
                        records it.
                    text:
                      type: string
                      description: >-
                        The provision in one line, e.g. "Código del Trabajo,
                        artículo 470, inciso 1".
                  required:
                    - legal_body
                    - article
                    - paragraph
                    - number
                    - letter
                    - section
                    - phrase
                    - text
                description: The legal provisions challenged (precepto legal impugnado).
              challenged_laws:
                type: array
                items:
                  type: string
                description: The laws and codes of `challenged_provisions`, once each.
              constitutional_articles:
                type: array
                items:
                  type: string
                description: >-
                  The articles of the Constitution at issue, e.g. "Artículo 19,
                  inciso primero, numeral 3, inciso sexto".
              keywords:
                type: array
                items:
                  type: string
                description: >-
                  The Tribunal's keywords (palabras clave), e.g. "Debido
                  Proceso".
              majority:
                type: array
                items:
                  type: string
                description: The justices of the majority vote (voto mayoría).
              majority_author:
                type: array
                items:
                  type: string
                description: Who wrote the majority vote (redactor).
              dissent:
                type: array
                items:
                  type: string
                description: The dissenting justices (voto disidencia).
              dissent_author:
                type: array
                items:
                  type: string
                description: Who wrote the dissent.
              concurrence:
                type: array
                items:
                  type: string
                description: Justices with a concurring opinion (prevención).
              concurrence_author:
                type: array
                items:
                  type: string
                description: Who wrote the concurring opinion.
              bench:
                type: array
                items:
                  type: string
                description: The justices who sat (integración de sala).
              chamber:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The chamber (sala) that decided, e.g. "Pleno", "Primera Sala",
                  when recorded.
              related_rulings:
                type: array
                items:
                  type: string
                description: >-
                  The earlier sentences the Tribunal lists as related, as it
                  writes them.
              doctrine:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The doctrine the Tribunal draws from the sentence, as it
                  summarizes it.
              justices:
                type: array
                items:
                  type: string
                description: Every justice named on the case, once each.
              fichas:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: number
                      description: >-
                        The ficha's number in the Tribunal's case-law search. A
                        case can have more than one.
                    type:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        The kind of resolution the ficha records, e.g.
                        "INA-STC", "CPR", "INA-Inadmisibilidad".
                    type_name:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Its full name, e.g. "Inaplicabilidad de Precepto Legal
                        (Art. 93 N° 6 - STC)".
                    sentence_date:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        `yyyy-mm-dd` of the resolution. Null when the Tribunal's
                        date is not a real one (see `sentence_date_raw`).
                    sentence_date_raw:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        The date exactly as the Tribunal records it, e.g.
                        "2026-03-18" or a mistyped "0205-03-26".
                    status:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        The ficha's status in the Tribunal's search, e.g.
                        "Ingresado".
                    updated_at:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: When the Tribunal last edited the ficha.
                    fields:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                            description: >-
                              The field's name as the Tribunal labels it, e.g.
                              "Requirente", "Resultado", "Voto disidencia".
                          values:
                            type: array
                            items:
                              type: string
                            description: Its values, in the Tribunal's order.
                        required:
                          - name
                          - values
                      description: >-
                        Every field of the ficha with a value, as the Tribunal
                        publishes it.
                  required:
                    - id
                    - type
                    - type_name
                    - sentence_date
                    - sentence_date_raw
                    - status
                    - updated_at
                    - fields
                description: >-
                  Every ficha the Tribunal's case-law search holds for the case,
                  newest first, with all its fields.
              documents:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: >-
                        The document's own id: `doc-<n>` for the case-file copy
                        (the Tribunal's document number), `sha256-<hex>` for the
                        case-law copy (its content hash).
                    collection:
                      type: string
                      enum:
                        - case_file
                        - case_law
                      description: >-
                        `case_file` for the signed resolution from the case
                        file, `case_law` for the copy in the Tribunal's case-law
                        search.
                    name:
                      type: string
                      description: >-
                        The file name the Tribunal publishes it under, e.g.
                        "STC_Rol_17_637-26_CAA.pdf" or "2026-05-28 17637.pdf".
                    date:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        `yyyy-mm-dd` the Tribunal gives the document: the
                        resolution date for the case file, the date in the file
                        name for the case-law copy.
                    pages:
                      anyOf:
                        - type: number
                        - type: 'null'
                      description: Pages in the PDF, when it could be read.
                    bytes:
                      anyOf:
                        - type: number
                        - type: 'null'
                      description: The file's size in bytes.
                    text_status:
                      type: string
                      enum:
                        - ok
                        - scanned
                        - missing
                      description: >-
                        `ok` when the PDF carries readable text, `scanned` for
                        an image with no text, `missing` when it could not be
                        read or kept.
                    document_url:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Croma's byte-identical copy of the document. Null only
                        while the copy is pending.
                    source_document_url:
                      type: string
                      description: The document's link at the Tribunal.
                  required:
                    - id
                    - collection
                    - name
                    - date
                    - pages
                    - bytes
                    - text_status
                    - document_url
                    - source_document_url
                description: >-
                  Every distinct document kept for the case, the case-file
                  sentences first, newest first.
              text_status:
                type: string
                enum:
                  - ok
                  - scanned
                  - missing
                description: >-
                  `ok` when `text` holds the sentence's text, `scanned` when the
                  document is an image with no text, `missing` when the case has
                  no document yet.
              document_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Croma's copy of the first document in `documents`.
              source_document_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: That document's link at the Tribunal.
            required:
              - rol
              - case_number
              - procedure
              - procedure_name
              - ruling_type
              - sentence_date
              - sentence_date_raw
              - year
              - caption
              - outcome
              - outcomes
              - resolution_types
              - requesters
              - pending_proceeding
              - challenged_provisions
              - challenged_laws
              - constitutional_articles
              - keywords
              - majority
              - majority_author
              - dissent
              - dissent_author
              - concurrence
              - concurrence_author
              - bench
              - chamber
              - related_rulings
              - doctrine
              - justices
              - fichas
              - documents
              - text_status
              - document_url
              - source_document_url
      required:
        - as_of
        - query
        - rol
        - procedure
        - outcome
        - from_date
        - to_date
        - 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.