API : membres de l’équipe, rôles et jetons d’accès
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éthode | Chemin | Description | Permission | Statut |
|---|---|---|---|---|
| GET | /members | Lister les membres (status=active,disabled, role_id=, q=) | owner | Planned |
| POST | /members | Ajouter un membre avec un rôle et des créatrices | owner | Planned |
| GET | /members/{id} | Un membre, dernière activité et exceptions | owner | Planned |
| PATCH | /members/{id} | Modifier rôle, créatrices, exceptions ; désactiver ou activer | owner | Planned |
| DELETE | /members/{id} | Supprimer un membre (ses messages passés gardent son nom) | owner | Planned |
| POST | /members/{id}/access-key | Créer une clé d’accès personnelle (affichée une fois) | owner | Planned |
| POST | /members/{id}/invitation | Envoyer par e-mail une clé d’accès au membre | owner | Planned |
| DELETE | /members/{id}/access-key | Révoquer la clé du membre : il est déconnecté | owner | Planned |
| GET | /roles | Rôles intégrés et personnalisés avec leur tableau de permissions | owner | Planned |
| POST | /roles | Créer un rôle personnalisé | owner | Planned |
| PATCH | /roles/{id} | Renommer un rôle ou modifier ses permissions | owner | Planned |
| DELETE | /roles/{id} | Supprimer un rôle personnalisé non attribué | owner | Planned |
| GET | /tokens | Jetons d’accès API et MCP (include_revoked=true) | owner | Planned |
| POST | /tokens | Créer un jeton avec ses permissions (affiché une fois) | owner | Planned |
| PATCH | /tokens/{id} | Renommer un jeton ou modifier ses permissions | owner | Planned |
| POST | /tokens/{id}/rotate | Remplacer le secret ; l’ancien s’arrête immédiatement | owner | Planned |
| DELETE | /tokens/{id} | Révoquer un jeton | owner | Planned |
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"
}
| Champ | Type | Description |
|---|---|---|
id | string | Commence par mem_ |
name | string | Son nom dans la Console |
email | string ou null | Adresse où l’invitation est envoyée |
status | string | active ou disabled |
role_id | string | Son rôle |
creator_ids | tableau de chaînes | Les créatrices sur lesquelles il travaille |
overrides | objet | Permissions définies uniquement pour ce membre, en plus du rôle |
access_key | objet | S’il a une clé d’accès personnelle active, et depuis quand ; jamais la clé elle-même |
last_active_at | string ou null | Sa 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
}
| Champ | Type | Description |
|---|---|---|
id | string | Le rôle |
name | string | Son nom |
builtin | boolean | true pour Owner, Manager et Chatter |
permissions | objet | Une clé par ligne du tableau des permissions, true ou false |
members | entier | Nombre 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"
}
| Champ | Type | Description |
|---|---|---|
id | string | Commence par tok_ |
name | string | Jusqu’à 100 caractères, obligatoire |
permissions | tableau de chaînes | Les permissions qu’il possède |
status | string | Actif, expiré ou révoqué |
created_at, expires_at | string | ISO 8601, UTC |
token | string | Le secret, uniquement dans la réponse qui le crée ou le fait tourner |
Membres #
Lister les membres #
GET /members · owner
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
status | string | Non | active ou disabled ; les deux séparés par une virgule |
role_id | string | Non | Seulement les membres avec ce rôle |
q | string | Non | Partie d’un nom |
limit, cursor | nombre, string | Non | 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
}
Ajouter un membre #
POST /members · owner
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Oui | Son nom |
email | string | Non | Nécessaire pour envoyer une invitation |
role_id | string | Oui | Un rôle intégré ou personnalisé |
creator_ids | tableau de chaînes | Non | Les 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ètre | Type | Obligatoire | Description |
|---|---|---|---|
role_id | string | Non | Nouveau rôle |
creator_ids | tableau de chaînes | Non | Remplace leur liste de créatrices |
overrides | objet | Non | Permissions uniquement pour ce membre |
status | string | Non | active 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ètre | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Oui | Le nom du rôle |
permissions | objet | Non | Les 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ètre | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Non | Nouveau nom (rôles personnalisés uniquement) |
permissions | objet | Non | Les 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ètre | Type | Obligatoire | Description |
|---|---|---|---|
include_revoked | boolean | Non | true 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ètre | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Oui | À quoi il sert, jusqu’à 100 caractères |
permissions | tableau de chaînes | Oui | Les permissions qu’il obtient |
expires_in_days | entier | Non | Date 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ètre | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Non | Nouveau nom |
permissions | tableau de chaînes | Non | Remplace 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é.