Request headers
string
required
The service user’s API token in the
Bearer YOUR_TOKEN format. The school owner issues the token in the admin panel:
Manage → School → For developers → API keys — see the “Authentication” section for details.integer
required
The numeric ID of the seller — the account the school belongs to. Copy it on the API keys page, in
the Integration data → Identifiers card. The token’s permissions are checked against this ID.
integer
required
The numeric ID of the school, found in the same place as
Seller-Id. The value must match the seller’s school — otherwise
a 400 error with cause: "ForbiddenSchoolMismatch" is returned.An absence (
absence) records a period when an employee is not working: an absence with no specified reason
(Absent), a vacation (Vacation), a day off (DayOff), a business trip (BusinessTrip), sick leave (SickLeave),
parental leave (ParentalLeave) or study leave (StudyLeave). An absence is linked to the employee’s
employment, not to the user: if the employee has several jobs, specify the one the absence
applies to (this does not affect the user’s status — absences across all of their
employments are taken into account).startAt and finishAt are points in time (ISO 8601, UTC), not calendar days. An absence is considered current
while startAt ≤ now ≤ finishAt. Pass a vacation “from August 1 to August 14 inclusive” as
startAt: "2026-08-01T00:00:00Z", finishAt: "2026-08-14T23:59:59Z" (adjusted for the company’s time zone):
the value 2026-08-14T00:00:00Z would end the absence at the start of the 14th. Without finishAt, the absence lasts
indefinitely until you set an end date.Creating, updating and deleting an absence automatically syncs the user status
Active ↔
OnLeave: if the user has a current (in effect right now) absence, the status becomes
OnLeave; once no current absences remain, it returns to Active. OnLeave is an informational status:
it does not block sign-in or access to the platform. These transitions do not affect users in other statuses
(Banned, Blocked, Terminated). In addition to recalculating on API calls, the platform automatically
reconciles statuses with the calendar once an hour: an absence with a future start date moves the employee to OnLeave when
that date arrives, and an expired one returns them to Active, with no calls required on your side.List absences
StaffView).
Request parameters
Pass array parameters by repeating the parameter in the query string:
employmentIds=1&employmentIds=2.Pagination
integer
Number of records to skip. Defaults to
0.integer
Page number (an alternative to
skip). Starts at 1.integer
Number of records per page. Defaults to
100, maximum 1000.Filtering
string[]
Filter by absence external IDs (
extId). Up to 250 values, each up to 50 characters.integer[]
Filter by employment IDs. Up to 250 values. On a transfer or position change, absences stay on the closed
employment record, so to get an employee’s full history, pass the IDs of all of their records — you can get them
via
employment/list?userIds=....integer[]
Filter by position IDs (the position is taken from the employment the absence is linked to). Up to 250
values.
enum[]
Filter by absence types. Possible values:
Absent, Vacation, DayOff, BusinessTrip, SickLeave,
ParentalLeave, StudyLeave. Up to 250 values.boolean
If
true, return only current absences: startAt has already passed, and finishAt is not set or has not
passed yet.Response fields
object
Paginated list of absences.
Create an absence
StaffManage).
Request parameters
Specify the employment with exactly one of two fields:
employmentId or employmentExtId.string
External ID of the absence from the client’s system. 1 to 50 characters, no
/ or whitespace. Must be
unique within the school among non-deleted records — otherwise the StaffAbsenceExtIdIsNotUniq error is returned.integer
ID of the employee’s employment the absence applies to. Required if
employmentExtId is not passed.
You can also specify an already closed record — for example, when migrating absence history.string
External ID (
extId) of the employment — the one you passed when hiring. An alternative to employmentId;
required if employmentId is not passed. Looked up only among the school’s open (not terminated) employments;
if none is found, the StaffEmploymentNotFound error is returned.enum
required
Absence type. Possible values:
Absent (absent), Vacation (vacation), DayOff (day off),
BusinessTrip (business trip), SickLeave (sick leave), ParentalLeave (parental leave),
StudyLeave (study leave).string
required
Absence start date in ISO 8601 format. Must not be later than
finishAt.string
Absence end date in ISO 8601 format. Must not be earlier than
startAt, otherwise the request is rejected.
Omit it if the end date is not yet known.string
Note on the absence. Maximum 500 characters. Leading and trailing whitespace is trimmed automatically.
Update an absence
StaffManage).
Updates absence fields. All body fields are optional — pass only the ones you want to change.
The employment link (employmentId) cannot be changed.
Request parameters
integer
required
ID of the absence to update.
string
External ID of the absence from the client’s system. 1 to 50 characters, no
/ or whitespace. Must be
unique within the school among non-deleted records — otherwise the StaffAbsenceExtIdIsNotUniq error is returned.enum
Absence type. Possible values:
Absent, Vacation, DayOff, BusinessTrip, SickLeave,
ParentalLeave, StudyLeave.string
Absence start date in ISO 8601 format. Must not be later than
finishAt.string | null
Absence end date in ISO 8601 format. Must not be earlier than
startAt (taking into account the already stored
value if startAt is not passed), otherwise StaffAbsenceInvalidInterval is returned. null clears the end
date — the absence becomes open-ended.string
Note on the absence. Maximum 500 characters.
Update an absence by extId
StaffManage).
Same as updating by absenceId, but the absence is identified by its external ID (extId) within the
school. The request body is the same as for PUT /saas/v2/staff/absence/{absenceId}/update.
Request parameters
string
required
External ID of the absence to update. Pass it URL-encoded.
string
New external ID of the absence. 1 to 50 characters, no
/ or whitespace. Must be unique
within the school among non-deleted records.enum
Absence type. Possible values:
Absent, Vacation, DayOff, BusinessTrip, SickLeave,
ParentalLeave, StudyLeave.string
Absence start date in ISO 8601 format. Must not be later than
finishAt.string | null
Absence end date in ISO 8601 format. Must not be earlier than
startAt (taking into account the already stored
value if startAt is not passed), otherwise StaffAbsenceInvalidInterval is returned. null clears the end
date — the absence becomes open-ended.string
Note on the absence. Maximum 500 characters.
Delete an absence
StaffManage).
Request parameters
integer
required
ID of the absence to delete.
Response
integer
required
Number of deleted records (
1 on successful deletion).Delete an absence by extId
StaffManage).
Same as deleting by absenceId, but the absence is identified by its external ID (extId) within the school.
Request parameters
string
required
External ID of the absence to delete. Pass it URL-encoded.
Response
integer
required
Number of deleted records (
1 on successful deletion).Permission requirements
The staff module is available only to
Corporate-segment schools. Reading the list requires the “Staff browsing” permission (StaffView);
creating, updating and deleting absences requires the “Staff Management” permission (StaffManage).Updated: 2026-09-25 14:33 UTC