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.
Positions are a directory of job titles for school employees (for example, “Backend Engineer”). Positions are assigned to employees on hiring and promotion and are used by the staff module to describe the employment structure.
All staff module endpoints are available only to schools in the corporate segment (Corporate). Requests from schools in other segments are rejected.

Permission requirements

Reading (list) requires the “Staff browsing” permission (StaffView). Creating, updating and deleting require the “Staff Management” permission (StaffManage). In all cases, token authentication is required and the school must belong to the Corporate segment.
The service user must be authenticated with a token and have the appropriate access rights to the specified school.
A position name is unique within the school, case-insensitive (“Manager” and “manager” are the same name). Creating a position with, or renaming a position to, a name that already exists in the same school returns the StaffPositionNameIsNotUniq error.
The extId field is the position’s external ID from the client’s system (CRM/1C, for example a GUID). It is unique within the school among non-deleted records (unique index school + extId). 1 to 50 characters, cannot contain / or whitespace characters, because the value is used in ext/{extId} paths.

List positions

Requires authentication and the “Staff browsing” permission (StaffView).
The endpoint returns a paginated list of positions. Pagination and filter parameters are passed as query parameters.

Parameters

integer
Number of records to skip (offset pagination). Minimum 0.
integer
Number of records to return per page. From 1 to 1000.
integer
Page number (an alternative to skip). Minimum 1.
integer[]
Filter by position IDs. Up to 250 values.
Search by position name. Maximum 50 characters. The search is fuzzy (it also finds partial matches), so to find a specific position by name, compare the name of the returned records with your value case-insensitively, or, more reliably, search by extIds.
string[]
Filter by a list of external IDs (extId). Up to 250 values, each up to 50 characters.
enum
Sort direction by creation date. Possible values: ASC, DESC. The id and updatedAt parameters work the same way.

Response

object
required
Paginated object: items (array of positions), page, count, pages, isFirst, isLast, next, prev.

Create a position

Requires authentication and the “Staff Management” permission (StaffManage).

Request parameters

string
required
Position name. 1 to 100 characters. Leading and trailing spaces are trimmed automatically. Must be unique within the school.
string
The position’s external ID from the client’s system (CRM/1C). 1 to 50 characters, cannot contain / or whitespace characters. Must be unique within the school among non-deleted records.

Update a position

Requires authentication and the “Staff Management” permission (StaffManage).

Parameters

integer
required
ID of the position to update within the school.
string
New position name. 1 to 100 characters. Leading and trailing spaces are trimmed automatically. Must be unique within the school.
string
The position’s external ID from the client’s system (CRM/1C). 1 to 50 characters, cannot contain / or whitespace characters. Must be unique within the school among non-deleted records.

Update a position by extId

Requires authentication and the “Staff Management” permission (StaffManage).
Equivalent of the update-by-ID endpoint: the position is looked up by the external ID extId within the school. The extId value in the path must be URL-encoded.

Parameters

string
required
External ID (extId) of the position to update within the school. Must be URL-encoded.
string
New position name. 1 to 100 characters. Leading and trailing spaces are trimmed automatically. Must be unique within the school.
string
New external ID of the position. 1 to 50 characters, cannot contain / or whitespace characters. Must be unique within the school among non-deleted records.

Delete a position

Requires authentication and the “Staff Management” permission (StaffManage).
A position cannot be deleted while it has active employees (including a scheduled hire with a future date): the method returns StaffPositionHasActiveEmployments. First change the employees’ position via promote or terminate them.

Parameters

integer
required
ID of the position to delete within the school.

Response

integer
required
Number of deleted records (1 on successful deletion).

Delete a position by extId

Requires authentication and the “Staff Management” permission (StaffManage).
A position cannot be deleted while it has active employees (including a scheduled hire with a future date): the method returns StaffPositionHasActiveEmployments. First change the employees’ position via promote or terminate them.
Equivalent of the delete-by-ID endpoint: the position is looked up by the external ID extId within the school. The extId value in the path must be URL-encoded.

Parameters

string
required
External ID (extId) of the position to delete within the school. Must be URL-encoded.

Response

integer
required
Number of deleted records (1 on successful deletion).

Updated: 2026-09-25 14:33 UTC