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.CourseManage). The
method is available to schools only.
The method creates a course with the same parameters as the “Create course” button in the admin panel. If you pass
modules, the whole course tree is created in the same request: modules, lessons inside them and the content blocks of
each lesson. Without modules an empty course is created — lessons can be added later in the admin panel.
Created automatically together with the course:
- the course product — published right away; its ID is returned in the
productIdfield of the response; - a default group (“Group 1”) — you can enroll users into it.
List groups with the
courseIdsfilter returns the group ID.
update and get even when
the course uses the “Assigned” access mode.Unknown fields in the request body are silently dropped — no error is returned. Check field names against this page.
Request parameters
Course
enum
required
Course type:
TextCourse, VideoCourse, Webinar, Assessment, PersonalLesson, Bundle.string
required
Course name. 1 to 130 characters; leading and trailing spaces are trimmed.
string
required
Course description. Up to 500 characters; may be an empty string
"".string[]
required
Course tags, each at least 2 characters long. Pass
[] if there are none.integer[]
required
IDs of school users listed as course authors. The API key’s user is added automatically. Pass
[] if there are no
other authors.string
Course URL alias: Latin letters, digits and
_. Cannot consist of digits only and must be unique.object
Course images.
string
Link to the course promo video.
string[]
SEO tags.
integer[]
IDs of the course subject categories.
integer
ID of the course content category.
object
Course settings. All fields are optional.
object
Course product parameters. If omitted, the product is created with the default settings.
object[]
For
type: Bundle only — courses included in the bundle (up to 50). The courses and their groups must belong to the
same school.The
buildStatus and aiContext fields are internal — they are filled in by the AI course wizard. Do not pass them:
with buildStatus: AiGenerating the course is hidden from everyone except its author.Modules and lessons
object[]
Course modules — up to 50. The order of modules, lessons and blocks in the course follows the order in the arrays.
Content blocks
Each lesson block is an object with the fields:enum
required
Block type. For lessons:
EditorJsBlock, TaskQuestion, Checklist, Button, Checkpoint, ChatMessage, Video,
Iframe, NotionPage. Other values (Text, Audio, Scorm, Survey and promo block types) are not recommended
for creation via the API.string
Heading shown above the block in the lesson.
object
required
Block content. Its shape depends on
type — see the examples below.EditorJsBlock — text
EditorJsBlock — text
The main block for theory: headings, paragraphs, lists, quotes, tables and a delimiter. Inner block
content is an
EditorJS document. The text may use <b>, <i>, <u>, <a> tags.ids are arbitrary unique strings. A header level is 2 or 3; a list style is unordered or
ordered.TaskQuestion — auto-checked question
TaskQuestion — auto-checked question
A question with answer options, checked right in the lesson.
answerType: Single — one correct option,
Multiple — several.messages is optional. When set, the blocks below the question stay hidden until the student answers.Checklist
Checklist
ChatMessage — messages from a mentor
ChatMessage — messages from a mentor
Video — video by link
Video — video by link
A video from a video host (YouTube, Vimeo, Kinescope) — by link, without uploading a file.
Iframe — embedded page
Iframe — embedded page
NotionPage — Notion page
NotionPage — Notion page
A public Notion page, displayed inside the lesson.
Response fields
object
The created course — a
course object. The module and lesson tree is not
included in the response.Errors
The
InvalidAlias and AliasAlreadyBusy messages are currently returned in Russian — rely on cause.
Related sections
- Update a course — change course fields
- Get a course — the full course object by ID
- Course enrollment — grant access through a course group
- The
courseobject — response fields
Permission requirements
Requires token authentication and the “Course Management” permission
(
CourseManage). The method is available to schools only.Updated: 2026-09-28 05:04 UTC