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

> Devuelve el Formulario 22 (declaración anual de impuesto a la renta) del cliente, con los valores declarados por año y organizados por código oficial del SII. Cada elemento de `values` es un campo del formulario y trae un valor por cada año en que fue declarado. Si el cliente existe pero Pruff no tiene F22 para él, responde `200` con `values` y `years` vacíos. Es un endpoint de solo lectura: no gatilla nuevas extracciones. El ejemplo se recortó a unos pocos campos.



## OpenAPI

````yaml openapi/clients.yaml GET /datahub/{identifier}/f22
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}/f22:
    get:
      tags:
        - Datahub
      summary: Obtener F22
      description: >-
        Devuelve el Formulario 22 (declaración anual de impuesto a la renta) del
        cliente, con los valores declarados por año y organizados por código
        oficial del SII. Cada elemento de `values` es un campo del formulario y
        trae un valor por cada año en que fue declarado. Si el cliente existe
        pero Pruff no tiene F22 para él, responde `200` con `values` y `years`
        vacíos. Es un endpoint de solo lectura: no gatilla nuevas extracciones.
        El ejemplo se recortó a unos pocos campos.
      operationId: getDatahubF22
      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: F22 del cliente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatahubF22Response'
              example:
                values:
                  - '2023': CLIENTE EJEMPLO SPA
                    '2024': CLIENTE EJEMPLO SPA
                    code: '01'
                    name: Razón Social o Apellido paterno
                    nameCode: '[01] Razón Social o Apellido paterno'
                  - '2023': 76111111-6
                    '2024': 76111111-6
                    code: '03'
                    name: Rut
                    nameCode: '[03] Rut'
                  - '2023': '98543210'
                    '2024': '112345678'
                    code: '36'
                    name: Pagos provisionales
                    nameCode: '[36] Pagos provisionales'
                  - '2024': '84567231'
                    code: '85'
                    name: SALDO A FAVOR
                    nameCode: '[85] SALDO A FAVOR'
                years:
                  - '2023'
                  - '2024'
        '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:
    DatahubF22Response:
      type: object
      required:
        - values
        - years
      properties:
        values:
          type: array
          description: >-
            Campos del F22, ordenados por código numérico ascendente. Solo se
            incluyen los códigos que Pruff reconoce.
          items:
            $ref: '#/components/schemas/DatahubF22Value'
        years:
          type: array
          description: Años para los que hay al menos un valor, en orden ascendente.
          items:
            type: string
            description: Año de la declaración.
            example: '2024'
    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.
    DatahubF22Value:
      type: object
      description: >-
        Un campo del F22 identificado por su código oficial del SII, con el
        valor declarado en cada año. Las claves de año (`2023`, `2024`, etc.)
        son dinámicas y solo vienen en los años en que el campo tiene valor.
      required:
        - code
        - name
        - nameCode
      properties:
        code:
          type: string
          description: Código oficial del campo en el F22, por ejemplo `36` o `305`.
          example: '36'
        name:
          type: string
          description: Nombre del campo.
          example: Pagos provisionales
        nameCode:
          type: string
          description: >-
            Nombre del campo precedido por su código, con el formato `[código]
            nombre`. Útil para mostrar en una interfaz.
          example: '[36] Pagos provisionales'
      additionalProperties:
        type: string
        description: >-
          Valor declarado para el año indicado en la clave. Siempre es un texto:
          los montos se entregan como número en CLP escrito como texto y los
          datos de identificación (razón social, dirección, correo) como texto
          libre.
    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.
  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.