KalHR logo

API reference

API reference

Every endpoint an API key can call, the access each one needs, and the conventions they share.

The public API reads your organisation's people, leave, attendance and payroll. Each page in this reference describes one kind of record: its endpoints, their filters, an example answer, and what every field means.

Endpoints

EndpointReturnsKey needs
GET v1/integrations/api-keys/meThe key, its organisation and its permissionsAny key
GET v1/company/listYour organisation's companiesEmployee Management: View
GET v1/employee/listEmployees, a page at a timeEmployee Management: View
GET v1/employee/{id}One employee's full recordEmployee Management: View
GET v1/department/listDepartments, a page at a timeEmployee Management: View
GET v1/department/{id}One departmentEmployee Management: View
GET v1/leaverequest/listLeave requests, a page at a timeLeave: View
GET v1/leaverequest/details/{id}One leave requestLeave: View
GET v1/leavebalance/get-leave-balanceOne employee's balance of one leave typeLeave: View
GET v1/leavetype/listLeave types, a page at a timeLeave: View
GET v1/attendance/listAttendance records, a page at a timeAttendance: View
GET v1/attendance/report/{id}One day's absence report totalsAttendance: View
GET v1/attendance/exceptionsExcused days, a page at a timeAttendance: View
GET v1/attendance/exceptions/{id}One excused day or rangeAttendance: View
GET v1/attendance/holidaysYour organisation's own holidays for a yearAttendance: View
GET v1/attendance/holidays/publicPublic holidays for a yearAttendance: View
GET v1/payroll/schedule/listA company's payroll runsPayroll: View
GET v1/payroll/schedule/{id}One payroll run and its totalsPayroll: View
GET v1/payroll/schedule/{id}/salariesEach employee's pay in a runPayroll: View

"Key needs" is the access an administrator gives the key when creating it. See Authentication.

Any other KalHR endpoint answers 403 to a key. More are being added; the changelog says when.

Conventions

Every endpoint follows the same rules, described once in Requests and responses:

  • Requests go to https://api.kalhr.com/ with the key in Authorization: Bearer ….
  • Every answer is the envelope isSuccessful, code, message, data. Check isSuccessful.
  • Fields with no value are left out.
  • Lists are paged with PageNumber and PageSize, and answer with totalPages.
  • Times are UTC; calendar dates come as midnight.
  • A key only ever sees its own organisation's records.

The examples in this reference show the whole answer, envelope included. Ids in them are made up.

Stability

Within v1, new endpoints, new fields and new filters are added without notice; your code should ignore fields it doesn't know. Removing or renaming a field, or changing what it means, is announced in the changelog before it happens.

Last updated October 19, 2026

Missing an endpoint or an event?

Tell us what you're building. The API grows from what integrators ask for.

See KalHR in action - 30 min demo