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

# Ley Chile Norm

> Retrieve one Chilean norm from Ley Chile by its `norm_id` (e.g. `1176603`), its `official_url`, or its kind and number (`Ley 21450`, `DFL 1`): its identity, dates, status, summary, every version of its text with the norms that modified it, the norms it modified, Croma's copies of its PDF and XML, and its current text part by part (`offset`, `limit`; follow `next_offset` until `has_more` is false).

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



## OpenAPI

````yaml /api-reference/openapi.json post /cl/leychile/norm/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/leychile/norm/v1:
    post:
      tags:
        - Chile
        - Ley Chile (Biblioteca del Congreso Nacional)
      summary: Ley Chile Norm
      description: >-
        Retrieve one Chilean norm from Ley Chile by its `norm_id` (e.g.
        `1176603`), its `official_url`, or its kind and number (`Ley 21450`,
        `DFL 1`): its identity, dates, status, summary, every version of its
        text with the norms that modified it, the norms it modified, Croma's
        copies of its PDF and XML, and its current text part by part (`offset`,
        `limit`; follow `next_offset` until `has_more` is false).


        **Dataset endpoint**: answers from the whole source in milliseconds and
        carries `as_of`.
      operationId: leychile_norm
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - norm_id
              properties:
                norm_id:
                  type: string
                  minLength: 1
                  maxLength: 300
                  description: >-
                    The norm's `norm_id` from a search result, e.g. `1176603`.
                    Its `official_url`, or its kind and number (`Ley 21450`,
                    `DFL 1`, `Decreto 100`), work too; a kind and number shared
                    by several norms answers the most recent.
                offset:
                  type: integer
                  minimum: 0
                  maximum: 100000
                  default: 0
                  description: >-
                    Position of the first part of the text to return (0 is the
                    heading). Pass the previous response's `next_offset` to read
                    on.
                limit:
                  type: integer
                  minimum: 1
                  maximum: 500
                  default: 100
                  description: >-
                    How many parts of the text (headings, articles, transitory
                    provisions) to return (1-500).
              additionalProperties: false
            example:
              norm_id: Ley 21450
      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/LeychileNormResponse'
        '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/leychile
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:
    LeychileNormResponse:
      type: object
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/LeychileNormData'
    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.
    LeychileNormData:
      type: object
      properties:
        as_of:
          anyOf:
            - type: string
            - type: 'null'
          description: How current the data in this response is.
        found:
          type: boolean
        norm_id:
          type: string
        norm:
          anyOf:
            - type: object
              properties:
                norm_id:
                  type: string
                  description: >-
                    BCN's permanent id for the norm (idNorma), e.g. "1176603"
                    for Ley 21.450.
                name:
                  type: string
                  description: >-
                    The norm as BCN names it, e.g. "Ley 21450", "DFL 1",
                    "Decreto 100"; several joined with "; " when the norm
                    carries more than one identity.
                type:
                  type: string
                  description: >-
                    The kind of norm, e.g. "Ley", "Código", "Decreto con Fuerza
                    de Ley", "Decreto Ley", "Auto Acordado", "Tratado",
                    "Decreto".
                number:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Its number, e.g. "21450". Null when BCN lists none ("S/N").
                title:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: The norm's title.
                common_names:
                  type: array
                  items:
                    type: string
                  description: Names it is known by, e.g. "Código del Trabajo".
                issuing_bodies:
                  type: array
                  items:
                    type: string
                  description: >-
                    The bodies that issued it, e.g. "MINISTERIO DEL TRABAJO Y
                    PREVISIÓN SOCIAL".
                publication_date:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    `yyyy-mm-dd` it was published in the Diario Oficial. Null
                    for the few historical norms BCN lists without one.
                promulgation_date:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: '`yyyy-mm-dd` it was promulgated.'
                year:
                  anyOf:
                    - type: number
                    - type: 'null'
                  description: >-
                    Year of publication (of promulgation when there is no
                    publication date).
                current_version_date:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    `yyyy-mm-dd` the version of the text in force today took
                    effect.
                version_kind:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    BCN's label for the current text: "Única" (never modified),
                    "Última Versión" (the latest of several), and so on.
                repealed:
                  type: boolean
                  description: Whether the norm is repealed (derogada).
                repeal_date:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: '`yyyy-mm-dd` it was repealed, when it is.'
                treaty:
                  type: boolean
                  description: Whether BCN marks it as a treaty.
                subjects:
                  type: array
                  items:
                    type: string
                  description: BCN's subject headings (materias).
                summary:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: BCN's summary of the norm, when it has one.
                categories:
                  type: array
                  items:
                    type: string
                  description: BCN's categories for the norm.
                gazette:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Where it was published, e.g. "Diario Oficial".
                gazette_number:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: The gazette issue number.
                cve:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    The Diario Oficial's verification code (CVE) for the
                    publication, when BCN records it.
                versions:
                  type: array
                  items:
                    type: object
                    properties:
                      kind:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: >-
                          BCN's label for the version: "Texto Original",
                          "Intermedio", "Última Versión", "Única", or a deferred
                          one.
                      from_date:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: '`yyyy-mm-dd` the version came into force.'
                      to_date:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: >-
                          `yyyy-mm-dd` it stopped being in force; null for the
                          current version.
                      url:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: The version's page at Ley Chile.
                      modified_by:
                        type: array
                        items:
                          type: object
                          properties:
                            norm_id:
                              type: string
                              description: >-
                                The modifying norm's `norm_id`. Pass it to the
                                norm endpoint.
                            type:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: >-
                                Its kind as BCN abbreviates it, e.g. "LEY",
                                "DTO", "DFL".
                            number:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: Its number, e.g. "21798".
                            title:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: Its title.
                            change:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: >-
                                What it did, as BCN records it, e.g.
                                "MODIFICACION", "DEROGACION".
                            publication_date:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: '`yyyy-mm-dd` it was published.'
                            effective_date:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: '`yyyy-mm-dd` its change took effect.'
                          required:
                            - norm_id
                            - type
                            - number
                            - title
                            - change
                            - publication_date
                            - effective_date
                        description: >-
                          The norms whose changes ended this version and
                          produced the next one.
                    required:
                      - kind
                      - from_date
                      - to_date
                      - url
                      - modified_by
                  description: >-
                    Every version of the text, newest first, with the norms that
                    modified each.
                version_count:
                  type: number
                  description: How many versions the text has had.
                modified_by_ids:
                  type: array
                  items:
                    type: string
                  description: >-
                    The `norm_id` of every norm that modified this one, which is
                    what the `modified_by` filter matches.
                article_count:
                  type: number
                  description: >-
                    How many parts (headings, articles, transitory provisions,
                    annexes) the current text has.
                official_url:
                  type: string
                  description: The norm's page at Ley Chile.
                document_url:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    Croma's copy of BCN's PDF of the current version. Null when
                    BCN did not hand it over; `source_document_url` still links
                    it.
                xml_url:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    Croma's copy of BCN's XML of the current version, the
                    structured original the text is read from.
                source_document_url:
                  type: string
                  description: >-
                    The norm's page at Ley Chile, where BCN offers the text and
                    its PDF.
                document_versions:
                  type: array
                  items:
                    type: object
                    properties:
                      version_date:
                        type: string
                        description: '`yyyy-mm-dd` of the version these documents render.'
                      document_url:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: Croma's copy of BCN's PDF of that version.
                      xml_url:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: Croma's copy of BCN's XML of that version.
                      bytes:
                        anyOf:
                          - type: number
                          - type: 'null'
                        description: Size of the PDF in bytes.
                    required:
                      - version_date
                      - document_url
                      - xml_url
                      - bytes
                  description: Every version of the documents Croma has kept, oldest first.
                modifies:
                  type: array
                  items:
                    type: object
                    properties:
                      norm_id:
                        type: string
                      name:
                        type: string
                      title:
                        anyOf:
                          - type: string
                          - type: 'null'
                      publication_date:
                        anyOf:
                          - type: string
                          - type: 'null'
                    required:
                      - norm_id
                      - name
                      - title
                      - publication_date
                  description: >-
                    The norms whose version history lists this norm as modifying
                    them, newest first, up to 100.
                articles:
                  type: array
                  items:
                    type: object
                    properties:
                      norm_id:
                        type: string
                        description: The `norm_id` of the norm the part belongs to.
                      norm_name:
                        type: string
                        description: The norm's name, e.g. "Ley 21450".
                      norm_type:
                        type: string
                        description: The kind of norm.
                      part_id:
                        type: string
                        description: >-
                          The part's id at BCN (idParte), stable across
                          versions; "encabezado" and "promulgacion" for the
                          heading and the closing formula.
                      position:
                        type: number
                        description: The part's place in the text, from 0 (the heading).
                      level:
                        type: number
                        description: >-
                          How deep the part sits: 0 for a part at the top, 1 for
                          an article inside a chapter, and so on.
                      parent_part_id:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: >-
                          The `part_id` of the part that contains it (a chapter,
                          a title), when it is nested.
                      kind:
                        type: string
                        description: >-
                          What the part is, as BCN types it: "Artículo",
                          "Capítulo", "Título", "Disposición Transitoria",
                          "Anexo", "Encabezado", "Promulgación", "Otros".
                      name:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: The part's name, e.g. "1" for Artículo 1.
                      heading:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: >-
                          The part's heading, e.g. "Capítulo I BASES DE LA
                          INSTITUCIONALIDAD".
                      text:
                        type: string
                        description: The part's text in the current version.
                      transitory:
                        type: boolean
                        description: Whether it is a transitory provision.
                      repealed:
                        type: boolean
                        description: Whether the part is repealed.
                      version_date:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: >-
                          `yyyy-mm-dd` of the version this part's text comes
                          from.
                    required:
                      - norm_id
                      - norm_name
                      - norm_type
                      - part_id
                      - position
                      - level
                      - parent_part_id
                      - kind
                      - name
                      - heading
                      - text
                      - transitory
                      - repealed
                      - version_date
                  description: The requested parts of the current text, in order.
                offset:
                  type: number
                  description: Position of the first part returned.
                has_more:
                  type: boolean
                  description: Whether the text goes on past the parts returned.
                next_offset:
                  anyOf:
                    - type: number
                    - type: 'null'
                  description: >-
                    Pass this back as `offset` to read on. Null at the end of
                    the text.
              required:
                - norm_id
                - name
                - type
                - number
                - title
                - common_names
                - issuing_bodies
                - publication_date
                - promulgation_date
                - year
                - current_version_date
                - version_kind
                - repealed
                - repeal_date
                - treaty
                - subjects
                - summary
                - categories
                - gazette
                - gazette_number
                - cve
                - versions
                - version_count
                - modified_by_ids
                - article_count
                - official_url
                - document_url
                - xml_url
                - source_document_url
                - document_versions
                - modifies
                - articles
                - offset
                - has_more
                - next_offset
            - type: 'null'
      required:
        - as_of
        - found
        - norm_id
        - norm
  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.