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

# Corte Suprema de Justicia de El Salvador Rulings Search

> Search the jurisprudencia the Corte Suprema de Justicia de El Salvador publishes: every resolution since 1951 from the Corte Plena and its Salas to the Cámaras, Tribunales de Sentencia and Juzgados. Free text matches the reference number, the court, the decision, the facts, the headnotes and the full text. Filter by `court_type`, `court`, `subject` (the area of law), `proceeding_type`, `type` (the kind of resolution), `crime`, `registration_number` (the reference number), `year` and the ruling date (`from_date`/`to_date`). Each result carries the original document, kept by Croma, and links to the record and the document on the court's own site. 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 /sv/csj-sv/rulings-search/v1
openapi: 3.1.0
info:
  title: Croma Marketplace API
  version: 1.0.0
  description: >-
    Government-data APIs for Colombia, Peru, Mexico, and 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: tomas@usecroma.com
servers:
  - url: https://api.croma.run
security: []
paths:
  /sv/csj-sv/rulings-search/v1:
    post:
      tags:
        - El Salvador
        - Corte Suprema de Justicia de El Salvador
      summary: Corte Suprema de Justicia de El Salvador Rulings Search
      description: >-
        Search the jurisprudencia the Corte Suprema de Justicia de El Salvador
        publishes: every resolution since 1951 from the Corte Plena and its
        Salas to the Cámaras, Tribunales de Sentencia and Juzgados. Free text
        matches the reference number, the court, the decision, the facts, the
        headnotes and the full text. Filter by `court_type`, `court`, `subject`
        (the area of law), `proceeding_type`, `type` (the kind of resolution),
        `crime`, `registration_number` (the reference number), `year` and the
        ruling date (`from_date`/`to_date`). Each result carries the original
        document, kept by Croma, and links to the record and the document on the
        court's own site. 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: csj_sv_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 search terms matched against the reference number,
                    the court, the decision, the facts, the headnotes and the
                    full text.
                court_type:
                  type: string
                  enum:
                    - ''
                    - corte_plena
                    - sala
                    - camara
                    - tribunal_de_sentencia
                    - juzgado
                  default: ''
                  description: >-
                    Optional level of the court: `corte_plena`, `sala` (the
                    Salas of the Corte Suprema), `camara` (the second-instance
                    Cámaras), `tribunal_de_sentencia` or `juzgado`.
                court:
                  type: string
                  maxLength: 160
                  default: ''
                  description: >-
                    Optional court as `court` names it, e.g. `Sala de lo
                    Constitucional`, matched from the start of the name. Case
                    and accents are ignored.
                subject:
                  type: string
                  maxLength: 120
                  default: ''
                  description: >-
                    Optional area of law as `subject` names it, e.g. `Penal`,
                    `Familia`, `Civil y Mercantil`, `Constitucional`, `Laboral`,
                    matched from the start. Case and accents are ignored.
                proceeding_type:
                  type: string
                  maxLength: 160
                  default: ''
                  description: >-
                    Optional kind of proceeding as `proceeding_type` names it,
                    e.g. `Amparo`, `Hábeas corpus`, `Inconstitucionalidad`,
                    matched from the start. Case and accents are ignored.
                type:
                  type: string
                  maxLength: 120
                  default: ''
                  description: >-
                    Optional kind of resolution as `type` names it, e.g.
                    `Sentencias definitivas`, `Interlocutorias`,
                    `Improcedencias`, matched from the start. Case and accents
                    are ignored.
                crime:
                  type: string
                  maxLength: 200
                  default: ''
                  description: >-
                    Optional crime as it appears in `crimes`, e.g. `Homicidio
                    agravado`, matched in full. Case and accents are ignored.
                registration_number:
                  type: string
                  maxLength: 80
                  default: ''
                  description: >-
                    Optional reference number (N°) as the court prints it, e.g.
                    `49COMP2026` or `86-CAC-2026`. Returns every resolution of
                    that reference. Case, spaces and punctuation are ignored.
                year:
                  type: integer
                  minimum: 0
                  maximum: 2100
                  default: 0
                  description: Optional year of the resolution. 0 searches every year.
                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
              court_type: sala
              subject: constitucional
      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/CsjSvRulingsSearchResponse'
        '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/el-salvador/csj
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=10;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:
    CsjSvRulingsSearchResponse:
      type: object
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/CsjSvRulingsSearchData'
    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.
    CsjSvRulingsSearchData:
      type: object
      properties:
        as_of:
          anyOf:
            - type: string
            - type: 'null'
          description: How current the data in this response is.
        query:
          type: string
        court_type:
          anyOf:
            - type: string
            - type: 'null'
        court:
          anyOf:
            - type: string
            - type: 'null'
        subject:
          anyOf:
            - type: string
            - type: 'null'
        proceeding_type:
          anyOf:
            - type: string
            - type: 'null'
        type:
          anyOf:
            - type: string
            - type: 'null'
        crime:
          anyOf:
            - type: string
            - type: 'null'
        registration_number:
          anyOf:
            - type: string
            - type: 'null'
        year:
          anyOf:
            - type: number
            - type: 'null'
        from_date:
          anyOf:
            - type: string
            - type: 'null'
        to_date:
          anyOf:
            - type: string
            - type: 'null'
        total:
          type: number
        page:
          type: number
        per_page:
          type: number
        total_pages:
          type: number
        count:
          type: number
        results:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  The resolution's permanent number at the Corte Suprema's
                  documentation center, e.g. "1138697". One case can have
                  several resolutions, so the reference number is not unique.
              registration_number:
                type: string
                description: >-
                  The reference number (N°) as the court prints it, e.g.
                  "49COMP2026", "86-CAC-2026", "INC-8-2026".
              ruling_date:
                type: string
                description: '`yyyy-mm-dd` the court handed the resolution down.'
              year:
                type: number
                description: The year of the resolution.
              court_type:
                anyOf:
                  - type: string
                    enum:
                      - corte_plena
                      - sala
                      - camara
                      - tribunal_de_sentencia
                      - juzgado
                  - type: 'null'
                description: >-
                  The level of the court: `corte_plena`, `sala` (a Sala of the
                  Corte Suprema), `camara` (a second-instance Cámara),
                  `tribunal_de_sentencia` or `juzgado`.
              court:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The court as the documentation center names it, e.g. "SALA DE
                  LO CONSTITUCIONAL", "CÁMARA SEGUNDA DE LO LABORAL, SAN
                  SALVADOR".
              subject:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The area of law (materia), e.g. "PENAL", "FAMILIA", "CIVIL Y
                  MERCANTIL", "CONSTITUCIONAL", "LABORAL".
              proceeding_type:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The kind of proceeding (tipo de proceso), e.g. "AMPARO",
                  "HÁBEAS CORPUS", "INCONSTITUCIONALIDAD", "CONFLICTOS DE
                  COMPETENCIA EN DERECHO PENAL".
              type:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The kind of resolution (tipo de resolución), e.g. "Sentencias
                  Definitivas", "Interlocutorias", "Improcedencias", "Autos
                  definitivos".
              appeal_type:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The appeal decided (tipo de recurso), e.g. "RECURSO DE
                  CASACION", "RECURSO DE APELACION".
              lawsuit_type:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The kind of civil or commercial action (tipo de juicio), e.g.
                  "Proceso ejecutivo".
              decision:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  What the court decided (fallo), in the documentation center's
                  words.
              facts:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The documentation center's summary of the facts and of the
                  court's reasoning (cuadro fáctico).
              crimes:
                type: array
                items:
                  type: string
                description: >-
                  The crimes the resolution deals with, e.g. ["Homicidio
                  agravado"]. Empty outside criminal matters.
              lower_courts:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The court or courts the case came from (tribunales de
                  procedencia).
              courts_in_conflict:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The courts whose jurisdiction dispute the resolution settles
                  (tribunales en conflicto).
              challenged_act:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The act or provision challenged (acto reclamado, acto
                  impugnado, disposición impugnada).
              rights_invoked:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The rights the claimant says were violated (derechos
                  vulnerados).
              grounds:
                type: array
                items:
                  type: string
                description: The grounds of the appeal or cassation (motivos), as recorded.
              applied_law:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The procedural law applied, e.g. "D.L. Nº 733 del 22 de
                  Octubre de 2008 - VIGENTE".
              other_fields:
                type: array
                items:
                  type: object
                  properties:
                    label:
                      type: string
                      description: The field's name as the court's record prints it.
                    value:
                      type: string
                  required:
                    - label
                    - value
                description: >-
                  Any other field of the court's record for this resolution, by
                  its label. Party names are never included.
              descriptors:
                type: array
                items:
                  type: string
                description: >-
                  The topics the documentation center filed the resolution
                  under, one per headnote, e.g. ["PROCEDIMIENTO SUMARIO"]. Empty
                  when it wrote none.
              extracts:
                type: array
                items:
                  type: object
                  properties:
                    descriptor:
                      type: string
                      description: >-
                        The topic the headnote is filed under, e.g.
                        "PROCEDIMIENTO SUMARIO".
                    restrictors:
                      type: array
                      items:
                        type: string
                      description: >-
                        What the court held on that topic, one line each, as the
                        documentation center wrote them.
                  required:
                    - descriptor
                    - restrictors
                description: >-
                  The headnotes (extractos, máximas): each topic with the
                  holdings the documentation center drew from the resolution.
              text_status:
                type: string
                enum:
                  - ok
                  - scanned
                  - missing
                description: >-
                  `ok` when the full text is here; `scanned` when the court
                  published the resolution as an image with no text in it;
                  `missing` when it published no readable document.
              official_url:
                type: string
                description: >-
                  The resolution's record at the Corte Suprema's documentation
                  center.
              document_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  Croma's copy of the resolution's original document (PDF), byte
                  for byte as the court published it. It stays available
                  whatever happens to the court's own link. Null when the court
                  publishes no document for the resolution.
              source_document_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The resolution's document on the Corte Suprema's own site, as
                  the court links it. Null when the court links none.
            required:
              - id
              - registration_number
              - ruling_date
              - year
              - court_type
              - court
              - subject
              - proceeding_type
              - type
              - appeal_type
              - lawsuit_type
              - decision
              - facts
              - crimes
              - lower_courts
              - courts_in_conflict
              - challenged_act
              - rights_invoked
              - grounds
              - applied_law
              - other_fields
              - descriptors
              - extracts
              - text_status
              - official_url
              - document_url
              - source_document_url
      required:
        - as_of
        - query
        - court_type
        - court
        - subject
        - proceeding_type
        - type
        - crime
        - registration_number
        - year
        - from_date
        - to_date
        - total
        - page
        - per_page
        - total_pages
        - count
        - results
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Use Authorization: Bearer YOUR_API_KEY'

````