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

# Listar empresas

> Obtiene las empresas de tu cartera y de tu pipeline comercial, clientes y prospectos, con su ficha. Son las mismas empresas de la pestaña Empresas del CRM, y la ficha trae los datos de la pestaña Resumen del perfil de cada empresa: email, dirección, sector y actividad económica, tramo de ventas, tags y ejecutivos.

Ves todas las empresas de tu empresa, sin importar el ejecutivo. Para acotarlas usa los filtros `businessIdentifier`, `executiveEmail`, `tag`, `isEnrolled` y `relation`; se combinan con una condición "y". Una empresa eliminada de tu cartera no aparece, salvo que siga en el pipeline.

Si nadie abrió todavía el perfil de una empresa en Pruff, la ficha se arma con la información tributaria más reciente que Pruff tiene de ella, y `economicActivityCode` viene en `null`. Solo se entrega la actividad económica principal, no la lista completa de giros.

Los registros vienen ordenados por nombre de la empresa. 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 /businesses
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:
  /businesses:
    get:
      tags:
        - CRM
      summary: Listar empresas
      description: >-
        Obtiene las empresas de tu cartera y de tu pipeline comercial, clientes
        y prospectos, con su ficha. Son las mismas empresas de la pestaña
        Empresas del CRM, y la ficha trae los datos de la pestaña Resumen del
        perfil de cada empresa: email, dirección, sector y actividad económica,
        tramo de ventas, tags y ejecutivos.


        Ves todas las empresas de tu empresa, sin importar el ejecutivo. Para
        acotarlas usa los filtros `businessIdentifier`, `executiveEmail`, `tag`,
        `isEnrolled` y `relation`; se combinan con una condición "y". Una
        empresa eliminada de tu cartera no aparece, salvo que siga en el
        pipeline.


        Si nadie abrió todavía el perfil de una empresa en Pruff, la ficha se
        arma con la información tributaria más reciente que Pruff tiene de ella,
        y `economicActivityCode` viene en `null`. Solo se entrega la actividad
        económica principal, no la lista completa de giros.


        Los registros vienen ordenados por nombre de la empresa. 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: getBusinesses
      parameters:
        - name: businessIdentifier
          in: query
          required: false
          description: RUT de la empresa, sin puntos y con guion.
          schema:
            type: string
          example: 76111111-6
        - name: executiveEmail
          in: query
          required: false
          description: >-
            Email de un ejecutivo. Retorna las empresas asignadas a ese
            ejecutivo en la cartera. Si el email no corresponde a ningún
            usuario, la lista viene vacía.
          schema:
            type: string
            format: email
          example: ejecutivo@example.com
        - name: tag
          in: query
          required: false
          description: Nombre exacto de un tag de la empresa.
          schema:
            type: string
            minLength: 1
          example: Prioritario
        - name: isEnrolled
          in: query
          required: false
          description: >-
            `true` retorna solo las empresas enroladas y `false` solo las que no
            lo están. El campo `isEnrolled` de la respuesta explica qué cuenta
            como enrolada.
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
          example: 'true'
        - name: relation
          in: query
          required: false
          description: >-
            `client` retorna solo los clientes y `prospect` solo las empresas
            del pipeline comercial. El campo `relation` de la respuesta explica
            cada valor.
          schema:
            type: string
            enum:
              - client
              - prospect
          example: client
        - name: page
          in: query
          required: false
          description: Página que quieres obtener, desde 1. Máximo 100000.
          schema:
            type: integer
            minimum: 1
            maximum: 100000
            default: 1
          example: 1
        - $ref: '#/components/parameters/CrmPageSize'
      responses:
        '200':
          description: Página de empresas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessListResponse'
              example:
                data:
                  - identifier: 76111111-6
                    name: Comercial Ejemplo SpA
                    relation:
                      - client
                    isEnrolled: true
                    siiStatus: ACTIVE
                    origin: myAccounts
                    email: contacto@example.com
                    address:
                      street: Av. Ejemplo 1234
                      commune: Providencia
                      province: Santiago
                      region: Región Metropolitana
                    economicSector: Comercio al por mayor y al por menor
                    economicSubsector: Comercio al por mayor
                    economicActivity: Venta al por mayor de alimentos
                    economicActivityCode: '463000'
                    salesBracket: 6
                    companySize: small
                    tags:
                      - Prioritario
                    executives:
                      - name: Ana Pérez
                        email: ana.perez@example.com
                    createdAt: '2026-03-02T12:00:00.000Z'
                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:
                relacionInvalida:
                  summary: Relación fuera de los valores permitidos
                  value:
                    message: invalid_value
                    displayMessage: relation must be client or prospect
                    data:
                      errors:
                        - path: relation
                          message: relation must be client or prospect
                          code: invalid_value
                rutInvalido:
                  summary: RUT inválido
                  value:
                    message: invalid_union
                    displayMessage: El RUT o Nit ingresado no es válido.
                    data:
                      errors:
                        - path: businessIdentifier
                          message: El RUT o Nit ingresado no es válido.
                          code: invalid_union
                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:
    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:
    BusinessListResponse:
      type: object
      required:
        - data
        - pagination
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BusinessItem'
        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.
    BusinessItem:
      type: object
      required:
        - identifier
        - name
        - relation
        - isEnrolled
        - siiStatus
        - origin
        - email
        - address
        - economicSector
        - economicSubsector
        - economicActivity
        - economicActivityCode
        - salesBracket
        - companySize
        - tags
        - executives
        - createdAt
      properties:
        identifier:
          type: string
          description: RUT de la empresa.
          example: 76111111-6
        name:
          type: string
          description: Nombre de la empresa.
          example: Comercial Ejemplo SpA
        relation:
          type: array
          description: >-
            Relación de la empresa con tu empresa. `client`: te cede facturas o
            tiene operaciones contigo, según cómo esté configurado tu CRM.
            `prospect`: está en tu pipeline comercial. Puede traer los dos
            valores, o ninguno si la empresa está en tu cartera sin ser cliente
            ni prospecto.
          items:
            type: string
            enum:
              - client
              - prospect
        isEnrolled:
          type: boolean
          description: >-
            `true` si la conexión de la empresa con el SII se activó alguna vez
            y no se ha desactivado desde entonces. Es la misma regla con la que
            el reporte del CRM cuenta las empresas enroladas. Se calcula con las
            fechas de activación y desactivación, no con el estado actual de la
            conexión, así que puede no coincidir con `siiStatus`: una empresa
            enrolada puede venir con `siiStatus: INACTIVE`, y una no enrolada
            con `siiStatus: ACTIVE`. Para saber si la conexión funciona hoy, usa
            `siiStatus`.
          example: true
        siiStatus:
          type:
            - string
            - 'null'
          description: >-
            Estado de la conexión de la empresa con el SII. `ACTIVE`: conectada.
            `INACTIVE`: no conectada. `DEACTIVATED`: desconectada. `null` si la
            empresa no está en tu cartera y aparece solo por estar en el
            pipeline.
          enum:
            - ACTIVE
            - INACTIVE
            - DEACTIVATED
            - null
          example: ACTIVE
        origin:
          type:
            - string
            - 'null'
          description: >-
            Vía por la que la empresa entró a tu cartera, por ejemplo
            `myAccounts` si se agregó desde el CRM. `null` si no se registró o
            si la empresa no está en tu cartera.
          example: myAccounts
        email:
          type:
            - string
            - 'null'
          description: Email de contacto de la empresa. `null` si Pruff no lo tiene.
          example: contacto@example.com
        address:
          $ref: '#/components/schemas/BusinessAddress'
        economicSector:
          type:
            - string
            - 'null'
          description: >-
            Sector económico de la empresa según el SII. `null` si Pruff no lo
            tiene.
          example: Comercio al por mayor y al por menor
        economicSubsector:
          type:
            - string
            - 'null'
          description: Subsector económico según el SII. `null` si Pruff no lo tiene.
          example: Comercio al por mayor
        economicActivity:
          type:
            - string
            - 'null'
          description: Actividad económica principal. `null` si Pruff no la tiene.
          example: Venta al por mayor de alimentos
        economicActivityCode:
          type:
            - string
            - 'null'
          description: >-
            Código de la actividad económica principal. `null` si Pruff no lo
            tiene, por ejemplo cuando nadie abrió todavía el perfil de la
            empresa.
          example: '463000'
        salesBracket:
          type:
            - integer
            - 'null'
          description: >-
            Tramo de ventas de la empresa según el SII, de 1 a 13. El tramo 1 es
            "Sin información". `null` si Pruff no lo tiene.
          minimum: 1
          maximum: 13
          example: 6
        companySize:
          type:
            - string
            - 'null'
          description: >-
            Tamaño de la empresa según su tramo de ventas: `micro` (tramos 2 a
            4), `small` (5 a 7), `medium` (8 y 9) y `large` (10 a 13). `null` si
            el tramo es 1 o Pruff no lo tiene.
          enum:
            - micro
            - small
            - medium
            - large
            - null
          example: small
        tags:
          type: array
          description: >-
            Nombres de los tags de la empresa, en orden alfabético. Lista vacía
            si no tiene.
          items:
            type: string
        executives:
          type: array
          description: >-
            Ejecutivos a cargo de la empresa, ordenados por nombre. Lista vacía
            si no tiene.
          items:
            $ref: '#/components/schemas/CrmPipelineExecutive'
        createdAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Fecha y hora (ISO 8601) en que la empresa entró a tu cartera. `null`
            si la empresa no está en tu cartera.
          example: '2026-03-02T12:00:00.000Z'
    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.
    BusinessAddress:
      type: object
      required:
        - street
        - commune
        - province
        - region
      properties:
        street:
          type:
            - string
            - 'null'
          description: Calle y número de la empresa. `null` si Pruff no lo tiene.
          example: Av. Ejemplo 1234
        commune:
          type:
            - string
            - 'null'
          description: Comuna. `null` si Pruff no la tiene.
          example: Providencia
        province:
          type:
            - string
            - 'null'
          description: Provincia. `null` si Pruff no la tiene.
          example: Santiago
        region:
          type:
            - string
            - 'null'
          description: Región. `null` si Pruff no la tiene.
          example: Región Metropolitana
    CrmPipelineExecutive:
      type: object
      required:
        - name
        - email
      properties:
        name:
          type: string
          description: Nombre del ejecutivo. Si el usuario no tiene nombre, trae su email.
          example: Ana Pérez
        email:
          type: string
          format: email
          description: Email del ejecutivo.
          example: ana.perez@example.com
  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.