The Questions API manages ExamPlatform’s centralized question bank — the library of questions that examiners draw from when composing exams. Questions support five answer types, configurable difficulty levels, per-question marks and negative marks, and word-count constraints for written responses. The bank can be populated manually through the API or via bulk import from CSV files, PDF documents, or Google Form exports. All endpoints require at minimum theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Saurabh-07586/examplatform/llms.txt
Use this file to discover all available pages before exploring further.
examiner role.
GET /api/questions
Retrieve a filtered list of questions from the question bank. Requires Examiner or Admin role.Query Parameters
Filter questions by subject (case-insensitive partial match).
Filter by question type. Accepted values:
mcq, multiselect, short_answer, long_answer, image_upload.Filter by difficulty level. Accepted values:
easy, medium, hard.Full-text search across question text and topic fields.
Example Request
Example Response
POST /api/questions
Add a new question to the question bank. Requires Examiner or Admin role.Request Body
The subject this question belongs to (e.g.,
"Physics", "History").The answer type for this question. Accepted values:
mcq, multiselect, short_answer, long_answer, image_upload.The full text of the question as shown to students.
Difficulty classification. Accepted values:
easy, medium, hard.Points awarded for a fully correct answer.
Required for
mcq and multiselect types. Array of option objects, each with key (string) and text (string) fields. Example: [{ "key": "A", "text": "Option text" }].Required for
mcq and multiselect types. Array of option keys that represent correct answers. For mcq, provide exactly one key. For multiselect, provide one or more.Marks deducted for an incorrect answer (when negative marking is enabled on the exam). Defaults to
0.Optional subtopic or chapter tag (e.g.,
"Thermodynamics"). Useful for filtering and analytics.Minimum word count for student responses. Applies to
short_answer and long_answer types only.Maximum word count for student responses. Applies to
short_answer and long_answer types only.Example Request
Example Response
PATCH /api/questions/:id
Update an existing question in the question bank. Send only the fields you want to change; all other fields retain their current values. Requires Examiner or Admin role.Path Parameters
The unique identifier of the question to update.
Request Body
Any subset of the fields accepted byPOST /api/questions.
Example Request
Example Response
DELETE /api/questions/:id
Permanently delete a question from the question bank. Requires Examiner or Admin role.Path Parameters
The unique identifier of the question to delete.
Example Request
Response
Returns204 No Content on success with no response body.
Deleting a question removes it from the question bank and prevents it from being added to future exams. It does not retroactively affect historical exam records or student submissions that already include this question — those records are preserved as-is.
POST /api/questions/import
Bulk-import questions into the question bank from a file. Supported file formats are CSV, PDF (structured question documents), and Google Form exports. The endpoint processes the file asynchronously and returns a summary of imported questions and any rows that could not be parsed. Requires Examiner or Admin role.Request
This endpoint acceptsmultipart/form-data — not application/json.
The file to import. Accepted MIME types:
text/csv, application/pdf, or a Google Form JSON export file.The format of the uploaded file. Accepted values:
csv, pdf, google_form.Subject to assign to all imported questions. All questions in a single import batch are tagged with this subject.