> ## 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 resultado de consultas de Datahub

> Lee el resultado de una solicitud creada con `POST /datahub/request`. Solo puedes leer solicitudes de tu empresa.

Mientras falte alguna consulta, responde `200` con `{"message": "Request not ready"}`. Vuelve a llamar hasta que la respuesta cambie. Cuando todas las consultas terminaron (o agotaron su tiempo), responde `200` con el resultado agrupado en `client` y `payers`, y dentro de cada grupo, por RUT. Con `ndf`, un grupo solo aparece si pediste esa consulta para él.

Dentro de cada RUT hay una clave por consulta pedida. Para `ndf`, el valor es el resultado de la NDF, o el texto `error` (Pruff no pudo obtener o guardar el resultado de la NDF) o `timeout` (la consulta no terminó en 2 minutos). Ninguno de los dos textos significa que el RUT no esté en la NDF: vuelve a pedir la consulta.

Puedes leer el resultado durante 14 días desde que creaste la solicitud. Pruff elimina las solicitudes antiguas una vez al día (a las 00:00 UTC), así que el resultado puede seguir disponible hasta esa limpieza posterior al día 14. Pasado ese plazo, la respuesta es `404` con `Datahub API request not found`. Un RUT puede venir sin consultas (`{}`) si Pruff no pudo guardar o leer su resultado en ese momento: en ese caso vuelve a pedir la consulta. Un resultado correcto de la NDF se reutiliza durante al menos 24 horas para ese RUT, así que si pides la misma consulta de nuevo dentro de ese plazo recibes el mismo resultado, con su `date` original. Revisa `date` para saber cuándo se obtuvo.



## OpenAPI

````yaml openapi/clients.yaml GET /datahub/response/{id}
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/response/{id}:
    get:
      tags:
        - Datahub
      summary: Obtener resultado de consultas de Datahub
      description: >-
        Lee el resultado de una solicitud creada con `POST /datahub/request`.
        Solo puedes leer solicitudes de tu empresa.


        Mientras falte alguna consulta, responde `200` con `{"message": "Request
        not ready"}`. Vuelve a llamar hasta que la respuesta cambie. Cuando
        todas las consultas terminaron (o agotaron su tiempo), responde `200`
        con el resultado agrupado en `client` y `payers`, y dentro de cada
        grupo, por RUT. Con `ndf`, un grupo solo aparece si pediste esa consulta
        para él.


        Dentro de cada RUT hay una clave por consulta pedida. Para `ndf`, el
        valor es el resultado de la NDF, o el texto `error` (Pruff no pudo
        obtener o guardar el resultado de la NDF) o `timeout` (la consulta no
        terminó en 2 minutos). Ninguno de los dos textos significa que el RUT no
        esté en la NDF: vuelve a pedir la consulta.


        Puedes leer el resultado durante 14 días desde que creaste la solicitud.
        Pruff elimina las solicitudes antiguas una vez al día (a las 00:00 UTC),
        así que el resultado puede seguir disponible hasta esa limpieza
        posterior al día 14. Pasado ese plazo, la respuesta es `404` con
        `Datahub API request not found`. Un RUT puede venir sin consultas (`{}`)
        si Pruff no pudo guardar o leer su resultado en ese momento: en ese caso
        vuelve a pedir la consulta. Un resultado correcto de la NDF se reutiliza
        durante al menos 24 horas para ese RUT, así que si pides la misma
        consulta de nuevo dentro de ese plazo recibes el mismo resultado, con su
        `date` original. Revisa `date` para saber cuándo se obtuvo.
      operationId: getDatahubConsultsResult
      parameters:
        - name: id
          in: path
          required: true
          description: '`requestId` que respondió `POST /datahub/request`.'
          schema:
            type: string
            format: uuid
          example: 3f1c2b7e-9a4d-4c1e-8b55-2d7f6a0e9c11
      responses:
        '200':
          description: >-
            Resultado de la solicitud, o aviso de que todavía no está listo. Si
            el body trae `message`, la solicitud sigue en curso.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/DatahubConsultsResult'
                  - $ref: '#/components/schemas/DatahubConsultsNotReady'
              examples:
                ready:
                  summary: Resultado listo
                  value:
                    client:
                      11111111-1:
                        ndf:
                          clienteDificilFiscalizacion:
                            name: EMPRESA EJEMPLO SPA
                            rut: 11111111-1
                            date: 10/08/2026 12:00
                            status: Se encuentra en la NDF
                            inNdf: true
                    payers:
                      22222222-2:
                        ndf:
                          clienteDificilFiscalizacion:
                            name: DEUDOR EJEMPLO LTDA
                            rut: 22222222-2
                            date: 10/08/2026 12:00
                            status: No se encuentra en la NDF
                            inNdf: false
                notReady:
                  summary: Todavía no está listo
                  value:
                    message: Request not ready
                withoutAnswer:
                  summary: Sin respuesta del SII para un RUT
                  value:
                    payers:
                      22222222-2:
                        ndf: timeout
                      33333333-3:
                        ndf: error
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: >-
            La solicitud no existe, es de otra empresa o ya venció (se conserva
            14 días), o no tiene ninguna consulta asociada. Si recibes `No
            consults found` justo después de crear la solicitud, vuelve a
            consultar en unos segundos; si persiste, la solicitud no creó
            ninguna consulta.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                requestNotFound:
                  summary: La solicitud no existe, es de otra empresa o ya venció
                  value:
                    message: Datahub API request not found
                noConsults:
                  summary: >-
                    La solicitud no tiene consultas (todavía, o porque no creó
                    ninguna)
                  value:
                    message: No consults found
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '504':
          $ref: '#/components/responses/Timeout'
components:
  schemas:
    DatahubConsultsResult:
      type: object
      description: >-
        Resultado de la solicitud, agrupado por tipo de RUT y, dentro de cada
        grupo, por RUT.
      properties:
        client:
          type: object
          description: >-
            Resultado del cliente. Con `ndf`, solo aparece si pediste esa
            consulta para el cliente. La clave es el RUT que enviaste.
          additionalProperties:
            $ref: '#/components/schemas/DatahubConsultsSubjectResult'
        payers:
          type: object
          description: >-
            Resultado de los deudores. Con `ndf`, solo aparece si pediste esa
            consulta para los deudores. Las claves son los RUT que enviaste.
          additionalProperties:
            $ref: '#/components/schemas/DatahubConsultsSubjectResult'
    DatahubConsultsNotReady:
      type: object
      required:
        - message
      description: La solicitud sigue en curso.
      properties:
        message:
          type: string
          enum:
            - Request not ready
          description: Indica que falta alguna consulta. Vuelve a consultar.
    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.
    DatahubConsultsSubjectResult:
      type: object
      description: >-
        Resultado de las consultas de un RUT. Tiene una clave por consulta
        pedida; una consulta que no pediste para ese RUT no aparece.
      properties:
        ndf:
          $ref: '#/components/schemas/DatahubNdfConsult'
    DatahubNdfConsult:
      description: >-
        Resultado de la consulta `ndf` de un RUT: el resultado de la NDF, o el
        texto `error` (Pruff no pudo obtener o guardar el resultado) o `timeout`
        (la consulta no terminó a tiempo).
      oneOf:
        - type: object
          required:
            - clienteDificilFiscalizacion
          properties:
            clienteDificilFiscalizacion:
              $ref: '#/components/schemas/DatahubNdfRow'
        - type: string
          enum:
            - error
            - timeout
    DatahubNdfRow:
      type: object
      required:
        - name
        - rut
        - date
        - status
        - inNdf
      description: Resultado de la NDF para un RUT.
      properties:
        name:
          type: string
          description: Nombre o razón social, tal como lo informa el SII.
        rut:
          type: string
          description: RUT consultado, tal como lo informa el SII.
        date:
          type: string
          description: >-
            Fecha que informa el SII. Si el resultado se reutilizó, es la fecha
            del resultado original.
        status:
          type: string
          enum:
            - Se encuentra en la NDF
            - No se encuentra en la NDF
          description: Resultado en texto.
        inNdf:
          type: boolean
          description: '`true` si el RUT está en la NDF, `false` si no.'
  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.