Managing Active Attempts
When participants are actively taking a quiz, certain changes to quizzes, questions, and events are temporarily blocked. This protects participants from unexpected changes during their attempt — like changing the correct answer or time limit while someone is in the middle of answering.
What Gets Blocked?
If there are active (in-progress) attempts, the following actions will return a 409 Conflict error:
Quiz Changes
| Action | When Blocked |
|---|---|
Update time_limit_seconds | Always, if active attempts exist |
Update max_attempts | Always, if active attempts exist |
Update submission_mode | Always, if active attempts exist |
Update client_only | Always, if active attempts exist |
| Delete quiz | Always, if active attempts exist |
| Bind/unbind questions | Always, if active attempts exist |
Fields like title, description, categories, tags, metadata, status, access_type, availability, and shuffle_questions can always be updated, even during active attempts.
Question Changes
| Action | When Blocked |
|---|---|
Update correct_answer | If the quiz using this question has active attempts |
Update points | If the quiz using this question has active attempts |
Update options | If the quiz using this question has active attempts |
| Delete question | If any quiz using this question has active attempts |
Fields like question_title, question_text, category, tags, difficulty_level, explanation, and metadata can always be updated.
Event Changes
| Action | When Blocked |
|---|---|
Update time_limit_seconds | Always, if active attempts exist |
Update max_attempts | Always, if active attempts exist |
Update submission_mode | Always, if active attempts exist |
Update client_only | Always, if active attempts exist |
Update starts_at | Always, if active attempts exist |
Update ends_at | Always, if active attempts exist |
| Delete event | Always, if active attempts exist |
Fields like name, description, and metadata can always be updated.
What Does the 409 Error Look Like?
When a change is blocked, you'll receive:
HTTP Status: 409 Conflict
{
"code": "G-001",
"message": "Cannot modify quiz while there are active (unsubmitted) attempts. Use the force-submit endpoint to close them first.",
"data": null
}
The code is always G-001 for this type of error. The message will tell you which resource (quiz, question, or event) is affected.
How to Resolve It
You have two options:
Option 1: Wait for participants to finish
Active attempts will eventually be submitted — either manually by the participant, or automatically when the time limit expires. Once all attempts are submitted, you can make your changes freely.
Option 2: Force-submit all active attempts
If you need to make changes immediately, you can force-submit all active attempts. This closes every in-progress attempt for the quiz or event, as if each participant had pressed the submit button.
Force-submitting will end all active attempts immediately. Participants who haven't finished answering will have their current progress submitted as-is. This cannot be undone.
Force-Submit Endpoints
Force-Submit Quiz Attempts
Closes all active attempts across the entire quiz (all events, all participants).
POST/api/v1/quizzes/{id}/force-submitRequest:
POST /api/v1/quizzes/{id}/force-submit
Response:
{
"code": "0000",
"message": "Force-submitted 3 attempt(s)",
"data": {
"submittedCount": 3
}
}
The submittedCount tells you how many attempts were closed. If the value is 0, there were no active attempts.
Force-Submit Event Attempts
Closes all active attempts for a specific event only.
POST/api/v1/events/{event_id}/force-submitRequest:
POST /api/v1/events/{event_id}/force-submit
Response:
{
"code": "0000",
"message": "Force-submitted 5 attempt(s)",
"data": {
"submittedCount": 5
}
}
Typical Workflow
Here's a common scenario: you published a quiz and participants are taking it, but you spot a mistake in a question's correct answer.
- Try to update the question — you'll get a
409with codeG-001 - Decide what to do:
- If the quiz session is almost over, just wait for everyone to finish
- If you need to fix it now, force-submit the quiz
- Force-submit via
POST /api/v1/quizzes/{id}/force-submit - Update the question — it will now succeed
- Optionally re-evaluate — use the sync-evaluation endpoint if scoring rules changed
After a force-submit, the leaderboard is automatically scheduled for recomputation. You don't need to trigger it manually.