Skip to main content
ExodeAPI — типизированный HTTP-клиент, покрывающий эндпоинты /saas/v2/*. Предназначен для сервера (Node.js ≥ 18, использует встроенный fetch), берёт на себя аутентификацию, сериализацию query и тела запроса, распаковку ответа (payload) и обработку ошибок.
Полная REST-спецификация (request/response, коды ошибок) — в разделе Exode API. SDK — типизированная обёртка над тем же контрактом; типы выведены из тех же серверных zod-схем.

Инициализация

Для подключения нужны три значения: API-токен, sellerId и schoolId. Все три выдаются в кабинете школы на странице API-ключей — пошагово это описано в разделе Работа с API. Там же настраиваются права токена: каждому методу нужно своё право (указано на странице метода в разделе Exode API).

Параметры конфигурации

number
обязательно
Идентификатор продавца. Передаётся в заголовке Seller-Id.
number
обязательно
Идентификатор школы. Передаётся в заголовке School-Id.
string
обязательно
API-токен сервисного пользователя. Передаётся в Authorization: Bearer <token>.
string
Базовый URL API. По умолчанию https://api.exode.biz/saas/v2.
number
Таймаут запроса в миллисекундах. По умолчанию 30000. При превышении — ExodeAPIError с cause: "Timeout" (code 408).
Храните токен в переменных окружения. Никогда не коммитьте токены и не передавайте на клиент — ExodeAPI работает только на сервере.

Доступные ресурсы

Клиент предоставляет namespace school с девятью ресурсами:

school.user

CRUD пользователей, поиск, состояние (state), удаление, токены авторизации.

school.staff

Оргструктура (HR): подразделения, должности, трудоустройства, руководители, отсутствия.

school.group

Списки групп и участников, массовое добавление/удаление участников.

school.course

Список курсов и прогресс участников по курсу.

school.certificate

Список выданных сертификатов.

school.productAccess

Список доступов к продуктам.

school.invoice

Список счетов.

school.form

Макеты форм и значения кастомных полей.

school.queryExport

Генерация и опрос результата выгрузок.

Пользователи (school.user)

Подробнее про автологин через ___uat — в разделе Интеграция с Telegram Mini App.
Enum-параметры (UserStatus, ProfileRole, CourseType и др.) в TypeScript передавайте через экспортируемые enum’ы: это строковые enum’ы, и строковый литерал вроде 'Active' типизацию не пройдёт. В JavaScript можно передавать строки напрямую — значения совпадают с именами (UserStatus.Active === 'Active').

Сотрудники (school.staff)

Оргструктура для HR-интеграций (1С, HRM): подразделения, должности, трудоустройства, руководители подразделений и отсутствия. У большинства методов есть варианты ...ByExtId — для синхронизации по вашему внешнему идентификатору. Методы доступны только школам корпоративного сегмента (Corporate).
Полный список методов и полей — в разделе Сотрудники Exode API.

Группы (school.group)

Курсы (school.course)

Сертификаты (school.certificate)

Доступы к продуктам (school.productAccess)

Счета (school.invoice)

Формы (school.form)

Выгрузки (school.queryExport)

Выгрузки работают асинхронно: генерация запускает workflow, результат опрашивается по UUID.

Статусы выполнения

generate ограничен лимитом 100 запросов в час. Типы отчётов и переменные — в разделе Отчёты и выгрузки.

Типизация ответов

Типы всех ответов выведены из тех же серверных zod-схем (через z.infer) и доступны на импорт (User, Profile, Session, Group, GroupMember, CourseProgress, FormLayout, FormFieldValue, а также *Output-типы). Рантайм-валидации на стороне клиента нет: контракты уже проверяются на бэкенде (@ZodResponse), поэтому zod не попадает в рантайм-бандл — ответ возвращается как есть, строго типизированным.

Обработка ошибок

Все ошибки оборачиваются в ExodeAPIError:
Полный список доменных cause-кодов — в разделе Работа с API.

Обновлено: 2026-09-25 13:43 UTC