> ## 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 estado de sincronización

> Devuelve, para un cliente y un tipo de sincronización, la fecha de la última actualización exitosa de cada conjunto de datos que se sincroniza. Úsalo para saber qué tan al día está la información del cliente antes de pedir una nueva sincronización.

Cada elemento de `scrapingState` corresponde a un conjunto de datos del tipo pedido y su `status` es la fecha de su última actualización, o `null` si nunca se ha actualizado. Consulta solo clientes enrolados y activos en tu empresa: para un RUT que no tiene una relación activa con tu empresa responde `404`.

Conjuntos de datos por tipo:

- `sii`: facturas de compra y de venta (afectas, exentas y notas de crédito), cesiones, IVA F22, IVA F29 y validador de IVA.
- `tgr`: cobranza judicial, convenios de pago y cartola fiscal.



## OpenAPI

````yaml openapi/clients.yaml GET /syncronizations/status/{scrapingType}/{businessIdentifier}
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:
  /syncronizations/status/{scrapingType}/{businessIdentifier}:
    get:
      tags:
        - Sincronizador
      summary: Obtener estado de sincronización
      description: >-
        Devuelve, para un cliente y un tipo de sincronización, la fecha de la
        última actualización exitosa de cada conjunto de datos que se
        sincroniza. Úsalo para saber qué tan al día está la información del
        cliente antes de pedir una nueva sincronización.


        Cada elemento de `scrapingState` corresponde a un conjunto de datos del
        tipo pedido y su `status` es la fecha de su última actualización, o
        `null` si nunca se ha actualizado. Consulta solo clientes enrolados y
        activos en tu empresa: para un RUT que no tiene una relación activa con
        tu empresa responde `404`.


        Conjuntos de datos por tipo:


        - `sii`: facturas de compra y de venta (afectas, exentas y notas de
        crédito), cesiones, IVA F22, IVA F29 y validador de IVA.

        - `tgr`: cobranza judicial, convenios de pago y cartola fiscal.
      operationId: getSyncronizationStatus
      parameters:
        - $ref: '#/components/parameters/SyncronizationScrapingType'
        - $ref: '#/components/parameters/SyncronizationBusinessIdentifier'
      responses:
        '200':
          description: Estado de cada conjunto de datos del tipo pedido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncronizationStatusResponse'
              examples:
                tgr:
                  summary: Tipo tgr, con un conjunto sin actualizar nunca
                  value:
                    scrapingState:
                      - key: tgr-collection
                        name: Cobranza judicial
                        status: '2026-01-19T13:09:37.489Z'
                      - key: tgr-agreement
                        name: Convenios de pago
                        status: '2026-01-19T13:09:38.102Z'
                      - key: tgr-debt
                        name: Cartola fiscal
                        status: null
        '400':
          description: El tipo de sincronización o el RUT no son válidos.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                tipoInvalido:
                  summary: Tipo de sincronización desconocido
                  value:
                    message: 'Invalid params. Expected scraping types: sii, tgr.'
                rutInvalido:
                  summary: RUT inválido
                  value:
                    message: >-
                      Invalid params: business identifier must be a valid rut
                      (format: 12312312-K).
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: >-
            El RUT no corresponde a un cliente enrolado y activo de tu empresa.
            Es el mismo error que responde `POST
            /syncronizations/execute/{scrapingType}/{businessIdentifier}`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                message: Company not found
                displayMessage: Empresa no encontrada
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '504':
          $ref: '#/components/responses/Timeout'
components:
  parameters:
    SyncronizationScrapingType:
      name: scrapingType
      in: path
      required: true
      description: >-
        Tipo de sincronización: `sii` (documentos del SII: facturas, cesiones e
        IVA) o `tgr` (Tesorería General de la República: cobranza judicial,
        convenios de pago y cartola fiscal).
      schema:
        type: string
        enum:
          - sii
          - tgr
      example: sii
    SyncronizationBusinessIdentifier:
      name: businessIdentifier
      in: path
      required: true
      description: RUT del cliente, sin puntos y con guion, con dígito verificador válido.
      schema:
        type: string
      example: 11111111-1
  schemas:
    SyncronizationStatusResponse:
      type: object
      required:
        - scrapingState
      properties:
        scrapingState:
          type: array
          description: Un elemento por cada conjunto de datos del tipo pedido.
          items:
            $ref: '#/components/schemas/SyncronizationStatusItem'
    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.
    SyncronizationStatusItem:
      type: object
      required:
        - key
        - name
        - status
      properties:
        key:
          type: string
          description: >-
            Identificador estable del conjunto de datos. Para `sii`:
            `sii-invoices-33-COMPRA`, `sii-invoices-33-VENTA`,
            `sii-invoices-34-COMPRA`, `sii-invoices-34-VENTA`,
            `sii-invoices-61-COMPRA`, `sii-invoices-61-VENTA`,
            `sii-cessions-ceded`, `sii-iva-f22`, `sii-iva-f29` y
            `sii-iva-status`. Para `tgr`: `tgr-collection`, `tgr-agreement` y
            `tgr-debt`.
          example: tgr-collection
        name:
          type: string
          description: Nombre del conjunto de datos, pensado para mostrarlo a una persona.
          example: Cobranza judicial
        status:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Fecha y hora (ISO 8601, UTC) de la última actualización exitosa.
            `null` si nunca se ha actualizado.
          example: '2026-01-19T13:09:37.489Z'
  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.