> ## 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 perfil de un usuario

> Devuelve el nombre, el email y los roles de un usuario de tu empresa, junto con su link de enrolamiento y un token cifrado. El link de enrolamiento es una URL personal que el usuario usa para ingresar las credenciales de sus cuentas en Pruff. Tanto el link como el token funcionan como credenciales: no los compartas con terceros ni los guardes.



## OpenAPI

````yaml openapi/clients.yaml GET /user/profile/{email}
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:
  /user/profile/{email}:
    get:
      tags:
        - Usuarios
      summary: Obtener perfil de un usuario
      description: >-
        Devuelve el nombre, el email y los roles de un usuario de tu empresa,
        junto con su link de enrolamiento y un token cifrado. El link de
        enrolamiento es una URL personal que el usuario usa para ingresar las
        credenciales de sus cuentas en Pruff. Tanto el link como el token
        funcionan como credenciales: no los compartas con terceros ni los
        guardes.
      operationId: getUserProfile
      parameters:
        - name: email
          in: path
          required: true
          description: >-
            Email del usuario. Si el email contiene el carácter `+`, envíalo
            codificado como `%2B`.
          schema:
            type: string
            format: email
          example: ana.perez@example.com
      responses:
        '200':
          description: Perfil del usuario.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProfile'
              example:
                name: Ana Pérez
                email: ana.perez@example.com
                roles:
                  - id: 2
                    name: Gerente Comercial
                  - id: 6
                    name: Operaciones
                encryptedId: >-
                  0a1b2c3d4e5f6a7b8c9d0e1f:5f4e3d2c1b0a99887766554433221100aabbccddeeff:00112233445566778899aabbccddeeff
                enrollmentLink: https://app.example.com/s/0a1b2c3d4e5f60718293
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: No existe un usuario con ese email.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                message: User not found
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '504':
          $ref: '#/components/responses/Timeout'
components:
  schemas:
    UserProfile:
      type: object
      required:
        - name
        - email
        - roles
        - encryptedId
        - enrollmentLink
      properties:
        name:
          type: string
          description: >-
            Nombre del usuario. Es una cadena vacía si el usuario no tiene
            nombre.
          example: Ana Pérez
        email:
          type: string
          format: email
          description: Email del usuario.
          example: ana.perez@example.com
        roles:
          type: array
          description: Roles del usuario. Es una lista vacía si no tiene roles.
          items:
            $ref: '#/components/schemas/UserRole'
        encryptedId:
          type: string
          description: >-
            Token cifrado que identifica al usuario en las páginas públicas de
            Pruff. Se genera uno nuevo en cada llamada, por lo que su valor
            cambia aunque el usuario sea el mismo. Funciona como una credencial:
            no lo compartas ni lo guardes. Es un valor opaco.
          example: >-
            0a1b2c3d4e5f6a7b8c9d0e1f:5f4e3d2c1b0a99887766554433221100aabbccddeeff:00112233445566778899aabbccddeeff
        enrollmentLink:
          type: string
          format: uri
          description: >-
            Link personal del usuario para enrolar cuentas en Pruff. Es siempre
            el mismo para el mismo usuario. Funciona como una credencial: no lo
            compartas con terceros.
          example: https://app.example.com/s/0a1b2c3d4e5f60718293
    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.
    UserRole:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: integer
          description: Id del rol.
          example: 2
        name:
          type: string
          description: Nombre del rol.
          example: Gerente Comercial
  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.