---
title: "Start Quiz Attempt"
method: POST
path: "/knowledge-quiz/courses/{course_id}/start"
tags: ["knowledge-quiz"]
---

# Start Quiz Attempt

`POST /knowledge-quiz/courses/{course_id}/start`

Start a new quiz attempt for a course.
Generates random variation selections and question order.

## Path parameters

- `course_id` string, required

## Request body

- StartAttemptRequest — Request to start a quiz attempt.
  - `assignment_id` string, required
  - `auto_correct_question_ids` string[], nullable

## Response `200`

Successful Response

- AttemptResponse — Response for a quiz attempt.
  - `id` string, required
  - `quiz_id` string, required
  - `student_id` string, required
  - `course_id` string, required
  - `assignment_id` string, required
  - `status` string, required
  - `score_out_of_20` number, required
  - `correct_count` integer, required
  - `total_questions` integer, required
  - `attempt_number` integer, required
  - `started_at` string, date-time, required
  - `completed_at` string, date-time, nullable
  - `answers` QuizAnswerRecord[]
    - `question_id` string, required
    - `answer_type` 'choice' | 'open'
    - `selected_answer_index` integer, nullable
    - `is_correct` boolean
    - `photo_urls` string[]
    - `grading_status` 'processing' | 'graded' | 'error' | 'rejected', nullable
    - `grading_error` string, nullable
    - `rubric_evaluation` RubricEvaluation — One evaluation pass over a submission against a specific rubric. Multiple may exist per submission attempt (initial AI + teacher overrides); the latest one is canonical.
      - `rubric_id` string, required
      - `author` union, required
        - AIAuthor
          - `type` 'ai'
          - `prompt_id` string, required
        - HumanAuthor
          - `type` 'human'
          - `user_id` string, required
      - `feedback` string, required
      - `questions` RubricQuestionEvaluation[], required
        - `skill_outcomes` SkillOutcome[], required
          - `savoir_faire_id` string, required
          - `outcome` 'correct' | 'partial' | 'wrong' | 'unanswered', required
          - `note` string, required
          - `evidence` EvidenceSpan[], required
            - `excerpt` string, required
            - `span` TextSpan, required — Resolved char offsets into a `SubmissionAttempt.solution_blocks[i].transcribed_text`. Backend computes start/end at write time.
              - …
        - `criterion_outcomes` CriterionOutcome[], required
          - `criterion_index` integer, required
          - `outcome` 'correct' | 'partial' | 'wrong' | 'unanswered', required
          - `note` string, required
          - `evidence` EvidenceSpan[], required
            - `excerpt` string, required
            - `span` TextSpan, required — Resolved char offsets into a `SubmissionAttempt.solution_blocks[i].transcribed_text`. Backend computes start/end at write time.
              - …
        - `errors` FlaggedError[], required
          - `description` string, required
          - `evidence` EvidenceSpan[], required
            - `excerpt` string, required
            - `span` TextSpan, required — Resolved char offsets into a `SubmissionAttempt.solution_blocks[i].transcribed_text`. Backend computes start/end at write time.
              - …
          - `categories` ErrorCategory[], nullable
      - `question_zones` QuestionZone[]
        - `question_indexes` integer[], required
        - `boxes` PhotoBBox[], required
          - `photo_index` integer, required
          - `x` number, required
          - `y` number, required
          - `width` number, required
          - `height` number, required
      - `computed_grade` number, required
      - `max_grade` number, required
      - `evaluated_at` string, date-time, required
    - `points_earned` number
    - `points_max` number

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-03** `ef67479ed898` — 1 info
  - added the optional property `answers/items/rubric_evaluation/anyOf[subschema #1: RubricEvaluation]/questions/items/errors/items/categories` to the response with the `200` status

[Change history](https://skmtc.dev/excellence-ai/apis/excellence-learning/changes/knowledge-quiz/courses/:course_id/start/post.md)

---

[API](https://skmtc.dev/excellence-ai/apis/excellence-learning.md) · [All operations](https://skmtc.dev/excellence-ai/apis/excellence-learning/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/excellence-ai/excellence-learning/revisions/ef67479ed898/schema)
