LanaChat

API : membres de l’équipe, rôles et jetons d’accès

Lecture de 6 minMis à jour Markdown

Votre équipe est composée des personnes qui travaillent dans l’espace de travail. Chaque membre a un rôle (intégré ou personnalisé) qui définit ce qu’il peut faire, les créatrices sur lesquelles il travaille, et une clé d’accès personnelle pour se connecter. Les jetons d’accès sont les clés de l’API et de la connexion MCP. Tous ces points de terminaison nécessitent un jeton owner : dans les exemples, $LANACHAT_TOKEN en contient un.

Points de terminaison #

MéthodeCheminDescriptionPermissionStatut
GET/membersLister les membres (status=active,disabled, role_id=, q=)ownerPlanned
POST/membersAjouter un membre avec un rôle et des créatricesownerPlanned
GET/members/{id}Un membre, dernière activité et exceptionsownerPlanned
PATCH/members/{id}Modifier rôle, créatrices, exceptions ; désactiver ou activerownerPlanned
DELETE/members/{id}Supprimer un membre (ses messages passés gardent son nom)ownerPlanned
POST/members/{id}/access-keyCréer une clé d’accès personnelle (affichée une fois)ownerPlanned
POST/members/{id}/invitationEnvoyer par e-mail une clé d’accès au membreownerPlanned
DELETE/members/{id}/access-keyRévoquer la clé du membre : il est déconnectéownerPlanned
GET/rolesRôles intégrés et personnalisés avec leur tableau de permissionsownerPlanned
POST/rolesCréer un rôle personnaliséownerPlanned
PATCH/roles/{id}Renommer un rôle ou modifier ses permissionsownerPlanned
DELETE/roles/{id}Supprimer un rôle personnalisé non attribuéownerPlanned
GET/tokensJetons d’accès API et MCP (include_revoked=true)ownerPlanned
POST/tokensCréer un jeton avec ses permissions (affiché une fois)ownerPlanned
PATCH/tokens/{id}Renommer un jeton ou modifier ses permissionsownerPlanned
POST/tokens/{id}/rotateRemplacer le secret ; l’ancien s’arrête immédiatementownerPlanned
DELETE/tokens/{id}Révoquer un jetonownerPlanned

L’objet membre #

{
  "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"
}
ChampTypeDescription
idstringCommence par mem_
namestringSon nom dans la Console
emailstring ou nullAdresse où l’invitation est envoyée
statusstringactive ou disabled
role_idstringSon rôle
creator_idstableau de chaînesLes créatrices sur lesquelles il travaille
overridesobjetPermissions définies uniquement pour ce membre, en plus du rôle
access_keyobjetS’il a une clé d’accès personnelle active, et depuis quand ; jamais la clé elle-même
last_active_atstring ou nullSa dernière activité

Un membre désactivé ne peut pas se connecter et conserve son historique, son rôle et ses créatrices.

L’objet rôle #

{
  "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
}
ChampTypeDescription
idstringLe rôle
namestringSon nom
builtinbooleantrue pour Owner, Manager et Chatter
permissionsobjetUne clé par ligne du tableau des permissions, true ou false
membersentierNombre de membres qui l’ont

Les clés de permission suivent les lignes du tableau des permissions dans Team Management › Roles, regroupées par domaine : Dashboard, Creators, AI Brain, Conversations, Vault, Scripts, Playground, Telegram et Employees. Owner a toujours toutes les permissions et ne peut pas être modifié. Manager et Chatter sont intégrés : vous pouvez modifier leurs permissions mais pas les renommer ou les supprimer.

L’objet jeton d’accès #

{
  "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"
}
ChampTypeDescription
idstringCommence par tok_
namestringJusqu’à 100 caractères, obligatoire
permissionstableau de chaînesLes permissions qu’il possède
statusstringActif, expiré ou révoqué
created_at, expires_atstringISO 8601, UTC
tokenstringLe secret, uniquement dans la réponse qui le crée ou le fait tourner

Membres #

Lister les membres #

GET /members · owner

ParamètreTypeObligatoireDescription
statusstringNonactive ou disabled ; les deux séparés par une virgule
role_idstringNonSeulement les membres avec ce rôle
qstringNonPartie d’un nom
limit, cursornombre, stringNonPagination
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
}

Ajouter un membre #

POST /members · owner

ParamètreTypeObligatoireDescription
namestringOuiSon nom
emailstringNonNécessaire pour envoyer une invitation
role_idstringOuiUn rôle intégré ou personnalisé
creator_idstableau de chaînesNonLes créatrices sur lesquelles il travaille
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 réponse est le nouveau membre (201), actif, sans clé d’accès pour l’instant.

Obtenir un membre #

GET /members/{id} · owner

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

La réponse est l’objet membre. Un identifiant inconnu répond 404.

Mettre à jour un membre #

PATCH /members/{id} · owner

ParamètreTypeObligatoireDescription
role_idstringNonNouveau rôle
creator_idstableau de chaînesNonRemplace leur liste de créatrices
overridesobjetNonPermissions uniquement pour ce membre
statusstringNonactive ou 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 réponse est le membre mis à jour. status: "disabled" coupe l’accès immédiatement ; le rôle et les créatrices sont conservés.

Supprimer un membre #

DELETE /members/{id} · owner

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

Le membre est supprimé et ses créatrices sont désassignées. Ses messages passés gardent son nom. Pour le garder pour plus tard, désactivez-le plutôt.

Clés d’accès personnelles #

Les membres de l’équipe n’utilisent pas de mot de passe : ils se connectent avec une clé d’accès personnelle. Les clés commencent par emp_.

Créer une clé d’accès #

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 }

Envoyez à la personne à la fois l’adresse de connexion et la clé par un canal de confiance. Un membre désactivé répond 409 : activez-le d’abord.

Envoyer par e-mail une clé d’accès #

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 clé est envoyée à l’adresse e-mail indiquée sur sa fiche. Un membre sans adresse e-mail, ou désactivé, répond 409.

Révoquer une clé d’accès #

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 clé est désactivée immédiatement et le membre est déconnecté. Créez une nouvelle clé pour lui permettre de revenir.

Rôles #

Lister les rôles #

GET /roles · owner

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

Une liste d’objets rôle : Owner, Manager, Chatter et vos rôles personnalisés.

Créer un rôle personnalisé #

POST /roles · owner

ParamètreTypeObligatoireDescription
namestringOuiLe nom du rôle
permissionsobjetNonLes lignes à activer ; les autres sont désactivées
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 réponse est le nouveau rôle (201) avec builtin: false.

Mettre à jour un rôle #

PATCH /roles/{id} · owner

ParamètreTypeObligatoireDescription
namestringNonNouveau nom (rôles personnalisés uniquement)
permissionsobjetNonLes lignes à modifier ; les autres sont conservées
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}}'

Le changement s’applique immédiatement à tous les membres avec ce rôle, sauf leurs propres exceptions. Modifier Owner, ou renommer Manager ou Chatter, répond 409.

Supprimer un rôle personnalisé #

DELETE /roles/{id} · owner

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

Supprimer un rôle encore attribué à des membres répond 409 : attribuez-leur d’abord un autre rôle. Les rôles intégrés ne peuvent pas être supprimés.

Jetons d’accès #

Lister les jetons #

GET /tokens · owner

ParamètreTypeObligatoireDescription
include_revokedbooleanNontrue liste aussi les jetons révoqués
curl "https://api.lanachat.ai/v1/tokens?include_revoked=true" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Une liste d’objets jeton d’accès, sans leur secret.

Créer un jeton #

POST /tokens · owner

ParamètreTypeObligatoireDescription
namestringOuiÀ quoi il sert, jusqu’à 100 caractères
permissionstableau de chaînesOuiLes permissions qu’il obtient
expires_in_daysentierNonDate d’expiration
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 est présent uniquement dans cette réponse. Un jeton ne peut jamais donner plus que le jeton owner qui l’a créé. L’absence de nom répond 400.

Mettre à jour un jeton #

PATCH /tokens/{id} · owner

ParamètreTypeObligatoireDescription
namestringNonNouveau nom
permissionstableau de chaînesNonRemplace ses permissions
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 réponse est le jeton, sans son secret. Désactiver can_engine supprime aussi les permissions de publication, Advanced AI et rapport d’expérimentation. Un jeton révoqué répond 409.

Faire tourner un jeton #

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 réponse est le jeton avec un nouveau secret token, affiché une fois. L’ancien secret s’arrête immédiatement, mettez à jour votre script juste après. Un jeton révoqué répond 409.

Révoquer un jeton #

DELETE /tokens/{id} · owner

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

Le jeton s’arrête immédiatement. Un jeton déjà révoqué répond 409.

Attention Un jeton fonctionne comme un mot de passe. Révoquez-le dès que vous ne l’utilisez plus ou si vous pensez qu’il a fuité.

Les dernières nouvelles de Lana sur Telegram

Nouveautés et invitations à la bêta, en premier sur le canal.