v1 · stable
API documentation
REST endpoints powering parent, tutor and admin experiences. JSON request and response bodies, bearer-token auth, idempotent writes.
Authentication
curl https://api.tutornest.app/v1/me \ -H "Authorization: Bearer YOUR_TOKEN"All requests except /v1/auth/login require a bearer token. Tokens expire after 24 hours; refresh via /v1/auth/refresh.
Auth
POST
/v1/auth/loginAuthenticate parent / tutor / admin
Body
{ "email": "string", "password": "string" }Response
{ "token": "jwt", "user": { "id": "u_1", "role": "parent" } }POST
/v1/auth/refreshRefresh an access token
Response
{ "token": "jwt" }GET
/v1/meCurrent user profile
Response
{ "id": "u_1", "name": "Emma Johnson", "role": "parent" }Families
GET
/v1/childrenList children for the signed-in parent
Response
[{ "id": "c_1", "name": "Mia", "grade": "Year 5" }]POST
/v1/childrenCreate a child profile
Body
{ "name": "string", "age": 10, "grade": "Year 5", "subject": "Maths" }Response
{ "id": "c_2" }PATCH
/v1/children/{id}Update a child profile
Response
{ "ok": true }DELETE
/v1/children/{id}Archive a child profile
Response
{ "ok": true }Slots
GET
/v1/slotsList visible slots for the signed-in family
Response
[{ "child_id": "c_1", "day": "Mon", "time": "16:00" }]Bookings
POST
/v1/bookingsBook a session in a visible slot
Body
{ "child_id": "c_1", "start_at": "2026-07-01T16:00Z", "duration_min": 60 }Response
{ "id": "s_42", "status": "scheduled" }POST
/v1/bookings/{id}/rescheduleReschedule a session
Body
{ "start_at": "iso8601" }Response
{ "ok": true }POST
/v1/bookings/{id}/cancelCancel a session
Response
{ "ok": true, "credited_minutes": 60 }Packages
GET
/v1/packagesList packages for the family
Response
[{ "id": "pk_1", "minutes_total": 600, "minutes_used": 240 }]POST
/v1/packages/{id}/top-upPurchase additional minutes
Body
{ "minutes": 180 }Response
{ "ok": true, "new_total": 780 }Billing
GET
/v1/invoicesList invoices
Response
[{ "id": "inv_1", "amount": 540, "status": "paid" }]POST
/v1/invoices/{id}/payCharge the saved payment method
Response
{ "ok": true, "status": "paid" }Tutors
GET
/v1/tutors/me/studentsStudents assigned to the signed-in tutor
Response
[{ "child_id": "c_1", "name": "Mia" }]POST
/v1/sessions/{id}/notesWrite session notes
Body
{ "notes": "string" }Response
{ "ok": true }Admin
GET
/v1/admin/familiesList all families
Response
[...]GET
/v1/admin/reports/weeklyWeekly platform metrics
Response
{ "sessions": 120, "revenue": 12450 }Notifications
GET
/v1/notificationsInbox for the signed-in user
Response
[{ "id": "n_1", "title": "Reminder", "read": false }]POST
/v1/notifications/{id}/readMark notification as read
Response
{ "ok": true }