Skip to main content

Заголовки запроса

string
обязательно
API-токен сервисного пользователя в формате Bearer YOUR_TOKEN. Токен выпускает владелец школы в кабинете: Управление → Школа → Для разработчиков → API-ключи — подробнее в разделе «Аутентификация».
integer
обязательно
Числовой ID продавца — аккаунта, которому принадлежит школа. Скопируйте его на странице API-ключи в карточке «Данные для интеграции → Идентификаторы». По этому ID проверяются права токена.
integer
обязательно
Числовой ID школы, берётся там же, где Seller-Id. Значение должно совпадать со школой продавца — иначе вернётся ошибка 400 с cause: "ForbiddenSchoolMismatch".
Требуется аутентификация и право «Управление курсами» (CourseManage). Метод доступен только школам. Метод создаёт курс с теми же параметрами, что и кнопка «Создать курс» в кабинете. Если передать modules, вместе с курсом за один запрос создаётся всё его дерево: модули, уроки в них и блоки контента каждого урока. Без modules создаётся пустой курс — уроки можно добавить позже в кабинете.
Вместе с курсом автоматически создаются:Пользователь API-ключа становится автором курса и назначается его редактором, поэтому созданный курс доступен этому ключу в методах update и get, даже если у курса включён режим доступа «Назначенные».
Создание не атомарно. Курс, модули, уроки и блоки записываются последовательно, без общей транзакции. Ошибки валидации тела возвращаются до записи — тогда не создаётся ничего. Но если запрос оборвётся посередине записи (обрыв соединения, таймаут, сбой сервера), уже созданная часть останется в школе: курс будет собран не полностью. Повторный запрос создаст новый курс, а не дособерёт прежний — неполный курс удалите или допишите в кабинете.
Лишние поля в теле запроса молча отбрасываются — ошибки не будет. Проверяйте написание полей по этой странице.

Параметры запроса

Курс

enum
обязательно
Тип курса: TextCourse, VideoCourse, Webinar, Assessment, PersonalLesson, Bundle.
string
обязательно
Название курса. От 1 до 130 символов, пробелы по краям обрезаются.
string
обязательно
Описание курса. До 500 символов, может быть пустой строкой "".
string[]
обязательно
Теги курса. Каждый — от 2 символов. Передайте [], если тегов нет.
integer[]
обязательно
ID пользователей школы, которые будут указаны авторами курса. Пользователь API-ключа добавляется автоматически. Передайте [], если других авторов нет.
string
Символьный адрес курса: латинские буквы, цифры и _. Не может состоять только из цифр и должен быть уникальным.
object
Изображения курса.
string
Ссылка на промо-видео курса.
string[]
SEO-теги.
integer[]
ID предметных категорий курса.
integer
ID контентной категории курса.
object
Настройки курса. Все поля необязательны.
object
Параметры продукта курса. Если не передан — продукт создаётся с настройками по умолчанию.
object[]
Только для type: Bundle — курсы, входящие в пакет (до 50). Курсы и их группы должны принадлежать этой же школе.
Поля buildStatus и aiContext служебные — их заполняет мастер создания курса с ИИ. Не передавайте их: при buildStatus: AiGenerating курс скрыт от всех, кроме автора.

Модули и уроки

object[]
Модули курса — до 50. Порядок модулей, уроков и блоков в курсе совпадает с порядком в массивах.
Модули и уроки создаются в статусе Draft — ученики их не видят. Чтобы материалы сразу стали доступны, передайте status: "Published" у модулей и уроков. Не передавайте parentLessonId: модуль и урок связываются вложенностью массивов.

Блоки контента

Каждый блок урока — объект с полями:
enum
обязательно
Тип блока. Для уроков: EditorJsBlock, TaskQuestion, Checklist, Button, Checkpoint, ChatMessage, Video, Iframe, NotionPage. Другие значения (Text, Audio, Scorm, Survey и типы промо-блоков) не рекомендуется создавать через API.
string
Заголовок над блоком в уроке.
object
обязательно
Содержимое блока. Форма зависит от type — см. примеры ниже.
content не проверяется API: блок сохраняется как передан. Блок с неверной формой content создастся, но в уроке отобразится пустым или сломанным. Сверяйте форму с примерами. Все uuid внутри content генерируйте на своей стороне (UUID v4), уникальными в пределах блока. Блоки с файлами (загруженное видео, аудио, SCORM-пакет) через API не создать — файл загружается в кабинете.
Основной блок для теории: заголовки, абзацы, списки, цитаты, таблицы, разделитель. content — документ EditorJS. В тексте допустимы теги <b>, <i>, <u>, <a>.
id внутренних блоков — произвольные уникальные строки. level у заголовка — 2 или 3, style у списка — unordered или ordered.
Вопрос с вариантами ответа, проверяется сразу в уроке. answerType: Single — один верный вариант, Multiple — несколько.
messages необязателен. Если он задан, блоки ниже вопроса скрыты, пока ученик не ответит.
target — _blank (новая вкладка) или _self.
Кнопка-разделитель: всё, что ниже, скрыто, пока ученик её не нажмёт.
Видео с видеохостинга (YouTube, Vimeo, Kinescope) — по ссылке, без загрузки файла.
Публичная страница Notion, отображается внутри урока.

Поля ответа

object
Созданный курс — объект course. Дерево модулей и уроков в ответ не входит.

Ошибки

Связанные разделы

Требования к правам доступа

Требуется аутентификация по токену и право «Управление курсами» (CourseManage). Метод доступен только школам.

Обновлено: 2026-09-28 05:04 UTC