API: участники команды, роли и токены доступа
Ваша команда, это люди, работающие в рабочем пространстве. Каждый участник имеет роль (встроенную или пользовательскую), которая определяет, что он может делать, над какими авторами работает, и личный ключ доступа для входа. Токены доступа, это ключи для API и подключения MCP. Все эти эндпоинты требуют токен владельца: в примерах $LANACHAT_TOKEN содержит такой токен.
Эндпоинты #
| Метод | Путь | Описание | Разрешение | Статус |
|---|---|---|---|---|
| GET | /members | Список участников (status=active,disabled, role_id=, q=) | owner | Planned |
| POST | /members | Добавить участника с ролью и авторами | owner | Planned |
| GET | /members/{id} | Один участник, последняя активность и переопределения | owner | Planned |
| PATCH | /members/{id} | Изменить роль, авторов, переопределения; отключить или включить | owner | Planned |
| DELETE | /members/{id} | Удалить участника (его прошлые сообщения сохраняют имя) | owner | Planned |
| POST | /members/{id}/access-key | Создать личный ключ доступа (показывается один раз) | owner | Planned |
| POST | /members/{id}/invitation | Отправить ключ доступа участнику по e-mail | owner | Planned |
| DELETE | /members/{id}/access-key | Отозвать ключ участника: он выходит из системы | owner | Planned |
| GET | /roles | Встроенные и пользовательские роли с таблицей разрешений | owner | Planned |
| POST | /roles | Создать пользовательскую роль | owner | Planned |
| PATCH | /roles/{id} | Переименовать роль или изменить её разрешения | owner | Planned |
| DELETE | /roles/{id} | Удалить пользовательскую роль, если у неё нет участников | owner | Planned |
| GET | /tokens | Токены доступа API и MCP (include_revoked=true) | owner | Planned |
| POST | /tokens | Создать токен с разрешениями (показывается один раз) | owner | Planned |
| PATCH | /tokens/{id} | Переименовать токен или изменить его разрешения | owner | Planned |
| POST | /tokens/{id}/rotate | Заменить секрет; старый сразу перестаёт работать | owner | Planned |
| DELETE | /tokens/{id} | Отозвать токен | owner | Planned |
Объект участника #
{
"id": "mem_4",
"name": "Ana",
"email": "[email protected]",
"status": "active",
"role_id": "role_chatter",
"creator_ids": ["cr_lea", "cr_mia"],
"overrides": { "billing.read": false, "fans.export": true },
"access_key": { "active": true, "created_at": "2026-09-20T09:00:00Z" },
"last_active_at": "2026-10-06T13:40:00Z"
}
| Поле | Тип | Описание |
|---|---|---|
id | string | Начинается с mem_ |
name | string | Имя в Console |
email | string или null | Куда отправляется приглашение |
status | string | active или disabled |
role_id | string | Роль участника |
creator_ids | массив строк | Авторы, с которыми работает участник |
overrides | объект | Разрешения, заданные только для этого участника поверх роли |
access_key | объект | Есть ли у него active личный ключ доступа и с какого времени; сам ключ не показывается |
last_active_at | string или null | Последняя активность |
Отключённый участник не может войти в систему, но сохраняет историю, роль и авторов.
Объект роли #
{
"id": "role_chatter",
"name": "Chatter",
"builtin": true,
"permissions": { "live.read": true, "live.reply": true, "fans.read": true, "fans.export": false, "billing.read": false },
"members": 6
}
| Поле | Тип | Описание |
|---|---|---|
id | string | Роль |
name | string | Название роли |
builtin | boolean | true для Owner, Manager и Chatter |
permissions | объект | Ключ для каждой строки таблицы разрешений, true или false |
members | integer | Количество участников с этой ролью |
Ключи разрешений соответствуют строкам таблицы разрешений в Team Management › Roles, сгруппированы по областям: Dashboard, Creators, AI Brain, Conversations, Vault, Scripts, Playground, Telegram и Employees. Owner всегда имеет все разрешения и не может быть изменён. Manager и Chatter встроенные: вы можете менять их разрешения, но не переименовывать и не удалять.
Объект токена доступа #
{
"id": "tok_31",
"name": "Reporting script",
"permissions": ["can_fan_read", "can_sales_read"],
"status": "active",
"created_at": "2026-10-06T15:10:00Z",
"expires_at": "2027-01-04T15:10:00Z"
}
| Поле | Тип | Описание |
|---|---|---|
id | string | Начинается с tok_ |
name | string | До 100 символов, обязательно |
permissions | массив строк | Разрешения, которые есть у токена |
status | string | Активен, истёк или отозван |
created_at, expires_at | string | ISO 8601, UTC |
token | string | Секрет, только в ответе при создании или ротации |
Участники #
Список участников #
GET /members · owner
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
status | string | Нет | active или disabled; оба через запятую |
role_id | string | Нет | Только участники с этой ролью |
q | string | Нет | Часть имени |
limit, cursor | number, string | Нет | Пагинация |
curl "https://api.lanachat.ai/v1/members?status=active&role_id=role_chatter" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
{
"data": [
{ "id": "mem_4", "name": "Ana", "email": "[email protected]", "status": "active", "role_id": "role_chatter", "creator_ids": ["cr_lea", "cr_mia"], "overrides": {}, "access_key": { "active": true, "created_at": "2026-09-20T09:00:00Z" }, "last_active_at": "2026-10-06T13:40:00Z" }
],
"next_cursor": null
}
Добавить участника #
POST /members · owner
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Да | Имя участника |
email | string | Нет | Нужно для отправки приглашения |
role_id | string | Да | Встроенная или пользовательская роль |
creator_ids | массив строк | Нет | Авторы, с которыми работает участник |
curl -X POST https://api.lanachat.ai/v1/members \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name": "Ana", "email": "[email protected]", "role_id": "role_chatter", "creator_ids": ["cr_lea"]}'
Ответ, новый участник (201), активный, без ключа доступа.
Получить участника #
GET /members/{id} · owner
curl https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Ответ, объект участника. Неизвестный id возвращает 404.
Обновить участника #
PATCH /members/{id} · owner
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
role_id | string | Нет | Новая роль |
creator_ids | массив строк | Нет | Заменяет список авторов |
overrides | объект | Нет | Разрешения только для этого участника |
status | string | Нет | active или disabled |
curl -X PATCH https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"creator_ids": ["cr_lea", "cr_mia"], "overrides": {"fans.export": true}}'
Ответ, обновлённый участник. status: "disabled" сразу блокирует доступ; роль и авторы сохраняются.
Удалить участника #
DELETE /members/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Участник удаляется, его авторы отвязываются. Прошлые сообщения сохраняют имя. Чтобы сохранить участника для истории, лучше отключите его.
Личные ключи доступа #
Участники команды не используют пароль: они входят с личным ключом доступа. Ключи начинаются с emp_.
Создать ключ доступа #
POST /members/{id}/access-key · owner
curl -X POST https://api.lanachat.ai/v1/members/mem_4/access-key \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"
{ "member_id": "mem_4", "sign_in_url": "https://app.lanachat.ai/login/?mode=employee", "access_key": "emp_6Yq2…", "shown_once": true }
Отправьте и адрес входа, и ключ человеку через надёжный канал. Отключённый участник возвращает 409: сначала включите его.
Отправить ключ доступа по e-mail #
POST /members/{id}/invitation · owner
curl -X POST https://api.lanachat.ai/v1/members/mem_4/invitation \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"
Ключ отправляется на e-mail из карточки участника. Участник без e-mail или отключённый возвращает 409.
Отозвать ключ доступа #
DELETE /members/{id}/access-key · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4/access-key \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Ключ сразу перестаёт работать, участник выходит из системы. Чтобы вернуть доступ, создайте новый ключ.
Роли #
Список ролей #
GET /roles · owner
curl https://api.lanachat.ai/v1/roles \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Список объектов ролей: Owner, Manager, Chatter и ваши пользовательские роли.
Создать пользовательскую роль #
POST /roles · owner
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Да | Название роли |
permissions | объект | Нет | Включаемые строки; остальные выключены |
curl -X POST https://api.lanachat.ai/v1/roles \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name": "Night chatter", "permissions": {"live.read": true, "live.reply": true, "fans.read": true}}'
Ответ, новая роль (201) с builtin: false.
Обновить роль #
PATCH /roles/{id} · owner
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Нет | Новое имя (только для пользовательских ролей) |
permissions | объект | Нет | Строки для изменения; остальные сохраняются |
curl -X PATCH https://api.lanachat.ai/v1/roles/role_chatter \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"permissions": {"fans.export": false}}'
Изменения применяются сразу ко всем участникам с этой ролью, кроме их собственных переопределений. Редактирование Owner или переименование Manager или Chatter возвращает 409.
Удалить пользовательскую роль #
DELETE /roles/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/roles/role_night \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Удаление роли, которая ещё есть у участников, возвращает 409: сначала назначьте им другую роль. Встроенные роли удалить нельзя.
Токены доступа #
Список токенов #
GET /tokens · owner
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
include_revoked | boolean | Нет | true, также показывает отозванные токены |
curl "https://api.lanachat.ai/v1/tokens?include_revoked=true" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Список объектов токенов доступа без их секретов.
Создать токен #
POST /tokens · owner
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Да | Назначение, до 100 символов |
permissions | массив строк | Да | Разрешения |
expires_in_days | integer | Нет | Срок действия |
curl -X POST https://api.lanachat.ai/v1/tokens \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name": "Reporting script", "permissions": ["can_fan_read", "can_sales_read"], "expires_in_days": 90}'
{ "id": "tok_31", "name": "Reporting script", "token": "lc_live_8f2c1d0e9b7a4c6f", "permissions": ["can_fan_read", "can_sales_read"], "expires_at": "2027-01-04T15:10:00Z" }
token есть только в этом ответе. Токен не может иметь больше прав, чем токен владельца, который его создал. Отсутствие имени возвращает 400.
Обновить токен #
PATCH /tokens/{id} · owner
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Нет | Новое имя |
permissions | массив строк | Нет | Заменяет разрешения |
curl -X PATCH https://api.lanachat.ai/v1/tokens/tok_31 \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"permissions": ["can_sales_read"]}'
Ответ, токен без секрета. Отключение can_engine также убирает разрешения на публикацию, Advanced AI и отчёты экспериментов. Отозванный токен возвращает 409.
Ротация токена #
POST /tokens/{id}/rotate · owner
curl -X POST https://api.lanachat.ai/v1/tokens/tok_31/rotate \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"
Ответ, токен с новым секретом token, показывается один раз. Старый секрет сразу перестаёт работать, обновите скрипт сразу после. Отозванный токен возвращает 409.
Отозвать токен #
DELETE /tokens/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/tokens/tok_31 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Токен сразу перестаёт работать. Если токен уже отозван, возвращается 409.
Внимание Токен работает как пароль. Отзывайте его сразу, как перестанете использовать или заподозрите утечку.