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

> Obtiene las simulaciones de factoring registradas en el CRM, con los mismos datos del export a Excel: montos, tasa, costos, giro estimado, riesgo, ejecutivo y el detalle de cada documento simulado.

Incluye las simulaciones abiertas (`OPEN`) y perdidas (`LOST`); las que ya se convirtieron en solicitud no aparecen. Usa `status` para acotar a uno de los dos estados. Los filtros se combinan con una condición "y". `startDate` y `endDate` son días en hora de Chile y el día de término se incluye completo.

Los registros vienen ordenados desde la simulación creada más recientemente. El servicio está paginado y el tamaño máximo de página es 500. Cualquier query param que no esté en esta lista responde un error 400.



## OpenAPI

````yaml openapi/clients.yaml GET /crm/simulations
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:
  /crm/simulations:
    get:
      tags:
        - CRM
      summary: Obtener simulaciones
      description: >-
        Obtiene las simulaciones de factoring registradas en el CRM, con los
        mismos datos del export a Excel: montos, tasa, costos, giro estimado,
        riesgo, ejecutivo y el detalle de cada documento simulado.


        Incluye las simulaciones abiertas (`OPEN`) y perdidas (`LOST`); las que
        ya se convirtieron en solicitud no aparecen. Usa `status` para acotar a
        uno de los dos estados. Los filtros se combinan con una condición "y".
        `startDate` y `endDate` son días en hora de Chile y el día de término se
        incluye completo.


        Los registros vienen ordenados desde la simulación creada más
        recientemente. El servicio está paginado y el tamaño máximo de página es
        500. Cualquier query param que no esté en esta lista responde un error
        400.
      operationId: getCrmSimulations
      parameters:
        - name: startDate
          in: query
          required: false
          description: >-
            Fecha de creación desde la cual se buscan simulaciones (YYYY-MM-DD,
            día en hora de Chile).
          schema:
            type: string
            format: date
          example: '2026-10-01'
        - name: endDate
          in: query
          required: false
          description: >-
            Fecha de creación hasta la cual se buscan simulaciones (YYYY-MM-DD,
            día en hora de Chile). Incluye el día completo. Debe ser igual o
            posterior a `startDate`.
          schema:
            type: string
            format: date
          example: '2026-10-31'
        - name: businessIdentifier
          in: query
          required: false
          description: RUT del cliente, sin puntos y con guion.
          schema:
            type: string
          example: 76111111-6
        - name: stakeholderIdentifier
          in: query
          required: false
          description: >-
            RUT del deudor, sin puntos y con guion. Retorna las simulaciones que
            tengan al menos un documento de ese deudor.
          schema:
            type: string
          example: 22222222-2
        - name: executiveEmail
          in: query
          required: false
          description: >-
            Email del ejecutivo a cargo de la simulación. Si la simulación no
            tiene ejecutivo asignado, se considera a quien la creó.
          schema:
            type: string
            format: email
          example: ejecutivo@example.com
        - name: status
          in: query
          required: false
          description: >-
            Estado de la simulación: `OPEN` (abierta) o `LOST` (perdida). Sin
            este filtro se retornan ambos.
          schema:
            type: string
            enum:
              - OPEN
              - LOST
          example: LOST
        - $ref: '#/components/parameters/CrmPage'
        - $ref: '#/components/parameters/CrmPageSize'
      responses:
        '200':
          description: Página de simulaciones.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CrmSimulationListResponse'
              example:
                data:
                  - id: 8812
                    businessIdentifier: 76111111-6
                    businessName: Comercial Ejemplo SpA
                    mode: TRADEABLE_INVOICES
                    totalAmount: 500000
                    currency: CLP
                    monthlyRate: 1.5
                    advancePercentage: 90
                    totalCosts: 0
                    estimatedPayout: 436500
                    risk: Aprobado
                    executiveName: Ana Pérez
                    executiveEmail: ana.perez@example.com
                    date: '2026-10-01'
                    status: LOST
                    createdAt: '2026-10-01T14:00:00.000Z'
                    updatedAt: '2026-10-05T16:30:00.000Z'
                    loss:
                      lossReasons:
                        - Tasa
                      competitorName: Factoring Competidor S.A.
                      competitorRate: 1.2
                      rateDelta: 0.3
                    documents:
                      - folio: '12345'
                        stakeholderIdentifier: 22222222-2
                        stakeholderName: Deudor Ejemplo S.A.
                        documentAmount: 500000
                        dueDate: '2026-11-30'
                        days: 60
                        rateCost: 13500
                        financedAmount: 450000
                        payoutAmount: 436500
                pagination:
                  total: 1
                  page: 1
                  pageSize: 10
                  totalPages: 1
        '400':
          description: Algún query param no es válido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
              examples:
                estadoInvalido:
                  summary: Estado desconocido
                  value:
                    message: invalid_value
                    displayMessage: status must be one of OPEN, LOST
                    data:
                      errors:
                        - path: status
                          message: status must be one of OPEN, LOST
                          code: invalid_value
                rangoInvalido:
                  summary: Rango de fechas invertido
                  value:
                    message: custom
                    displayMessage: startDate must be before or equal to endDate
                    data:
                      errors:
                        - path: endDate
                          message: startDate must be before or equal to endDate
                          code: custom
                pageSizeExcedido:
                  summary: Tamaño de página sobre el máximo
                  value:
                    message: too_big
                    displayMessage: pageSize must be less or equal to 500
                    data:
                      errors:
                        - path: pageSize
                          message: pageSize must be less or equal to 500
                          code: too_big
                parametroDesconocido:
                  summary: Query param que el endpoint no reconoce
                  value:
                    message: unrecognized_keys
                    displayMessage: 'Unrecognized key: "foo"'
                    data:
                      errors:
                        - path: (root)
                          message: 'Unrecognized key: "foo"'
                          code: unrecognized_keys
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '504':
          $ref: '#/components/responses/Timeout'
components:
  parameters:
    CrmPage:
      name: page
      in: query
      required: false
      description: Página que quieres obtener, desde 1.
      schema:
        type: integer
        minimum: 1
        default: 1
      example: 1
    CrmPageSize:
      name: pageSize
      in: query
      required: false
      description: Cantidad de elementos por página. Máximo 500.
      schema:
        type: integer
        minimum: 1
        maximum: 500
        default: 10
      example: 100
  schemas:
    CrmSimulationListResponse:
      type: object
      required:
        - data
        - pagination
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CrmSimulationItem'
        pagination:
          $ref: '#/components/schemas/Pagination'
    ValidationError:
      type: object
      required:
        - message
        - displayMessage
        - data
      description: Error de validación del body, de los query params o de los path params.
      properties:
        message:
          type: string
          description: >-
            Código del primer error de validación (por ejemplo `custom`,
            `invalid_type`, `invalid_format`, `invalid_value`, `invalid_union`).
        displayMessage:
          type: string
          description: >-
            Mensaje del primer error de validación, pensado para mostrarlo a una
            persona. Normalmente en español; algunos mensajes de validación
            vienen en inglés.
        data:
          type: object
          required:
            - errors
          properties:
            errors:
              type: array
              description: Todos los errores de validación encontrados.
              items:
                type: object
                required:
                  - path
                  - message
                  - code
                properties:
                  path:
                    type: string
                    description: >-
                      Campo con el error. Para listas incluye la posición, por
                      ejemplo `types.0`. `(root)` si el error es del body
                      completo.
                  message:
                    type: string
                    description: Descripción del error en español.
                  code:
                    type: string
                    description: Código del tipo de error.
    CrmSimulationItem:
      type: object
      required:
        - id
        - businessIdentifier
        - businessName
        - mode
        - totalAmount
        - currency
        - monthlyRate
        - advancePercentage
        - totalCosts
        - estimatedPayout
        - risk
        - executiveName
        - executiveEmail
        - date
        - status
        - createdAt
        - updatedAt
        - loss
        - documents
      properties:
        id:
          type: integer
          description: Identificador de la simulación.
          example: 8812
        businessIdentifier:
          type: string
          description: RUT del cliente.
          example: 76111111-6
        businessName:
          type: string
          description: Nombre del cliente. Si no se conoce, trae el RUT.
          example: Comercial Ejemplo SpA
        mode:
          type: string
          enum:
            - TRADEABLE_INVOICES
            - FREE
            - MIXED
          description: >-
            Origen de los documentos simulados: `TRADEABLE_INVOICES` (facturas
            reales del cliente), `FREE` (líneas ingresadas a mano) o `MIXED`
            (ambas).
          example: TRADEABLE_INVOICES
        totalAmount:
          type: number
          description: Monto total de los documentos simulados, en la moneda de `currency`.
          example: 500000
        currency:
          type: string
          enum:
            - CLP
            - UF
            - USD
            - EUR
            - UTM
            - COP
            - ARS
            - PEN
            - BRL
            - MXN
          description: Moneda de la simulación.
          example: CLP
        monthlyRate:
          type: number
          description: >-
            Tasa mensual cotizada, en porcentaje (`1.5` equivale a 1,5%
            mensual).
          example: 1.5
        advancePercentage:
          type: number
          description: Porcentaje de anticipo (`90` equivale a 90%).
          example: 90
        totalCosts:
          type: number
          description: >-
            Comisión fija más comisión variable de la operación, sin IVA, en la
            moneda de la simulación. No incluye gastos, IVA ni el costo por tasa
            (ver `documents[].rateCost`).
          example: 0
        estimatedPayout:
          type: number
          description: >-
            Monto estimado a girar al cliente, en la moneda de la simulación. Ya
            descuenta comisiones, gastos, IVA y el monto a aplicar, por lo que
            no se obtiene solo restando `totalCosts` a la suma de
            `documents[].payoutAmount`.
          example: 436500
        risk:
          type:
            - string
            - 'null'
          description: >-
            Resultado de la última evaluación de riesgo de la simulación, o su
            estado (`En espera`, `En ejecución`, `Sin resultado`, `Fallida`) si
            aún no tiene decisión. `null` si no se ha evaluado.
          example: Aprobado
        executiveName:
          type:
            - string
            - 'null'
          description: >-
            Nombre del ejecutivo a cargo, o de quien creó la simulación si no
            tiene ejecutivo asignado. Si el ejecutivo a cargo no tiene nombre,
            trae el de quien creó la simulación; `null` si ninguno tiene nombre.
          example: Ana Pérez
        executiveEmail:
          type:
            - string
            - 'null'
          description: >-
            Email del ejecutivo a cargo, o de quien creó la simulación si no
            tiene ejecutivo asignado.
          example: ana.perez@example.com
        date:
          type: string
          format: date
          description: Fecha de operación de la simulación (YYYY-MM-DD, día en UTC).
          example: '2026-10-01'
        status:
          type: string
          enum:
            - OPEN
            - LOST
          description: Estado de la simulación.
          example: LOST
        createdAt:
          type: string
          format: date-time
          description: Fecha y hora (ISO 8601) de creación de la simulación.
          example: '2026-10-01T14:00:00.000Z'
        updatedAt:
          type: string
          format: date-time
          description: Fecha y hora (ISO 8601) de la última modificación de la simulación.
          example: '2026-10-05T16:30:00.000Z'
        loss:
          description: Detalle de la pérdida. `null` salvo que `status` sea `LOST`.
          oneOf:
            - $ref: '#/components/schemas/CrmSimulationLoss'
            - type: 'null'
        documents:
          type: array
          description: Documentos simulados.
          items:
            $ref: '#/components/schemas/CrmSimulationDocument'
    Pagination:
      type: object
      required:
        - total
        - page
        - pageSize
        - totalPages
      properties:
        total:
          type: integer
          description: Cantidad total de elementos que cumplen los filtros.
        page:
          type: integer
          description: Página devuelta, desde 1.
        pageSize:
          type: integer
          description: Cantidad de elementos por página.
        totalPages:
          type: integer
          description: Cantidad total de páginas.
    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.
    CrmSimulationLoss:
      type: object
      description: Detalle de por qué se perdió la simulación.
      required:
        - lossReasons
        - competitorName
        - competitorRate
        - rateDelta
      properties:
        lossReasons:
          type: array
          description: >-
            Motivos de pérdida registrados, según los motivos configurados en tu
            empresa.
          items:
            type: string
        competitorName:
          type:
            - string
            - 'null'
          description: >-
            Nombre del competidor con el que se perdió. `null` si no se
            registró.
          example: Factoring Competidor S.A.
        competitorRate:
          type:
            - number
            - 'null'
          description: >-
            Tasa mensual ofrecida por el competidor, en porcentaje. `null` si no
            se registró.
          example: 1.2
        rateDelta:
          type:
            - number
            - 'null'
          description: >-
            Diferencia entre la tasa propia y la del competidor, en puntos
            porcentuales (positivo si la tasa propia era más alta). `null` si
            falta alguna de las dos tasas.
          example: 0.3
    CrmSimulationDocument:
      type: object
      required:
        - folio
        - stakeholderIdentifier
        - stakeholderName
        - documentAmount
        - dueDate
        - days
        - rateCost
        - financedAmount
        - payoutAmount
      properties:
        folio:
          type:
            - string
            - 'null'
          description: Folio del documento. `null` en líneas ingresadas a mano.
          example: '12345'
        stakeholderIdentifier:
          type:
            - string
            - 'null'
          description: RUT del deudor. `null` si no se informó.
          example: 22222222-2
        stakeholderName:
          type:
            - string
            - 'null'
          description: Nombre del deudor. `null` si no se conoce.
          example: Deudor Ejemplo S.A.
        documentAmount:
          type: number
          description: Monto del documento, en la moneda de la simulación (`currency`).
          example: 500000
        dueDate:
          type:
            - string
            - 'null'
          format: date
          description: Fecha de vencimiento (YYYY-MM-DD). `null` si no tiene.
          example: '2026-11-30'
        days:
          type: number
          description: Días de financiamiento del documento.
          example: 60
        rateCost:
          type: number
          description: >-
            Costo por tasa (diferencia de precio) del documento, en la moneda de
            la simulación.
          example: 13500
        financedAmount:
          type: number
          description: >-
            Monto financiado, es decir, el monto del documento por el porcentaje
            de anticipo.
          example: 450000
        payoutAmount:
          type: number
          description: Monto a girar por el documento, en la moneda de la simulación.
          example: 436500
  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.