API · Для Учителя

API-документация

Общий API-шлюз для педагогических сайтов: сайт определяется по X-API-Key, разработчик передаёт только событие и данные клиента/заказа.

X-API-Key required

Авторизация

Для сайта используйте scoped backend key проекта. Полный ключ показывается один раз при создании, в базе хранится hash и последние 4 символа.

X-API-Key: gs_live_... Content-Type: application/json
Создать или отключить API-ключ

Внешний API-шлюз

МетодНазначениеПример
GET /api/scoped/events/catalogПолучить общий каталог событий API-шлюза и список событий, поддерживаемых текущим ключом
POST /api/scoped/send/transactionalОтправить/поставить транзакционное письмо по event_type
{"event_type":"contest_results","email":"client@example.com","name":"Мария","fields":{"event_title":"Конкурс","work_title":"Работа","place":"1 место"},"idempotency_key":"ORDER-1:contest_results"}
POST /api/scoped/events/order-createdСоздан заказ/заявка. Для сайтов с корзинами: cart_type=course/diploma; сайт определяется по ключу
{"cart_type":"course","email":"client@example.com","order_id":"ORDER-1","course_name":"Педагогика","fields":{"pay_url":"https://site.ru/pay/ORDER-1"}}
POST /api/scoped/events/purchaseОплата заказа: остановить pending-письма неоплаченной корзины по order_id, добавить в общую книгу оплативших и, если передан fields.course_category_id, дополнительно в категорийную книгу
{"cart_type":"course","email":"client@example.com","order_id":"kpk_515309","course_id":"kpk_515309","amount":990,"currency":"RUB","fields":{"paid_at":"2026-07-06T12:55:17+03:00","account_url":"https://uchitelu.ru/profile","course_category_id":"2"}}
GET /api/admin/external-eventsАдмин: хронология входящих API-событий
?site_key=uchitelu&order_id=ORDER-1
GET /api/admin/external-events/statsАдмин: статистика входящих API-событий
?site_key=uchitelu

Формат ответа

Если обязательных данных не хватает, API возвращает 422 и список недостающих полей.

Успех: {"ok":true,"site_key":"solncesvet","event_type":"contest_results","email":"client@example.com","scheduled_email_id":123,"sent":0,"failed":0} Ошибка 422: {"detail":{"ok":false,"error":{"code":"validation_error","message":"Недостаточно данных для события contest_results","event_type":"contest_results","missing_fields":["fields.work_title"],"required_fields":["event_type","email","fields.event_title","fields.work_title"]}}}

Каталог API-событий

Это поддерживаемые API-события сервиса. Они существуют отдельно от шаблонов: сайт отправляет event_type, а соответствие событие → шаблон настраивается внутри Guru Send позднее.

ГруппаНаправлениеЭтапevent_typeЗа что отвечаетКогда отправлятьОбязательные fieldsШаблон
Обучение / КПККурс повышения квалификацииСоздан заказ/заявкаqualification_course_order_createdСоздан заказ/заявка на курс повышения квалификации.Отправлять сразу после создания неоплаченного заказа/заявки на КПК.course_nameAPI есть, шаблон не назначен
Обучение / КПККурс повышения квалификацииОплата прошлаqualification_course_paidОплата курса повышения квалификации прошла успешно.Отправлять после подтверждения успешной оплаты КПК.course_nameAPI есть, шаблон не назначен
Обучение / КПККурс повышения квалификацииУдостоверение/документ готовqualification_course_document_readyУдостоверение/документ по КПК готов.Отправлять, когда документ по КПК сформирован и доступен клиенту.course_nameAPI есть, шаблон не назначен
Обучение / КПППрофессиональная переподготовкаСоздан заказ/заявкаretraining_course_order_createdСоздан заказ/заявка на профессиональную переподготовку.Отправлять сразу после создания неоплаченного заказа/заявки на КПП.course_nameAPI есть, шаблон не назначен
Обучение / КПППрофессиональная переподготовкаОплата прошлаretraining_course_paidОплата профессиональной переподготовки прошла успешно.Отправлять после подтверждения успешной оплаты КПП.course_nameAPI есть, шаблон не назначен
Обучение / КПППрофессиональная переподготовкаДиплом/документ готовretraining_course_document_readyДиплом/документ по профессиональной переподготовке готов.Отправлять, когда документ по КПП сформирован и доступен клиенту.course_nameAPI есть, шаблон не назначен
Обучение / КПОПрофессиональное обучениеСоздан заказ/заявкаprofessional_training_order_createdСоздан заказ/заявка на профессиональное обучение.Отправлять сразу после создания неоплаченного заказа/заявки на КПО.course_nameAPI есть, шаблон не назначен
Обучение / КПОПрофессиональное обучениеОплата прошлаprofessional_training_paidОплата профессионального обучения прошла успешно.Отправлять после подтверждения успешной оплаты КПО.course_nameAPI есть, шаблон не назначен
Обучение / КПОПрофессиональное обучениеДокумент готовprofessional_training_document_readyДокумент по профессиональному обучению готов.Отправлять, когда документ по КПО сформирован и доступен клиенту.course_nameAPI есть, шаблон не назначен
Педагогические мероприятияОлимпиада/тестУчастие принятоolympiad_participation_createdУчастие в олимпиаде/тесте принято.Отправлять после регистрации/принятия участия в олимпиаде или тесте.event_titleAPI есть, шаблон не назначен
Педагогические мероприятияОлимпиада/тестРезультаты готовыolympiad_resultsРезультаты олимпиады/теста готовы.Отправлять, когда доступны баллы, место или диплом по олимпиаде/тесту.event_title✅ шаблон назначен
Педагогические мероприятияКонкурсРабота отправленаcontest_work_submittedКонкурсная работа отправлена/принята.Отправлять после успешной загрузки или принятия работы на творческий конкурс.event_title, work_titleAPI есть, шаблон не назначен
Педагогические мероприятияКонкурсРезультаты готовыcontest_resultsРезультаты творческого конкурса готовы.Отправлять, когда подведены итоги конкурса и доступен результат/диплом.event_title, work_title✅ шаблон назначен
Педагогические мероприятияСеминарРегистрация/участие принятоseminar_registration_createdРегистрация/участие в семинаре принято.Отправлять после регистрации пользователя на семинар.event_titleAPI есть, шаблон не назначен
Педагогические мероприятияСеминарСертификат готовseminar_certificate_readyСертификат семинара готов.Отправлять, когда сертификат по семинару сформирован.event_titleAPI есть, шаблон не назначен
Педагогические мероприятияКонференцияРегистрация/участие принятоconference_registration_createdРегистрация/участие в конференции принято.Отправлять после регистрации пользователя на конференцию.event_titleAPI есть, шаблон не назначен
Педагогические мероприятияКонференцияСертификат готовconference_certificate_readyСертификат конференции готов.Отправлять, когда сертификат по конференции сформирован.event_titleAPI есть, шаблон не назначен
Педагогические мероприятияВебинар/мастер-классРегистрация/участие принятоwebinar_registration_createdРегистрация/участие в вебинаре или мастер-классе принято.Отправлять после регистрации пользователя на вебинар/мастер-класс.event_titleAPI есть, шаблон не назначен
Педагогические мероприятияВебинар/мастер-классСертификат готовwebinar_certificate_readyСертификат вебинара/мастер-класса готов.Отправлять, когда сертификат по вебинару/мастер-классу сформирован.event_titleAPI есть, шаблон не назначен
Педагогические мероприятияПубликация на сайтеМатериал отправленpublication_site_submittedМатериал для публикации на сайте отправлен.Отправлять после успешной отправки материала на публикацию на сайте.publication_title✅ шаблон назначен
Педагогические мероприятияПубликация на сайтеОпубликовано / свидетельство готовоpublication_site_publishedМатериал опубликован на сайте / свидетельство готово.Отправлять, когда публикация на сайте размещена или готово свидетельство.publication_titleAPI есть, шаблон не назначен
Педагогические мероприятияПубликация в сборнике/книгеМатериал отправленpublication_book_submittedМатериал для публикации в сборнике/книге отправлен.Отправлять после успешной отправки материала в сборник/книгу.publication_titleAPI есть, шаблон не назначен
Педагогические мероприятияПубликация в сборнике/книгеОпубликовано / документы готовыpublication_book_publishedПубликация в сборнике/книге готова / документы готовы.Отправлять, когда сборник/книга опубликованы или готовы документы.publication_titleAPI есть, шаблон не назначен
Педагогические мероприятияПубликация в журналеМатериал отправленpublication_journal_submittedМатериал для публикации в журнале отправлен.Отправлять после успешной отправки материала в журнал.publication_titleAPI есть, шаблон не назначен
Педагогические мероприятияПубликация в журналеОпубликовано / документы готовыpublication_journal_publishedПубликация в журнале готова / документы готовы.Отправлять, когда журнал опубликован или готовы документы.publication_titleAPI есть, шаблон не назначен

Event → template routing в проекте uchitelu

Это отдельная настройка шаблонов, не каталог API. API-событие может приниматься и логироваться даже если шаблон ещё не назначен.

event_typeСценарийТема письма
course_abandoned_cart_1dКурсы — брошенная корзина 1d{{ name }}, ваш доступ к курсу по спеццене ещё активен
course_abandoned_cart_1hКурсы — брошенная корзина 1h{{ name }}, оплатите курс со скидкой до конца дня!
course_abandoned_cart_3dКурсы — брошенная корзина 3d{{ name }}, скидка 40% на «{{ course_name }}» скоро сгорит
course_order_createdКурсы — заявка сформирована✅ Подтверждение вашей заявки на «{{ course_name }}»
course_document_readyКурсы — обучение завершено, тест сдан, документ готовВаш документ готов!
course_finished_test_missingКурсы — срок обучения завершён, тест не сданОстался последний шаг для получения документа!
course_paidКурсы — оплата успешно проведена🎉 Доступ к курсу «{{ course_name }}» открыт!
course_test_failedКурсы — итоговое тестирование неуспешноРезультат итогового теста по курсу «{{ course_name }}»
course_test_passedКурсы — итоговое тестирование успешно🌟 Поздравляем! Вы успешно сдали итоговый тест «{{ course_name }}»
course_track_numberКурсы — трек-номер документаТрек-номер вашего документа
form_lead_collective_notifyЗаявка — коллективное обучениеНовая заявка на коллективное обучение с сайта
pedportal_abandoned_cart_1dПедпортал — брошенная корзина 1dВаш диплом готов! Сохраните его
pedportal_abandoned_cart_1hПедпортал — брошенная корзина 1hВаш диплом готов! Сохраните его
pedportal_abandoned_cart_3dПедпортал — брошенная корзина 3dВаш диплом готов! Сохраните его
contest_resultsПедпортал — результаты конкурсаРезультаты конкурса
contest_work_acceptedПедпортал — работа принята на конкурсВаша работа участвует в конкурсе
olympiad_resultsПедпортал — результаты олимпиадыРезультаты олимпиады
diploma_paidПедпортал — оплата успешно проведенаОплата прошла успешно
publication_site_submittedПедпортал — публикация на сайтеВаша публикация «{{ publication_title }}» принята

Переменные

Верхний уровень JSON: event_type, email, name, order_id, idempotency_key, amount, currency. Обязательные верхние поля: event_type, email. name и idempotency_key пока необязательны, но желательны. Обязательные fields зависят от event_type: course_name для КПК/КПП/КПО; event_title для олимпиад/семинаров/конференций/вебинаров; event_title + work_title для конкурсов; publication_title для публикаций. document_url необязателен. Для оплаты курса можно передать факультативно fields.course_category_id — ID категории курса из таблицы ниже. Тогда контакт попадёт не только в общую книгу “Курсы — успешная оплата”, но и в категорийную книгу.

Категории курса для purchase/course

Передавайте ID в поле fields.course_category_id. Не передавайте list_id: Guru Send сам маршрутизирует контакт в нужную книгу.

IDКатегорияsluglist_id
1Педагог дошкольного образования (воспитатель и т.д.)pedagog-doshkolnogo-obrazovaniya35
2Педагог начальной школыpegagog-nachalnoi-shkoly36
3Педагог общего образованияpedagog-obshchego-obrazovaniya37
6Преподаватель СПО и ВОprepodavatel-spo-i-vo40
4Педагог дополнительного образованияpedagog-dopolnitelnogo-obrazovaniya38
9Администрация ОО (директор, заведующий, завуч, старший воспитатель)administraciya-oo-direktor-zaveduyushchiy-zavuch-starshiy-vospitatel43
8Учитель-логопед/ дефектологuchitel-logoped-defektolog42
5Педагог-психолог, Психологpedagog-psikholog-psikholog39
7Социальный педагогsotsialnyy-pedagog41
12Педагог-организаторpedagog-organizator46
10Библиотекарьbibliotekar44
11Методистmetodist45

API-ключи проекта

IDНазваниеСтатусLast4Права
21uchitelu.ru site backend Guru Send key reissued 20260709_125146active…qvsU{"permissions": ["transactional_send", "cart_events_write"], "allowed_api_events": ["course_order_created", "course_paid", "course_test_passed", "course_test_failed", "course_document_ready", "course_finished_test_missing", "course_track_number", "diploma_created", "diploma_order_created", "diploma_paid", "olympiad_results", "contest_work_accepted", "contest_results", "publication_site_submitted", "publication_site_published", "form_lead_collective_notify"], "allowed_cart_types": ["course", "diploma"], "note": "reissued by Hermes for the-teacher staging handoff 20260709_125146: transactional + course/diploma cart events"}
16uchitelu.ru site backend Guru Send keyactive…Rwok{"permissions": ["transactional_send", "cart_events_write"], "allowed_api_events": ["course_order_created", "course_paid", "course_test_passed", "course_test_failed", "course_document_ready", "course_finished_test_missing", "course_track_number", "diploma_created", "diploma_order_created", "diploma_paid", "olympiad_results", "contest_work_accepted", "contest_results", "publication_site_submitted", "publication_site_published", "form_lead_collective_notify"], "allowed_template_keys": ["course_application_created", "course_payment_success", "course_test_passed", "course_test_failed", "course_completed_passed_document_ready", "course_completed_test_not_passed", "course_track_number", "pedportal_payment_success", "pedportal_olympiad_results", "pedportal_contest_work_accepted", "pedportal_contest_results", "pedportal_publication_status", "form_lead_collective_notify"], "allowed_cart_types": ["course", "diploma"], "note": "uchitelu.ru site backend: transactional API events + course/diploma cart events"}
12uchitelu n8n course events keyactive…LPgA{"permissions": ["cart_events_write"], "allowed_cart_types": ["course"], "note": "n8n key: uchitelu course order-created + purchase events only"}
11uchitelu n8n course cart and paid-list keydisabled…QAmI{"permissions": ["cart_events_write", "list_contacts_write"], "allowed_cart_types": ["course"], "note": "n8n key: uchitelu course cart events + upsert only to paid courses address book"}
7uchitelu site backend developer keyactive…57B5{"permissions": ["transactional_send", "cart_events_write"], "allowed_template_keys": ["course_application_created", "course_payment_success", "course_test_passed", "course_test_failed", "course_completed_passed_document_ready", "course_completed_test_not_passed", "course_track_number", "pedportal_payment_success", "pedportal_olympiad_results", "pedportal_contest_work_accepted", "pedportal_contest_results", "pedportal_publication_status", "form_lead_collective_notify"], "allowed_cart_types": ["course", "diploma"], "note": "uchitelu site backend: transactional + cart events only"}
6uchitelu cart events developer keydisabled…za5k{"permissions": ["cart_events_write"], "allowed_cart_types": ["course", "pedportal"], "note": "add unpaid order to cart books and remove/cancel on purchase for uchitelu only"}
5uchitelu transactional developer keydisabled…WhJI{"permissions": ["transactional_send"], "allowed_template_keys": ["course_application_created", "course_payment_success", "course_test_passed", "course_test_failed", "course_completed_passed_document_ready", "course_completed_test_not_passed", "course_track_number", "pedportal_payment_success", "pedportal_olympiad_results", "pedportal_contest_work_accepted", "pedportal_contest_results", "pedportal_publication_status", "form_lead_collective_notify"], "note": "send only uchitelu transactional templates, no carts"}
4uchitelu list 31 add-only developer keyactive…f_lI{"permissions": ["list_contacts_write"], "note": "add/upsert contacts only to uchitelu list 31"}
3uchitelu list 31 add-only developer keydisabled…grbQ{"permissions": ["list_contacts_write"], "note": "add/upsert contacts only to uchitelu list 31"}

Служебные/legacy endpoints

Для внутренних интеграций и админских сценариев; внешнему разработчику сайта обычно нужен блок “Внешний API-шлюз”.

МетодНазначениеПример JSON
POST /api/sitesСоздать/обновить проект
{"site_key":"luch","name":"Луч знаний","from_email":"no-reply@mail.luchznaniy.ru"}
POST /api/contacts/upsertСоздать/обновить контакт
{"site_key":"luch","email":"user@example.com","name":"Ирина","fields":{"course":"Педагогика"}}
POST /api/templatesСоздать email-шаблон
{"site_key":"luch","name":"Welcome","subject":"Привет {{name}}","html":"<p>...</p>","text":"..."}
POST /api/listsСоздать адресную книгу
{"site_key":"luch","name":"Клиенты"}
POST /api/lists/{list_id}/contactsДобавить контакт в адресную книгу
{"contact_id":123}
POST /api/events/unpaid-orderLegacy: событие неоплаченного заказа
{"site_key":"luch","email":"client@example.com","order_id":"ORDER-1"}
POST /api/sequencesСоздать автоцепочку
{"site_key":"luch","name":"Repeat","steps":[{"template_id":1,"delay_minutes":0}]}
GET /api/campaigns/{campaign_id}/statsСтатистика рассылки
GET /api/stats/overviewОбщая статистика сервиса

Статусы контакта

active — Активен unsubscribed — Отписался invalid — Адрес не существует admin_blocked — Заблокирован администратором