Base URL and authentication
The API is hosted athttps://api.kralis.app. Every school-scoped data request uses the school acronym in the path:
Authorization header on every school-scoped request:
- school details;
- semesters, represented by Kralis academic years;
- classes;
- students; and
- teachers.
Route overview
In the Klapp contract, a “semester” is the Kralis academic
Year. A semester_id is therefore a Kralis Year UUID, not a Kralis Term UUID.
The school-scoped base path also exposes a browsable router index:
Endpoint details
Integration index
School master data
school_id, school_acronym, school_name, the active semester ID, the selected semester ID, and arrays of semesters, classes, teachers, and students. Omitting semester_id uses the school’s current year. Students and class student_ids are taken from active students’ Annual records for the selected year. This master-data bundle is useful when Klapp needs to synchronize a school in one request.
The two semester fields have distinct meanings:
Example response:
Semesters
id is the Kralis Year UUID and is used as semester_id in other requests.
Classes
class_id, school_year, name, full_name, teacher_ids, student_ids, and last_change. semester_id identifies the Year whose Annual records supply the active students for each class. Teacher IDs represent the current teacher-class assignments.
Class students
guid, student_id, student_username, first_name, last_name, other_names, full_name, date_of_birth, current_class_id, semester_class_id, and last_change. The endpoint returns active students with an Annual for the selected Year and class. current_class_id identifies the student’s live class, while semester_class_id identifies the class from the selected academic context.
Student response:
Class teachers
semester_id is required because Kralis represents teacher-class assignments as school relationships rather than historical Year-level assignments. Teacher rows include teacher_id, name fields, function, email, class_ids, and last_change. Extra query parameters are ignored.
Teacher response:
Data behavior
- Student and teacher collections include only active users. The
student_idsandteacher_idsincluded on class records likewise reference active users. guidandstudent_idare the same stable Kralis Student UUID.teacher_idis the stable Kralis Teacher UUID.student_usernameis the stable Kralis username. These are Kralis identifiers, not Klapp-generated IDs.semester_idis a Kralis academic Year UUID, not a Term UUID.last_changeis an ISO 8601 UTC timestamp based on the Kralis record’s most recent update. For students, it also reflects changes to their selected-year academic membership.- Classes and class-students require
semester_id; class-teachers does not. - Student membership is year-scoped through Annual records. Annual stores the student’s class placement for that academic year, while the related Student supplies the stable identity and profile fields.
- Teacher-class membership is current/global because Kralis does not store historical teacher assignments by Year.
- If a student has no date of birth in Kralis, the API returns
2010-10-10as a compatibility fallback. This fallback is response-only and never updates Kralis. - API responses are cached for ten minutes.
- The API is read-only. It does not create students, classes, teachers, or academic years in Kralis.

