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

> Lists users with interviewer load, pause state, work hours, and module training. Omit statuses for the default active-only view; pass statuses=ACTIVE,ARCHIVED to include both active and archived users.



## OpenAPI

````yaml /openapi.json get /v1/users
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: 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/users:
    get:
      tags:
        - User
      summary: List users
      description: >-
        Lists users with interviewer load, pause state, work hours, and module
        training. Omit statuses for the default active-only view; pass
        statuses=ACTIVE,ARCHIVED to include both active and archived users.
      operationId: listUsers
      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: >-
                ^(?:usr_)?(?:[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: >-
                an user 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: usr_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
            description: >-
              Case-insensitive substring search across user name and email;
              combines with other filters using AND.
          required: false
          description: >-
            Case-insensitive substring search across user name and email;
            combines with other filters using AND.
          name: search
          in: query
        - schema:
            type: string
            description: >-
              Case-insensitive exact match on the user's full name, given name,
              or family name; combines with other filters using AND.
          required: false
          description: >-
            Case-insensitive exact match on the user's full name, given name, or
            family name; combines with other filters using AND.
          name: name
          in: query
        - schema:
            type: string
            description: >-
              Case-insensitive exact match on user email; combines with other
              filters using AND.
          required: false
          description: >-
            Case-insensitive exact match on user email; combines with other
            filters using AND.
          name: email
          in: query
        - schema:
            type: array
            items:
              type: string
              enum:
                - ACTIVE
                - ARCHIVED
            minItems: 1
            description: >-
              Matches users with any listed status; combines with other filters
              using AND.
          required: false
          description: >-
            Matches users with any listed status; combines with other filters
            using AND.
          name: statuses
          in: query
          style: form
          explode: false
        - schema:
            type: array
            items:
              type: string
              pattern: >-
                ^(?:mod_)?(?:[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: >-
                an interview module 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: mod_a1b2c3d4e5f64789a1b2c3d4e5f64789
            minItems: 1
            description: >-
              Matches users assigned to any listed interview module; combines
              with other filters using AND.
          required: false
          description: >-
            Matches users assigned to any listed interview module; combines with
            other filters using AND.
          name: module_ids
          in: query
          style: form
          explode: false
        - schema:
            type: array
            items:
              type: string
              pattern: >-
                ^(?:usr_)?(?:[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: >-
                an user 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: usr_a1b2c3d4e5f64789a1b2c3d4e5f64789
            minItems: 1
            description: >-
              Matches users managed by any listed manager; combines with other
              filters using AND.
          required: false
          description: >-
            Matches users managed by any listed manager; combines with other
            filters using AND.
          name: manager_ids
          in: query
          style: form
          explode: false
        - schema:
            type: array
            items:
              type: string
            minItems: 1
            description: >-
              Matches users whose ATS ID is one of these exact values; combines
              with other filters using AND.
          required: false
          description: >-
            Matches users whose ATS ID is one of these exact values; combines
            with other filters using AND.
          name: ats_ids
          in: query
          style: form
          explode: false
        - schema:
            type: string
            enum:
              - GREENHOUSE
              - ASHBY
              - LEVER
              - WORKDAY
              - SMARTRECRUITERS
              - GEM
              - KOMBO
            description: Filters by ATS provider.
          required: false
          description: Filters by ATS provider.
          name: ats_type
          in: query
        - schema:
            type: string
            format: date-time
            description: Filters records created at or after this timestamp.
          required: false
          description: Filters records created at or after this timestamp.
          name: created_at_gte
          in: query
        - schema:
            type: string
            format: date-time
            description: Filters records created at or before this timestamp.
          required: false
          description: Filters records created at or before this timestamp.
          name: created_at_lte
          in: query
        - schema:
            type: string
            format: date-time
            description: Filters records updated at or after this timestamp.
          required: false
          description: Filters records updated at or after this timestamp.
          name: updated_at_gte
          in: query
        - schema:
            type: string
            format: date-time
            description: Filters records updated at or before this timestamp.
          required: false
          description: Filters records updated at or before this timestamp.
          name: updated_at_lte
          in: query
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/User'
                  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:
    User:
      type: object
      properties:
        id:
          type: string
          pattern: ^usr_[0-9a-f]{32}$
          description: >-
            Canonical user ID (usr_ followed by 32 lowercase hexadecimal UUID
            characters).
          example: usr_a1b2c3d4e5f64789a1b2c3d4e5f64789
        name:
          type: string
        email:
          type: string
          format: email
        title:
          type:
            - string
            - 'null'
        timezone:
          type:
            - string
            - 'null'
        manager_id:
          type:
            - string
            - 'null'
          pattern: ^usr_[0-9a-f]{32}$
          description: >-
            Canonical user ID (usr_ followed by 32 lowercase hexadecimal UUID
            characters).
          example: usr_a1b2c3d4e5f64789a1b2c3d4e5f64789
        ats:
          type:
            - object
            - 'null'
          properties:
            type:
              type: string
              enum:
                - GREENHOUSE
                - ASHBY
                - LEVER
                - WORKDAY
                - SMARTRECRUITERS
                - GEM
                - KOMBO
            id:
              type: string
          required:
            - type
            - id
        load:
          type: object
          properties:
            daily_interviews:
              type: integer
            daily_limit:
              type: integer
            daily_load_limit:
              type:
                - object
                - 'null'
              properties:
                source:
                  type: string
                  enum:
                    - ORG
                    - USER
                limit:
                  type: integer
                  exclusiveMinimum: 0
                type:
                  type: string
                  enum:
                    - NUMBER_OF_INTERVIEWS
                    - NUMBER_OF_MINUTES
              required:
                - source
                - limit
                - type
            weekly_interviews:
              type: integer
            weekly_limit:
              type: integer
            weekly_load_limit:
              type:
                - object
                - 'null'
              properties:
                source:
                  type: string
                  enum:
                    - ORG
                    - USER
                limit:
                  type: integer
                  exclusiveMinimum: 0
                type:
                  type: string
                  enum:
                    - NUMBER_OF_INTERVIEWS
                    - NUMBER_OF_MINUTES
              required:
                - source
                - limit
                - type
          required:
            - daily_interviews
            - daily_limit
            - daily_load_limit
            - weekly_interviews
            - weekly_limit
            - weekly_load_limit
        paused:
          type: object
          properties:
            is_paused:
              type: boolean
            until:
              type:
                - string
                - 'null'
              format: date-time
              description: >-
                ISO 8601 timestamp. Responses are normalized to UTC with a Z
                suffix.
          required:
            - is_paused
            - until
        pause_dates:
          type: array
          items:
            type: object
            properties:
              start_at:
                type: string
                format: date-time
                description: >-
                  ISO 8601 timestamp. Responses are normalized to UTC with a Z
                  suffix.
              end_at:
                type: string
                format: date-time
                description: >-
                  ISO 8601 timestamp. Responses are normalized to UTC with a Z
                  suffix.
            required:
              - start_at
              - end_at
        work_hours:
          type: object
          properties:
            source:
              type: string
              enum:
                - ORG
                - USER
            blocks:
              type: array
              items:
                type: object
                properties:
                  day:
                    type: string
                  start:
                    type: string
                  end:
                    type: string
                required:
                  - day
                  - start
                  - end
          required:
            - source
            - blocks
        attributes:
          type: array
          items:
            type: object
            properties:
              attribute_name:
                type:
                  - object
                  - 'null'
                properties:
                  id:
                    type: string
                    pattern: ^att_[0-9a-f]{32}$
                    description: >-
                      Canonical user attribute ID (att_ followed by 32 lowercase
                      hexadecimal UUID characters).
                    example: att_a1b2c3d4e5f64789a1b2c3d4e5f64789
                  name:
                    type: string
                  type:
                    type: string
                    enum:
                      - DEPARTMENT
                      - TEAM
                      - LEVEL
                      - LOCATION
                      - COUNTRY
                      - CUSTOM
                required:
                  - id
                  - name
                  - type
              values:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      pattern: ^atv_[0-9a-f]{32}$
                      description: >-
                        Canonical user attribute value ID (atv_ followed by 32
                        lowercase hexadecimal UUID characters).
                      example: atv_a1b2c3d4e5f64789a1b2c3d4e5f64789
                    name:
                      type: string
                  required:
                    - id
                    - name
            required:
              - attribute_name
              - values
        modules:
          type: array
          items:
            type: object
            properties:
              module:
                type:
                  - object
                  - 'null'
                properties:
                  id:
                    type: string
                    pattern: ^mod_[0-9a-f]{32}$
                    description: >-
                      Canonical interview module ID (mod_ followed by 32
                      lowercase hexadecimal UUID characters).
                    example: mod_a1b2c3d4e5f64789a1b2c3d4e5f64789
                  name:
                    type: string
                required:
                  - id
                  - name
              training_status:
                type: string
                enum:
                  - TRAINED
                  - SHADOW
                  - REVERSE_SHADOW
              is_paused:
                type: boolean
            required:
              - module
              - training_status
              - is_paused
        created_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp. Responses are normalized to UTC with a Z suffix.
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp. Responses are normalized to UTC with a Z suffix.
        app_url:
          type: string
          format: uri
          description: Link that opens this resource in the ModernLoop app.
      required:
        - id
        - name
        - email
        - title
        - timezone
        - manager_id
        - ats
        - load
        - paused
        - pause_dates
        - work_hours
        - attributes
        - modules
        - created_at
        - updated_at
        - app_url
    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
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API tokens are passed as Bearer tokens.

````