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/login
Authenticate parent / tutor / admin
Body
{ "email": "string", "password": "string" }
Response
{ "token": "jwt", "user": { "id": "u_1", "role": "parent" } }
POST/v1/auth/refresh
Refresh an access token
Response
{ "token": "jwt" }
GET/v1/me
Current user profile
Response
{ "id": "u_1", "name": "Emma Johnson", "role": "parent" }

Families

GET/v1/children
List children for the signed-in parent
Response
[{ "id": "c_1", "name": "Mia", "grade": "Year 5" }]
POST/v1/children
Create 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/slots
List visible slots for the signed-in family
Response
[{ "child_id": "c_1", "day": "Mon", "time": "16:00" }]

Bookings

POST/v1/bookings
Book 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}/reschedule
Reschedule a session
Body
{ "start_at": "iso8601" }
Response
{ "ok": true }
POST/v1/bookings/{id}/cancel
Cancel a session
Response
{ "ok": true, "credited_minutes": 60 }

Packages

GET/v1/packages
List packages for the family
Response
[{ "id": "pk_1", "minutes_total": 600, "minutes_used": 240 }]
POST/v1/packages/{id}/top-up
Purchase additional minutes
Body
{ "minutes": 180 }
Response
{ "ok": true, "new_total": 780 }

Billing

GET/v1/invoices
List invoices
Response
[{ "id": "inv_1", "amount": 540, "status": "paid" }]
POST/v1/invoices/{id}/pay
Charge the saved payment method
Response
{ "ok": true, "status": "paid" }

Tutors

GET/v1/tutors/me/students
Students assigned to the signed-in tutor
Response
[{ "child_id": "c_1", "name": "Mia" }]
POST/v1/sessions/{id}/notes
Write session notes
Body
{ "notes": "string" }
Response
{ "ok": true }

Admin

GET/v1/admin/families
List all families
Response
[...]
GET/v1/admin/reports/weekly
Weekly platform metrics
Response
{ "sessions": 120, "revenue": 12450 }

Notifications

GET/v1/notifications
Inbox for the signed-in user
Response
[{ "id": "n_1", "title": "Reminder", "read": false }]
POST/v1/notifications/{id}/read
Mark notification as read
Response
{ "ok": true }