Skip to main content
In five steps, you’ll make your first request: get a token, set up the headers, find or create a user, and parse the response.
1

Get credentials

The school owner can create an API key on their own: go to Manage → School → For developers → API keys (/manage/school/api-keys) — this is where a service user (API client) is created and a token is issued. If you prefer, contact support — we’ll help with the setup.You’ll need three values for requests:
  • Authorization — the API token (used as Bearer <TOKEN>; shown in full only at the moment of creation or rotation — save it right away);
  • Seller-Id — the numeric ID of the seller (the account the school belongs to);
  • School-Id — the numeric ID of the school.
Both IDs are on the same API keys page, in the Integration data → Identifiers card — clicking it copies a string like Seller-Id: 123; School-Id: 456.Save the values to environment variables — the examples below use them:
Store the token in environment variables, not in code or in the repository.
2

Set up the headers

All requests are made with three required headers:

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.
3

Make your first request — find a user

Check access with a safe read method — user/find:
extId is your own user identifier (for example, an ID from your CRM): a string of up to 50 characters without / or spaces, unique within the school. If the user is not found, the method returns 200 and payload.user: null — this is not an error.
On method pages, the cURL examples write the headers as {{ sellerId }} and {{ schoolId }} — these are Postman collection variables. In a terminal, replace them with the numeric IDs or $SELLER_ID and $SCHOOL_ID.
4

Create a user

If the user doesn’t exist yet, create them with the user/create method. The login and password are sent to the user automatically if there is a delivery channel: email, phone (with an SMS provider connected) or tgId — see the method page for details.
cURL
5

Parse the response

Every response is wrapped in { success, code, payload }. Check success/code, and on error — the cause field:
Success
Error
Here, EmailIsBusy means the email is already taken by another user of the school. In this case, you usually look up the existing user through user/find?login=<email> or use user/upsert, which creates or updates a user in a single call.For details on headers, the response format, errors, rate limits and pagination, see “Working with the API”.

What’s next

Key concepts

How the seller, school, courses, products and accesses are related.

Working with the API

Headers, response and error format, rate limits, pagination.

Webhooks

Receive platform events in your services.

API objects

Complete entity structures based on zod schemas.

Updated: 2026-09-25 14:33 UTC