> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modernloop.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List privacy audit logs

> Returns paginated privacy audit ledger entries for the authenticated organization: who accessed whose personal data, when, from which IP addresses, and through which product area. Reads of this ledger are themselves recorded in the API and MCP audit ledgers. Requires the audit_logs:read scope and an acting user with the owner-only READ_AUDIT_LOGS permission; other callers receive PERMISSION_DENIED. Results are newest first. Requires a timestamp window of at most 366 days; use the cursor to continue the same filtered result set.

<Note>**Beta**: this endpoint may change or be removed without notice while in beta. There is no compatibility promise until it reaches general availability.</Note>


## OpenAPI

````yaml /openapi.json get /v1/audit-logs/privacy
openapi: 3.1.0
info:
  title: ModernLoop Platform API
  version: 0.1.0
  description: The ModernLoop Platform API for managing recruiting workflows.
  contact:
    email: support@modernloop.io
servers:
  - url: https://api.modernloop.io
security: []
tags:
  - name: Activity
  - name: Application
  - name: Audit Log
  - name: Candidate
  - name: Interview Event
  - name: Interview Module
  - name: Job
  - name: Job Stage
  - name: Me
  - name: Organization
  - name: Schedule
  - name: Scheduling Task
  - name: Task Queue
  - name: Template
  - name: User
paths:
  /v1/audit-logs/privacy:
    get:
      tags:
        - Audit Log
      summary: List privacy audit logs
      description: >-
        Returns paginated privacy audit ledger entries for the authenticated
        organization: who accessed whose personal data, when, from which IP
        addresses, and through which product area. Reads of this ledger are
        themselves recorded in the API and MCP audit ledgers. Requires the
        audit_logs:read scope and an acting user with the owner-only
        READ_AUDIT_LOGS permission; other callers receive PERMISSION_DENIED.
        Results are newest first. Requires a timestamp window of at most 366
        days; use the cursor to continue the same filtered result set.
      operationId: listPrivacyAuditLogs
      parameters:
        - schema:
            type: string
            description: >-
              Opaque pagination cursor from the previous page's
              pagination.next_cursor, bound to the same query filters.
          required: false
          description: >-
            Opaque pagination cursor from the previous page's
            pagination.next_cursor, bound to the same query filters.
          name: cursor
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
            description: Page size. Must be between 1 and 100; defaults to 25.
          required: false
          description: Page size. Must be between 1 and 100; defaults to 25.
          name: limit
          in: query
        - schema:
            type: array
            items:
              type: string
              pattern: >-
                ^(?:pal_)?(?:[0-9a-fA-F]{32}|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
              description: >-
                a privacy audit log entry ID. Accepts the canonical prefixed
                compact UUID, a prefixed dashed UUID, a bare dashed UUID, or a
                bare compact UUID; input is case-insensitive.
              example: pal_a1b2c3d4e5f64789a1b2c3d4e5f64789
            minItems: 1
            description: Comma-separated list of IDs; maximum 100 values.
          required: false
          description: Comma-separated list of IDs; maximum 100 values.
          name: ids
          in: query
          style: form
          explode: false
        - schema:
            type: string
            format: date-time
            description: Includes entries recorded at or after this timestamp. Required.
          required: true
          description: Includes entries recorded at or after this timestamp. Required.
          name: timestamp_gte
          in: query
        - schema:
            type: string
            format: date-time
            description: Includes entries recorded before this timestamp. Required.
          required: true
          description: Includes entries recorded before this timestamp. Required.
          name: timestamp_lt
          in: query
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PrivacyAuditLog'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                required:
                  - data
                  - pagination
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '410':
          description: Gone
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    PrivacyAuditLog:
      type: object
      properties:
        id:
          type: string
          pattern: ^pal_[0-9a-f]{32}$
          description: >-
            Canonical privacy audit log entry ID (pal_ followed by 32 lowercase
            hexadecimal UUID characters).
          example: pal_a1b2c3d4e5f64789a1b2c3d4e5f64789
        access_time:
          type: string
          format: date-time
          description: When the access happened.
        account_id:
          type: string
          description: Login account that performed the access, as a compact UUID.
        ip_addresses:
          type: array
          items:
            type: string
          description: Client IP addresses recorded for the access.
        data_subject:
          $ref: '#/components/schemas/PrivacyAuditLogDataSubject'
        access_data:
          type: array
          items:
            type: string
            enum:
              - NAME
              - EMAIL_ADDRESS
              - PHONE_NUMBER
          description: Personal data categories the access covered.
        access_menu:
          type: string
          description: Product area where the access happened.
        access_menu_path:
          type: string
          description: Product navigation path where the access happened.
        activity_category:
          type: string
          enum:
            - CREATE
            - READ
            - UPDATE
            - DELETE
            - BULK_CREATE
            - BULK_READ
            - BULK_UPDATE
            - BULK_DELETE
            - DOWNLOAD
          description: >-
            Access category. This enum is open; clients must tolerate unknown
            values.
      required:
        - id
        - access_time
        - account_id
        - ip_addresses
        - data_subject
        - access_data
        - access_menu
        - access_menu_path
        - activity_category
    Pagination:
      type: object
      properties:
        next_cursor:
          type:
            - string
            - 'null'
      required:
        - next_cursor
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - UNAUTHENTICATED
                - INSUFFICIENT_SCOPE
                - VALIDATION_FAILED
                - INVALID_CURSOR
                - PAYLOAD_TOO_LARGE
                - NOT_FOUND
                - PERMISSION_DENIED
                - IDEMPOTENCY_KEY_REQUIRED
                - IDEMPOTENCY_KEY_REUSED
                - RATE_LIMITED
                - CONFLICT
                - CANNOT_UPDATE_SYNC_MANAGED_FIELDS
                - NOT_IMPLEMENTED
                - INTERNAL
                - UPSTREAM_TIMEOUT
                - UNAVAILABLE
            message:
              type: string
            docs_url:
              type: string
              format: uri
            details:
              type: array
              items:
                type: object
                additionalProperties:
                  type: string
          required:
            - code
            - message
      required:
        - error
    PrivacyAuditLogDataSubject:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - EMPLOYEE
            user:
              type: string
              pattern: ^usr_[0-9a-f]{32}$
              description: >-
                Canonical user ID (usr_ followed by 32 lowercase hexadecimal
                UUID characters).
              example: usr_a1b2c3d4e5f64789a1b2c3d4e5f64789
          required:
            - type
            - user
        - type: object
          properties:
            type:
              type: string
              enum:
                - CANDIDATE
            candidate:
              type: string
              pattern: ^can_[0-9a-f]{32}$
              description: >-
                Canonical candidate ID (can_ followed by 32 lowercase
                hexadecimal UUID characters).
              example: can_a1b2c3d4e5f64789a1b2c3d4e5f64789
          required:
            - type
            - candidate
        - type: object
          properties:
            type:
              type: string
              enum:
                - BULK
            bulk_count:
              type:
                - integer
                - 'null'
              description: Number of records the bulk access covered; null when unknown.
            query:
              $ref: '#/components/schemas/PrivacyAuditLogBulkQuery'
          required:
            - type
            - bulk_count
            - query
    PrivacyAuditLogBulkQuery:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - CANDIDATE_IDS
            ids:
              type: array
              items:
                type: string
                pattern: ^can_[0-9a-f]{32}$
                description: >-
                  Canonical candidate ID (can_ followed by 32 lowercase
                  hexadecimal UUID characters).
                example: can_a1b2c3d4e5f64789a1b2c3d4e5f64789
          required:
            - type
            - ids
        - type: object
          properties:
            type:
              type: string
              enum:
                - EMPLOYEE_IDS
            ids:
              type: array
              items:
                type: string
                pattern: ^usr_[0-9a-f]{32}$
                description: >-
                  Canonical user ID (usr_ followed by 32 lowercase hexadecimal
                  UUID characters).
                example: usr_a1b2c3d4e5f64789a1b2c3d4e5f64789
          required:
            - type
            - ids
        - type: object
          properties:
            type:
              type: string
              enum:
                - CANDIDATE_SEARCH
            values:
              type: array
              items:
                type: string
          required:
            - type
            - values
        - type: object
          properties:
            type:
              type: string
              enum:
                - EMPLOYEE_SEARCH
            values:
              type: array
              items:
                type: string
          required:
            - type
            - values
        - type: object
          properties:
            type:
              type: string
              enum:
                - SCOPE
            scope:
              type: string
              enum:
                - ALL_ORG_CANDIDATES
                - ALL_ORG_EMPLOYEES
          required:
            - type
            - scope
      description: Query that selected the accessed records.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API tokens are passed as Bearer tokens.

````