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

# Asamblea Legislativa de El Salvador Decrees Search

> Search every decree of El Salvador's Asamblea Legislativa. Its register holds the laws, codes and regulations and every other legislative decree, from loan authorizations and tax exemptions to elections of officials and honorary distinctions. Free text matches the title, the Asamblea's summary and the full text. Filter by `type` (`Decreto`, `Ley`, `Código`, `Reglamento`), `subject`, `subtopic`, `area_of_law`, `number`, `year` and the date the decree was issued (`from_date`/`to_date`). Each result carries Croma's copy of the decree's document and links to the record and the document on the Asamblea'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/asamblea-sv/decrees-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/asamblea-sv/decrees-search/v1:
    post:
      tags:
        - El Salvador
        - Asamblea Legislativa de El Salvador
      summary: Asamblea Legislativa de El Salvador Decrees Search
      description: >-
        Search every decree of El Salvador's Asamblea Legislativa. Its register
        holds the laws, codes and regulations and every other legislative
        decree, from loan authorizations and tax exemptions to elections of
        officials and honorary distinctions. Free text matches the title, the
        Asamblea's summary and the full text. Filter by `type` (`Decreto`,
        `Ley`, `Código`, `Reglamento`), `subject`, `subtopic`, `area_of_law`,
        `number`, `year` and the date the decree was issued
        (`from_date`/`to_date`). Each result carries Croma's copy of the
        decree's document and links to the record and the document on the
        Asamblea'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: asamblea_sv_decrees_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 decree's title,
                    the Asamblea's summary and the full text.
                type:
                  type: string
                  maxLength: 40
                  default: ''
                  description: >-
                    Optional kind of act as `type` names it: `Decreto`, `Ley`,
                    `Código` or `Reglamento`. Case and accents are ignored.
                subject:
                  type: string
                  maxLength: 120
                  default: ''
                  description: >-
                    Optional subject as `subject` names it, e.g. `Hacienda y
                    Presupuesto`, `Asamblea Legislativa`, `Seguridad Pública`,
                    matched from the start. Case and accents are ignored.
                subtopic:
                  type: string
                  maxLength: 160
                  default: ''
                  description: >-
                    Optional subtopic as `subtopic` names it, e.g.
                    `Autorizaciones para Préstamos`, `Exenciones (Franquicias)`,
                    `Distinciones Honoríficas`, matched from the start. Case and
                    accents are ignored.
                area_of_law:
                  type: string
                  maxLength: 120
                  default: ''
                  description: >-
                    Optional area of law as `area_of_law` names it, e.g.
                    `Derecho Administrativo`, `Derecho Penal`, `Derecho
                    Tributario o Fiscal`, matched from the start. Case and
                    accents are ignored.
                number:
                  type: string
                  maxLength: 20
                  default: ''
                  description: >-
                    Optional decree number, e.g. `632`. Numbers restart with
                    each legislature, so combine it with `year` or dates.
                year:
                  type: integer
                  minimum: 0
                  maximum: 2100
                  default: 0
                  description: >-
                    Optional year the Asamblea issued the decree. 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: préstamo
              subject: Hacienda y Presupuesto
              year: 2026
      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/AsambleaSvDecreesSearchResponse'
        '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/asamblea
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:
    AsambleaSvDecreesSearchResponse:
      type: object
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/AsambleaSvDecreesSearchData'
    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.
    AsambleaSvDecreesSearchData:
      type: object
      properties:
        as_of:
          anyOf:
            - type: string
            - type: 'null'
          description: How current the data in this response is.
        query:
          type: string
        type:
          anyOf:
            - type: string
            - type: 'null'
        subject:
          anyOf:
            - type: string
            - type: 'null'
        subtopic:
          anyOf:
            - type: string
            - type: 'null'
        area_of_law:
          anyOf:
            - type: string
            - type: 'null'
        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 decree's permanent number in the Asamblea Legislativa's
                  register, e.g. "7000".
              number:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The decree number, e.g. "632". Numbers restart with each
                  legislature.
              type:
                anyOf:
                  - type: string
                  - type: 'null'
                description: 'The kind of act: "Decreto", "Ley", "Código" or "Reglamento".'
              title:
                type: string
                description: The decree's title as the Asamblea registers it.
              summary:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The Asamblea's summary of what the decree provides.
              subject:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The subject (materia) the Asamblea files it under, e.g.
                  "Hacienda y Presupuesto".
              subtopic:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The subtopic (sub-materia), e.g. "Autorizaciones para
                  Préstamos".
              area_of_law:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The area of law (rama del derecho), e.g. "Derecho
                  Administrativo".
              issue_date:
                anyOf:
                  - type: string
                  - type: 'null'
                description: '`yyyy-mm-dd` the Asamblea issued the decree.'
              year:
                anyOf:
                  - type: number
                  - type: 'null'
                description: The year the Asamblea issued the decree.
              publication_date:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  `yyyy-mm-dd` of publication in the Diario Oficial. While
                  `pending_publication` is true, the date the Diario Oficial has
                  assigned.
              gazette_number:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The number of the Diario Oficial that publishes it.
              gazette_volume:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The volume (tomo) of the Diario Oficial that publishes it.
              pending_publication:
                type: boolean
                description: >-
                  True while the decree awaits its publication in the Diario
                  Oficial; `publication_date` is then the date assigned to it.
              text_status:
                type: string
                enum:
                  - ok
                  - scanned
                  - missing
                description: >-
                  `ok` when the full text is here; `scanned` when the document
                  is an image with no text in it; `missing` when the Asamblea
                  publishes no readable document yet.
              official_url:
                type: string
                description: The decree's record on the Asamblea Legislativa's site.
              document_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  Croma's copy of the decree's document (PDF), byte for byte as
                  the Asamblea published it. Null when it publishes none.
              source_document_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The decree's document on the Asamblea Legislativa's own site.
              document_modified_at:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  When the Asamblea last changed the document, as its site
                  reports it.
            required:
              - id
              - number
              - type
              - title
              - summary
              - subject
              - subtopic
              - area_of_law
              - issue_date
              - year
              - publication_date
              - gazette_number
              - gazette_volume
              - pending_publication
              - text_status
              - official_url
              - document_url
              - source_document_url
              - document_modified_at
      required:
        - as_of
        - query
        - type
        - subject
        - subtopic
        - area_of_law
        - 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'

````