Depuis le 14 juillet 2026, l'Admin API de Claude Enterprise permet enfin de gérer les membres d'une organisation par script plutôt qu'à la souris. Si tu administres une équipe sur claude.ai et que tu voulais un guide complet pour apprendre Claude côté opérations, voilà le morceau qui manquait : provisionner, révoquer, auditer les rôles et les groupes RBAC via HTTP. La bêta est ouverte à toutes les organisations Claude Enterprise, sans liste d'attente, avec des endpoints stables et une documentation à jour sur platform.claude.com/docs/en/api/admin.
L'article qui suit part du principe que tu sais lancer un curl, lire un JSON paginé et stocker un secret ailleurs que dans un .env commité. On va regarder ce qui vaut le coup d'automatiser, ce qui reste dans la console, et où sont les pièges quand tu commences à brancher ton HRIS dessus.
Ce que l'Admin API change concrètement
Jusqu'à cette bêta, ajouter un membre à ton organisation Claude Enterprise, changer un rôle ou retirer un accès passait par claude.ai en tant qu'admin. Ça marche pour une équipe de 10. À 80 personnes réparties sur trois entités, avec du turn-over et un onboarding tous les quinze jours, ça devient une corvée récurrente et une source d'erreurs de rôle.
Les cas qui justifient de sortir du clic sont concrets :
- onboarding déclenché depuis le HRIS (BambooHR, Personio, workflow Notion RH) quand un contrat est signé,
- offboarding synchronisé avec la coupure SSO le jour du départ,
- revue trimestrielle des rôles avec un dump JSON pour l'audit interne,
- gestion des groupes RBAC (composition, rôles personnalisés en lecture) sans passer par l'UI.
L'Admin API ne remplace pas la Messages API : elle vit à côté, avec sa propre clé, son propre scope, et ne sert pas à envoyer des prompts. C'est un plan de contrôle, pas un plan de données. Pour la partie usage quotidien de Claude par tes équipes, tu restes sur les workflows habituels décrits dans notre guide de setup Claude et de gestion des abonnements.
Prérequis : plan Enterprise, clé admin, permissions
La bêta cible les organisations Claude Enterprise (celles qui vivent sur claude.ai, pas les organisations Console/API qui sont un type d'orga distinct). Concrètement :
- Tu dois être Primary Owner ou Owner de l'organisation pour émettre une Admin API key.
- La clé se génère dans les paramètres d'organisation côté Enterprise. Elle est distincte des clés Messages API : ne mélange pas les deux dans le même secret store.
- Une clé Admin avec le scope
read:org_auditpeut appeler tous les endpoints GET de gestion des utilisateurs, ce qui est utile pour un job d'audit qui n'a besoin de rien écrire.
Règle d'hygiène : cette clé ne touche jamais un repo public. Stocke-la dans 1Password, Vault ou AWS Secrets Manager, prévois une rotation trimestrielle, et si tu la balances par erreur dans un log, révoque avant même de finir ton café. Sur les rate limits de l'Admin API, Anthropic ne publie pas de chiffres officiels dans les release notes de la bêta : traite ça comme inconnu et prévois du backoff exponentiel sur tes scripts.
Gérer les membres de l'organisation
Les endpoints membres ne demandent pas d'en-tête bêta. Ils sont directement accessibles avec ta clé Admin.
| Endpoint | Méthode | Usage |
|---|---|---|
| Lister les membres | GET /v1/organizations/users | pagination, filtre par email |
| Détail d'un membre | GET /v1/organizations/users/{user_id} | rôle courant, statut |
| Changer un rôle | POST /v1/organizations/users/{user_id} | update partiel |
| Retirer un membre | DELETE /v1/organizations/users/{user_id} | révoque l'accès |
| Inviter | POST /v1/organizations/invites | envoie l'email d'invitation |
| Retirer une invitation | DELETE /v1/organizations/invites/{invite_id} | annule avant acceptation |
Point important sur les rôles assignables via l'API pour une organisation Claude Enterprise : uniquement user et managed. Les rôles developer, billing et claude_code_user existent mais sont réservés aux organisations Console/API, pas à Enterprise. Le rôle admin n'est jamais assignable par API. Les rôles système comme membership_admin, owner ou primary_owner sont visibles en lecture, pas modifiables via API.
Exemple minimal, invitation d'un nouvel arrivant :
curl https://api.anthropic.com/v1/organizations/invites \
-H "x-api-key: $CLAUDE_ADMIN_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"email": "nouveau.dev@exemple.fr",
"role": "user"
}'Côté Python, avec requests, penser à gérer la pagination cursor-based. Une organisation à 400 comptes qui ignore after_id ne récupère que la première page et un audit incomplet :
import os, requests
BASE = "https://api.anthropic.com"
HEADERS = {
"x-api-key": os.environ["CLAUDE_ADMIN_KEY"],
"anthropic-version": "2023-06-01",
}
def list_all_users():
users, after = [], None
while True:
params = {"limit": 100}
if after:
params["after_id"] = after
r = requests.get(f"{BASE}/v1/organizations/users",
headers=HEADERS, params=params, timeout=30)
r.raise_for_status()
data = r.json()
users.extend(data["data"])
if not data.get("has_more"):
return users
after = data["last_id"]Groupes RBAC et rôles personnalisés
Les groupes sont sous /v1/organizations/rbac_groups, avec les opérations classiques list, get, create, update, delete, plus /v1/organizations/rbac_groups/{group_id}/members pour la composition. Les rôles personnalisés sont accessibles en lecture uniquement sous /v1/organizations/rbac_roles.
Pour ces deux familles d'endpoints, tu dois envoyer l'en-tête bêta explicite : anthropic-beta: ce-user-management-2026-07-13. Les endpoints membres et invitations n'en ont pas besoin. Ne mélange pas.
Piège à éviter : aucun de ces chemins ne contient de segment {org_id}. Si tu vois quelque part un exemple qui écrit /v1/organizations/{org_id}/users, c'est faux. L'organisation est déduite de la clé Admin.
Auditer la consommation et coordonner avec les limites de dépense
La gestion des limites de dépense (spend limits) sur Claude Enterprise est exposée par une Admin API distincte, sortie séparément et déjà en bêta publique avant le 14 juillet 2026. Ne la confonds pas avec la bêta membres décrite ici : ce sont deux surfaces API différentes, chacune avec son propre périmètre.
Ce que tu peux industrialiser aujourd'hui côté membres, c'est le rapport de composition : qui a quel rôle, quel groupe, depuis quand. C'est déjà 80 % de ce qu'un audit interne demande une fois par trimestre. Combine ça avec ton système de tickets ou ton wiki (Notion, Confluence) via un script qui pousse un CSV mensuel, et tu remplaces une revue manuelle par un rapport reproductible.
Si tu construis un pipeline de reporting plus large qui mêle données Claude et données produit, la logique est la même que celle qu'on décrit dans notre pipeline SEO industrialisé avec Claude : tirer les données brutes, les nettoyer, laisser Claude générer le narratif.
Automatiser onboarding et offboarding
Deux scénarios qui reviennent tout le temps.
Onboarding. Un contrat est signé dans ton HRIS. Un webhook déclenche un job qui appelle POST /v1/organizations/invites avec l'email pro et le rôle par défaut. Si tu as des groupes RBAC par équipe, tu enchaînes avec l'ajout au groupe via /v1/organizations/rbac_groups/{group_id}/members. Le nouveau reçoit l'invitation le jour même sans qu'un admin ait cliqué.
Offboarding. Là, l'ordre compte. Si tu supprimes l'utilisateur via DELETE /v1/organizations/users/{user_id} avant de couper l'accès dans ton IdP SSO, un compte pourrait techniquement se réauthentifier tant que le retrait SSO n'est pas propagé. Coupe le SSO d'abord (Okta, Entra, Google Workspace), attends la propagation, puis supprime côté Claude. Un simple sleep 60 entre les deux appels dans ton script d'offboarding évite déjà beaucoup de mauvaises surprises.
Pseudo-code très condensé, à adapter à ton stack :
def offboard(email):
idp.disable_user(email) # 1. IdP d'abord
time.sleep(60) # 2. laisser propager
user = find_claude_user(email) # 3. lookup côté Claude
if user:
requests.delete(
f"{BASE}/v1/organizations/users/{user['id']}",
headers=HEADERS, timeout=30
).raise_for_status()
log_audit(email, "offboarded") # 4. traceTrace tout dans un log immuable. Le jour où quelqu'un demande qui a supprimé quoi, tu veux la réponse en une requête.
Limites actuelles et quand rester dans la console
La bêta membres ne couvre pas tout. Ce qui reste dans l'UI Enterprise à ce jour :
- La configuration SSO et SCIM. Aucune information vérifiée sur un statut SCIM 2.0 disponible dans cette bêta : ne t'appuie pas dessus pour tes plans.
- La création et la gestion fine des Projects et Artifacts au niveau organisation. Pour comprendre où ces surfaces produit se situent, on a un décryptage dédié dans notre page sur Projects et Artifacts.
- Les webhooks temps réel côté Admin. Ni confirmés ni disponibles publiquement : ne les intègre pas à ton architecture cible tant qu'ils ne sont pas annoncés.
- Une éventuelle « API workspaces » avec création programmatique de workspaces ou attribution de sièges par workspace : rien de vérifié dans cette bêta membres, ne bâtis pas d'architecture qui en dépend.
La bonne posture est hybride : script pour ce qui est répétitif et à haut volume (onboarding, offboarding, audit trimestriel des rôles et groupes), console pour ce qui se configure une fois et qu'on ne touche plus (politiques, SSO, paramètres d'organisation).
Passer à l'action
Si tu démarres cette semaine, trois scripts valent l'investissement, dans cet ordre :
- Un dump JSON hebdomadaire de tes membres et de leurs rôles, versionné dans un repo privé. Ça te donne un historique de composition sans effort.
- Un offboarding coordonné IdP puis Claude, avec un log d'audit. C'est le plus risqué à laisser en manuel.
- Un onboarding déclenché depuis ton HRIS, une fois que les deux premiers tournent proprement.
L'Admin API n'a d'intérêt que si tes équipes utilisent Claude sérieusement au quotidien. Si tu veux monter ce niveau d'usage côté utilisateurs finaux avant de tout automatiser côté admin, c'est exactement ce que couvre la formation Maîtriser Claude au quotidien chez Ottho : cinq semaines, cinq projets concrets, à partir de 900 € TTC.
