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

# Update an interview module member

> Partially updates a member's training requirements, status, pause state, timestamps, and weekly limit. Changes to required counts can advance training through the module's configured approval rules; setting training_status to TRAINED marks the member trained directly.

<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 patch /v1/interview-modules/{moduleId}/members/{memberId}
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: Application
  - name: Candidate
  - name: Interview Event
  - name: Interview Module
  - name: Interviewer
  - name: Job
  - name: Job Stage
  - name: Organization
  - name: Schedule
  - name: Scheduling Task
  - name: Task Queue
  - name: Template
paths:
  /v1/interview-modules/{moduleId}/members/{memberId}:
    patch:
      tags:
        - Interview Module
      summary: Update an interview module member
      description: >-
        Partially updates a member's training requirements, status, pause state,
        timestamps, and weekly limit. Changes to required counts can advance
        training through the module's configured approval rules; setting
        training_status to TRAINED marks the member trained directly.
      operationId: updateInterviewModuleMember
      parameters:
        - schema:
            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
          required: true
          name: moduleId
          in: path
        - schema:
            type: string
            pattern: >-
              ^(?:emp_)?(?:[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 employee 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: emp_a1b2c3d4e5f64789a1b2c3d4e5f64789
          required: true
          name: memberId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InterviewModuleMemberPatch'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InterviewModuleMember'
        '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:
    InterviewModuleMemberPatch:
      type: object
      properties:
        training_status:
          type: string
          enum:
            - TRAINED
          description: >-
            Administratively marks the member TRAINED. Earlier training phases
            can only change through the module's count-driven and approval-gated
            graduation rules.
          example: TRAINED
        paused_until:
          type: string
          format: date-time
          description: >-
            Pauses the member until this timestamp. Cannot be combined with
            another pause field.
          example: '2026-08-01T09:00:00.000Z'
        pause_indefinitely:
          type: boolean
          enum:
            - true
          description: >-
            Pauses the member indefinitely. Cannot be combined with another
            pause field.
          example: true
        clear_pause:
          type: boolean
          enum:
            - true
          description: >-
            Clears the member's pause. Cannot be combined with another pause
            field.
          example: true
        shadows_required:
          type: integer
          minimum: 0
          maximum: 20
          description: >-
            Sets the member-specific required shadow interview count from 0
            through 20.
          example: 2
        reverse_shadows_required:
          type: integer
          minimum: 0
          maximum: 20
          description: >-
            Sets the member-specific required reverse-shadow interview count
            from 0 through 20.
          example: 1
        shadow_or_reverse_shadow_increment_by:
          type: integer
          description: >-
            Adjusts the required count for the member's current SHADOW or
            REVERSE_SHADOW phase. May be negative.
          example: 1
        weekly_interview_limit_override:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 10
          description: >-
            Sets the member-specific weekly interview limit override from 1
            through 10; null means unlimited.
          example: 4
        trained_at:
          type: string
          format: date-time
          description: >-
            Sets the member's trained timestamp. Cannot be combined with
            clear_trained_at.
          example: '2026-07-15T14:30:00.000Z'
        clear_trained_at:
          type: boolean
          enum:
            - true
          description: >-
            Clears the member's trained timestamp. Cannot be combined with
            trained_at.
          example: true
        added_to_module_at:
          type: string
          format: date-time
          description: >-
            Overrides the timestamp when the interviewer was added to the
            module.
          example: '2026-06-01T12:00:00.000Z'
      additionalProperties: false
      description: >-
        A partial interview-module membership update. Include at least one
        field. Unknown fields are rejected.
      example:
        shadows_required: 2
        reverse_shadows_required: 1
        weekly_interview_limit_override: 4
    InterviewModuleMember:
      type: object
      properties:
        employee:
          type: object
          properties:
            id:
              type: string
              pattern: ^emp_[0-9a-f]{32}$
              description: >-
                Canonical employee ID (emp_ followed by 32 lowercase hexadecimal
                UUID characters).
              example: emp_a1b2c3d4e5f64789a1b2c3d4e5f64789
            name:
              type: string
          required:
            - id
            - name
        training_status:
          type: string
          enum:
            - TRAINED
            - SHADOW
            - REVERSE_SHADOW
        next_status:
          type: string
          enum:
            - TRAINED
            - SHADOW
            - REVERSE_SHADOW
        paused:
          type: object
          properties:
            is_paused:
              type: boolean
            until:
              type:
                - string
                - 'null'
              format: date-time
              description: ISO 8601 timestamp.
          required:
            - is_paused
            - until
        shadow_started_at:
          type:
            - string
            - 'null'
          format: date-time
          description: ISO 8601 timestamp.
        reverse_shadow_started_at:
          type:
            - string
            - 'null'
          format: date-time
          description: ISO 8601 timestamp.
        trained_at:
          type:
            - string
            - 'null'
          format: date-time
          description: ISO 8601 timestamp.
        time_to_train:
          type: integer
          minimum: 0
        weekly_interview_limit_override:
          type:
            - integer
            - 'null'
          description: Member-specific maximum interviews per week; null means unlimited.
        progress_percentage:
          type: integer
          minimum: 0
          maximum: 100
        training_progress:
          $ref: '#/components/schemas/InterviewModuleTrainingProgress'
      required:
        - employee
        - training_status
        - next_status
        - paused
        - shadow_started_at
        - reverse_shadow_started_at
        - trained_at
        - time_to_train
        - weekly_interview_limit_override
        - progress_percentage
        - training_progress
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - UNAUTHENTICATED
                - API_ACCESS_DISABLED
                - SCOPE_MISSING
                - INSUFFICIENT_SCOPE
                - VALIDATION_FAILED
                - INVALID_CURSOR
                - PAYLOAD_TOO_LARGE
                - NOT_FOUND
                - NOT_FOUND_MAY_BE_SYNCING
                - CANDIDATE_ANONYMIZED
                - TASK_STAGE_NOT_SCHEDULABLE
                - DUPLICATE_REQUEST_OPEN
                - IDEMPOTENCY_KEY_REQUIRED
                - IDEMPOTENCY_KEY_REUSED
                - PREVIEW_EXPIRED
                - PREVIEW_STALE
                - RATE_LIMITED
                - CONFLICT
                - NOT_IMPLEMENTED
                - INTERNAL
                - UPSTREAM_TIMEOUT
            message:
              type: string
            docs_url:
              type: string
              format: uri
          required:
            - code
            - message
      required:
        - error
    InterviewModuleTrainingProgress:
      type: object
      properties:
        completed_as_shadow:
          type: integer
        completed_as_reverse_shadow:
          type: integer
        upcoming_as_shadow:
          type: integer
        upcoming_as_reverse_shadow:
          type: integer
        manual_completed_as_shadow:
          type: integer
        manual_completed_as_reverse_shadow:
          type: integer
        all_interviews_as_shadow:
          type: integer
        all_interviews_as_reverse_shadow:
          type: integer
        shadows_required:
          type: integer
        reverse_shadows_required:
          type: integer
        needs_approval:
          type: boolean
        is_fast_track_training_enabled:
          type: boolean
      required:
        - completed_as_shadow
        - completed_as_reverse_shadow
        - upcoming_as_shadow
        - upcoming_as_reverse_shadow
        - manual_completed_as_shadow
        - manual_completed_as_reverse_shadow
        - all_interviews_as_shadow
        - all_interviews_as_reverse_shadow
        - shadows_required
        - reverse_shadows_required
        - needs_approval
        - is_fast_track_training_enabled
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API tokens are passed as Bearer tokens.

````