API участников
Обмен участниками с CRM, регистрацией и билетной системой: ключи, сопоставление полей, вебхуки об изменениях.
Список участников у клиента часто живёт не у нас — в CRM, в системе регистрации, в таблице подрядчика по билетам. API участников позволяет держать его в согласии с EVENTBASE без Excel руками: внешняя система присылает людей, а об изменениях у нас узнаёт вебхуком.
Настраивается в админке: «Участники» → «API».
Ключ
Ключ выпускается на проект и показывается один раз, при создании; в базе
остаётся только его отпечаток. Передаётся в заголовке
Authorization: Bearer eb_…. Утёкший ключ отзывают в списке — он
перестаёт работать сразу. Лимит — 600 запросов в минуту на ключ.
Адрес: https://<адрес админки>/api/v1/attendees.
Получить участников
GET /api/v1/attendees — список снимков участников проекта, по 100
(до 200) за раз.
| Параметр | Что делает |
|---|---|
updated_since |
только изменённые с момента (ISO 8601, например 2026-10-05T10:00:00Z) |
cursor |
продолжение: значение next_cursor из прошлого ответа |
limit |
размер страницы, до 200 |
external_id, email |
найти конкретного человека |
include_deleted=1 |
вместе с удалёнными (у них заполнен deleted_at) |
Один участник: GET /api/v1/attendees/{id}.
Снимок участника: id, external_id, email, phone, first_name,
middle_name, last_name, status, in_directory, badge_code,
roles (коды ролей), fields (анкета по ключам полей), created_at,
updated_at. Поля анкеты, помеченные персональными, наружу не
отдаются — ни здесь, ни вебхуком.
Прислать участников
POST /api/v1/attendees с JSON: один объект, массив или
{"items": [...]}, до 500 участников за запрос.
{"items": [
{"external_id": "crm-1041", "email": "ivanova@example.org",
"first_name": "Анна", "last_name": "Иванова",
"company_name": "Рога и копыта", "roles": ["speaker"]}
]}
Как читаются ключи:
external_id,email,phone,first_name,middle_name,last_name,in_directory,roles— понимаются как есть;- ключ, совпадающий с ключом поля анкеты, или объект
fieldsс такими ключами — попадает в анкету; - остальное — по сопоставлению, которое организатор задаёт в админке
(«
company_name→ Анкета: Компания»); незнакомые ключи пропускаются и перечисляются в ответе вignored.
По чему узнавать человека — external_id или email, — выбирает
организатор. Нашли — обновляются ровно присланные поля, остальная анкета
не трогается. Не нашли — заводится новый участник с умолчаниями из
настроек приёма: ролями и значениями полей. Удалённого мягко участника
присланная строка возвращает.
Значения проверяются теми же правилами, что в форме админки: список — только из вариантов, число — числом, почта — почтой, уникальное поле — без повторов. Ответ — по строке на каждого:
{"summary": {"created": 1, "updated": 0, "errors": 0},
"results": [{"index": 0, "status": "created", "id": "…", "external_id": "crm-1041"}]}
Удалить участника: DELETE /api/v1/attendees/{id} — так же, как кнопкой
в админке.
Вебхуки
Организатор задаёт адрес и события: attendee.created,
attendee.updated, attendee.deleted. Событие пишется, откуда бы ни
пришла правка — импорт Excel, форма админки, онбординг в приложении,
привязка билета, сам API, смена ролей.
На адрес уходит POST с JSON:
{"id": "1842", "event": "attendee.updated", "created_at": "…",
"attempt": 1, "project_id": "…", "data": { "...снимок участника..." }}
Заголовки: X-Eventbase-Event, X-Eventbase-Delivery,
X-Eventbase-Timestamp и X-Eventbase-Signature: sha256=<hex> —
HMAC-SHA256 секретом вебхука от строки <timestamp>.<тело>. Сверяйте
подпись и отбрасывайте слишком старую метку времени.
Ответьте любым кодом 2xx. Иначе доставка повторится через 1, 5, 30, 120 и 720 минут, после чего помечается неудачной; последняя ошибка видна в строке вебхука и в журнале доставок в админке.
Перечень возможностей сверен с рабочей версией приложения 24 августа 2026.