API и интеграции
Подключайте комнаты встреч, вебинары и записи ТрейнАп к своим системам. Все запросы — по HTTPS, ответы в JSON, доступ по токену организации.
Аутентификация
Доступ к API — по статическому ключу. Создайте его в личном кабинете организации (Настройки → Интеграции → API-ключи) и передавайте в заголовке X-Auth-Token с каждым запросом.
curl https://hrn.ru/api/v1/account \ -H "X-Auth-Token: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
const res = await fetch('https://hrn.ru/api/v1/account', {
headers: {'X-Auth-Token': apiKey}
});
const account = await res.json();
Ключ можно отозвать в личном кабинете — после отзыва запросы с ним вернут код 401.
Методы API
Основные эндпоинты для интеграции с кабинетом организации.
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/status | Статус сервиса по компонентам |
| GET | /api/v1/rooms | Список комнат организации |
| POST | /api/v1/rooms | Создание комнаты и токена подключения |
| GET | /api/v1/rooms/{id} | Данные комнаты по идентификатору |
| PATCH | /api/v1/rooms/{id} | Изменение настроек комнаты |
| DELETE | /api/v1/rooms/{id} | Удаление комнаты |
| GET | /api/v1/webinars | Список и расписание вебинаров |
| POST | /api/v1/webinars | Создание вебинара |
| GET | /api/v1/recordings | Список записей встреч и вебинаров |
| DELETE | /api/v1/recordings/{id} | Удаление записи |
| GET | /api/v1/files | Список записей и файлов хранилища |
| GET | /api/v1/storage/usage | Использованная квота хранилища |
| GET | /api/v1/account | Данные организации и тарифа |
Коды ответов
| Код | Значение |
|---|---|
| 200 | Запрос выполнен, тело ответа — JSON |
| 400 | Неверные параметры запроса |
| 401 | Ключ отсутствует, отозван или неверен |
| 403 | Нет прав на объект или недостаточно прав ключа |
| 404 | Объект не найден |
| 429 | Превышен лимит запросов, заголовок Retry-After |
Пагинация
Списочные методы (/api/v1/rooms, /api/v1/webinars, /api/v1/recordings, /api/v1/files) принимают параметры limit (по умолчанию 50, максимум 200) и offset. Общее число объектов возвращается в поле total.
curl "https://hrn.ru/api/v1/rooms?limit=50&offset=0" \
-H "X-Auth-Token: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
# ответ
{"items":[...],"total":128,"limit":50,"offset":0}
Создание комнаты
Комната создаётся запросом с именем; в ответ приходит токен подключения для конкретного участника.
curl -X POST https://hrn.ru/api/v1/rooms \
-H "X-Auth-Token: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{"name":"planning-weekly"}'
# ответ
{"room":"planning-weekly","sid":"a41f9c02","join_token":"<join_token>","ws_url":"wss://hrn.ru/xmpp-websocket"}
const res = await fetch('https://hrn.ru/api/v1/rooms', {
method: 'POST',
headers: {'X-Auth-Token': apiKey, 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'planning-weekly'})
});
const {room, join_token, ws_url} = await res.json();
Подключение к встрече из своего приложения
Токен join_token, полученный от POST /api/v1/rooms, открывает конкретного участника во встрече одним из двух способов.
- Прямая ссылка:
https://hrn.ru/room.html?room=<room>, токен передаётся вашим бэкендом при переходе. - Встраивание через
iframeпрямо в интерфейс вашего приложения.
<iframe src="https://hrn.ru/room.html?room=planning-weekly&token=<join_token>" allow="camera; microphone; display-capture" width="960" height="600"></iframe>
Вебхуки
ТрейнАп отправляет события на URL, указанный в настройках интеграции организации.
POST meeting.started
{"event":"meeting.started","room":"planning-weekly","sid":"a41f9c02","started_at":"2026-09-06T09:00:00+03:00"}
POST meeting.ended
{"event":"meeting.ended","room":"planning-weekly","sid":"a41f9c02","ended_at":"2026-09-06T09:42:10+03:00","duration_sec":2530}
POST recording.ready
{"event":"recording.ready","room":"planning-weekly","sid":"a41f9c02","recording_url":"https://hrn.ru/api/v1/files/rec-8841","duration_sec":2530}
Лимиты
2 запроса в секунду на один API-ключ, единый лимит без деления по тарифам. При превышении — код 429 и заголовок Retry-After; распределяйте нагрузку интеграции равномерно.
Нужна помощь с интеграцией?
Персональный менеджер поможет подключить API к вашей системе.