QuizCore API Reference
Empower your educational applications with our robust Assessment Engine. Programmatically access high-quality shared questions or manage your internal private question bank with total control.
Base URL
https://app.quizcore.org/api/v1Response Format
All responses are returned as application/json.
Postman Documentation
Prefer using Postman? We have a comprehensive collection with pre-configured requests and environments.
Authentication
The QuizCore API uses API Keys to authenticate requests. You can view and manage your API keys in the Organization Settings > API Keys section of your dashboard.
# Authenticate using the Bearer token strategy
Authorization: Bearer your_api_key_hereSecurity Warning
Your API keys carry significant privileges. Keep them secure and never expose them in client-side code (browsers, mobile apps). Always perform API requests from your backend server.
Rate Limits
We enforce rate limits to ensure stability for all customers. Limits are applied based on your organization and are tracked across different time windows.
| Header | Description |
|---|---|
| X-RateLimit-Limit | Total requests allowed within the current window. |
| X-RateLimit-Remaining | Number of requests remaining in the current window. |
| Retry-After | The number of seconds to wait before making a new request. |
Private Question Vault
/v1/private-questionsRetrieve questions owned by your organization.
Supports: per_page, topic_id, difficulty, question_type.
/v1/private-questions/:idGet full details for a single private question.
/v1/private-questionsAdd a new question to your organization's private vault. Questions are automatically assigned to your organization ID.
{
"topic_id": 142,
"body": "What is the capital of Nigeria?",
"question_type": "mcq",
"options": ["Lagos", "Abuja", "Kano", "Ibadan"],
"difficulty": "easy",
"correct_answer": "Abuja",
"solution_summary": "Abuja became capital in 1991."
}/v1/private-questions/:idUpdate an existing private question. You can partially update fields like body, options, or difficulty.
/v1/private-questions/:idPermanently remove a private question. This action cannot be undone.
Taxonomy
Browse the shared public taxonomy or manage your organization's private curriculum structure (levels, subjects, topics) via these endpoints.
Public Taxonomy (Read-Only)
/v1/taxonomy/treeReturns the full nested taxonomy tree (levels → subjects → topics) for the shared/global question bank.
Params: per_page (default 10, max 50), page
/v1/taxonomy/levelsList all public levels.
Params: per_page
/v1/taxonomy/subjectsList public subjects.
Params: level_id, per_page
/v1/taxonomy/topicsList public topics.
Params: subject_id, per_page
Private Taxonomy (CRUD)
Manage your organization's own curriculum structure. These endpoints mirror the public taxonomy paths but operate on your private data with full CRUD support.
/v1/private-taxonomy/treeReturns the full nested tree of your organization's private taxonomy. Useful for building navigation menus or curriculum maps.
Params: per_page (default 10, max 50), page
/v1/private-taxonomy/levelsList organization levels.
/v1/private-taxonomy/levelsCreate a new level.
/v1/private-taxonomy/levels/:idUpdate a level.
/v1/private-taxonomy/levels/:idDelete a level (must have no subjects).
{
"name": "Senior Secondary 1",
"sort_order": 1
}/v1/private-taxonomy/subjectsList subjects. Supports filtering by level_id.
/v1/private-taxonomy/subjectsCreate a subject under a specific level.
/v1/private-taxonomy/subjects/:idUpdate a subject.
/v1/private-taxonomy/subjects/:idDelete a subject (must have no topics).
{
"name": "Mathematics",
"level_id": 12
}/v1/private-taxonomy/topicsList topics. Supports filtering by subject_id.
/v1/private-taxonomy/topicsCreate a topic under a subject.
/v1/private-taxonomy/topics/:idUpdate a topic.
/v1/private-taxonomy/topics/:idDelete a topic (must have no questions).
{
"name": "Trigonometry",
"subject_id": 45
}Error Handling
Standard HTTP response codes are used to indicate the success or failure of an API request.
Success
Request completed successfully.
Bad Request
Missing required parameters.
Unauthorized
Invalid or missing API key.
Forbidden
Monthly cap reached or no plan access.
Not Found
Resource does not exist.
Validation failed
Input data formatting errors.
Too Many Requests
Slow down! Rate limit exceeded.
