API: członkowie zespołu, role i tokeny dostępu
Twój zespół to osoby pracujące w przestrzeni roboczej. Każdy członek ma przypisaną rolę (wbudowaną lub niestandardową), która określa, co może robić, nad jakimi twórczyniami pracuje oraz posiada osobisty klucz dostępu do logowania. Tokeny dostępu to klucze do API i połączenia MCP. Wszystkie te endpointy wymagają tokena owner: w przykładach $LANACHAT_TOKEN go zawiera.
Endpointy #
| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | /members | Lista członków (status=active,disabled, role_id=, q=) | owner | Planned |
| POST | /members | Dodaj członka z rolą i twórczyniami | owner | Planned |
| GET | /members/{id} | Jeden członek, ostatnia aktywność i nadpisania | owner | Planned |
| PATCH | /members/{id} | Zmień rolę, twórczynie, nadpisania; wyłącz lub włącz | owner | Planned |
| DELETE | /members/{id} | Usuń członka (ich poprzednie wiadomości zachowują nazwę) | owner | Planned |
| POST | /members/{id}/access-key | Utwórz osobisty klucz dostępu (pokazywany raz) | owner | Planned |
| POST | /members/{id}/invitation | Wyślij klucz dostępu e-mailem do członka | owner | Planned |
| DELETE | /members/{id}/access-key | Cofnij klucz członka: zostaje wylogowany | owner | Planned |
| GET | /roles | Role wbudowane i niestandardowe z tabelą uprawnień | owner | Planned |
| POST | /roles | Utwórz niestandardową rolę | owner | Planned |
| PATCH | /roles/{id} | Zmień nazwę roli lub uprawnienia | owner | Planned |
| DELETE | /roles/{id} | Usuń niestandardową rolę, której nikt nie ma | owner | Planned |
| GET | /tokens | Tokeny dostępu API i MCP (include_revoked=true) | owner | Planned |
| POST | /tokens | Utwórz token z uprawnieniami (pokazywany raz) | owner | Planned |
| PATCH | /tokens/{id} | Zmień nazwę tokena lub uprawnienia | owner | Planned |
| POST | /tokens/{id}/rotate | Zamień sekret; stary przestaje działać natychmiast | owner | Planned |
| DELETE | /tokens/{id} | Cofnij token | owner | Planned |
Obiekt członka #
{
"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"
}
| Pole | Typ | Opis |
|---|---|---|
id | string | Zaczyna się od mem_ |
name | string | Ich nazwa w Console |
email | string lub null | Adres, na który wysyłane jest zaproszenie |
status | string | active lub disabled |
role_id | string | Ich rola |
creator_ids | tablica stringów | Twórczynie, nad którymi pracują |
overrides | obiekt | Uprawnienia ustawione tylko dla tego członka, ponad rolą |
access_key | obiekt | Czy mają active osobisty klucz dostępu i od kiedy; nigdy sam klucz |
last_active_at | string lub null | Ich ostatnia aktywność |
Wyłączony członek nie może się zalogować, ale zachowuje historię, rolę i twórczynie.
Obiekt roli #
{
"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
}
| Pole | Typ | Opis |
|---|---|---|
id | string | Rola |
name | string | Nazwa |
builtin | boolean | true dla Owner, Manager i Chatter |
permissions | obiekt | Jeden klucz na wiersz tabeli uprawnień, true lub false |
members | integer | Liczba członków z tą rolą |
Klucze uprawnień odpowiadają wierszom tabeli uprawnień w Team Management › Roles, pogrupowanym według obszaru: Dashboard, Creators, AI Brain, Conversations, Vault, Scripts, Playground, Telegram i Employees. Owner zawsze ma wszystkie uprawnienia i nie można jej edytować. Manager i Chatter są wbudowane: można zmieniać ich uprawnienia, ale nie zmieniać nazwy ani usuwać.
Obiekt tokena dostępu #
{
"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"
}
| Pole | Typ | Opis |
|---|---|---|
id | string | Zaczyna się od tok_ |
name | string | Do 100 znaków, wymagane |
permissions | tablica stringów | Posiadane uprawnienia |
status | string | Aktywny, wygasły lub cofnięty |
created_at, expires_at | string | ISO 8601, UTC |
token | string | Sekret, tylko w odpowiedzi tworzącej lub rotującej |
Członkowie #
Lista członków #
GET /members · owner
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
status | string | Nie | active lub disabled; oba oddzielone przecinkiem |
role_id | string | Nie | Tylko członkowie z tą rolą |
q | string | Nie | Fragment nazwy |
limit, cursor | number, string | Nie | Paginacja |
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
}
Dodaj członka #
POST /members · owner
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
name | string | Tak | Ich nazwa |
email | string | Nie | Potrzebny do wysłania zaproszenia |
role_id | string | Tak | Rola wbudowana lub niestandardowa |
creator_ids | tablica stringów | Nie | Twórczynie, nad którymi pracują |
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"]}'
Odpowiedź to nowy członek (201), aktywny, jeszcze bez klucza dostępu.
Pobierz członka #
GET /members/{id} · owner
curl https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Odpowiedź to obiekt członka. Nieznany id zwraca 404.
Aktualizuj członka #
PATCH /members/{id} · owner
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
role_id | string | Nie | Nowa rola |
creator_ids | tablica stringów | Nie | Zastępuje listę twórczyń |
overrides | obiekt | Nie | Uprawnienia tylko dla tego członka |
status | string | Nie | active lub 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}}'
Odpowiedź to zaktualizowany członek. status: "disabled" natychmiast odcina dostęp; rola i twórczynie są zachowane.
Usuń członka #
DELETE /members/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Członek zostaje usunięty, a jego twórczynie odłączone. Ich poprzednie wiadomości zachowują nazwę. Aby zachować je na później, wyłącz członka zamiast usuwać.
Osobiste klucze dostępu #
Członkowie zespołu nie używają hasła: logują się osobistym kluczem dostępu. Klucze zaczynają się od emp_.
Utwórz klucz dostępu #
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 }
Prześlij zarówno adres logowania, jak i klucz osobie zaufanej. Wyłączony członek zwraca 409: najpierw go włącz.
Wyślij klucz dostępu e-mailem #
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)"
Klucz jest wysyłany na adres e-mail z karty członka. Członek bez e-maila lub wyłączony zwraca 409.
Cofnij klucz dostępu #
DELETE /members/{id}/access-key · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4/access-key \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Klucz przestaje działać natychmiast, a członek zostaje wylogowany. Utwórz nowy klucz, aby przywrócić dostęp.
Role #
Lista ról #
GET /roles · owner
curl https://api.lanachat.ai/v1/roles \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Lista obiektów ról: Owner, Manager, Chatter oraz twoje role niestandardowe.
Utwórz niestandardową rolę #
POST /roles · owner
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
name | string | Tak | Nazwa roli |
permissions | obiekt | Nie | Wiersze do włączenia; pozostałe wyłączone |
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}}'
Odpowiedź to nowa rola (201) z builtin: false.
Aktualizuj rolę #
PATCH /roles/{id} · owner
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
name | string | Nie | Nowa nazwa (tylko role niestandardowe) |
permissions | obiekt | Nie | Wiersze do zmiany; pozostałe pozostają |
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}}'
Zmiana dotyczy od razu wszystkich członków z tą rolą, z wyjątkiem ich własnych nadpisań. Edycja Ownera lub zmiana nazwy Managera albo Chatter zwraca 409.
Usuń niestandardową rolę #
DELETE /roles/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/roles/role_night \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Usunięcie roli, którą mają jeszcze członkowie, zwraca 409: najpierw przypisz im inną rolę. Role wbudowane nie mogą być usunięte.
Tokeny dostępu #
Lista tokenów #
GET /tokens · owner
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
include_revoked | boolean | Nie | true pokazuje też cofnięte tokeny |
curl "https://api.lanachat.ai/v1/tokens?include_revoked=true" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Lista obiektów tokenów dostępu, bez ich sekretów.
Utwórz token #
POST /tokens · owner
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
name | string | Tak | Do czego służy, do 100 znaków |
permissions | tablica stringów | Tak | Posiadane uprawnienia |
expires_in_days | integer | Nie | Kiedy wygasa |
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 jest dostępny tylko w tej odpowiedzi. Token nigdy nie może mieć więcej uprawnień niż token ownera, który go stworzył. Brak nazwy zwraca 400.
Aktualizuj token #
PATCH /tokens/{id} · owner
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
name | string | Nie | Nowa nazwa |
permissions | tablica stringów | Nie | Zastępuje uprawnienia |
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"]}'
Odpowiedź to token, bez sekretu. Wyłączenie can_engine usuwa też uprawnienia publikowania, Advanced AI i raportów eksperymentów. Cofnięty token zwraca 409.
Rotacja tokena #
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)"
Odpowiedź to token z nowym sekretem token, pokazanym raz. Stary sekret przestaje działać natychmiast, więc zaktualizuj swój skrypt zaraz po tym. Cofnięty token zwraca 409.
Cofnij token #
DELETE /tokens/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/tokens/tok_31 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Token przestaje działać natychmiast. Token już cofnięty zwraca 409.
Ostrzeżenie Token działa jak hasło. Cofnij go natychmiast, gdy przestajesz go używać lub podejrzewasz wyciek.