---
title: "Update an interview module"
method: PATCH
path: "/v1/interview-modules/{moduleId}"
tags: ["Interview Module"]
---

# Update an interview module

`PATCH /v1/interview-modules/{moduleId}`

Updates the supplied interview-module configuration, including training requirements, graduation rules, weekly limit, and fast-track setting. Omitted fields are preserved, while supplied approver lists replace the complete list for that graduation step. Null weekly_interview_limit means unlimited.

## Path parameters

- `moduleId` string, required — 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.

## Request body

- InterviewModulePatch
  - `name` string — Module name. Required on create; PATCH replaces it when supplied.
  - `shadows_required` integer — Required shadow interviews. Required on create; PATCH replaces it when supplied.
  - `reverse_shadows_required` integer — Required reverse-shadow interviews. Required on create; PATCH replaces it when supplied.
  - `graduate_from_shadow_approval_type` 'AUTOMATIC' | 'SCHEDULER' | 'CUSTOM' — Approval mode for graduating from shadow training. Required on create; PATCH replaces it when supplied.
  - `graduate_from_shadow_custom_approvers` string[] — Complete approver-role list for shadow graduation. Required on create; PATCH replaces the list when supplied.
  - `graduate_from_reverse_shadow_approval_type` 'AUTOMATIC' | 'SCHEDULER' | 'CUSTOM' — Approval mode for graduating from reverse-shadow training. Required on create; PATCH replaces it when supplied.
  - `graduate_from_reverse_shadow_custom_approvers` string[] — Complete approver-role list for reverse-shadow graduation. Required on create; PATCH replaces the list when supplied.
  - `weekly_interview_limit` integer, nullable — Maximum interviews per week; null means unlimited.
  - `should_fast_track_training` boolean — Enables fast-track training when true. On PATCH, omission preserves the current value.

## Response `200`

Success

- InterviewModule
  - `id` string, required — Canonical interview module ID (mod_ followed by 32 lowercase hexadecimal UUID characters).
  - `name` string, required
  - `shadows_required` integer, required
  - `reverse_shadows_required` integer, required
  - `graduation_approval` 'AUTOMATIC' | 'SCHEDULER' | 'CUSTOM', required
  - `weekly_interview_limit` integer, nullable, required — Maximum interviews per week; null means unlimited.
  - `member_counts` InterviewModuleMemberCounts, required
    - `members_trained_count` integer, required
    - `members_in_shadow_count` integer, required
    - `members_in_reverse_shadow_count` integer, required
  - `created_at` string, date-time, required — ISO 8601 timestamp.
  - `updated_at` string, date-time, required — ISO 8601 timestamp.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `409` — Conflict
- `410` — Gone
- `500` — Internal error

---

[API](https://skmtc.net/modernloop/apis/modernloop-platform-api.md) · [All operations](https://skmtc.net/modernloop/apis/modernloop-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/modernloop/modernloop-platform-api/versions/33a0f9f44e4c/schema)
