LanaChat

API: członkowie zespołu, role i tokeny dostępu

6 min czytaniaZaktualizowano Markdown

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 #

MethodPathDescriptionPermissionStatus
GET/membersLista członków (status=active,disabled, role_id=, q=)ownerPlanned
POST/membersDodaj członka z rolą i twórczyniamiownerPlanned
GET/members/{id}Jeden członek, ostatnia aktywność i nadpisaniaownerPlanned
PATCH/members/{id}Zmień rolę, twórczynie, nadpisania; wyłącz lub włączownerPlanned
DELETE/members/{id}Usuń członka (ich poprzednie wiadomości zachowują nazwę)ownerPlanned
POST/members/{id}/access-keyUtwórz osobisty klucz dostępu (pokazywany raz)ownerPlanned
POST/members/{id}/invitationWyślij klucz dostępu e-mailem do członkaownerPlanned
DELETE/members/{id}/access-keyCofnij klucz członka: zostaje wylogowanyownerPlanned
GET/rolesRole wbudowane i niestandardowe z tabelą uprawnieńownerPlanned
POST/rolesUtwórz niestandardową rolęownerPlanned
PATCH/roles/{id}Zmień nazwę roli lub uprawnieniaownerPlanned
DELETE/roles/{id}Usuń niestandardową rolę, której nikt nie maownerPlanned
GET/tokensTokeny dostępu API i MCP (include_revoked=true)ownerPlanned
POST/tokensUtwórz token z uprawnieniami (pokazywany raz)ownerPlanned
PATCH/tokens/{id}Zmień nazwę tokena lub uprawnieniaownerPlanned
POST/tokens/{id}/rotateZamień sekret; stary przestaje działać natychmiastownerPlanned
DELETE/tokens/{id}Cofnij tokenownerPlanned

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"
}
PoleTypOpis
idstringZaczyna się od mem_
namestringIch nazwa w Console
emailstring lub nullAdres, na który wysyłane jest zaproszenie
statusstringactive lub disabled
role_idstringIch rola
creator_idstablica stringówTwórczynie, nad którymi pracują
overridesobiektUprawnienia ustawione tylko dla tego członka, ponad rolą
access_keyobiektCzy mają active osobisty klucz dostępu i od kiedy; nigdy sam klucz
last_active_atstring lub nullIch 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
}
PoleTypOpis
idstringRola
namestringNazwa
builtinbooleantrue dla Owner, Manager i Chatter
permissionsobiektJeden klucz na wiersz tabeli uprawnień, true lub false
membersintegerLiczba 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"
}
PoleTypOpis
idstringZaczyna się od tok_
namestringDo 100 znaków, wymagane
permissionstablica stringówPosiadane uprawnienia
statusstringAktywny, wygasły lub cofnięty
created_at, expires_atstringISO 8601, UTC
tokenstringSekret, tylko w odpowiedzi tworzącej lub rotującej

Członkowie #

Lista członków #

GET /members · owner

ParametrTypWymaganyOpis
statusstringNieactive lub disabled; oba oddzielone przecinkiem
role_idstringNieTylko członkowie z tą rolą
qstringNieFragment nazwy
limit, cursornumber, stringNiePaginacja
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

ParametrTypWymaganyOpis
namestringTakIch nazwa
emailstringNiePotrzebny do wysłania zaproszenia
role_idstringTakRola wbudowana lub niestandardowa
creator_idstablica stringówNieTwó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

ParametrTypWymaganyOpis
role_idstringNieNowa rola
creator_idstablica stringówNieZastępuje listę twórczyń
overridesobiektNieUprawnienia tylko dla tego członka
statusstringNieactive 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

ParametrTypWymaganyOpis
namestringTakNazwa roli
permissionsobiektNieWiersze 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

ParametrTypWymaganyOpis
namestringNieNowa nazwa (tylko role niestandardowe)
permissionsobiektNieWiersze 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

ParametrTypWymaganyOpis
include_revokedbooleanNietrue 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

ParametrTypWymaganyOpis
namestringTakDo czego służy, do 100 znaków
permissionstablica stringówTakPosiadane uprawnienia
expires_in_daysintegerNieKiedy 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

ParametrTypWymaganyOpis
namestringNieNowa nazwa
permissionstablica stringówNieZastę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.

Najnowsze wieści o Lanie na Telegramie

Nowości i zaproszenia do bety, najpierw na kanale.