LanaChat

API: membri del team, ruoli e token di accesso

6 min di letturaAggiornato Markdown

Il tuo team è composto dalle persone che lavorano nello spazio di lavoro. Ogni membro ha un ruolo (predefinito o personalizzato) che determina cosa può fare, su quali creator lavora e una chiave di accesso personale per effettuare il login. I token di accesso sono le chiavi per l'API e per la connessione MCP. Tutti questi endpoint richiedono un token owner: negli esempi, $LANACHAT_TOKEN ne contiene uno.

Endpoint #

MethodPathDescrizionePermessoStato
GET/membersElenca i membri (status=active,disabled, role_id=, q=)ownerPlanned
POST/membersAggiunge un membro con ruolo e creatorownerPlanned
GET/members/{id}Un membro, ultima attività e overrideownerPlanned
PATCH/members/{id}Cambia ruolo, creator, override; disabilita o abilitaownerPlanned
DELETE/members/{id}Elimina un membro (i suoi messaggi passati mantengono il nome)ownerPlanned
POST/members/{id}/access-keyCrea una chiave di accesso personale (mostrata una volta)ownerPlanned
POST/members/{id}/invitationInvia via e-mail una chiave di accesso al membroownerPlanned
DELETE/members/{id}/access-keyRevoca la chiave del membro: viene disconnessoownerPlanned
GET/rolesRuoli predefiniti e personalizzati con tabella permessiownerPlanned
POST/rolesCrea un ruolo personalizzatoownerPlanned
PATCH/roles/{id}Rinomina un ruolo o cambia i permessiownerPlanned
DELETE/roles/{id}Elimina un ruolo personalizzato non assegnatoownerPlanned
GET/tokensToken di accesso API e MCP (include_revoked=true)ownerPlanned
POST/tokensCrea un token con permessi (mostrato una volta)ownerPlanned
PATCH/tokens/{id}Rinomina un token o cambia i permessiownerPlanned
POST/tokens/{id}/rotateSostituisce il segreto; il vecchio si disattiva subitoownerPlanned
DELETE/tokens/{id}Revoca un tokenownerPlanned

L'oggetto membro #

{
  "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"
}
CampoTipoDescrizione
idstringInizia con mem_
namestringIl suo nome nella Console
emailstring o nullDove arriva l'invito
statusstringactive o disabled
role_idstringIl suo ruolo
creator_idsarray di stringheI creator su cui lavora
overridesobjectPermessi impostati solo per questo membro, oltre al ruolo
access_keyobjectSe ha una chiave di accesso personale active e da quando; mai la chiave stessa
last_active_atstring o nullLa sua ultima attività

Un membro disabilitato non può effettuare il login e mantiene la sua storia, ruolo e creator.

L'oggetto ruolo #

{
  "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
}
CampoTipoDescrizione
idstringIl ruolo
namestringIl suo nome
builtinbooleantrue per Owner, Manager e Chatter
permissionsobjectUna chiave per ogni riga della tabella permessi, true o false
membersintegerQuanti membri lo hanno

Le chiavi dei permessi seguono le righe della tabella permessi in Team Management › Roles, raggruppate per area: Dashboard, Creators, AI Brain, Conversations, Vault, Scripts, Playground, Telegram e Employees. Owner ha sempre tutti i permessi e non può essere modificato. Manager e Chatter sono predefiniti: puoi cambiare i loro permessi ma non rinominarli o eliminarli.

L'oggetto token di accesso #

{
  "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"
}
CampoTipoDescrizione
idstringInizia con tok_
namestringFino a 100 caratteri, obbligatorio
permissionsarray di stringheI permessi che ha
statusstringAttivo, scaduto o revocato
created_at, expires_atstringISO 8601, UTC
tokenstringIl segreto, solo nella risposta che lo crea o ruota

Membri #

Elenca membri #

GET /members · owner

ParametroTipoObbligatorioDescrizione
statusstringNoactive o disabled; entrambi separati da virgola
role_idstringNoSolo membri con questo ruolo
qstringNoParte di un nome
limit, cursornumber, stringNoPaginazione
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
}

Aggiungi un membro #

POST /members · owner

ParametroTipoObbligatorioDescrizione
namestringSìIl suo nome
emailstringNoNecessario per inviare un invito
role_idstringSìUn ruolo predefinito o personalizzato
creator_idsarray di stringheNoI creator su cui lavora
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"]}'

La risposta è il nuovo membro (201), attivo, senza ancora una chiave di accesso.

Ottieni un membro #

GET /members/{id} · owner

curl https://api.lanachat.ai/v1/members/mem_4 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

La risposta è l'oggetto membro. Un id sconosciuto risponde con 404.

Aggiorna un membro #

PATCH /members/{id} · owner

ParametroTipoObbligatorioDescrizione
role_idstringNoNuovo ruolo
creator_idsarray di stringheNoSostituisce la lista dei creator
overridesobjectNoPermessi solo per questo membro
statusstringNoactive o 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}}'

La risposta è il membro aggiornato. status: "disabled" blocca l'accesso immediatamente; ruolo e creator sono mantenuti.

Elimina un membro #

DELETE /members/{id} · owner

curl -X DELETE https://api.lanachat.ai/v1/members/mem_4 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Il membro viene rimosso e i suoi creator vengono dissociati. I suoi messaggi passati mantengono il nome. Per conservarli per dopo, disabilitalo invece.

Chiavi di accesso personali #

I membri del team non usano una password: accedono con una chiave di accesso personale. Le chiavi iniziano con emp_.

Crea una chiave di accesso #

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 }

Invia sia l'indirizzo di accesso sia la chiave alla persona tramite un canale di fiducia. Un membro disabilitato risponde 409: abilitalo prima.

Invia via e-mail una chiave di accesso #

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)"

La chiave viene inviata all'indirizzo e-mail sulla sua scheda. Un membro senza e-mail, o disabilitato, risponde 409.

Revoca una chiave di accesso #

DELETE /members/{id}/access-key · owner

curl -X DELETE https://api.lanachat.ai/v1/members/mem_4/access-key \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

La chiave si disattiva immediatamente e il membro viene disconnesso. Crea una nuova chiave per farlo rientrare.

Ruoli #

Elenca ruoli #

GET /roles · owner

curl https://api.lanachat.ai/v1/roles \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Una lista di oggetti ruolo: Owner, Manager, Chatter e i tuoi ruoli personalizzati.

Crea un ruolo personalizzato #

POST /roles · owner

ParametroTipoObbligatorioDescrizione
namestringSìIl nome del ruolo
permissionsobjectNoLe righe da attivare; le altre sono disattivate
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}}'

La risposta è il nuovo ruolo (201) con builtin: false.

Aggiorna un ruolo #

PATCH /roles/{id} · owner

ParametroTipoObbligatorioDescrizione
namestringNoNuovo nome (solo ruoli personalizzati)
permissionsobjectNoLe righe da modificare; le altre restano
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}}'

La modifica si applica subito a tutti i membri con quel ruolo, tranne i loro override personali. Modificare Owner, o rinominare Manager o Chatter, risponde 409.

Elimina un ruolo personalizzato #

DELETE /roles/{id} · owner

curl -X DELETE https://api.lanachat.ai/v1/roles/role_night \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Eliminare un ruolo ancora assegnato a membri risponde 409: assegna loro prima un altro ruolo. I ruoli predefiniti non possono essere eliminati.

Token di accesso #

Elenca token #

GET /tokens · owner

ParametroTipoObbligatorioDescrizione
include_revokedbooleanNotrue per includere anche i token revocati
curl "https://api.lanachat.ai/v1/tokens?include_revoked=true" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Una lista di oggetti token di accesso, senza il loro segreto.

Crea un token #

POST /tokens · owner

ParametroTipoObbligatorioDescrizione
namestringSìA cosa serve, fino a 100 caratteri
permissionsarray di stringheSìI permessi che ottiene
expires_in_daysintegerNoQuando scade
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 è presente solo in questa risposta. Un token non può mai avere più permessi del token owner che lo ha creato. Un nome mancante risponde 400.

Aggiorna un token #

PATCH /tokens/{id} · owner

ParametroTipoObbligatorioDescrizione
namestringNoNuovo nome
permissionsarray di stringheNoSostituisce i permessi
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"]}'

La risposta è il token, senza il segreto. Disattivare can_engine rimuove anche i permessi di publishing, Advanced AI e report esperimenti. Un token revocato risponde 409.

Ruota un token #

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)"

La risposta è il token con un nuovo segreto token, mostrato una volta. Il vecchio segreto si disattiva subito, quindi aggiorna subito il tuo script. Un token revocato risponde 409.

Revoca un token #

DELETE /tokens/{id} · owner

curl -X DELETE https://api.lanachat.ai/v1/tokens/tok_31 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Il token si disattiva immediatamente. Un token già revocato risponde 409.

Attenzione Un token funziona come una password. Revocalo appena smetti di usarlo o pensi sia stato compromesso.

Le ultime novità su Lana su Telegram

Novità e inviti alla beta, prima di tutto nel canale.