API: Teammitglieder, Rollen und Zugriffstoken
Ihr Team sind die Personen, die im Workspace arbeiten. Jedes Mitglied hat eine Rolle (vordefiniert oder benutzerdefiniert), die festlegt, was es tun kann, an welchen Creatorinnen es arbeitet und einen persönlichen Zugriffsschlüssel zum Anmelden. Access tokens sind die Schlüssel für die API und die MCP-Verbindung. Alle diese Endpunkte benötigen ein owner-Token: In den Beispielen hält $LANACHAT_TOKEN eines.
Endpunkte #
| Methode | Pfad | Beschreibung | Berechtigung | Status |
|---|---|---|---|---|
| GET | /members | Mitglieder auflisten (status=active,disabled, role_id=, q=) | owner | Planned |
| POST | /members | Ein Mitglied mit Rolle und Creatorinnen hinzufügen | owner | Planned |
| GET | /members/{id} | Ein Mitglied, letzte Aktivität und Überschreibungen | owner | Planned |
| PATCH | /members/{id} | Rolle, Creatorinnen, Überschreibungen ändern; deaktivieren oder aktivieren | owner | Planned |
| DELETE | /members/{id} | Ein Mitglied löschen (seine bisherigen Nachrichten behalten den Namen) | owner | Planned |
| POST | /members/{id}/access-key | Einen persönlichen Zugriffsschlüssel erstellen (einmal angezeigt) | owner | Planned |
| POST | /members/{id}/invitation | Einen Zugriffsschlüssel per E-Mail an das Mitglied senden | owner | Planned |
| DELETE | /members/{id}/access-key | Den Zugriffsschlüssel des Mitglieds widerrufen: es wird abgemeldet | owner | Planned |
| GET | /roles | Vordefinierte und benutzerdefinierte Rollen mit Berechtigungstabelle | owner | Planned |
| POST | /roles | Eine benutzerdefinierte Rolle erstellen | owner | Planned |
| PATCH | /roles/{id} | Eine Rolle umbenennen oder Berechtigungen ändern | owner | Planned |
| DELETE | /roles/{id} | Eine benutzerdefinierte Rolle löschen, die kein Mitglied hat | owner | Planned |
| GET | /tokens | API- und MCP-Zugriffstoken (include_revoked=true) | owner | Planned |
| POST | /tokens | Ein Token mit Berechtigungen erstellen (einmal angezeigt) | owner | Planned |
| PATCH | /tokens/{id} | Ein Token umbenennen oder Berechtigungen ändern | owner | Planned |
| POST | /tokens/{id}/rotate | Das Geheimnis ersetzen; das alte wird sofort ungültig | owner | Planned |
| DELETE | /tokens/{id} | Ein Token widerrufen | owner | Planned |
Das Mitglied-Objekt #
{
"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"
}
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Beginnt mit mem_ |
name | string | Ihr Name in der Console |
email | string oder null | Wohin die Einladung geht |
status | string | active oder disabled |
role_id | string | Ihre Rolle |
creator_ids | array von strings | Die Creatorinnen, an denen sie arbeiten |
overrides | object | Nur für dieses Mitglied gesetzte Berechtigungen, zusätzlich zur Rolle |
access_key | object | Ob sie einen active persönlichen Zugriffsschlüssel haben und seit wann; nie der Schlüssel selbst |
last_active_at | string oder null | Ihre letzte Aktivität |
Ein deaktiviertes Mitglied kann sich nicht anmelden und behält seine Historie, Rolle und Creatorinnen.
Das Rollen-Objekt #
{
"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
}
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Die Rolle |
name | string | Ihr Name |
builtin | boolean | true für Owner, Manager und Chatter |
permissions | object | Ein Schlüssel pro Zeile der Berechtigungstabelle, true oder false |
members | integer | Wie viele Mitglieder sie haben |
Die Berechtigungsschlüssel folgen den Zeilen der Berechtigungstabelle in Team Management › Roles, gruppiert nach Bereich: Dashboard, Creators, AI Brain, Conversations, Vault, Scripts, Playground, Telegram und Employees. Owner hat immer alle Berechtigungen und kann nicht bearbeitet werden. Manager und Chatter sind vordefiniert: Sie können deren Berechtigungen ändern, aber nicht umbenennen oder löschen.
Das Access-Token-Objekt #
{
"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"
}
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Beginnt mit tok_ |
name | string | Bis zu 100 Zeichen, erforderlich |
permissions | array von strings | Die Berechtigungen, die es hat |
status | string | Aktiv, abgelaufen oder widerrufen |
created_at, expires_at | string | ISO 8601, UTC |
token | string | Das Geheimnis, nur in der Antwort, die es erstellt oder rotiert |
Mitglieder #
Mitglieder auflisten #
GET /members · owner
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
status | string | Nein | active oder disabled; beide durch Komma getrennt |
role_id | string | Nein | Nur Mitglieder mit dieser Rolle |
q | string | Nein | Teil eines Namens |
limit, cursor | number, string | Nein | Pagination |
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
}
Ein Mitglied hinzufügen #
POST /members · owner
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | Ja | Ihr Name |
email | string | Nein | Wird für die Einladung benötigt |
role_id | string | Ja | Eine vordefinierte oder benutzerdefinierte Rolle |
creator_ids | array von strings | Nein | Die Creatorinnen, an denen sie arbeiten |
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"]}'
Die Antwort ist das neue Mitglied (201), aktiv, noch ohne Zugriffsschlüssel.
Ein Mitglied abrufen #
GET /members/{id} · owner
curl https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Die Antwort ist das Mitglied-Objekt. Eine unbekannte ID antwortet mit 404.
Ein Mitglied aktualisieren #
PATCH /members/{id} · owner
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
role_id | string | Nein | Neue Rolle |
creator_ids | array von strings | Nein | Ersetzt die Liste der Creatorinnen |
overrides | object | Nein | Nur für dieses Mitglied gültige Berechtigungen |
status | string | Nein | active oder 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}}'
Die Antwort ist das aktualisierte Mitglied. status: "disabled" sperrt den Zugang sofort; Rolle und Creatorinnen bleiben erhalten.
Ein Mitglied löschen #
DELETE /members/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Das Mitglied wird entfernt und seine Creatorinnen werden freigegeben. Seine bisherigen Nachrichten behalten den Namen. Um sie später zu behalten, deaktivieren Sie das Mitglied stattdessen.
Persönliche Zugriffsschlüssel #
Teammitglieder verwenden kein Passwort: Sie melden sich mit einem persönlichen Zugriffsschlüssel an. Schlüssel beginnen mit emp_.
Einen Zugriffsschlüssel erstellen #
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 }
Senden Sie sowohl die Anmeldeadresse als auch den Schlüssel über einen vertrauenswürdigen Kanal an die Person. Ein deaktiviertes Mitglied antwortet mit 409: Aktivieren Sie es zuerst.
Einen Zugriffsschlüssel per E-Mail senden #
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)"
Der Schlüssel wird an die auf der Karte angegebene E-Mail-Adresse gesendet. Ein Mitglied ohne E-Mail-Adresse oder ein deaktiviertes Mitglied antwortet mit 409.
Einen Zugriffsschlüssel widerrufen #
DELETE /members/{id}/access-key · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4/access-key \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Der Schlüssel wird sofort ungültig und das Mitglied wird abgemeldet. Erstellen Sie einen neuen Schlüssel, um den Zugang wieder zu ermöglichen.
Rollen #
Rollen auflisten #
GET /roles · owner
curl https://api.lanachat.ai/v1/roles \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Eine Liste von Rollen-Objekten: Owner, Manager, Chatter und Ihre benutzerdefinierten Rollen.
Eine benutzerdefinierte Rolle erstellen #
POST /roles · owner
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | Ja | Der Name der Rolle |
permissions | object | Nein | Die zu aktivierenden Zeilen; die anderen sind aus |
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}}'
Die Antwort ist die neue Rolle (201) mit builtin: false.
Eine Rolle aktualisieren #
PATCH /roles/{id} · owner
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | Nein | Neuer Name (nur benutzerdefinierte Rollen) |
permissions | object | Nein | Die zu ändernden Zeilen; die anderen bleiben erhalten |
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}}'
Die Änderung gilt sofort für alle Mitglieder mit dieser Rolle, außer deren eigenen Überschreibungen. Das Bearbeiten von Owner oder das Umbenennen von Manager oder Chatter antwortet mit 409.
Eine benutzerdefinierte Rolle löschen #
DELETE /roles/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/roles/role_night \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Das Löschen einer Rolle, die noch Mitglieder haben, antwortet mit 409: Weisen Sie ihnen zuerst eine andere Rolle zu. Vordefinierte Rollen können nicht gelöscht werden.
Zugriffstoken #
Token auflisten #
GET /tokens · owner
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
include_revoked | boolean | Nein | true listet auch widerrufene Tokens auf |
curl "https://api.lanachat.ai/v1/tokens?include_revoked=true" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Eine Liste von Access-Token-Objekten, ohne deren Geheimnis.
Ein Token erstellen #
POST /tokens · owner
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | Ja | Wofür es ist, bis zu 100 Zeichen |
permissions | array von strings | Ja | Die Berechtigungen, die es erhält |
expires_in_days | integer | Nein | Wann es endet |
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 ist nur in dieser Antwort enthalten. Ein Token kann niemals mehr Berechtigungen geben als das Owner-Token, das es erstellt hat. Ein fehlender Name antwortet mit 400.
Ein Token aktualisieren #
PATCH /tokens/{id} · owner
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | Nein | Neuer Name |
permissions | array von strings | Nein | Ersetzt seine Berechtigungen |
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"]}'
Die Antwort ist das Token, ohne sein Geheimnis. Das Deaktivieren von can_engine entfernt auch Publishing-, Advanced AI- und Experiment-Report-Berechtigungen. Ein widerrufenes Token antwortet mit 409.
Ein Token rotieren #
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)"
Die Antwort ist das Token mit einem neuen token-Geheimnis, einmal angezeigt. Das alte Geheimnis wird sofort ungültig, aktualisieren Sie Ihr Skript also direkt danach. Ein widerrufenes Token antwortet mit 409.
Ein Token widerrufen #
DELETE /tokens/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/tokens/tok_31 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Das Token wird sofort ungültig. Ein bereits widerrufenes Token antwortet mit 409.
Warnung Ein Token funktioniert wie ein Passwort. Widerrufen Sie es, sobald Sie es nicht mehr verwenden oder vermuten, dass es geleakt wurde.