Quick Start
Get up and running with the QuizStop API in minutes.
📝 Documentation in progress - Coming soon!
AI-Powered Question Creation API
Welcome to the QuizStop API - the powerful AI-driven question creation platform designed specifically for AI agents, custom GPTs, and educational integrations.
Advanced AI evaluates student responses through voice, drawing, or text input with intelligent feedback.
Native multilingual support with high-quality TTS voices and speech recognition.
Create questions with images, audio, and multiple interaction modes for engaging learning.
Enterprise-grade security with API key authentication and rate limiting.
This API is specifically designed for OpenAI Custom GPTs, Claude Projects, and other AI agents that need to create educational content programmatically. The intuitive JSON interface and comprehensive documentation make integration seamless.
The QuizStop API supports two authentication methods for maximum compatibility with different AI platforms and integration tools.
Recommended for OpenAI Custom GPTs and direct API calls
Alternative method for systems requiring Basic auth format
Retrieve all quizzes for the authenticated user
/get-quizzes This endpoint requires only authentication headers. No request body needed.
Returns all quizzes with their ID and name:
{
"success": 1,
"message": "Quizzes retrieved successfully",
"data": {
"quizzes": [
{
"bid": 123,
"name": "Math Fundamentals"
},
{
"bid": 124,
"name": "Science Basics"
}
],
"total_count": 2
},
"user": {
"email": "[email protected]",
"name": "John Doe",
"type": "pro"
},
"timestamp": "2023-12-03T12:00:00.000Z"
} Create a new quiz container for organizing questions
/create-quiz | Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Name of the quiz (1-100 characters) |
{
"name": "Advanced Mathematics"
} {
"success": 1,
"message": "Quiz created successfully",
"data": {
"bid": 125,
"name": "Advanced Mathematics"
},
"user": {
"email": "[email protected]",
"name": "John Doe",
"type": "pro"
},
"timestamp": "2023-12-03T12:00:00.000Z"
} Create interactive questions with rich media content
/create-question Each question must be assigned to one of these predefined categories for educational organization:
The API accepts requests in two formats:
For base64-encoded files and simple integrations
Content-Type: application/json For binary file uploads and larger media
Content-Type: multipart/form-data {
"question_text": "What color is the sky?",
"question_type": "multiple_choice",
"category_id": 10,
"bookId": 123,
"voice": "en-US-Standard-C",
"answer_modes": ["voice", "pick_choices"],
"answers": [
{
"text": "Blue",
"is_correct": true,
"image_file": "data:image/png;base64,iVBORw0KGgo..."
},
{
"text": "Red",
"is_correct": false
}
],
"is_open_ended": false,
"wait_time_seconds": 30,
"reward_credits": 2,
"image_file": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"evaluation_mode": "simple"
} For binary file uploads, use multipart/form-data instead of JSON:
POST /create-question
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
------WebKitFormBoundary
Content-Disposition: form-data; name="question_text"
What color is the sky?
------WebKitFormBoundary
Content-Disposition: form-data; name="bookId"
123
------WebKitFormBoundary
Content-Disposition: form-data; name="category_id"
10
------WebKitFormBoundary
Content-Disposition: form-data; name="answers"
[{"text": "Blue", "is_correct": true}, {"text": "Red", "is_correct": false}]
------WebKitFormBoundary
Content-Disposition: form-data; name="main_image"; filename="question.jpg"
Content-Type: image/jpeg
[Binary image data...]
------WebKitFormBoundary-- File Format Support: Both base64-encoded strings (JSON) and binary files (multipart) are supported for image_file, audio_file, and main_image parameters.
| Parameter | Type | Required | Description |
|---|---|---|---|
| question_text | string | Yes | The main question text to be presented to learners |
| bookId | number | Yes | ID of the quiz to add this question to (use Create Quiz endpoint first) |
| category_id | number | Yes | Category ID (1=Motor Skills, 2=Social-Emotional, 3=Vocabulary, 4=Shapes & Colors, 5=Practical Life Skills, 6=Arts & Music, 7=Spatial Awareness, 8=Letters / Phonemic, 9=Numbers & Math, 10=Science & Nature Exploration, 11=Problem-Solving & Logic, 12=Other) |
| voice | string | No | TTS voice ID (default: en-US-Standard-C) |
| answer_modes | array | No | ["voice", "pick_choices", "draw", "type"] |
| answers | array | No | Array of answer options with text, correctness, and optional media |
| image_file | string/binary | No | Base64-encoded image OR binary file for the main question (JPEG, PNG, GIF, WebP) |
| audio_file | string/binary | No | Base64-encoded audio OR binary file for the main question (MP3, WAV, OGG) |
{
"success": 1,
"message": "Question created successfully",
"data": {
"question_id": 12345,
"bookId": 123,
"category_id": 456,
"image_url": "https://storage.quizstop.ai/images/user123/question_12345.jpg",
"created_at": "2023-12-03T12:00:00.000Z"
},
"user": {
"email": "[email protected]",
"name": "John Doe",
"type": "pro"
},
"timestamp": "2023-12-03T12:00:00.000Z"
} This workflow ensures proper organization of your educational content and enables better tracking and management.
/create-video-category Create a new video category to organize your educational content.
{
"name": "Science Videos"
} {
"success": 1,
"message": "Video category created successfully",
"data": {
"category": {
"cid": 123,
"name": "Science Videos",
"courseId": "user123",
"createdMs": 1640995200000
}
}
} /add-video Add a video to a specific category with metadata and settings.
{
"title": "Introduction to Physics",
"yid": "physics-intro-001",
"cid": 1,
"sourceType": "youtube",
"videoUrl": "https://youtube.com/watch?v=abc123",
"mute": false,
"disabled": false,
"isPortrait": false,
"disableQuestions": false
} {
"success": 1,
"message": "Video added successfully",
"data": {
"video": {
"yid": "physics-intro-001",
"title": "Introduction to Physics",
"cid": 1,
"sourceType": "youtube"
}
}
} /delete-video Permanently remove a video from your collection using its video ID.
{
"yid": "physics-intro-001"
} {
"success": 1,
"message": "Video deleted successfully"
} /get-video-categories Retrieve all video categories for organizing your educational content.
{
"success": 1,
"message": "Video categories retrieved successfully",
"data": {
"categories": [
{
"cid": 1,
"name": "Math",
"disabled": false,
"courseId": "course-1",
"createdMs": 1703000000000,
"editedMs": 1703100000000
},
{
"cid": 2,
"name": "Science",
"disabled": false,
"courseId": "course-2",
"createdMs": 1703200000000,
"editedMs": null
}
],
"totalCount": 2
},
"user": {
"email": "[email protected]",
"name": "Test User"
},
"timestamp": "2023-12-03T12:00:00.000Z"
} Note: This endpoint supports both GET and POST methods. Use GET for simple retrieval or POST for consistency with other endpoints.
/get-videos-by-category-id Retrieve all videos within a specific category. Supports both query parameters (GET) and request body (POST).
{
"categoryId": 1
} {
"success": 1,
"message": "Found 2 videos in category 1",
"data": {
"category": {
"id": 1,
"name": "Math"
},
"videos": [
{
"yid": "video1",
"title": "Algebra Basics",
"cid": 1,
"sourceType": "youtube",
"courseId": "course-1",
"createdMs": 1703000000000,
"editedMs": 1703100000000,
"mute": false,
"disabled": false,
"isPortrait": false,
"disableQuestions": false,
"localFilePath": "/path/to/video1",
"thumbnailPath": "/path/to/thumb1",
"thumbnailUrl": "https://example.com/thumb1.jpg",
"videoUrl": "https://example.com/video1.mp4"
},
{
"yid": "video2",
"title": "Geometry Intro",
"cid": 1,
"sourceType": "local",
"courseId": "course-1",
"createdMs": 1703200000000,
"editedMs": null,
"mute": false,
"disabled": false,
"isPortrait": false,
"disableQuestions": false,
"localFilePath": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"videoUrl": null
}
],
"totalCount": 2
},
"user": {
"email": "[email protected]",
"name": "Test User"
},
"timestamp": "2023-12-03T12:00:00.000Z"
} Special Category: Use categoryId: 0 to retrieve videos in the default category. This endpoint also accepts cid as an alternative parameter name.
/get-profiles Retrieve all user profiles associated with your account.
{
"success": 1,
"message": "Profiles retrieved successfully",
"data": {
"profiles": [
{
"id": 123,
"name": "Default Profile",
"credits": 100,
"isDefault": true
},
{
"id": 124,
"name": "Student Profile",
"credits": 50,
"isDefault": false
}
],
"totalCount": 2
}
} /get-profile Retrieve a specific user profile by ID. Supports both GET (with query parameter) and POST (with request body) methods.
{
"id": 123
} {
"success": 1,
"data": {
"profile": {
"id": 123,
"name": "Default Profile",
"credits": 100
}
}
} /get-schools Retrieve all schools associated with your authenticated user account.
{
"success": 1,
"data": {
"schools": [
{
"schoolId": "school-123",
"schoolName": "Lincoln Elementary",
"teachingLanguage": "en"
},
{
"schoolId": "school-456",
"schoolName": "Washington High School",
"teachingLanguage": "es"
}
],
"totalCount": 2
}
} /get-insight Retrieve learning analytics and insights showing question performance data for your users.
{
"success": 1,
"data": {
"insights": [
{
"questionId": "q-123",
"count": 5,
"correct": 3,
"wrong": 2
},
{
"questionId": "q-456",
"count": 8,
"correct": 6,
"wrong": 2
}
],
"totalQuestions": 10
}
} /delete-question Permanently remove a question from your collection using its unique question ID.
{
"id": "question-uuid-123"
} {
"success": 1,
"message": "Question deleted successfully"
} /get-questions-by-quiz-id Retrieve all questions associated with a specific quiz. This endpoint helps you access the complete question set for a quiz, including all metadata, answer options, and configuration settings.
{
"quizId": 123
} {
"success": 1,
"message": "Found 5 questions for quiz 123",
"data": {
"quiz": {
"id": 123,
"name": "European Geography Quiz"
},
"questions": [
{
"id": "q-12345",
"questionText": "What is the capital of France?",
"bookId": 123,
"categoryId": 10,
"imageUrl": "https://storage.quizstop.ai/images/question.jpg",
"audioUrl": "https://storage.quizstop.ai/audio/question.mp3",
"voice": "en-US-Standard-C",
"answerModes": ["voice", "pick_choices"],
"answers": [
{
"text": "Paris",
"is_correct": true
},
{
"text": "London",
"is_correct": false
},
{
"text": "Berlin",
"is_correct": false
}
],
"isOpenEnded": false,
"requireAllCorrect": false,
"isStatement": false,
"waitTimeSeconds": 30,
"rewardCredits": 1,
"evaluationMode": "simple",
"customEvaluationPrompt": null,
"createdAt": "2023-12-03T12:00:00.000Z"
}
],
"totalCount": 5
},
"user": {
"email": "[email protected]",
"name": "John Doe"
},
"timestamp": "2023-12-03T12:00:00.000Z"
} | Field | Type | Description |
|---|---|---|
| quiz.id | integer | The quiz ID that was queried |
| quiz.name | string | Name of the quiz |
| questions | array | Array of question objects belonging to this quiz |
| questions[].id | string | Unique question identifier |
| questions[].questionText | string | The main question text |
| questions[].categoryId | integer | Educational category ID (1-12) |
| questions[].answerModes | array | Allowed answer input methods |
| questions[].answers | array | Multiple choice answer options (if applicable) |
| totalCount | integer | Total number of questions found |
This endpoint is perfect for quiz management dashboards and content review workflows.
Get up and running with the QuizStop API in minutes.
📝 Documentation in progress - Coming soon!
Implementation examples for popular programming languages and platforms.
📝 Documentation in progress - Coming soon!
Understanding API errors and how to handle them.
📝 Documentation in progress - Coming soon!
API usage limits and best practices.
📝 Documentation in progress - Coming soon!