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.

How it works

Report generation runs as an asynchronous workflow. The process consists of three steps:
1

Create a generation task

Send a POST request to /saas/v2/query-export/generate with the report type, filter variables and format. In response (HTTP 201), you receive an object whose payload field contains a uuid — the identifier for tracking the result. The file itself has not been created yet at this step.
2

Get the result

Send a GET request to
/saas/v2/workflow-execution/:executionUuid/result,
substituting the uuid from the first step, at an interval of 2–5 seconds. Repeat the request until status becomes Completed (or Failed). Right after launch, payload may be null — the task has not started yet, so keep polling.
3

Download the file

When status: Completed, download the file from the payload.result.fileUrl link. Download it right away: the result is stored for a limited time (see the result retrieval page for details).
Only a request with an unknown type or format, or with variables that is not an object, is rejected immediately with status 400 and cause: "validation". Errors inside variables (an unknown filter field, an invalid enum value, a missing filter) and missing permissions for the data do not cause this request to fail: the task is created, and polling the result returns status: Failed. The reason for the failure is not included in the response — check your request against the report type page and the token’s permissions.

Create an export request

Rate limit: 100 requests per hour per service user (token). When exceeded, HTTP 429 is returned — see the Rate-limit section for details. Polling for the result does not count toward this limit.
string
Language of column headers and translatable values in the file: ru, en, uz, qa. If the header is not sent, columns are named in English. Column names on the report type pages are given in English.

Request parameters

string
required
Report type. Determines which data is exported. Available values:
object
required
Query variables: filter (required for all types; to export all records, pass {}) and sort (optional). The set of fields depends on the selected type and is described on the report type page — see the links in the list above.Fields are validated during generation, not when the task is created: an unknown field or an invalid value results in status: Failed at the result retrieval step. Dates in ranges (...DateRange) are passed in ISO 8601 format, for example 2025-01-01T00:00:00Z.
string
Output file format. Defaults to EXPORT_FORMAT_XLSX.
  • EXPORT_FORMAT_XLSX — Excel (.xlsx). The only format with additional sheets (for example, Course Progress or Billing Details — see the report type page).
  • EXPORT_FORMAT_CSV — CSV (.csv): main sheet only, comma-separated, UTF-8 with BOM encoding (opens in Excel without issues with Cyrillic), the first row contains the column headers.
  • EXPORT_FORMAT_JSON — JSON (.json): an array of objects, one per report row. Keys are the technical English column names (userId, fullName, …); they do not depend on Ux-Language.

Response fields

boolean
Result of the request.
number
HTTP response code (for example, 201).
object
Generation task object.

Permission requirements

The generation request itself requires only token authentication as the school’s service user. The data for the file is collected on behalf of the same user, so the token needs a permission for the exported data — one of those listed for the report type:
If the permission is missing, the generation request still returns 201, and the export finishes with status: Failed. To learn where to enable permissions, see the permissions reference.

Updated: 2026-09-25 14:33 UTC