GetCourse API: Добавить ученика в группу после оплаты

Сценарий из mcp-everything. Актуально на 2026-10-24.

Оплата прошла на внешнем лендинге или в другой системе — ученик автоматически появляется в GetCourse и получает доступ к курсу через группу.

  1. Создай ключ API в аккаунте школы («Профиль» → «Настройки аккаунта» → «АПИ»). Для импорта нужен ключ с правом записи и платный тариф.
  2. Собери params: user.email (или phone), first_name, group_name — список групп, дающих доступ к курсу. Чтобы не получить ошибку на существующем пользователе, передай system.refresh_if_exists = 1.
  3. Закодируй JSON params в base64 и отправь POST /users как form-data с полями action = add, key и params. Без form-data придёт ошибка «Пустой параметр action».
  4. Проверь ответ: success верхнего уровня говорит только о том, что запрос принят. Итог по пользователю — в result: user_id, user_status и error_message.
  5. UTM-метки передавай в params.session — они попадут в аналитику школы.
import base64, json, requests

ACCOUNT, KEY = "myschool", "<секретный ключ>"
params = {
    "user": {"email": "student@example.ru", "first_name": "Анна", "group_name": ["Курс «Python с нуля» — поток 5"]},
    "system": {"refresh_if_exists": 1},
    "session": {"utm_source": "vk", "utm_campaign": "autumn"},
}
r = requests.post(f"https://{ACCOUNT}.getcourse.ru/pl/api/users", data={
    "action": "add",
    "key": KEY,
    "params": base64.b64encode(json.dumps(params, ensure_ascii=False).encode()).decode(),
}).json()
print(r["success"], r.get("result"))

Базовые URL

Авторизация

Тип: API-ключ

Отдельной авторизации нет: секретный ключ аккаунта передаётся в каждом запросе — в импорте POST-параметром key, в экспорте параметром key в строке запроса. Ключ создаётся в аккаунте («Профиль» → «Настройки аккаунта» → «АПИ»); для импорта нужен ключ с правом записи.

Методы сценария

POST /users — Импорт пользователя

Тело — form-data: action, key и params (JSON, закодированный в base64).

Параметр Где Тип Обяз. Описание
action body string да add — создать (или обновить при refresh_if_exists=1); update — задать полный список групп по user.id
key body string да Секретный ключ
params body string да JSON в base64
params.user.email body string нет Email (нужен email или телефон)
params.user.phone body string нет Телефон
params.user.first_name body string нет Имя
params.user.last_name body string нет Фамилия
params.user.city body string нет Город
params.user.country body string нет Страна
params.user.group_name body array нет Группы (можно с датой добавления)
params.user.addfields body object нет Дополнительные поля
params.system.refresh_if_exists body integer нет 1 — обновить существующего пользователя
params.system.partner_email body string нет Email партнёра
params.session body object нет UTM-метки: utm_source, utm_medium, utm_content, utm_campaign, utm_group

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://getcourse.ru/help/api Вся интеграция одним документом: https://mcp-everything.ru/integrations/getcourse.md