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

_API · 6 min czytania · Zaktualizowano 2026-10-22 · https://lanachat.ai/guides/pl/api-team/_

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

```json
{
  "id": "mem_4",
  "name": "Ana",
  "email": "ana@mia-agency.com",
  "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

```json
{
  "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

```json
{
  "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](https://lanachat.ai/guides/pl/api-overview/) |
| `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](https://lanachat.ai/guides/pl/api-overview/) |

```bash
curl "https://api.lanachat.ai/v1/members?status=active&role_id=role_chatter" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

```json
{
  "data": [
    { "id": "mem_4", "name": "Ana", "email": "ana@mia-agency.com", "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ą |

```bash
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": "ana@mia-agency.com", "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`

```bash
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` |

```bash
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`

```bash
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`

```bash
curl -X POST https://api.lanachat.ai/v1/members/mem_4/access-key \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
```

```json
{ "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`

```bash
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`

```bash
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`

```bash
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 |

```bash
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ą |

```bash
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`

```bash
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 |

```bash
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](https://lanachat.ai/guides/pl/api-overview/) |
| `expires_in_days` | integer | Nie | Kiedy wygasa |

```bash
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}'
```

```json
{ "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 |

```bash
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`

```bash
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`

```bash
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`.

> Warning: Token działa jak hasło. Cofnij go natychmiast, gdy przestajesz go używać lub podejrzewasz wyciek.

## Powiązane artykuły

- [LanaChat API: szybki start, uwierzytelnianie i błędy](https://lanachat.ai/guides/pl/api-overview/)
- [Zarządzanie zespołem: pracownicy i role](https://lanachat.ai/guides/pl/team-and-roles/)
- [Role niestandardowe i tabela uprawnień](https://lanachat.ai/guides/pl/custom-roles/)
- [Klucze dostępu osobistego](https://lanachat.ai/guides/pl/personal-access-keys/)
