---
title: "Get Schedule Audit"
method: GET
path: "/schedules/{schedule_id}/audit/{index}"
---

# Get Schedule Audit

`GET /schedules/{schedule_id}/audit/{index}`

Independently audit one previously generated schedule and explain its objectives.

Args:
    schedule_id: Unique identifier of the containing generation session.
    index: Zero-based index in that session's retained schedules.

Returns:
    Hard-rule validity, violations, workload and resource summaries, objective
    scores, and preference outcomes for the selected model.

Raises:
    HTTPException: Status 404 for an unknown session or schedule index, or status
        422 if scheduler initialization fails. Executor failures propagate as
        server errors.

Behavior:
    The original decoded model is audited rather than its serialized response.
    Audit execution is dispatched to the shared executor while holding the same
    generation lock used by enumeration and diagnosis. No solver state is
    advanced, and successful access refreshes the session TTL.

## Path parameters

- `schedule_id` string, required
- `index` integer, required

## Response `200`

Successful Response

- ScheduleAuditResponse — Independent hard-rule verification and preference explanation for one schedule. Fields: schedule_id: Session containing the audited schedule. index: Zero-based generated-schedule index. is_valid: Whether independent auditing found no hard-rule violations. constraint_violations: All hard-rule violations detected by the auditor. faculty_workloads: Workload summaries for every configured faculty member. resource_usage: Usage and collision summaries for shared resources. objective_scores: Scores for enabled optimization objectives. preference_outcomes: Per-assignment preference explanations.
  - `schedule_id` string, required
  - `index` integer, required
  - `is_valid` boolean, required
  - `constraint_violations` ConstraintDiagnosticResponse[], required
    - `kind` string, required
    - `subjects` string[], required
    - `message` string, required
    - `code` string, nullable
    - `locations` string[]
  - `faculty_workloads` FacultyWorkloadDiagnosticResponse[], required
    - `faculty` string, required
    - `credits` integer, required
    - `minimum_credits` integer, required
    - `maximum_credits` integer, required
    - `teaching_days` string[], required
    - `maximum_days` integer, required
    - `distinct_courses` integer, required
    - `unique_course_limit` integer, required
    - `mandatory_days_satisfied` boolean, required
    - `locations` string[], required
  - `resource_usage` ResourceUsageDiagnosticResponse[], required
    - `kind` string, required
    - `resource` string, required
    - `assignments` string[], required
    - `collisions` ConstraintDiagnosticResponse[], required
      - `kind` string, required
      - `subjects` string[], required
      - `message` string, required
      - `code` string, nullable
      - `locations` string[]
    - `capacity` integer, nullable, required
    - `maximum_assigned_section_capacity` integer, required
    - `capacity_violations` ConstraintDiagnosticResponse[], required
      - `kind` string, required
      - `subjects` string[], required
      - `message` string, required
      - `code` string, nullable
      - `locations` string[]
  - `objective_scores` ObjectiveScoreDiagnosticResponse[], required
    - `objective` string, required
    - `score` integer, required
    - `independent_upper_bound` integer, required
    - `message` string, required
  - `preference_outcomes` ConstraintDiagnosticResponse[], required
    - `kind` string, required
    - `subjects` string[], required
    - `message` string, required
    - `code` string, nullable
    - `locations` string[]

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/mucsci/apis/course-scheduler-api.md) · [All operations](https://skmtc.net/mucsci/apis/course-scheduler-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mucsci/course-scheduler-api/revisions/f728bfcee693/schema)
