Skip to main content

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.
All staff module endpoints are available only to Corporate-segment schools. For other segments, the request returns 401 with cause: "Forbidden" and the message Allowed only for Corporate school.

List absences

Requires authentication and the “Staff browsing” permission (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

Requires authentication and the “Staff Management” permission (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

Requires authentication and the “Staff Management” permission (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

Requires authentication and the “Staff Management” permission (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

Requires authentication and the “Staff Management” permission (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

Requires authentication and the “Staff Management” permission (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).
The service user must be authenticated with a token and have the appropriate access permissions for the specified school.

Updated: 2026-09-25 14:33 UTC