API
An API for your academy data, with read and write endpoints plus webhooks, available on the Multi-site plan.
Create a key
- Owner dashboard, open API.
- Give the key a name and create it. Copy it straight away, it is shown only once.
- Keep it secret. Revoke a key any time and apps using it stop working.
Authentication
Send your key as a bearer token on every request. The base URL is https://tutorroom.app/api/v1.
curl https://tutorroom.app/api/v1/students \
-H "Authorization: Bearer dh_live_your_key_here"Read endpoints
GET /api/v1/studentsactive and past students.GET /api/v1/classesclasses and their schedule.GET /api/v1/paymentsdues and payments. Filter with?status=paid|pending|overdue.GET /api/v1/attendanceattendance records. Filter with?from=YYYY-MM-DD&to=YYYY-MM-DD(defaults to the last 30 days).
Write endpoints
Create a student or a due. Both return the created record.
curl https://tutorroom.app/api/v1/students \
-H "Authorization: Bearer dh_live_…" \
-H "Content-Type: application/json" \
-d '{"name":"Zara Bello","level":"Year 6","subjects":["Maths"]}'
curl https://tutorroom.app/api/v1/payments \
-H "Authorization: Bearer dh_live_…" \
-H "Content-Type: application/json" \
-d '{"studentId":"…","amountCents":8500,"description":"June tuition"}'Webhooks
Add an endpoint in the owner dashboard (API tab). We POST a signed JSON body on student.created, payment.created, and payment.paid. Verify the X-TutorRoom-Signature header (HMAC-SHA256 of the raw body using your signing secret).
{ "event": "payment.paid", "data": { "id": "…", "amountCents": 8500 }, "sentAt": "…" }Responses
Every endpoint returns JSON with a data array. Amounts are in minor units (pence or kobo).
{
"data": [
{
"id": "…",
"name": "Zara Bello",
"level": "Year 6",
"status": "active",
"monthlyFeeCents": 8500
}
]
}Limits and errors
- Around 120 requests per minute per key.
401missing or invalid key,403plan does not include API access,429rate limited.