https://api.pantherwatch.appThis page lists available endpoints, request parameters and example responses. Public endpoints can be called directly. Protected endpoints require a Supabase JWT in the Authorization header.
Protected endpoints require:
Authorization: Bearer <your_supabase_jwt>
A 401 is returned if the header is missing/invalid. CORS and OPTIONS requests are allowed.
/api/courses/terms publicReturns a list of available terms.
[
{
"code": "202508",
"description": "Fall 2025"
}
]
curl -s https://api.pantherwatch.app/api/courses/terms
/api/courses/search publicSearches courses. Supply query parameters below. Returns a paged result with data array of course sections.
txt_subject (e.g., CS)txt_courseNumber (e.g., 1301)txt_term (term code, see terms endpoint)txt_level (optional){
"success": true,
"totalCount": 1,
"data": [
{
"termDesc": "Fall 2025",
"courseReferenceNumber": "12345",
"courseNumber": "1301",
"subject": "CS",
"subjectDescription": "Computer Science",
"courseTitle": "Intro to Programming",
"seatsAvailable": 5,
"faculty": [ { "displayName": "Prof. Ada" } ],
"meetingsFaculty": [ { "meetingTime": { "monday": true, "beginTime": "09:00" }} ]
}
],
"pageOffset": 1,
"pageMaxSize": 10
}
curl -s "https://api.pantherwatch.app/api/courses/search?txt_subject=CS&txt_courseNumber=1301&txt_term=202508"
All endpoints below require Authorization: Bearer <token>.
/api/watched-classes protectedReturns your current watch list.
{
"success": true,
"data": [
{
"id": 1,
"crn": "12345",
"term": "202508",
"courseTitle": "Intro to Programming",
"courseNumber": "1301",
"subject": "CS",
"instructor": "Prof. Ada",
"createdAt": "2025-08-30T12:34:56"
}
],
"count": 1
}
curl -s -H "Authorization: Bearer $TOKEN" https://api.pantherwatch.app/api/watched-classes
/api/watched-classes protectedAdd a class to your watch list.
{
"crn": "12345",
"term": "202508",
"courseTitle": "Intro to Programming",
"courseNumber": "1301",
"subject": "CS",
"instructor": "Prof. Ada"
}
{ "success": true, "message": "Class added to watch list", "data": { ... } }
curl -s -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"crn":"12345","term":"202508","courseTitle":"Intro to Programming","courseNumber":"1301","subject":"CS","instructor":"Prof. Ada"}' \
https://api.pantherwatch.app/api/watched-classes
/api/watched-classes?crn=...&term=... protectedRemove a class from your watch list.
{ "success": true, "message": "Class removed from watch list" }
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \
"https://api.pantherwatch.app/api/watched-classes?crn=12345&term=202508"
/api/watched-classes/check?crn=...&term=... protectedCheck if you are watching a specific class.
{ "success": true, "isWatching": true }
/api/watched-classes/count protectedGet the number of classes you are watching.
{ "success": true, "count": 3 }
/api/watched-classes/full-details protectedReturns full course details (CourseData objects) for your watch list.
{
"success": true,
"data": [
{
"termDesc": "Fall 2025",
"courseReferenceNumber": "12345",
"subject": "CS",
"courseNumber": "1301",
"courseTitle": "Intro to Programming",
"seatsAvailable": 5
}
],
"count": 1
}