Endpoint reference

Generated from the service’s own OpenAPI schema, so it cannot drift from the routes. A running service serves the same thing interactively at /docs.

Every endpoint is a POST. Data travels in the body rather than the query string, because it carries a session that must not end up in a URL, a proxy log or a browser history.

Authentication

POST /auth/login

Login

Opens a VTOP session.

Credentials are sent here once and never again: the response carries a session that every data endpoint accepts. That matters because VTOP’s login is captcha gated and costs around a dozen requests, so repeating it per call is slow and hard on the portal.

VTOP challenges for an OTP after a period of inactivity or when the login comes from an IP it has not seen — which a server is, by definition. That is a normal outcome rather than a failure, so it returns 200 with status: “otp_required” and a challenge to post to /auth/verify_otp.

Status Codes:
Request Headers:
  • X-API-Key

POST /auth/verify_otp

Verify Otp

Finishes a login that VTOP interrupted with an OTP.

Post the OTP the student received together with the otp_challenge from /auth/login, unchanged. On success the response is the same shape as a login that was never challenged.

Status Codes:
Request Headers:
  • X-API-Key

POST /auth/resend_otp

Resend Otp

Asks VTOP to send a fresh OTP for a challenge already in flight.

Use this when the OTP expired, rather than logging in again — a new login would invalidate this challenge and make the student wait for another captcha-gated attempt. The challenge stays valid, so keep using it.

Status Codes:
Request Headers:
  • X-API-Key

Student data

POST /student/semesters

Get Semesters

Fetches the semesters available to the student.

The ids returned here are what every sem_sub_id parameter on the other endpoints expects, so prefer this over hardcoding semester ids.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/profile

Get Profile

Fetches the student’s profile information using VTOP credentials.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/all_data

Get All Student Data

Fetches comprehensive student data (profile, attendance, timetable) for the specified semester using VTOP credentials.

This endpoint combines multiple data fetches into a single request for efficient initial data loading/caching in frontend applications.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/attendance

Get Attendance

Fetches attendance data for the specified semester using VTOP credentials.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/attendance_detail

Get Attendance Detail

Fetches the per-class register behind one course’s attendance row.

course_id and course_type come from an entry in /student/attendance – its course_id and course_type_code. Neither is the course code.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/capstone_attendance

Get Capstone Attendance

Fetches capstone/SDP attendance for a semester.

Kept apart from /student/attendance because VTOP counts it per semester rather than per course. Students without a capstone get null, which is a normal answer rather than an error.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/timetable

Get Timetable

Fetches the timetable for the specified semester using VTOP credentials.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/marks

Get Marks

Fetches all the marks for the specified semester using VTOP credentials

Status Codes:
Request Headers:
  • X-API-Key

POST /student/exam_schedule

Get Exam Schedule

Fetches all exam schedule for the specified semester using VTOP credentials

Status Codes:
Request Headers:
  • X-API-Key

POST /student/grade_history

Get Grade History

Fetches the student’s grade history (CGPA, credits registered/earned) using VTOP credentials.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/grade_view

Get Grade View

Fetches the graded courses of a semester.

Grades appear only once a semester has ended, so the current semester returns an empty list until results publish. That is expected.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/grade_view_detail

Get Grade View Detail

Fetches one course’s mark breakdown and class statistics.

course_id comes from an entry in /student/grade_view.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/biometric

Get Biometric

Fetches biometric (entry/exit) logs for a specific date using VTOP credentials.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/mentor

Get Mentor

Fetches details of the student’s assigned mentor using VTOP credentials.

Status Codes:
Request Headers:
  • X-API-Key

Calendar

POST /student/calendar

Get Academic Calendar

Fetches the whole semester’s calendar as one date-ordered list of days.

This walks every month, so it is several requests against VTOP. Prefer /student/calendar/month when you only need one.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/calendar/class_groups

Get Class Groups

Fetches the calendar class groups available for a semester.

Class groups are semester dependent, so list them here rather than assuming the “COMB” default the other calendar endpoints use.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/calendar/months

Get Months

Fetches the months the calendar covers for a semester.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/calendar/month

Get Month

Fetches a single month of the calendar, day by day.

Status Codes:
Request Headers:
  • X-API-Key

Faculty

POST /student/faculty

Get All Faculty

Fetches the entire faculty directory.

This is a large response – around 850 records – so cache it rather than calling it per page view.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/faculty/search

Search Faculty

Searches the faculty directory and returns the first match.

The search term is a name or an employee id. An empty model comes back when nothing matches, rather than an error.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/faculty/details

Get Faculty Details

Fetches one faculty member’s profile and weekly office hours.

Status Codes:
Request Headers:
  • X-API-Key

Course page

POST /student/course_page/courses

Get Courses

Fetches the courses in the course page’s dropdown for a semester.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/course_page/slots

Get Slots

Fetches the slots for one course, along with its class rows.

class_id comes from /student/course_page/courses.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/course_page/detail

Get Course Detail

Fetches a course’s lectures and reference material.

erp_id and class_id both come from /student/course_page/slots.

Status Codes:
Request Headers:
  • X-API-Key

Digital assignments

POST /student/digital_assignments

Get Digital Assignments

Fetches every course’s digital assignments for a semester.

VTOP serves the course list and each course’s assignments from separate endpoints, so this fans out one request per course. That is deliberate but not cheap – prefer /student/digital_assignments/course when you already know the class id.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/digital_assignments/course

Get Course Assignments

Fetches one course’s digital assignments by class id.

Status Codes:
Request Headers:
  • X-API-Key

Payments and outing

POST /student/pending_payments

Get Pending Payments

Fetches the list of pending payments.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/payment_receipts

Get Payment Receipts

Fetches the list of pending payments.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/general_outing_requests

Get General Outing Responses

Fetches all the previously submitted Genneral Outing requests.

Status Codes:
Request Headers:
  • X-API-Key

POST /student/weekend_outing_requests

Get Weekend Outing Responses

Fetches all the previously submitted Weekend Outing requests

Status Codes:
Request Headers:
  • X-API-Key