Skip to main content
Kralis provides a protected integration for Klapp clients. Klapp is a Swiss school communication and management platform used by Kralis schools to connect parents, teachers, students, and the school. Kralis supplies Klapp with school master data and academic structure so the communication experience can use the school’s existing records. Kralis.app links users to Klapp Chat. This page documents the separate server-to-server API that shares Kralis school data with Klapp. This is a Klapp-compatible pull API: Klapp retrieves school master data from Kralis for synchronization. It does not write students, classes, teachers, or academic years back to Kralis.

Base URL and authentication

The API is hosted at https://api.kralis.app. Every school-scoped data request uses the school acronym in the path:
For example:
Send the API key in the Authorization header on every school-scoped request:
The same header format is used for a global API key where one has been issued. Keep the key server-side. Never place it in a browser URL, client-side bundle, source repository, or log. The public integration index does not require authentication. The school-scoped router index and all school data endpoints are protected. The school-scoped API provides:
  • 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

This public index returns the API base path, the school-scoped path template, and a demo path example.

School master data

Returns 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

Returns every Kralis academic year as a Klapp semester:
An example collection response:
The id is the Kralis Year UUID and is used as semester_id in other requests.

Classes

Returns class records with 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

Student rows include 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

No 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_ids and teacher_ids included on class records likewise reference active users.
  • guid and student_id are the same stable Kralis Student UUID. teacher_id is the stable Kralis Teacher UUID.
  • student_username is the stable Kralis username. These are Kralis identifiers, not Klapp-generated IDs.
  • semester_id is a Kralis academic Year UUID, not a Term UUID.
  • last_change is 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-10 as 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.
The school-scoped endpoints require a school API key, a global API key, or authorized administration. Keys should be scoped to the intended school and rotated or revoked when no longer needed. For an initial synchronization, use the school master-data endpoint to retrieve the school structure and its related records in one response. For recurring or targeted synchronization, use the semesters, classes, students, and teachers endpoints independently so Klapp can refresh only the data it needs.