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=luch&order_id=ORDER-1
GET /api/admin/external-events/statsАдмин: статистика входящих API-событий
?site_key=luch

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

Если обязательных данных не хватает, 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_titleAPI есть, шаблон не назначен
Педагогические мероприятияКонкурсРабота отправленаcontest_work_submittedКонкурсная работа отправлена/принята.Отправлять после успешной загрузки или принятия работы на творческий конкурс.event_title, work_titleAPI есть, шаблон не назначен
Педагогические мероприятияКонкурсРезультаты готовыcontest_resultsРезультаты творческого конкурса готовы.Отправлять, когда подведены итоги конкурса и доступен результат/диплом.event_title, work_titleAPI есть, шаблон не назначен
Педагогические мероприятияСеминарРегистрация/участие принято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_titleAPI есть, шаблон не назначен
Педагогические мероприятияПубликация на сайтеОпубликовано / свидетельство готово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 в проекте luch

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

event_typeСценарийТема письма
Для проекта пока нет event_type-шаблонов

Переменные

Верхний уровень 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
Для проекта нет настроенных категорий курсов

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

IDНазваниеСтатусLast4Права
Нет ключей проекта

Служебные/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 — Заблокирован администратором