Base URL
All endpoints share a single base URL. Every request you make must begin with this prefix:API Version
The current API version is v3. The version segment is part of every endpoint path — you must include it in every URL you construct. There is no versionless alias.Request Format
Required Headers
Include these headers on every request:POST Requests — JSON Body
When sending a JSON payload in a POST request, add theContent-Type header:
POST Requests — File Upload
When uploading a file (such as a PDF submission), use multipart form data instead:Response Format
All successful responses return JSON. Paginated list endpoints return a standard pagination envelope with the following structure:Endpoints Summary
| Method | Path | Role | Description |
|---|---|---|---|
| GET | /api/v3/admin/homeworks | Admin | List homework classes with submissions |
| GET | /api/v3/admin/homeworks/{id} | Admin | Get single homework with submissions |
| POST | /api/v3/admin/homeworks/grade/{id} | Admin | Grade a homework submission |
| POST | /api/v3/quiz/submit-pdf | Student | Submit PDF quiz answers |
| GET | /api/v3/quiz/pdf-quizzes | Admin | List all PDF quizzes |
| GET | /api/v3/quiz/pdf-quizzes/{id} | Admin | Get single PDF quiz with submissions |
| POST | /api/v3/quiz/pdf-quizzes/grade/{grade_id} | Admin | Grade a quiz submission |

