curl --request GET \
--url https://api.doozy.live/v1/quizzes/{quizId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.doozy.live/v1/quizzes/{quizId}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.doozy.live/v1/quizzes/{quizId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.doozy.live/v1/quizzes/{quizId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.doozy.live/v1/quizzes/{quizId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.doozy.live/v1/quizzes/{quizId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.doozy.live/v1/quizzes/{quizId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"object": "quiz",
"id": "quiz_abc123",
"title": "Product Knowledge Assessment",
"description": "Test your knowledge of our product lineup",
"visibility": "private",
"is_trivia": false,
"status": "active",
"published_version": 1,
"round_count": 3,
"question_count": 15,
"created_at": "2026-01-15T10:30:00.000Z",
"updated_at": "2026-01-20T14:00:00.000Z",
"meta": {
"permissions": {
"can_view_results": true,
"can_clone": true,
"can_manage": true,
"can_edit": true,
"can_pause": true,
"can_resume": true,
"can_delete": true,
"can_activate": true,
"can_manage_admins": true
}
},
"rounds": [
{
"object": "round",
"id": "round_xyz789",
"name": "Geography",
"question_count": 5,
"questions": [
{
"object": "question",
"id": "q_abc123",
"type": "multipleChoice",
"question": "What is the capital of France?",
"attachment": {
"type": "image"
},
"points_weight": 1,
"available_answers": [
{
"id": "ans_a1b2c3",
"answer": "Paris"
}
],
"correct_answers": [
{
"id": "ans_a1b2c3",
"answer": "Paris"
}
],
"explanation": "Paris has been the capital of France since the 10th century.",
"correct_explanation": "Spot on — it's been the capital since 987.",
"incorrect_explanation": "Not quite — Paris has been the capital of France since 987.",
"explanation_format": "markdown"
}
]
}
],
"admin_users": [
"user_abc123",
"user_def456"
],
"delegated_admin_users": [
"user_xyz789"
],
"result_visibility": {
"managers_can_view": true
},
"current_draft_id": "draft_abc123",
"last_published_at": "2026-06-10T09:48:36.000Z",
"last_published_by": {
"user_id": "user_abc123",
"display_name": "John Doe",
"email": "john@example.com",
"slack_user_id": "U1234567890",
"image_token": "img_abc123",
"image_url": {
"image_24": "<string>",
"image_32": "<string>",
"image_48": "<string>",
"image_72": "<string>",
"image_192": "<string>",
"image_512": "<string>",
"image_1024": "<string>",
"image_original": "<string>"
}
},
"draft_has_unpublished_changes": true,
"draft_last_edited_at": "2026-06-10T10:15:00.000Z",
"draft_last_edited_by": {
"user_id": "user_abc123",
"display_name": "John Doe",
"email": "john@example.com",
"slack_user_id": "U1234567890",
"image_token": "img_abc123",
"image_url": {
"image_24": "<string>",
"image_32": "<string>",
"image_48": "<string>",
"image_72": "<string>",
"image_192": "<string>",
"image_512": "<string>",
"image_1024": "<string>",
"image_original": "<string>"
}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}Get quiz details
Retrieve a specific quiz by ID, including all rounds, questions, and answers. Only accessible if the user is an admin or delegated admin of the quiz.
curl --request GET \
--url https://api.doozy.live/v1/quizzes/{quizId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.doozy.live/v1/quizzes/{quizId}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.doozy.live/v1/quizzes/{quizId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.doozy.live/v1/quizzes/{quizId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.doozy.live/v1/quizzes/{quizId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.doozy.live/v1/quizzes/{quizId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.doozy.live/v1/quizzes/{quizId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"object": "quiz",
"id": "quiz_abc123",
"title": "Product Knowledge Assessment",
"description": "Test your knowledge of our product lineup",
"visibility": "private",
"is_trivia": false,
"status": "active",
"published_version": 1,
"round_count": 3,
"question_count": 15,
"created_at": "2026-01-15T10:30:00.000Z",
"updated_at": "2026-01-20T14:00:00.000Z",
"meta": {
"permissions": {
"can_view_results": true,
"can_clone": true,
"can_manage": true,
"can_edit": true,
"can_pause": true,
"can_resume": true,
"can_delete": true,
"can_activate": true,
"can_manage_admins": true
}
},
"rounds": [
{
"object": "round",
"id": "round_xyz789",
"name": "Geography",
"question_count": 5,
"questions": [
{
"object": "question",
"id": "q_abc123",
"type": "multipleChoice",
"question": "What is the capital of France?",
"attachment": {
"type": "image"
},
"points_weight": 1,
"available_answers": [
{
"id": "ans_a1b2c3",
"answer": "Paris"
}
],
"correct_answers": [
{
"id": "ans_a1b2c3",
"answer": "Paris"
}
],
"explanation": "Paris has been the capital of France since the 10th century.",
"correct_explanation": "Spot on — it's been the capital since 987.",
"incorrect_explanation": "Not quite — Paris has been the capital of France since 987.",
"explanation_format": "markdown"
}
]
}
],
"admin_users": [
"user_abc123",
"user_def456"
],
"delegated_admin_users": [
"user_xyz789"
],
"result_visibility": {
"managers_can_view": true
},
"current_draft_id": "draft_abc123",
"last_published_at": "2026-06-10T09:48:36.000Z",
"last_published_by": {
"user_id": "user_abc123",
"display_name": "John Doe",
"email": "john@example.com",
"slack_user_id": "U1234567890",
"image_token": "img_abc123",
"image_url": {
"image_24": "<string>",
"image_32": "<string>",
"image_48": "<string>",
"image_72": "<string>",
"image_192": "<string>",
"image_512": "<string>",
"image_1024": "<string>",
"image_original": "<string>"
}
},
"draft_has_unpublished_changes": true,
"draft_last_edited_at": "2026-06-10T10:15:00.000Z",
"draft_last_edited_by": {
"user_id": "user_abc123",
"display_name": "John Doe",
"email": "john@example.com",
"slack_user_id": "U1234567890",
"image_token": "img_abc123",
"image_url": {
"image_24": "<string>",
"image_32": "<string>",
"image_48": "<string>",
"image_72": "<string>",
"image_192": "<string>",
"image_512": "<string>",
"image_1024": "<string>",
"image_original": "<string>"
}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}Authorizations
API key for authentication. Generate keys in the Doozy dashboard.
Path Parameters
The unique identifier of the quiz
1 - 128^[A-Za-z0-9_-]+$"quiz_abc123"
Response
Quiz details with rounds and questions
Object type identifier
quiz "quiz"
Unique quiz identifier
"quiz_abc123"
Quiz title
"Product Knowledge Assessment"
Quiz description
"Test your knowledge of our product lineup"
Quiz visibility setting
public, public_unlisted, account, private "private"
Whether this is a "trivia" quiz (live leaderboard play) versus a learning quiz.
false
Lifecycle status. draft covers both a never-published draft and a finalized quiz that hasn't yet been put into service (scheduled or activated in a track) — use published_version to tell them apart (0 = never published). active quizzes are in service; archived quizzes are retired. Both draft and active appear under the library's Active tab.
draft, active, archived "active"
Monotonic publish counter, incremented on each publish; 0 before the first publish. Distinguishes a never-published draft from a finalized draft that is still status: "draft" until put into service.
x >= 01
Number of rounds in the quiz
3
Total number of questions across all rounds
15
When the quiz was created (ISO 8601 format)
"2026-01-15T10:30:00.000Z"
When the quiz was last updated (ISO 8601 format)
"2026-01-20T14:00:00.000Z"
What the requesting user can do with this quiz (edit, pause, resume, delete, activate, manage admins). Use these to drive UI affordances.
Show child attributes
Show child attributes
Rounds containing questions
Show child attributes
Show child attributes
Doozy user IDs of members who can edit this quiz and view its results.
["user_abc123", "user_def456"]
Doozy user IDs of admins inherited from a track. Read-only — managed via track admin endpoints.
["user_xyz789"]
Who can see this quiz's results in the People view. Null = owner only. Set via the result-visibility endpoint.
Show child attributes
Show child attributes
Active collaborative draft id. Clients connect their Yjs provider to /quizes/{id}/drafts/{current_draft_id} to participate in realtime editing. Null only for legacy quizzes created before the collaborative editor rollout — those will lazy-mint a draft on first edit.
"draft_abc123"
ISO 8601 timestamp of the most recent publish, or null if never published.
"2026-06-10T09:48:36.000Z"
Profile of the person who last published, or null.
Show child attributes
Show child attributes
True when the current draft has edits that diverge from the published quiz.
true
ISO 8601 timestamp of the last edit to the current draft, or null.
"2026-06-10T10:15:00.000Z"
Profile of the last person to edit the current draft, or null.
Show child attributes
Show child attributes
Was this page helpful?