/quizzes
Minimal role: Public
Quiz hub
Published quizzes with the viewer's per-quiz state, the filter counts and the cross-quiz scoreboard.
/quizzes/scoreboard
Minimal role: Public
Quiz scoreboard
Score per user across every published quiz, counting each member's best attempt per quiz. Cached about 15 seconds.
/quizzes/new
Minimal role: Member
New quiz form
The create form behind the New quiz button.
/quizzes/create
Minimal role: Member
Create a quiz
Create a draft quiz. Add its questions afterwards, then publish it.
/quizzes/import
Minimal role: Member
Import a quiz document
Create a complete quiz - metadata, settings, every question and every option - from one JSON document. Capped at 100 questions and 12 options per question.
/quizzes/{slug}
Minimal role: Public
Quiz detail
One quiz with its stats, its leaderboard, its comments and the viewer's own state. A draft is visible only to its owner and to administrators.
/quizzes/{slug}/export
Minimal role: Public
Export a quiz
The full quiz document, the exact inverse of the import endpoint. The owner gets every correct answer; everyone else gets the questions without the key.
/quizzes/{slug}/leaderboard
Minimal role: Public
Quiz leaderboard
Top completed attempts on one quiz, best percentage first.
/quizzes/{slug}/edit
Minimal role: Member
Quiz builder
The owner's builder page: the quiz, every question with its answer key, the question-kind catalogue and the live pre-publish checklist.
/quizzes/edit/{slug}
Minimal role: Member
Edit a quiz
Change the title, description and settings of a DRAFT quiz. 400 once published.
/quizzes/{slug}/publish
Minimal role: Member
Publish a quiz
IRREVERSIBLE. Freezes the quiz, its questions and its options forever. Refuses with the validation problems when the quiz is incomplete.
/quizzes/delete/{slug}
Minimal role: Member
Delete a quiz
Owner or administrator. Removes the quiz with its questions, options, attempts and answers. The only operation left on a published quiz.
/quizzes/{slug}/questions
Minimal role: Member
Add a question
Append one question with its options to a DRAFT quiz. 400 once published.
/quizzes/{slug}/questions/{question_uid}
Minimal role: Member
Edit a question
Replace one question and its options on a DRAFT quiz. 400 once published.
/quizzes/{slug}/questions/{question_uid}/delete
Minimal role: Member
Delete a question
Remove one question and its options from a DRAFT quiz, then renumber.
/quizzes/{slug}/questions/reorder
Minimal role: Member
Reorder the questions
Set a new question order on a DRAFT quiz. Every uid must be listed exactly once.
/quizzes/{slug}/attempts
Minimal role: Member
Start or resume an attempt
Returns the member's single in-progress attempt, creating it when there is none. The question order and one blank answer row per question are materialized at start.
/quizzes/{slug}/attempts/{attempt_uid}
Minimal role: Member
Read an attempt
The attempt with its questions in play order. Correct answers are withheld until a question is answered and the quiz reveals answers.
/quizzes/{slug}/attempts/{attempt_uid}/answer
Minimal role: Member
Answer a question
Grade and record one answer. Each question can be answered exactly once; a second submit answers 400 and credits nothing.
/quizzes/{slug}/attempts/{attempt_uid}/finish
Minimal role: Member
Finish an attempt
Close the attempt and compute the final score from its answer rows. A second finish returns the same result and awards nothing again.
/quizzes/{slug}/attempts/{attempt_uid}/results
Minimal role: Member
Attempt results
The result of one attempt: score, percentage, pass verdict, and the per-question review when the author allowed it. Attempt owner or admin.