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

# TTA Rulings Search

> Search the sentencias of Chile's Tribunales Tributarios y Aduaneros: about 15,000 first-instance final judgments since 2010 in tax (SII) and customs (SNA) cases. Free text matches the caption, the case's RUC and RIT, the court, the procedure, the subject, the court's extract and the sentencia's text. Filter by `case_ruc`, `registration_number` (the RIT), `court_id`, `agency` (`sii` or `sna`), `jurisprudence_only` and the sentence date (`from_date`/`to_date`). Each result carries Croma's copy of the signed 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/tta/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/tta/rulings-search/v1:
    post:
      tags:
        - Chile
        - Tribunales Tributarios y Aduaneros (Chile)
      summary: TTA Rulings Search
      description: >-
        Search the sentencias of Chile's Tribunales Tributarios y Aduaneros:
        about 15,000 first-instance final judgments since 2010 in tax (SII) and
        customs (SNA) cases. Free text matches the caption, the case's RUC and
        RIT, the court, the procedure, the subject, the court's extract and the
        sentencia's text. Filter by `case_ruc`, `registration_number` (the RIT),
        `court_id`, `agency` (`sii` or `sna`), `jurisprudence_only` and the
        sentence date (`from_date`/`to_date`). Each result carries Croma's copy
        of the signed 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: tta_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 caption, the case's RUC
                    and RIT, the court, the procedure, the subject, the court's
                    extract and the sentencia's text, e.g. `crédito fiscal IVA`
                    or `avalúo`. Every word must appear.
                case_ruc:
                  type: string
                  maxLength: 30
                  default: ''
                  description: >-
                    Optional RUC of the case (rol único de causa), e.g.
                    `13-9-0000546-0`. Case and spaces are ignored.
                registration_number:
                  type: string
                  maxLength: 30
                  default: ''
                  description: >-
                    Optional RIT of the case (rol interno del tribunal), e.g.
                    `GR-14-00071-2013`. Case and spaces are ignored.
                court_id:
                  type: integer
                  minimum: 0
                  maximum: 99
                  default: 0
                  description: >-
                    Optional court, by its number: 1 Arica y Parinacota, 2
                    Tarapacá, 3 Antofagasta, 4 Atacama, 6 Coquimbo, 14
                    Valparaíso, 15 to 18 the first to fourth of the Región
                    Metropolitana, 19 O'Higgins, 7 Maule, 10 Ñuble y Biobío, 8
                    Araucanía, 11 Los Ríos, 12 Los Lagos, 13 Aysén, 9
                    Magallanes. 0 searches every court.
                agency:
                  type: string
                  enum:
                    - ''
                    - sii
                    - sna
                  default: ''
                  description: >-
                    Optional office whose act is challenged: `sii` (Servicio de
                    Impuestos Internos, tax cases) or `sna` (Servicio Nacional
                    de Aduanas, customs cases).
                jurisprudence_only:
                  type: boolean
                  default: false
                  description: >-
                    When true, only the sentencias the TTA publishes in its
                    jurisprudence collection (about three in four).
                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: crédito fiscal
              agency: sii
      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/TtaRulingsSearchResponse'
        '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/tta
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:
    TtaRulingsSearchResponse:
      type: object
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/TtaRulingsSearchData'
    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.
    TtaRulingsSearchData:
      type: object
      properties:
        as_of:
          anyOf:
            - type: string
            - type: 'null'
          description: How current the data in this response is.
        query:
          type: string
        case_ruc:
          anyOf:
            - type: string
            - type: 'null'
        registration_number:
          anyOf:
            - type: string
            - type: 'null'
        court_id:
          anyOf:
            - type: number
            - type: 'null'
        agency:
          anyOf:
            - type: string
            - type: 'null'
        jurisprudence_only:
          type: boolean
        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:
              id:
                type: string
                description: >-
                  The sentencia's id at the Tribunales Tributarios y Aduaneros:
                  32 hexadecimal characters, e.g.
                  `ff8080813ecc6f1d013ed1f2633c13b7`.
              case_file_id:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The id of the case file (expediente) the sentencia belongs to,
                  32 hexadecimal characters.
              case_ruc:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The case's RUC (rol único de causa), e.g. "13-9-0000546-0".
              registration_number:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The case's RIT (rol interno del tribunal), e.g.
                  "GR-14-00071-2013": the procedure's letters, the court's
                  number, the case number and the filing year.
              caption:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The case caption (carátula): the claimant against the tax or
                  customs office, e.g. "decristal s.a. con servicio de aduanas
                  direccion regional d". The TTA lists it in lower case.
              court:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The court that ruled, e.g. "Tribunal de Valparaiso", "Tribunal
                  R. Metropolitana. Primero".
              court_id:
                anyOf:
                  - type: number
                  - type: 'null'
                description: >-
                  The court's number at the TTA, e.g. `14` for Valparaíso. The
                  `court_id` filter matches it.
              region:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The region the court sits in, e.g. "Región de Valparaíso".
              agency:
                anyOf:
                  - type: string
                    enum:
                      - SII
                      - SNA
                  - type: 'null'
                description: >-
                  The office whose act is challenged: `SII` (Servicio de
                  Impuestos Internos, tax) or `SNA` (Servicio Nacional de
                  Aduanas, customs).
              agency_name:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The office's full name, e.g. "Servicio de Impuestos Internos".
              procedure:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The procedure, e.g. "Procedimiento general de reclamación",
                  "Procedimiento de reclamo de los avalúos de bienes raíces".
              procedure_id:
                anyOf:
                  - type: number
                  - type: 'null'
                description: The procedure's number at the TTA.
              subject:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The subject matter (materia), e.g. "Liquidación", "Giro",
                  "Tasación general bien raíz no agrícola".
              subject_id:
                anyOf:
                  - type: number
                  - type: 'null'
                description: The subject matter's number at the TTA.
              sentence_date:
                anyOf:
                  - type: string
                  - type: 'null'
                description: '`yyyy-mm-dd` of the sentencia.'
              year:
                anyOf:
                  - type: number
                  - type: 'null'
                description: The year of `sentence_date`.
              filing_date:
                anyOf:
                  - type: string
                  - type: 'null'
                description: '`yyyy-mm-dd` the claim was filed (fecha de presentación).'
              summary:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The court's extract (extracto) of the sentencia, in lower
                  case, as the TTA lists it. Null when it gives none.
              jurisprudence:
                type: boolean
                description: >-
                  Whether the TTA publishes the sentencia in its jurisprudence
                  collection. The rest are first-instance final judgments it
                  publishes in its sentencias listing only.
              pages:
                anyOf:
                  - type: number
                  - type: 'null'
                description: Pages in the sentencia's PDF, when it could be read.
              bytes:
                anyOf:
                  - type: number
                  - type: 'null'
                description: The PDF's size in bytes.
              text_truncated:
                type: boolean
                description: >-
                  Whether `text` stops short of the whole sentencia: texts over
                  600,000 characters are cut there. The PDF is always whole.
              text_status:
                type: string
                enum:
                  - ok
                  - scanned
                  - missing
                description: >-
                  `ok` when `text` holds the sentencia's text, `scanned` when
                  the PDF is an image with no text, `missing` when it could not
                  be read or the copy is still pending.
              document_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  Croma's byte-identical copy of the sentencia's PDF, as the TTA
                  publishes it (digitally signed). Null only while the copy is
                  pending.
              source_document_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The sentencia's link at the source. Always null: the TTA
                  publishes no direct link to the file.
            required:
              - id
              - case_file_id
              - case_ruc
              - registration_number
              - caption
              - court
              - court_id
              - region
              - agency
              - agency_name
              - procedure
              - procedure_id
              - subject
              - subject_id
              - sentence_date
              - year
              - filing_date
              - summary
              - jurisprudence
              - pages
              - bytes
              - text_truncated
              - text_status
              - document_url
              - source_document_url
      required:
        - as_of
        - query
        - case_ruc
        - registration_number
        - court_id
        - agency
        - jurisprudence_only
        - 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.