> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pruff.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Obtener F29

> Devuelve el Formulario 29 (declaración mensual de IVA) del cliente, con los 24 meses que terminan en el último período declarado que Pruff tiene. La respuesta tiene tres bloques con la misma estructura: `main` (valores mensuales), `accumulative` (acumulado año a la fecha) y `variation` (variación del acumulado entre años consecutivos). Cada bloque agrupa los datos por código del F29 (`142`, `538` y `020`) y por dos totales calculados, `total` y `totalIVA`. Todos los montos están en pesos chilenos (CLP). Dentro de la ventana de 24 meses, los meses sin declaración se entregan con valor `0`. `total` y `totalIVA` se reexpresan con la UF de cada mes: si falta el valor de la UF de un mes, ese mes llega `null` en `main`, suma 0 en `accumulative` (que sigue siendo un número, sin `NaN`) y `variation` nunca trae `NaN`. Las filas de cada serie van ordenadas por año, del más antiguo al más reciente. Si el cliente existe pero Pruff no tiene F29 para él, responde `200` con solo `total` y `totalIVA` vacíos en cada bloque. Si el RUT está vinculado a tu empresa, la respuesta usa la información tributaria obtenida por Pruff; si no lo está, usa las carpetas tributarias cargadas manualmente. Es un endpoint de solo lectura: no gatilla nuevas extracciones. Los años y meses del ejemplo se recortaron para abreviar.



## OpenAPI

````yaml openapi/clients.yaml GET /datahub/{identifier}/f29
openapi: 3.1.0
info:
  title: API de clientes de Pruff
  version: '1'
  description: >-
    Endpoints que tus sistemas llaman para leer y operar los datos de tu empresa
    en Pruff. Todas las solicitudes van por HTTPS y se autentican con el header
    `x-api-key`. Las convenciones de formato, paginación y errores se describen
    en https://docs.pruff.com/api/introduccion.
servers:
  - url: https://api.pruff.com/api/clients
security:
  - ApiKeyAuth: []
tags:
  - name: Facturas
    description: Consulta de facturas electrónicas, facturas transables y cesiones.
  - name: Documentos
    description: Consulta y creación de documentos asociados a tus clientes.
  - name: Archivos
    description: Carga de archivos a operaciones y a los requerimientos de tus documentos.
  - name: Financiamiento
    description: >-
      Simula créditos, crea solicitudes de factoring y consulta las prórrogas de
      tu empresa.
  - name: Comité
    description: >-
      Consulta las aprobaciones de una solicitud en los comités de riesgo y de
      operaciones, y registra nuevas firmas.
  - name: Chat
    description: Exporta y envía mensajes del chat de una solicitud.
  - name: Reportes
    description: >-
      Reportes de operaciones, cartera, recaudaciones, cuentas pendientes y
      flujos de tu empresa.
  - name: Datahub
    description: >-
      Consulta de la información tributaria, financiera y de riesgo que Pruff
      tiene de tus clientes y deudores.
  - name: Mercado Público
    description: >-
      Licitaciones y órdenes de compra de Mercado Público (ChileCompra) cargadas
      en Pruff.
  - name: CRM
    description: >-
      Datos comerciales de tu CRM en Pruff: empresas con su ficha, pipeline,
      prospectos, gestiones y simulaciones.
  - name: SGR
    description: Operaciones SGR (garantías) de tu empresa.
  - name: Sincronizador
    description: >-
      Pide sincronizar a un cliente con el SII o la TGR para obtener su
      información más actualizada, y consulta el estado de esas
      sincronizaciones.
  - name: Usuarios
    description: >-
      Administra los usuarios de tu empresa en Pruff (crear, editar, eliminar,
      consultar su perfil y asignar subordinados) y consulta las cuentas
      (empresas conectadas) a las que cada usuario tiene acceso.
  - name: Contactos
    description: Crea contactos asociados a las empresas de tu cartera.
paths:
  /datahub/{identifier}/f29:
    get:
      tags:
        - Datahub
      summary: Obtener F29
      description: >-
        Devuelve el Formulario 29 (declaración mensual de IVA) del cliente, con
        los 24 meses que terminan en el último período declarado que Pruff
        tiene. La respuesta tiene tres bloques con la misma estructura: `main`
        (valores mensuales), `accumulative` (acumulado año a la fecha) y
        `variation` (variación del acumulado entre años consecutivos). Cada
        bloque agrupa los datos por código del F29 (`142`, `538` y `020`) y por
        dos totales calculados, `total` y `totalIVA`. Todos los montos están en
        pesos chilenos (CLP). Dentro de la ventana de 24 meses, los meses sin
        declaración se entregan con valor `0`. `total` y `totalIVA` se
        reexpresan con la UF de cada mes: si falta el valor de la UF de un mes,
        ese mes llega `null` en `main`, suma 0 en `accumulative` (que sigue
        siendo un número, sin `NaN`) y `variation` nunca trae `NaN`. Las filas
        de cada serie van ordenadas por año, del más antiguo al más reciente. Si
        el cliente existe pero Pruff no tiene F29 para él, responde `200` con
        solo `total` y `totalIVA` vacíos en cada bloque. Si el RUT está
        vinculado a tu empresa, la respuesta usa la información tributaria
        obtenida por Pruff; si no lo está, usa las carpetas tributarias cargadas
        manualmente. Es un endpoint de solo lectura: no gatilla nuevas
        extracciones. Los años y meses del ejemplo se recortaron para abreviar.
      operationId: getDatahubF29
      parameters:
        - name: identifier
          in: path
          required: true
          description: >-
            RUT del cliente, sin puntos, con guion y con la K del dígito
            verificador en mayúscula. Pruff no valida el formato: un RUT que no
            existe devuelve 404.
          schema:
            type: string
            example: 76111111-6
          example: 76111111-6
      responses:
        '200':
          description: F29 del cliente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatahubF29Response'
              example:
                main:
                  '142':
                    - year: '2025'
                      JAN: 1200000
                      FEB: 950000
                      MAR: 1100000
                    - year: '2026'
                      JAN: 1300000
                      FEB: 1000000
                      MAR: 1250000
                  '538':
                    - year: '2025'
                      JAN: 4200000
                      FEB: 3900000
                      MAR: 4500000
                    - year: '2026'
                      JAN: 4600000
                      FEB: 4100000
                      MAR: 4800000
                  total:
                    - year: '2025'
                      JAN: 5508000
                      FEB: 4947000
                      MAR: 5712000
                    - year: '2026'
                      JAN: 5900000
                      FEB: 5100000
                      MAR: 6050000
                  totalIVA:
                    - year: '2025'
                      JAN: 6554520
                      FEB: 5886930
                      MAR: 6797280
                    - year: '2026'
                      JAN: 7021000
                      FEB: 6069000
                      MAR: 7199500
                accumulative:
                  '142':
                    - year: '2025'
                      JAN: 1200000
                      FEB: 2150000
                      MAR: 3250000
                    - year: '2026'
                      JAN: 1300000
                      FEB: 2300000
                      MAR: 3550000
                  '538':
                    - year: '2025'
                      JAN: 4200000
                      FEB: 8100000
                      MAR: 12600000
                    - year: '2026'
                      JAN: 4600000
                      FEB: 8700000
                      MAR: 13500000
                  total:
                    - year: '2025'
                      JAN: 5508000
                      FEB: 10455000
                      MAR: 16167000
                    - year: '2026'
                      JAN: 5900000
                      FEB: 11000000
                      MAR: 17050000
                  totalIVA:
                    - year: '2025'
                      JAN: 6554520
                      FEB: 12441450
                      MAR: 19238730
                    - year: '2026'
                      JAN: 7021000
                      FEB: 13090000
                      MAR: 20289500
                variation:
                  '142':
                    - year: 2025/2026
                      JAN: 8.33%
                      FEB: 6.98%
                      MAR: 9.23%
                  '538':
                    - year: 2025/2026
                      JAN: 9.52%
                      FEB: 7.41%
                      MAR: 7.14%
                  total:
                    - year: 2025/2026
                      JAN: 7.12%
                      FEB: 5.21%
                      MAR: 5.46%
                  totalIVA:
                    - year: 2025/2026
                      JAN: 7.12%
                      FEB: 5.21%
                      MAR: 5.46%
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: El RUT no existe en Pruff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatahubNotFoundError'
              example:
                message: Business not found
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '504':
          $ref: '#/components/responses/Timeout'
components:
  schemas:
    DatahubF29Response:
      type: object
      required:
        - main
        - accumulative
        - variation
      properties:
        main:
          allOf:
            - $ref: '#/components/schemas/DatahubF29MonthlySeries'
          description: >-
            Valores mensuales declarados en el F29, en CLP, para los 24 meses
            que terminan en el último período declarado.
        accumulative:
          allOf:
            - $ref: '#/components/schemas/DatahubF29MonthlySeries'
          description: >-
            Monto acumulado año a la fecha: cada mes suma los meses anteriores
            del mismo año, desde enero. El acumulado se reinicia cada año.
        variation:
          allOf:
            - $ref: '#/components/schemas/DatahubF29VariationSeries'
          description: >-
            Variación porcentual del monto acumulado entre años consecutivos,
            mes a mes.
    DatahubNotFoundError:
      type: object
      description: El RUT indicado no existe en Pruff.
      required:
        - message
      properties:
        message:
          type: string
          description: Código del error.
        displayMessage:
          type: string
          description: >-
            Mensaje pensado para mostrarlo a una persona, cuando existe.
            Normalmente en español; algunos mensajes de validación vienen en
            inglés.
    DatahubF29MonthlySeries:
      type: object
      description: >-
        Series agrupadas por código F29. Cada serie es un arreglo con una fila
        por año. Identifica el año de cada fila con su campo `year`, no por su
        posición. Las filas van ordenadas por año, del más antiguo al más
        reciente. `total` y `totalIVA` siempre vienen, vacíos si Pruff no tiene
        datos.
      required:
        - total
        - totalIVA
      properties:
        '142':
          type: array
          description: >-
            Serie del código 142 del F29 (ventas y servicios exentos), en CLP.
            La serie solo viene si el cliente tiene datos de ese código.
          items:
            $ref: '#/components/schemas/DatahubF29MonthlyRow'
        '538':
          type: array
          description: >-
            Serie del código 538 del F29 (total de débitos). Pruff la entrega
            expresada como base neta de ventas, es decir, el débito dividido por
            0,19. La serie solo viene si el cliente tiene datos de ese código.
          items:
            $ref: '#/components/schemas/DatahubF29MonthlyRow'
        '020':
          type: array
          description: >-
            Serie del código 020 del F29 (exportaciones), en CLP. La serie solo
            viene si el cliente tiene datos de ese código.
          items:
            $ref: '#/components/schemas/DatahubF29MonthlyRow'
        total:
          type: array
          description: >-
            Suma de las series de códigos de cada mes, reexpresada a valores de
            hoy según la variación de la UF (cada monto se divide por la UF de
            su mes y se multiplica por la UF vigente). Puede traer decimales. En
            `main` un mes es `null` si falta el valor de la UF de ese mes; en
            `accumulative` ese mes suma 0 y el acumulado sigue siendo un número.
          items:
            $ref: '#/components/schemas/DatahubF29MonthlyRow'
        totalIVA:
          type: array
          description: Igual que `total`, aumentado en 19 % por concepto de IVA.
          items:
            $ref: '#/components/schemas/DatahubF29MonthlyRow'
    DatahubF29VariationSeries:
      type: object
      description: >-
        Series agrupadas por código F29. Cada serie tiene una fila por cada par
        de años consecutivos, ordenadas del par más antiguo al más reciente.
      required:
        - total
        - totalIVA
      properties:
        '142':
          type: array
          description: >-
            Serie del código 142 del F29 (ventas y servicios exentos), en CLP.
            La serie solo viene si el cliente tiene datos de ese código.
          items:
            $ref: '#/components/schemas/DatahubF29VariationRow'
        '538':
          type: array
          description: >-
            Serie del código 538 del F29 (total de débitos). Pruff la entrega
            expresada como base neta de ventas, es decir, el débito dividido por
            0,19. La serie solo viene si el cliente tiene datos de ese código.
          items:
            $ref: '#/components/schemas/DatahubF29VariationRow'
        '020':
          type: array
          description: >-
            Serie del código 020 del F29 (exportaciones), en CLP. La serie solo
            viene si el cliente tiene datos de ese código.
          items:
            $ref: '#/components/schemas/DatahubF29VariationRow'
        total:
          type: array
          description: >-
            Suma de las series de códigos de cada mes, reexpresada a valores de
            hoy según la variación de la UF (cada monto se divide por la UF de
            su mes y se multiplica por la UF vigente). Puede traer decimales.
            Los meses sin valor de UF suman 0 al acumulado, así que la variación
            sigue siendo un valor válido.
          items:
            $ref: '#/components/schemas/DatahubF29VariationRow'
        totalIVA:
          type: array
          description: Igual que `total`, aumentado en 19 % por concepto de IVA.
          items:
            $ref: '#/components/schemas/DatahubF29VariationRow'
    Error:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: >-
            Identifica el error. En algunos casos es un texto en inglés con
            valores variables. Para tu lógica, usa el código HTTP y, cuando
            exista, `data.code`.
        displayMessage:
          type: string
          description: >-
            Mensaje pensado para mostrarlo a una persona. Normalmente en
            español; algunos mensajes de validación vienen en inglés.
        data:
          description: Detalle adicional del error, cuando existe.
    DatahubF29MonthlyRow:
      type: object
      required:
        - year
      properties:
        year:
          type: string
          description: Año calendario, por ejemplo `2026`.
        JAN:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        FEB:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        MAR:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        APR:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        MAY:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        JUN:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        JUL:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        AUG:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        SEP:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        OCT:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        NOV:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
        DEC:
          type:
            - number
            - 'null'
          description: >-
            Monto del mes en pesos chilenos (CLP). Un `0` indica que el mes está
            dentro de la ventana de 24 meses pero no registra monto declarado.
            Los meses fuera de la ventana no vienen en la fila. En `main`,
            `total` y `totalIVA` es `null` si falta el valor de la UF de ese
            mes. En `accumulative` nunca es `null` porque un mes sin valor suma
            0 al acumulado.
    DatahubF29VariationRow:
      type: object
      required:
        - year
      properties:
        year:
          type: string
          description: >-
            Par de años comparados, con el formato `AAAA/AAAA`, por ejemplo
            `2025/2026`.
        JAN:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        FEB:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        MAR:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        APR:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        MAY:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        JUN:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        JUL:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        AUG:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        SEP:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        OCT:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        NOV:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
        DEC:
          type:
            - string
            - number
            - 'null'
          description: >-
            Variación del monto acumulado de ese mes entre los dos años. Un
            texto con porcentaje y dos decimales (por ejemplo `8.33%` o
            `-30.01%`) cuando el año base tiene monto distinto de 0. El número
            `100` cuando el año base es 0 y el siguiente no. `null` cuando ambos
            son 0. El mes no viene en la fila si el segundo año no lo tiene.
            Nunca es `NaN` ni `"NaN%"` porque un mes sin valor de UF suma 0 al
            acumulado del que sale la variación.
  responses:
    Unauthorized:
      description: >-
        Falta el header `x-api-key`, su valor no es válido o la cuenta de API de
        tu empresa no está habilitada.
      content:
        application/json:
          schema:
            type: object
            required:
              - message
            properties:
              message:
                type: string
          example:
            message: 'Unauthorized: Invalid API Key'
    TooManyRequests:
      description: >-
        Tu empresa superó el límite de solicitudes. Todas las API keys de tu
        empresa comparten el mismo límite. Espera los segundos que indica el
        header `Retry-After` (o `data.retryAfterSeconds`) antes de reintentar.
      headers:
        Retry-After:
          description: Segundos que debes esperar antes de reintentar.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: >-
              Rate limit exceeded: 501 requests in the current 60s window, limit
              is 500. Retry in 12s.
            displayMessage: >-
              Superaste el límite de 500 solicitudes cada 60 segundos. Vuelve a
              intentarlo en 12 segundos.
            data:
              code: RATE_LIMIT_EXCEEDED
              scope: All API keys of your company share this budget.
              limit: 500
              used: 501
              windowSeconds: 60
              retryAfterSeconds: 12
              resetAt: '2026-11-04T15:00:12.000Z'
              hint: >-
                Wait until resetAt (or honor the Retry-After header) before
                retrying. Avoid repeating identical requests: reuse responses
                you already fetched, use filters and larger pageSize values
                instead of one request per item, and cap your client
                concurrency.
    InternalError:
      description: >-
        Error inesperado en Pruff. El texto de `message` puede variar (por
        ejemplo en mayúsculas); no dependas de él.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Internal server error
    Timeout:
      description: >-
        La solicitud superó el tiempo máximo de 55 segundos. La operación puede
        haberse completado igual: antes de reintentar una solicitud que crea o
        modifica datos, verifica su estado.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: request_timeout
            displayMessage: La solicitud excedió el tiempo máximo permitido
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key que Pruff entrega a tu empresa.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.