API Claude Tag
Gérez Claude Tag dans Slack pour votre organisation Claude Enterprise depuis vos propres systèmes : lisez et modifiez les paramètres des canaux et espaces de travail Slack, voyez quels paramètres s'appliquent et pourquoi, et attachez des Access bundles.
Claude Tag, c'est Claude qui travaille comme un coéquipier dans Slack : quelqu'un mentionne Claude dans un canal et Claude répond dans le fil. L'API Claude Tag vous permet de lire et de modifier, depuis vos propres systèmes, les paramètres Claude Tag qu'un propriétaire d'organisation définit sinon manuellement dans claude.ai > Organization settings > Claude Tag. Utilisez-la pour activer Claude canal par canal depuis un flux de travail d'approbation, conserver votre configuration dans un système de gestion de versions, ou auditer ce qui s'applique dans chaque canal.
Claude Tag est un produit claude.ai. Cette API le gère pour une organisation Claude Enterprise et n'a rien à voir avec les espaces de travail Claude Platform, l'utilisation de l'API ou la Claude Console.
Points de terminaison
L'API expose 14 endpoints répartis sur quatre ressources :
| Ressource | Endpoints |
|---|---|
| Canaux Slack : configurer un canal, lister les canaux d'un espace de travail ou en trouver un par ses identifiants Slack, en lire un, modifier ses paramètres, le supprimer | POST /v1/organizations/claude_tag/slack_channelsGET /v1/organizations/claude_tag/slack_channelsGET /v1/organizations/claude_tag/slack_channels/{id}POST /v1/organizations/claude_tag/slack_channels/{id}DELETE /v1/organizations/claude_tag/slack_channels/{id} |
| Espaces de travail Slack : lister vos espaces de travail ou en trouver un par son identifiant Slack, en lire un, modifier ses paramètres | GET /v1/organizations/claude_tag/slack_workspacesGET /v1/organizations/claude_tag/slack_workspaces/{id}POST /v1/organizations/claude_tag/slack_workspaces/{id} |
| Bundles : lister les Access bundles de votre organisation, en lire un (lecture seule) | GET /v1/organizations/claude_tag/bundlesGET /v1/organizations/claude_tag/bundles/{bundle_id} |
| Cibles de Bundle : lister les endroits où un Bundle est attaché, l'attacher à un canal ou un espace de travail, lire un attachement, le détacher | GET /v1/organizations/claude_tag/bundles/{bundle_id}/targetsPOST /v1/organizations/claude_tag/bundles/{bundle_id}/targetsGET /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id}DELETE /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id} |
Cette version couvre Slack. La connexion et la déconnexion d'un espace de travail Slack ou d'une Enterprise Grid, les paramètres par défaut Slack de votre organisation, la création et la modification des Access bundles, les limites de dépenses et tous les paramètres Claude Tag autres que les cinq décrits dans Paramètres restent dans claude.ai.
Prérequis
- Votre organisation doit disposer d'un forfait Claude Enterprise, avec Claude Tag configuré et au moins un espace de travail Slack ou une Enterprise Grid connecté.
- Votre propriétaire principal crée une clé Admin API avec la portée
read:claude_tag, la portéewrite:claude_tag, ou les deux, dans claude.ai > Organization settings > API. Consultez Créer une clé pour une organisation Claude Enterprise. - Chaque requête comporte trois en-têtes :
x-api-key,anthropic-version: 2023-06-01(consultez Versions de l'API) etanthropic-beta: experimental-claude-tag-2026-10-21.
En Python, TypeScript, C#, Go, Java, PHP et Ruby, le SDK expose ces endpoints sous client.beta.organization.claude_tag, et la CLI ant sous ant beta:organization:claude-tag ; ils envoient les en-têtes anthropic-version et anthropic-beta pour vous. Les exemples de cette page lisent la clé Admin API depuis la variable d'environnement ANTHROPIC_API_KEY. Lorsqu'un SDK ou la CLI récupère des pages supplémentaires pour vous, limit définit la taille de page, et non le total (consultez Pagination).
Les clés API appartiennent à l'organisation et continuent de fonctionner après le départ de la personne qui les a créées. Ne les partagez pas et ne les enregistrez pas dans un système de gestion de versions.
Démarrage rapide
Listez les espaces de travail Slack de votre organisation dans Claude Tag :
client = anthropic.Anthropic()
workspaces = client.beta.organization.claude_tag.slack_workspaces.list()
# Récupère automatiquement les pages suivantes selon les besoins.
for workspace in workspaces:
print(f"{workspace.id}: {workspace.slack.workspace_id}"){
"data": [
{
"type": "slack_workspace",
"id": "slws_011CZkZnWa7xPc3uJfZe5LgT",
"slack": {
"workspace_id": "T01ABCD2EFG"
},
"settings": {
"enabled": null,
"instructions": "Answer in English unless asked otherwise.",
"model": null,
"environment_id": null,
"guest_policy": null
},
"sources": {
"enabled": null,
"instructions": [
{
"type": "slack_workspace",
"slack_workspace_id": "slws_011CZkZnWa7xPc3uJfZe5LgT"
}
],
"model": null,
"environment_id": null,
"guest_policy": null
},
"created_at": "2026-09-02T17:04:11Z",
"updated_at": "2026-10-06T09:41:53Z"
}
],
"next_page": null
}Un paramètre qui vaut null dans settings n'est pas défini sur cet espace de travail : l'espace de travail en hérite donc et n'a pas de source pour ce paramètre. Pour lire plutôt ce qui s'applique, consultez Valeurs stockées et héritées.
Portées
| Portée | Accorde |
|---|---|
read:claude_tag | Tous les points de terminaison GET de cette page. |
write:claude_tag | Tous les points de terminaison POST et DELETE de cette page. Elle n'accorde pas les lectures, bien que la réponse à une modification contienne la ressource modifiée. |
Une clé peut porter les deux portées. Une intégration qui recherche un canal puis le modifie a besoin des deux. Aucune autre portée n'accorde l'accès à ces endpoints, et une clé créée dans la Claude Console ne fonctionne pas ici.
La clé doit appartenir à l'organisation dans son ensemble. L'organisation est toujours celle à laquelle appartient la clé, et aucune requête n'en nomme une. L'en-tête anthropic-workspace-id est ignoré, car rien ici n'appartient à un espace de travail Claude Platform.
Concepts clés
Noms sur cette page et dans claude.ai
| Cette API | claude.ai et Slack |
|---|---|
| Espace de travail Slack | Un espace de travail Slack. L'API de Slack l'appelle une team, donc l'identifiant d'espace de travail propre à Slack sur cette page correspond au team ID de Slack. Il n'a aucun rapport avec un espace de travail Claude Platform, dont les identifiants commencent par wrkspc_. |
| Paramètres par défaut Slack | Default Slack access : les paramètres qui s'appliquent à chaque espace de travail et à chaque canal. Un propriétaire de l'organisation les modifie dans claude.ai ; cette API indique où un canal ou un espace de travail en hérite. |
| Niveau de paramètres | Une portée : un canal, un espace de travail ou les paramètres par défaut Slack |
| Bundle | Un Access bundle (glossaire Claude Tag) |
enabled | Le bouton Enable Claude Tag in Slack |
instructions | Custom instructions |
model | Model |
environment_id | Environment |
guest_policy | How should Claude work in channels with guests : restrict correspond à Restrict, channel_only à Channel only et allow à Full access |
Canaux et espaces de travail configurés
Un canal ou un espace de travail est configuré lorsque Claude Tag détient un enregistrement de paramètres pour celui-ci. Seul un canal ou un espace de travail configuré possède un id, et seuls ceux-ci sont listés : c'est Slack, et non cette API, qui détient la liste complète des canaux d'un espace de travail.
- Un espace de travail est configuré lorsqu'un propriétaire de l'organisation le connecte dans claude.ai. Lorsqu'un propriétaire connecte une Slack Enterprise Grid, les espaces de travail de la Grid sont configurés peu après. La première utilisation de Claude dans un espace de travail, ou le premier canal que vous y configurez, configure tout espace de travail qui ne l'était pas. Aucun autre endpoint ne configure d'espace de travail, et aucun n'en supprime.
- Un canal est configuré dans claude.ai, par la première utilisation de Claude dans celui-ci, ou avec Configurer un canal.
Votre organisation possède un espace de travail tant que sa connexion à cet espace de travail est active, et possède les canaux qu'il contient. Une Slack Enterprise Grid regroupe plusieurs espaces de travail sous une même entreprise. Tant que la connexion de votre organisation à une Grid est active, elle possède également chaque espace de travail de la Grid qu'aucune autre organisation n'a connecté. Un tel espace de travail est un espace de travail comme un autre : une fois configuré, il possède un id, est listé, et peut être lu, modifié et recevoir des Bundles, et ses canaux peuvent être listés. La Grid elle-même n'est pas une ressource de cette API et n'a pas d'id. Un canal ou un espace de travail que vous ne possédez pas renvoie le même 404 qu'un canal ou un espace de travail qui n'existe pas.
Un espace de travail que votre organisation possède uniquement via une Grid renvoie ce 404 tant qu'il n'est pas configuré, partout où une requête le nomme par l'identifiant propre à Slack : lorsque vous recherchez l'espace de travail, listez ses canaux ou recherchez un canal non configuré qu'il contient. Vous pouvez néanmoins y configurer un canal, ce qui configure également l'espace de travail, sans aucun paramètre stocké.
Un canal partagé avec toute une Grid peut être stocké sous l'identifiant Slack propre à la Grid, qui commence par E, à la place de celui d'un espace de travail. Cet identifiant est alors le slack.workspace_id du canal, et lister les canaux avec cet identifiant comme slack_workspace_id renvoie ces canaux. Aucun objet espace de travail ne le porte : si un propriétaire a stocké des paramètres sur la Grid elle-même dans claude.ai, sources peut les nommer comme un slack_workspace dont l'id renvoie 404 lorsque vous le lisez.
ID
Vous connaissez un canal par les ID que Slack vous affiche. Recherchez son id une fois avec Trouver un canal par ses ID Slack, puis stockez et utilisez cet id.
| Identifiant | Préfixe | Où il apparaît |
|---|---|---|
| Ressource canal Slack | slch_ | id sur un canal ; slack_channel_id dans les corps de requête et les réponses |
| Ressource espace de travail Slack | slws_ | id sur un espace de travail ; slack_workspace_id dans les corps de requête et les réponses |
| Bundle | capp_ | id sur un Bundle ; {bundle_id} dans les chemins |
| Cible de Bundle | btgt_ | id sur une cible de Bundle ; {target_id} dans les chemins |
| Identifiant d'espace de travail propre à Slack | T, ou E pour l'identifiant propre à une Grid (consultez Canaux et espaces de travail configurés) | slack.workspace_id ; le paramètre de requête slack_workspace_id |
| Identifiant de canal propre à Slack | C ou G | slack.channel_id ; le paramètre de requête slack_channel_id |
Un identifiant de canal Slack dans un paramètre de requête ou un corps de requête qui ne commence pas par C ou G renvoie 400, de même que tout identifiant Slack contenant autre chose que des lettres majuscules et des chiffres après sa première lettre, ou dépassant 32 caractères.
Un id ne change pas tant que le canal ou l'espace de travail est configuré, quoi que vous y modifiiez, à une exception près décrite dans Mode lecture seule. Un canal ou un espace de travail supprimé puis configuré à nouveau reçoit un nouvel id, et l'ancien continue de renvoyer 404. Lorsqu'un id stocké renvoie 404 sans error_code, listez vos espaces de travail avec la même clé et les mêmes en-têtes. Cette requête ne nomme aucun canal ni aucun espace de travail : si elle renvoie 200, l'id n'existe plus ; retrouvez le canal ou l'espace de travail par ses identifiants Slack. Tout autre statut n'indique rien sur l'id : conservez vos valeurs id stockées et consultez Réponses d'erreur.
Paramètres
Chaque niveau de paramètres stocke les cinq mêmes paramètres, tous facultatifs :
| Paramètre | Type | Description |
|---|---|---|
enabled | boolean | Indique si Claude est activé. |
instructions | string | Consignes permanentes que Claude lit à chaque session. Au maximum 8 192 caractères après suppression des espaces de début et de fin. Un texte vide efface le paramètre. |
model | string | Le modèle sur lequel démarrent les nouvelles sessions : un identifiant de modèle que votre organisation peut utiliser avec Claude Tag. Au maximum 128 caractères. |
environment_id | string | L'environnement cloud dans lequel s'exécutent les sessions, préfixé env_. Il doit être actif et appartenir à votre organisation. |
guest_policy | object | Ce que fait Claude dans un canal lorsqu'un invité Slack s'y trouve, pour tous les membres du canal : {"type": "allow"} (Claude répond), {"type": "restrict"} (Claude ne répond pas) ou {"type": "channel_only"} (Claude répond uniquement avec les Bundles attachés au canal lui-même ; si channel_only n'est pas disponible pour votre organisation, une requête qui le définit renvoie 400). Consultez Restreindre les canaux avec invités pour savoir ce que cela signifie dans les canaux partagés via Slack Connect ou au sein d'une Enterprise Grid. |
model et environment_id sont vérifiés lorsque vous les écrivez, puis plus jamais : si le modèle ou l'environnement change ultérieurement, les réponses continuent de renvoyer la valeur stockée.
Si un propriétaire d'organisation a placé un niveau de paramètres sur un pool de runners auto-hébergés dans claude.ai, son environment_id renvoie l'ID du pool, qui commence par ccpool_. Cette API ne peut pas définir de pool de runners, et renvoie 400 pour une requête qui modifie ou efface environment_id sur un niveau de paramètres qui en stocke un.
Valeurs stockées et héritées
Les paramètres existent à trois niveaux : le canal, l'espace de travail dans lequel se trouve le canal, et les paramètres par défaut Slack de votre organisation, qu'un propriétaire de l'organisation définit dans claude.ai. Chaque niveau ne stocke que ce qui a été défini à ce niveau. Les settings d'un objet canal ou espace de travail peuvent contenir l'une de ces deux choses :
- Ce qu'il stocke. C'est ce que contient une réponse, sauf demande contraire. Un paramètre qui n'est pas défini sur le canal ou l'espace de travail vaut
null. Utilisez-le pour comparer avec une configuration que vous conservez ailleurs. - Ce qui s'y applique, une fois tous les niveaux pris en compte. Pour l'obtenir, ajoutez le paramètre de requête
include_inherited=trueà toute requêteGETqui renvoie un canal ou un espace de travail, y compris les deux listes. Utilisez-le pour auditer, ou pour comprendre pourquoi Claude se comporte comme il le fait dans un canal. Le paramètre vautfalsepar défaut, et une valeur qui n'est pas un booléen renvoie400. Une requête qui configure un canal ou modifie des paramètres n'accepte pas ce paramètre et renvoie400si vous l'envoyez ; sa réponse contient ce qui est stocké.
Dans les deux cas, sources nomme, pour chaque paramètre, le niveau dont provient la valeur figurant dans settings. Sans include_inherited, la source d'un paramètre stocké par le canal ou l'espace de travail nomme le canal ou l'espace de travail lui-même, et un paramètre qu'il ne stocke pas n'a pas de source : null, ou une liste vide pour instructions. Avec include_inherited=true, chaque paramètre sauf instructions a une source, et un paramètre qu'aucun niveau ne définit a pour source {"type": "default"} ; lorsqu'aucun niveau ne définit instructions, il vaut null et sa liste de sources est vide. Ainsi, pour distinguer une valeur que le canal ou l'espace de travail définit lui-même d'une valeur héritée, examinez sa source, et non le fait que la valeur soit null ou non.
Chaque paramètre est résolu indépendamment :
| Paramètre | Règle | Lorsqu'aucun niveau ne le définit |
|---|---|---|
enabled | Le niveau le plus proche qui le définit détermine la valeur ; ainsi, true sur un canal y active Claude même lorsque son espace de travail stocke false. | true |
instructions | Cumulatif. Le texte de chaque niveau qui le définit est concaténé, du plus large au plus spécifique, séparé par une ligne vide. | null |
model | Le niveau le plus proche qui le définit détermine la valeur. | null : Claude utilise le modèle par défaut du produit |
environment_id | Le niveau le plus proche qui le définit détermine la valeur. | null |
guest_policy | Le niveau le plus proche qui le définit détermine la valeur. | restrict |
Par exemple, une organisation stocke des instructions dans ses paramètres par défaut Slack, désactive Claude sur un espace de travail et définit un modèle sur un canal de cet espace de travail. Lu avec include_inherited=true, le canal affiche les trois valeurs et la provenance de chacune :
{
"type": "slack_channel",
"id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
"slack": {
"workspace_id": "T01ABCD2EFG",
"channel_id": "C05HJKL6MNP"
},
"settings": {
"enabled": false,
"instructions": "Be brief.",
"model": "claude-opus-5-5",
"environment_id": null,
"guest_policy": { "type": "restrict" }
},
"sources": {
"enabled": {
"type": "slack_workspace",
"slack_workspace_id": "slws_011CZkZnWa7xPc3uJfZe5LgT"
},
"instructions": [{ "type": "slack_default" }],
"model": {
"type": "slack_channel",
"slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX"
},
"environment_id": { "type": "default" },
"guest_policy": { "type": "default" }
},
"created_at": "2026-10-19T16:20:05Z",
"updated_at": "2026-10-19T16:24:38Z"
}Lu sans le paramètre, le même canal a son model et quatre paramètres null dans settings ; dans sources, model nomme le canal, instructions est une liste vide et les trois autres valent null.
Une source est l'une des suivantes :
type | Signification |
|---|---|
slack_channel | Le canal, nommé dans slack_channel_id. |
slack_workspace | L'espace de travail, nommé dans slack_workspace_id. |
slack_parent_channel | Le parent d'un canal de code, nommé dans slack_channel_id. Un canal de code est un canal démarré à partir d'un autre canal. Tant que le parent est un canal public du même espace de travail, il se situe entre le canal et l'espace de travail et ne fournit que instructions et environment_id. |
slack_grid_channel | Le même canal Slack tel que configuré sous un autre espace de travail de sa Slack Enterprise Grid, nommé par les identifiants propres à Slack sous slack. Il ne fournit que enabled : lorsque ni le canal ni son espace de travail ne définissent enabled, une valeur true stockée pour le canal sous un autre espace de travail de la Grid s'applique. |
slack_default | Les paramètres par défaut Slack de votre organisation, qui n'ont pas d'identifiant. |
default | Aucun niveau ne définit de valeur, donc la valeur par défaut intégrée s'applique. |
sources.instructions liste chaque niveau qui fournit du texte, du plus large au plus spécifique, ce qui correspond à l'ordre de leur texte dans settings.instructions, et est vide lorsqu'aucun n'en fournit. Elle indique quel texte vient en premier, et non où se termine le texte d'un niveau : pour obtenir le texte propre à un niveau, lisez ce canal ou cet espace de travail sans include_inherited ou, pour les paramètres par défaut Slack, consultez claude.ai. Une source qui nomme un canal ou un espace de travail porte toujours son identifiant, qui n'est jamais null : un id de cette API dans slack_channel_id ou slack_workspace_id ou, pour slack_grid_channel, les identifiants propres à Slack sous slack, comme sur un objet canal.
Avec include_inherited=true, une requête échoue avec 503 si un niveau ne peut pas être lu, plutôt que de répondre sans lui.
Modifier les paramètres
Les deux endpoints de mise à jour et Configurer un canal acceptent un objet settings selon les mêmes règles :
- Un paramètre que vous omettez reste inchangé.
{"settings": {"enabled": false}}désactive Claude et laisse les quatre autres paramètres tels quels. - Un paramètre que vous envoyez avec la valeur
nullest effacé, de sorte que le niveau en hérite à nouveau. - Tout ou rien. Si une valeur de la requête est refusée, aucun paramètre de la requête n'est stocké.
- Répétition sans risque. Chaque modification laisse la ressource dans l'état où l'a laissée la première requête identique ; aucun endpoint n'accepte donc d'
Idempotency-Key. Une requête qui ne modifie rien n'écrit rien et n'enregistre aucun événement dans l'Activity Feed. - La dernière écriture l'emporte. Aucune requête n'accepte de précondition. Deux appelants qui lisent chacun une ressource puis modifient le même paramètre s'écrasent mutuellement. Un
409n'est renvoyé que lorsqu'une autre modification chevauche votre requête pendant son exécution ; rien de ce que votre requête demandait de modifier ou de supprimer n'a été effectué, sauf qu'une requête de configuration a pu déjà configurer le canal : relisez donc la ressource et renvoyez la modification si elle est toujours nécessaire.
Une modification de guest_policy sur un canal peut mettre fin aux sessions en cours dans ce canal. Elles se terminent en arrière-plan, et la réponse n'attend pas qu'elles soient terminées.
Mode lecture seule
Le API / Terraform read-only mode (mode lecture seule API / Terraform) est un paramètre qu'un propriétaire de l'organisation active et désactive dans les paramètres Claude Tag de claude.ai. Le nom décrit claude.ai et Slack : tant que le mode est activé, ils refusent les modifications qu'une personne apporte à ce que gère cette API, de sorte que seules les clés effectuent ces modifications. Ils refusent également quelques modifications connexes qu'aucune clé n'effectue, comme la modification d'un paramètre des paramètres par défaut Slack : personne ne les effectue donc tant qu'un propriétaire n'a pas désactivé le mode. Il ne rend pas cette API en lecture seule. Chaque endpoint de cette page répond de la même façon que le mode soit activé ou non, et aucun endpoint ne le lit ni ne le modifie.
Tant que le mode est désactivé, les personnes et les clés modifient les mêmes paramètres et attachent et détachent les mêmes Bundles, et chaque modification remplace ce qui est stocké. Activez-le si votre pipeline doit être la seule source de modifications.
Tant que le mode est activé, claude.ai et Slack refusent :
- Modifier l'un des cinq paramètres sur un canal, un espace de travail ou les paramètres par défaut Slack (qu'aucune clé ne modifie non plus)
- Configurer un canal, supprimer un canal, ajouter un espace de travail d'une Enterprise Grid connectée, ou déconnecter un espace de travail ou une Grid dans claude.ai
- Attacher un Bundle à un canal ou à un espace de travail, en détacher un, ou supprimer un Bundle qui est attaché à l'un d'eux
Certaines actions restent possibles dans les deux cas : un propriétaire peut toujours connecter un nouvel espace de travail ou une nouvelle Grid, créer et modifier des Bundles, et modifier les paramètres Claude Tag que cette API ne gère pas. La première utilisation de Claude configure toujours un canal, ou un espace de travail de Grid qui n'était pas configuré, la suppression d'un canal dans Slack le supprime toujours, et la désinstallation de l'application Slack de Claude déconnecte toujours cet espace de travail ou cette Grid.
Tant que le mode est désactivé, configurer dans claude.ai un canal déjà configuré peut remplacer l'enregistrement du canal, mais uniquement pour un canal qui ne contient encore rien : un canal que la première utilisation de Claude a configuré, ou que cette API a configuré sans settings, et sur lequel personne n'a depuis stocké de paramètre ni attaché de Bundle. Le canal reçoit alors un nouvel id, et l'ancien renvoie 404. Tout autre canal conserve son id jusqu'à sa suppression.
Messages directs de groupe
Un message direct de groupe Slack possède un identifiant au format d'un canal ; l'utilisation de Claude dans l'un d'eux le configure donc comme un canal : il possède un id, est listé et peut être lu. Le configurer via cette API, y modifier un paramètre, y attacher un Bundle et le supprimer renvoient chacun 400, sauf qu'une requête de configuration qui omet settings pour un message direct de groupe déjà configuré le renvoie avec 200, comme le ferait une lecture. Détacher un Bundle d'un message direct de groupe est autorisé.
Exemples de flux de travail
Activer Claude uniquement dans les canaux approuvés
N'importe quel membre peut inviter Claude dans un canal public. Pour que Claude ne soit activé que là où vous l'avez approuvé :
- Demandez à un propriétaire de l'organisation de désactiver Claude partout dans claude.ai, avec le bouton Enable Claude Tag in Slack sous Default Slack access, ce qui stocke
enabledàfalsedans les paramètres par défaut Slack de votre organisation. Le mode lecture seule doit être désactivé pendant cette opération. - Lorsque votre système d'approbation approuve un canal, configurez le canal avec
"settings": {"enabled": true}. La requête accepte les identifiants propres à Slack et renvoie le canal même s'il était déjà configuré ; elle peut donc être répétée sans risque. - Dans la même exécution, attachez les Bundles pour lesquels l'équipe a été approuvée, afin que la première session du canal dispose déjà de ses outils.
Conserver la configuration dans un système de gestion de versions
- Indexez votre configuration par les identifiants que Slack affiche pour chaque canal, et trouvez chaque canal grâce à eux.
- Lisez chaque canal sans
include_inheritedet comparez sessettingsavec ce que déclare votre dépôt. Avec le paramètre, des valeurs héritées seraient mélangées. - N'envoyez que les paramètres qui diffèrent, et envoyez
nullpour un paramètre que votre dépôt ne déclare plus. - Demandez à un propriétaire de l'organisation d'activer le mode lecture seule, afin que personne ne modifie les mêmes paramètres à la main.
Auditer ce qui s'applique partout
- Listez vos espaces de travail, puis listez les canaux de chaque espace de travail, dans les deux cas avec
include_inherited=trueafin que chaque élément contienne ce qui s'y applique. Si votre organisation a connecté une Enterprise Grid, listez également les canaux stockés sous l'identifiant Slack propre à la Grid. Consultez Canaux et espaces de travail configurés. - Signalez ce que votre politique interdit, par exemple un canal où
enabledvauttruesans approbation enregistrée, ou oùguest_policyvautallow. - Listez vos Bundles, puis les cibles de chaque Bundle, pour voir où est attaché l'accès aux systèmes sensibles.
Canaux Slack
L'objet canal décrit un canal Slack :
| Champ | Description |
|---|---|
type | slack_channel. |
id | Préfixé slch_. Consultez Identifiants. |
slack | Les identifiants propres à Slack : workspace_id pour l'espace de travail dans lequel se trouve le canal, et channel_id pour le canal. |
settings | Ce que le canal stocke lui-même ou, avec include_inherited=true, ce qui s'y applique. Toujours présent, avec les cinq paramètres ; un paramètre non défini vaut null. Consultez Valeurs stockées et héritées. |
sources | Pour chaque paramètre, le niveau dont provient la valeur figurant dans settings. Toujours présent. |
created_at | Date à laquelle le canal a été configuré. |
updated_at | Date de la dernière modification de l'enregistrement du canal par Claude Tag. Il change à chaque modification d'un paramètre, ici, dans claude.ai ou dans Slack, et peut aussi changer pour une modification qu'aucune réponse ici n'affiche. Considérez une valeur plus récente comme une raison de relire le canal, et non comme la preuve qu'un paramètre a changé. Attacher ou détacher un Bundle ne le modifie pas en soi. |
Un id qui n'est pas un identifiant slch_ valide renvoie 400. Un identifiant valide qui ne nomme aucun canal de votre organisation renvoie 404.
Configurer un canal
POST /v1/organizations/claude_tag/slack_channels configure un canal Slack et le renvoie. slack.workspace_id et slack.channel_id sont obligatoires et sont les identifiants propres à Slack. settings est facultatif et suit Modifier les paramètres. Si le canal est déjà configuré, la requête renvoie le canal existant et applique settings ; la réponse est 200 dans les deux cas. Nécessite la portée write:claude_tag.
client = anthropic.Anthropic()
channel = client.beta.organization.claude_tag.slack_channels.create(
slack={"workspace_id": "T01ABCD2EFG", "channel_id": "C05HJKL6MNP"},
settings={"instructions": "Answer in the language of the question."},
)
print(channel.id){
"type": "slack_channel",
"id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
"slack": {
"workspace_id": "T01ABCD2EFG",
"channel_id": "C05HJKL6MNP"
},
"settings": {
"enabled": null,
"instructions": "Answer in the language of the question.",
"model": null,
"environment_id": null,
"guest_policy": null
},
"sources": {
"enabled": null,
"instructions": [
{
"type": "slack_channel",
"slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX"
}
],
"model": null,
"environment_id": null,
"guest_policy": null
},
"created_at": "2026-10-19T16:20:05Z",
"updated_at": "2026-10-19T16:20:05Z"
}Avant qu'un canal ne soit configuré, l'application Slack de Claude vérifie auprès de Slack que le canal se trouve dans l'espace de travail, n'est pas archivé et est visible par l'application. Un canal qui échoue à cette vérification renvoie 404, de même qu'un espace de travail sur lequel l'application Slack de Claude n'est pas installée. Pour un espace de travail que votre organisation possède via une Enterprise Grid, l'application doit être installée sur la Grid.
La configuration du canal et l'application de settings sont deux étapes distinctes. Lorsque cette requête configure le canal et que settings est ensuite refusé avec un 400, 404 ou 409, la réponse est le refus et le canal reste configuré sans rien de stocké (après un 409, sauf si la modification concurrente l'a supprimé ou remplacé). Ce refus porte un error_code qui commence par slack_channel_set_up_ et l'id du nouveau canal dans error.details.slack_channel_id (consultez Réponses d'erreur). Corrigez settings et envoyez-le dans une mise à jour vers cet id, ou renvoyez la requête de configuration. Si le canal était déjà configuré, un settings refusé renvoie la même erreur qu'une mise à jour, et le canal conserve ce qu'il stockait. Un 500 ou un 503 ne porte dans aucun des deux cas d'error_code et n'indique pas si le canal a été configuré ni si settings a été stocké : renvoyez la requête de configuration.
Lister les canaux
GET /v1/organizations/claude_tag/slack_channels liste les canaux configurés d'un espace de travail, du plus récent au plus ancien selon created_at. slack_workspace_id est obligatoire et correspond à l'identifiant propre à Slack de l'espace de travail. Ajoutez include_inherited=true pour que chaque canal contienne ce qui s'y applique (consultez Valeurs stockées et héritées). Une page peut contenir moins de limit canaux, voire aucun, alors que next_page est toujours défini : continuez donc à demander des pages jusqu'à ce que next_page vaille null (consultez Pagination). Nécessite la portée read:claude_tag.
client = anthropic.Anthropic()
channels = client.beta.organization.claude_tag.slack_channels.list(
slack_workspace_id="T01ABCD2EFG"
)
# Récupère automatiquement des pages supplémentaires selon les besoins.
for channel in channels:
print(f"{channel.id}: {channel.slack.channel_id}")La réponse est {"data": [...], "next_page": ...}, où chaque élément est un objet canal. Un slack_workspace_id qui nomme un espace de travail que votre organisation ne possède pas renvoie 404, de même qu'un espace de travail qu'elle possède uniquement via une Enterprise Grid tant que cet espace de travail n'est pas configuré (consultez Canaux et espaces de travail configurés).
Trouver un canal par ses ID Slack
Ajoutez slack_channel_id, l'identifiant propre à Slack du canal, pour rechercher un canal. data contient ce canal, ou est vide lorsque le canal n'est pas configuré. Dans un espace de travail non configuré que votre organisation possède uniquement via une Enterprise Grid, un canal non configuré renvoie plutôt 404. Une recherche n'est pas paginée : elle ignore page et toute valeur de limit comprise entre 1 et 100 (une valeur de limit hors de cette plage renvoie toujours 400), et son next_page vaut null. C'est ainsi que vous trouvez l'id d'un canal.
client = anthropic.Anthropic()
page = client.beta.organization.claude_tag.slack_channels.list(
slack_workspace_id="T01ABCD2EFG",
slack_channel_id="C05HJKL6MNP",
)
for channel in page.data:
print(channel.id)Transmettre un ID slch_ comme slack_channel_id renvoie 400.
Obtenir un canal
GET /v1/organizations/claude_tag/slack_channels/{id} renvoie l'objet canal, contenant ce que le canal stocke. Pour lire plutôt ce qui s'y applique, consultez Lire ce qui s'applique dans un canal. Nécessite la portée read:claude_tag.
client = anthropic.Anthropic()
channel = client.beta.organization.claude_tag.slack_channels.retrieve(
"slch_011CZkZmRt4vNq8sHbYw2KdX"
)
print(channel.settings.enabled)Lire ce qui s'applique dans un canal
La même requête avec include_inherited=true renvoie l'objet canal dont settings contient ce qui s'applique dans le canal, et dont sources indique la provenance de chaque valeur. Valeurs stockées et héritées présente une réponse complète ; enabled et guest_policy n'y valent jamais null. Si un niveau ne peut pas être lu, la requête échoue avec 503 plutôt que de répondre sans lui. Nécessite la portée read:claude_tag.
client = anthropic.Anthropic()
channel = client.beta.organization.claude_tag.slack_channels.retrieve(
"slch_011CZkZmRt4vNq8sHbYw2KdX",
include_inherited=True,
)
print(channel.settings.instructions)Mettre à jour un canal
POST /v1/organizations/claude_tag/slack_channels/{id} modifie les paramètres du canal et renvoie l'objet canal. settings est obligatoire et suit Modifier les paramètres. Nécessite la portée write:claude_tag.
Désactivez Claude dans un canal et laissez ses autres paramètres tels quels :
client = anthropic.Anthropic()
channel = client.beta.organization.claude_tag.slack_channels.update(
"slch_011CZkZmRt4vNq8sHbYw2KdX",
settings={"enabled": False},
)
print(channel.settings.enabled)Effacez les instructions du canal, afin que seules les instructions héritées s'appliquent :
client = anthropic.Anthropic()
channel = client.beta.organization.claude_tag.slack_channels.update(
"slch_011CZkZmRt4vNq8sHbYw2KdX",
settings={"instructions": None},
)
print(channel.settings.instructions)Supprimer un canal
DELETE /v1/organizations/claude_tag/slack_channels/{id} retire un canal de Claude Tag. Il s'agit de la même suppression que celle qu'un propriétaire d'organisation effectue dans claude.ai, avec le même effet. Elle ne supprime, n'archive ni ne modifie le canal dans Slack, ni aucun message qu'il contient. Nécessite la portée write:claude_tag.
Un canal ne peut être supprimé que lorsque Claude y est désactivé. Tant que enabled se résout à true pour le canal, tel que Lire ce qui s'applique dans un canal le renvoie, la requête renvoie 400 avec error_code: "slack_channel_enabled". Définissez d'abord enabled à false sur le canal, puis renvoyez la requête. La seule exception concerne une organisation ayant une configuration de conformité restreinte : elle ne peut pas effectuer cette modification, donc sa requête supprime le canal, que Claude y soit activé ou non. Si un niveau nécessaire à cette vérification ne peut pas être lu, la requête renvoie 503 et ne supprime rien.
Cette vérification protège contre la suppression par erreur d'un canal en cours d'utilisation. Elle n'empêche pas Claude d'accéder au canal par la suite. La suppression efface les paramètres propres au canal, y compris un enabled à false ; dès lors, seul ce dont hérite le canal détermine si Claude y est activé. Si cela active Claude, Claude répond à nouveau dans le canal à sa prochaine mention, et cette utilisation configure le canal à nouveau : un nouvel id, aucun paramètre propre, et rien de la mémoire du canal supprimé.
- Pour tenir Claude à l'écart d'un canal, gardez-le configuré avec
enabledàfalseplutôt que de le supprimer, ou assurez-vous que ce dont il hériterait, que la suppression ne modifie pas, maintient Claude désactivé. - Pour qu'un canal ne stocke rien tout en conservant ses sessions et sa mémoire, effacez plutôt chaque paramètre et détachez chaque Bundle.
Deux types de canaux ne peuvent pas du tout être supprimés ici, que Claude y soit activé ou non, et renvoient 400 sans error_code : un message direct de groupe, et un canal qui contient une configuration que cette API ne gère pas, comme un pool de runners ou un paramètre que seul claude.ai possède. Ces cas sont vérifiés avant enabled, donc désactiver Claude n'y change rien ; un propriétaire de l'organisation supprime le second type dans claude.ai.
client = anthropic.Anthropic()
deleted_channel = client.beta.organization.claude_tag.slack_channels.delete(
"slch_011CZkZmRt4vNq8sHbYw2KdX"
)
print(deleted_channel.id){
"type": "slack_channel_deleted",
"id": "slch_011CZkZmRt4vNq8sHbYw2KdX"
}L'id renvoie 404 dès que la requête se termine, et le reste est supprimé en arrière-plan. Une suppression répétée renvoie 404 : si vous renvoyez une suppression après un 503, un 404 signifie alors que le canal n'existe déjà plus.
Espaces de travail Slack
L'objet espace de travail décrit un espace de travail Slack. Il possède les mêmes champs que l'objet canal, sauf que type vaut slack_workspace, que id est préfixé slws_ et que slack ne contient que workspace_id. La réponse du Démarrage rapide en présente un complet. Lu avec include_inherited=true, un espace de travail affiche chaque paramètre tel que l'espace de travail et les paramètres par défaut Slack le résolvent, ce dont hérite un canal de l'espace de travail sauf si un niveau plus proche définit ce paramètre.
Un id qui n'est pas un identifiant slws_ valide renvoie 400. Un identifiant valide qui ne nomme aucun espace de travail de votre organisation renvoie 404.
Lister les espaces de travail
GET /v1/organizations/claude_tag/slack_workspaces liste les espaces de travail configurés que possède votre organisation, du plus récent au plus ancien selon created_at. Le Démarrage rapide présente la requête et la réponse. Pour trouver un espace de travail par l'identifiant propre à Slack, ajoutez slack_workspace_id : data contient cet espace de travail, ou est vide lorsqu'il n'est pas configuré, et un espace de travail que votre organisation ne possède pas renvoie 404. Un espace de travail qu'elle possède uniquement via une Enterprise Grid renvoie également 404 tant qu'il n'est pas configuré. Ajoutez include_inherited=true pour que chaque espace de travail contienne ce qui s'y applique (consultez Valeurs stockées et héritées). Nécessite la portée read:claude_tag.
Obtenir un espace de travail
GET /v1/organizations/claude_tag/slack_workspaces/{id} renvoie l'objet espace de travail, contenant ce que l'espace de travail stocke ou, avec include_inherited=true dans la requête comme dans Lire ce qui s'applique dans un canal, ce qui s'y applique. Nécessite la portée read:claude_tag.
client = anthropic.Anthropic()
workspace = client.beta.organization.claude_tag.slack_workspaces.retrieve(
"slws_011CZkZnWa7xPc3uJfZe5LgT"
)
print(workspace.settings.instructions)Mettre à jour un espace de travail
POST /v1/organizations/claude_tag/slack_workspaces/{id} modifie les paramètres de l'espace de travail et renvoie l'objet espace de travail. settings est obligatoire et suit Modifier les paramètres. Ce que vous définissez ici s'applique dans chaque canal de l'espace de travail qui ne définit pas sa propre valeur, à l'exception de instructions, auquel chaque canal ajoute ses propres instructions plutôt que de les remplacer. Nécessite la portée write:claude_tag.
client = anthropic.Anthropic()
workspace = client.beta.organization.claude_tag.slack_workspaces.update(
"slws_011CZkZnWa7xPc3uJfZe5LgT",
settings={"guest_policy": {"type": "restrict"}},
)
print(workspace.settings.guest_policy)Bundles
Un Bundle est ce que claude.ai appelle un Access bundle : un ensemble nommé d'accès, tels que des connecteurs, des dépôts et des identifiants, que Claude peut utiliser dans un canal ou un espace de travail. Les propriétaires d'organisation créent, modifient et suppriment les Bundles dans claude.ai. Cette API les liste et les attache. Elle renvoie le nom et la description d'un Bundle, mais jamais ce que le Bundle accorde.
| Champ | Description |
|---|---|
type | bundle. |
id | Préfixé par capp_. |
display_name | Le nom du Bundle. |
description | Ce à quoi sert le Bundle. null lorsqu'il n'a pas de description. |
created_at, updated_at | Le moment où le Bundle a été créé et celui où il a été modifié pour la dernière fois. |
Un bundle_id qui n'est pas un identifiant capp_ valide renvoie 400. Un identifiant valide qui n'existe pas ou appartient à une autre organisation renvoie 404, quel que soit le reste de la requête. Les Bundles que Claude Tag gère pour son propre compte ne sont pas listés et renvoient 404.
Lister les Bundles
GET /v1/organizations/claude_tag/bundles liste les Bundles de votre organisation, du plus récent au plus ancien selon created_at. Nécessite la portée read:claude_tag.
client = anthropic.Anthropic()
bundles = client.beta.organization.claude_tag.bundles.list()
# Récupère automatiquement des pages supplémentaires si nécessaire.
for bundle in bundles:
print(f"{bundle.id}: {bundle.display_name}"){
"data": [
{
"type": "bundle",
"id": "capp_011CZkZjLP1cWxj5EtMmdgbq",
"display_name": "Support tools",
"description": "Issue tracker and the support runbooks repository.",
"created_at": "2026-09-12T08:15:30Z",
"updated_at": "2026-09-30T13:02:47Z"
}
],
"next_page": null
}Obtenir un Bundle
GET /v1/organizations/claude_tag/bundles/{bundle_id} renvoie l'objet Bundle. Nécessite la portée read:claude_tag.
client = anthropic.Anthropic()
bundle = client.beta.organization.claude_tag.bundles.retrieve(
"capp_011CZkZjLP1cWxj5EtMmdgbq"
)
print(bundle.display_name)Cibles de Bundle
Une cible de Bundle est l'enregistrement d'un Bundle attaché à un canal ou à un espace de travail. Un Bundle attaché à un espace de travail peut être utilisé dans l'espace de travail et dans chacun de ses canaux. Un Bundle attaché à un canal ne peut être utilisé que dans ce canal.
| Champ | Description |
|---|---|
type | slack_channel ou slack_workspace. |
id | Préfixé par btgt_. Il s'agit du {target_id} dans les chemins, et ce n'est jamais l'id propre du canal ou de l'espace de travail. |
slack_channel_id | Sur une cible slack_channel : l'id du canal, préfixé par slch_. |
slack_workspace_id | Sur une cible slack_workspace : l'id de l'espace de travail, préfixé par slws_. |
created_at | Le moment où le Bundle a été attaché. |
Un Bundle est attaché au plus une fois à un canal ou à un espace de travail, et la même paire a toujours le même id, y compris après un détachement suivi d'un nouvel attachement. L'id est opaque : obtenez-le à partir de la réponse à un attachement ou à partir de la liste. Une cible de Bundle ne contient pas l'id de son Bundle, dont ses chemins ont également besoin ; conservez donc les deux ensemble.
Attacher ou détacher ne modifie aucun paramètre stocké. Les sessions en cours d'exécution dans le canal ou l'espace de travail sont informées que son accès a changé.
Le Bundle que claude.ai attache dans le cadre d'une configuration d'astreinte est listé et peut être lu, mais ne peut pas être attaché ou détaché ici, et rien ne peut être attaché à un canal ou à un espace de travail géré par une configuration d'astreinte, ni en être détaché. Chacune de ces requêtes renvoie 400.
Lister les cibles d'un Bundle
GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets liste les canaux et les espaces de travail auxquels le Bundle est attaché, du plus récent au plus ancien selon created_at. Nécessite la portée read:claude_tag.
client = anthropic.Anthropic()
targets = client.beta.organization.claude_tag.bundles.targets.list(
"capp_011CZkZjLP1cWxj5EtMmdgbq"
)
# Récupère automatiquement les pages suivantes selon les besoins.
for target in targets:
print(f"{target.id}: {target.type}"){
"data": [
{
"type": "slack_channel",
"id": "btgt_011CZkZpBv9yQd6wKhAr8MnU1CZkZwPd5fSj8tMxUr3ZcH",
"slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
"created_at": "2026-10-19T16:21:44Z"
},
{
"type": "slack_workspace",
"id": "btgt_011CZkZuMc3dVk7xQpGw9StZ1CZkZxRe6gTk9uNyVs4adJ",
"slack_workspace_id": "slws_011CZkZnWa7xPc3uJfZe5LgT",
"created_at": "2026-09-12T08:17:02Z"
}
],
"next_page": null
}Seuls les attachements à des canaux et à des espaces de travail sont listés. Un Bundle attaché dans claude.ai à autre chose, comme Default Slack access, n'a pas de cible de Bundle correspondante, pas plus qu'une règle qui applique un Bundle dans de nombreux canaux à la fois. Ainsi, les Bundles que Claude peut utiliser dans un canal peuvent être plus nombreux que les cibles qui le désignent. Aucun point de terminaison ne liste les Bundles attachés à un canal ou à un espace de travail donné.
Attacher un Bundle
POST /v1/organizations/claude_tag/bundles/{bundle_id}/targets attache le Bundle et renvoie la cible de Bundle. Le corps indique le type et l'id correspondant. Le canal ou l'espace de travail doit déjà être configuré : l'attachement ne configure jamais un canal. Attacher une paire déjà attachée renvoie 200 avec la cible de Bundle existante. Nécessite la portée write:claude_tag.
Attachez un Bundle à un canal :
client = anthropic.Anthropic()
target = client.beta.organization.claude_tag.bundles.targets.create(
"capp_011CZkZjLP1cWxj5EtMmdgbq",
type="slack_channel",
slack_channel_id="slch_011CZkZmRt4vNq8sHbYw2KdX",
)
print(target.id){
"type": "slack_channel",
"id": "btgt_011CZkZpBv9yQd6wKhAr8MnU1CZkZwPd5fSj8tMxUr3ZcH",
"slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
"created_at": "2026-10-19T16:21:44Z"
}Attachez un Bundle à un espace de travail :
client = anthropic.Anthropic()
target = client.beta.organization.claude_tag.bundles.targets.create(
"capp_011CZkZjLP1cWxj5EtMmdgbq",
type="slack_workspace",
slack_workspace_id="slws_011CZkZnWa7xPc3uJfZe5LgT",
)
print(target.id)Un attachement à un canal comporte des conditions dans lesquelles il s'applique, par exemple uniquement tant qu'aucun invité Slack n'est présent dans le canal. Les conditions sont définies dans claude.ai et ne sont pas renvoyées ici. Un attachement effectué via cette API utilise les conditions par défaut, et attacher une paire déjà attachée laisse ses conditions inchangées.
Obtenir une cible de Bundle
GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id} renvoie la cible de Bundle. Un target_id qui n'est pas un identifiant btgt_ valide renvoie 400. Un identifiant valide qui appartient à un autre Bundle, a été détaché ou nomme un canal ou un espace de travail qui n'est plus configuré renvoie 404. Nécessite la portée read:claude_tag.
client = anthropic.Anthropic()
target = client.beta.organization.claude_tag.bundles.targets.retrieve(
"btgt_011CZkZpBv9yQd6wKhAr8MnU1CZkZwPd5fSj8tMxUr3ZcH",
bundle_id="capp_011CZkZjLP1cWxj5EtMmdgbq",
)
print(target.type)Détacher un Bundle
DELETE /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id} détache le Bundle. Un détachement répété renvoie 404 : après un 503, un détachement renvoyé qui renvoie 404 signifie que la cible de Bundle n'existe déjà plus. Nécessite la portée write:claude_tag.
client = anthropic.Anthropic()
deleted_target = client.beta.organization.claude_tag.bundles.targets.delete(
"btgt_011CZkZpBv9yQd6wKhAr8MnU1CZkZwPd5fSj8tMxUr3ZcH",
bundle_id="capp_011CZkZjLP1cWxj5EtMmdgbq",
)
print(deleted_target.id){
"type": "bundle_target_deleted",
"id": "btgt_011CZkZpBv9yQd6wKhAr8MnU1CZkZwPd5fSj8tMxUr3ZcH"
}Valeurs non reconnues
guest_policy.type, le type d'une source, le type d'une cible de Bundle et les codes d'erreur peuvent recevoir de nouvelles valeurs à tout moment. Traitez une valeur que vous ne reconnaissez pas comme vous le feriez pour toute chaîne inconnue, plutôt que de provoquer un échec.
Limitation de débit
Les requêtes sont limitées pour chaque organisation, selon deux budgets que partagent toutes les clés de votre organisation et qui sont distincts des autres limites Admin API de votre organisation. Chaque budget autorise une rafale, puis se recharge à un rythme constant :
| Budget | Requêtes | Rafale | Recharge |
|---|---|---|---|
| Lectures | Chaque GET | 120 | 2 par seconde |
| Modifications | Chaque POST et DELETE | 60 | 1 par seconde |
Les requêtes qui dépassent un budget renvoient 429 Too Many Requests avec un en-tête retry-after : attendez ce nombre de secondes, puis renvoyez la requête. Une requête qui est parvenue jusqu'à son budget, quel que soit son résultat, reçoit les en-têtes anthropic-ratelimit-requests-limit, anthropic-ratelimit-requests-remaining et anthropic-ratelimit-requests-reset pour ce budget ; une requête refusée avant cette étape, par exemple en raison de sa clé, de sa portée ou de ses en-têtes, ou parce que l'API, les modifications ou le nouveau stockage ne sont pas activés pour votre organisation, n'en reçoit aucun.
Pagination
Les endpoints de liste utilisent un curseur opaque. La première requête renvoie jusqu'à limit lignes ainsi qu'un curseur next_page ; transmettez le curseur tel quel comme paramètre page dans la requête suivante, avec les autres paramètres de requête inchangés, et répétez jusqu'à ce que next_page vaille null. Un curseur envoyé avec une valeur de include_inherited différente de celle de la requête qui l'a renvoyé renvoie 400. Traitez la chaîne du curseur comme opaque : ne l'analysez pas, ne la modifiez pas et ne la construisez pas vous-même. Lister les canaux peut renvoyer une page contenant moins de limit canaux, voire aucun, alors que next_page est toujours défini : continuez donc à demander des pages jusqu'à ce que next_page vaille null. Les itérateurs de liste des SDK Python, TypeScript, C#, Go, Java et Ruby ainsi que la CLI (sauf avec --format raw) le font pour vous. En PHP et avec curl, demandez chaque page vous-même et transmettez son next_page comme page.
limit vaut 20 par défaut, avec un minimum de 1 et un maximum de 100 ; une valeur hors de cette plage renvoie 400 sur toutes les listes. Chaque liste est triée du plus récent au plus ancien selon created_at, et n'accepte aucun autre ordre.
Réponses d'erreur
Les réponses d'erreur suivent la structure standard documentée dans Erreurs de l'API Claude. Indiquez le request_id figurant dans le corps de la réponse lorsque vous contactez le support.
| Statut | Signification |
|---|---|
| 400 | Entrée invalide, ou l'opération ne s'applique pas à ce canal, cet espace de travail ou ce Bundle (consultez la section de chaque endpoint). |
| 401 | En-tête x-api-key manquant, ou clé non reconnue. |
| 403 | La clé n'est pas une clé à portée limitée de niveau organisation, il lui manque la portée requise, ou votre organisation ne peut pas effectuer cette modification. |
| 404 | Ressource introuvable, ou n'appartenant pas à votre organisation. Également renvoyé lorsque la requête omet la valeur anthropic-beta, ou lorsque l'API n'est pas activée pour votre organisation, de sorte que les endpoints apparaissent comme inexistants. |
| 409 | Autre chose a modifié ou supprimé la ressource pendant l'exécution de la requête. Rien de ce que demandait la requête n'a été effectué : aucun paramètre stocké, rien d'attaché, de détaché ou de supprimé. La seule exception est une requête de configuration, qui peut avoir configuré le canal avant que ses settings ne rencontrent le conflit (slack_channel_set_up_settings_conflict). Relisez la ressource et renvoyez la requête si elle est toujours nécessaire. |
| 429 | « Rate limit » (limite de débit) dépassée. Consultez Limitation du débit. |
| 500 | Erreur interne. |
| 503 | Temporaire. Lors d'une modification, il n'indique pas si la modification a été stockée. Chaque modification peut être répétée sans risque : renvoyez donc la requête inchangée. Si un DELETE renvoyé renvoie alors 404, le canal ou la cible de Bundle n'existe déjà plus. |
Lorsqu'un même statut a plusieurs causes que vous traiteriez différemment, l'erreur contient également error.details.error_code :
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "...",
"details": {
"error_code": "slack_channel_set_up_settings_refused",
"slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX"
}
},
"request_id": "req_018EeWyXxfu5pfWkrYcMdjWG"
}error_code | Statut | Signification et action à mener |
|---|---|---|
organization_level_scoped_api_key_required | 403 | L'identifiant n'est pas une clé Admin API à portée limitée appartenant à l'organisation dans son ensemble. Demandez-en une à votre propriétaire principal. |
api_key_scope_missing | 403 | Il manque à la clé read:claude_tag ou write:claude_tag, selon ce que requiert l'endpoint. |
claude_tag_writes_not_enabled | 403 | Votre organisation peut lire via cette API, mais n'est pas activée pour les modifications. |
compliance_configuration_restricted | 403 | Votre organisation a une configuration de conformité sous laquelle Claude Tag ne stocke rien de nouveau, comme la conservation zéro des données. La configuration d'un canal, la mise à jour des paramètres (même pour les effacer) et l'attachement d'un Bundle sont refusés. Le détachement d'un Bundle et la suppression d'un canal ne le sont pas, et une telle organisation peut supprimer un canal même lorsque Claude y est activé. |
environment_not_found | 404 | environment_id ne nomme aucun environnement que votre organisation peut utiliser ici. L'id du chemin est correct. |
environment_archived | 400 | environment_id nomme un environnement archivé. |
slack_channel_set_up_settings_refused | 400 | La requête a configuré le canal, puis settings a été refusé. details.slack_channel_id est le canal. Consultez Configurer un canal. |
slack_channel_set_up_environment_not_found | 404 | La requête a configuré le canal, puis environment_id est introuvable. details.slack_channel_id est le canal. Consultez Configurer un canal. |
slack_channel_set_up_settings_conflict | 409 | La requête a configuré le canal, puis une autre modification a chevauché settings. Rien de settings n'a été stocké. details.slack_channel_id est le canal. Consultez Configurer un canal. |
slack_channel_enabled | 400 | Claude est activé dans le canal (enabled se résout à true), il ne peut donc pas être supprimé. Définissez d'abord enabled à false. Consultez Supprimer un canal. |
De nouveaux codes peuvent être ajoutés. Traitez un code que vous ne reconnaissez pas comme vous traitez son statut. Un 404 sans error_code a l'une de deux causes. Soit un élément nommé par la requête est introuvable (un id dans le chemin, ou un canal ou un espace de travail Slack dans le corps ou la requête), soit tous les endpoints apparaissent comme inexistants parce que la requête omet la valeur anthropic-beta ou que l'API n'est pas activée pour votre organisation. Pour les distinguer, listez vos espaces de travail avec la même clé et les mêmes en-têtes : cette requête ne nomme rien, elle ne renvoie donc 404 que dans le second cas.
Événements de l'Activity Feed
Chaque modification effectuée via cette API est enregistrée dans l'Activity Feed de la Compliance API de votre organisation, attribuée à la clé API en tant qu'api_actor portant son ID apikey_. Les événements sont ceux que le flux enregistre lorsque la même modification est effectuée dans claude.ai, de sorte qu'une seule requête permet de retrouver une modification, quelle que soit la manière dont elle a été effectuée.
| Événement | Émis lorsque |
|---|---|
ccr_agent_created | Un canal est configuré. |
ccr_agent_updated | Un paramètre change sur un canal ou un espace de travail. |
ccr_agent_deleted | Un canal est supprimé. Ses cibles de Bundle disparaissent avec lui et n'émettent aucun événement propre. |
ccr_agent_proxy_profile_bound | Un Bundle est attaché. |
ccr_agent_proxy_profile_unbound | Un Bundle est détaché. |
Les événements nomment un canal ou un espace de travail par un identifiant propre au flux, agent_id (préfixé cagt_), qu'aucune réponse de cette API ne contient : vous ne pouvez donc pas encore faire correspondre un événement à l'id d'un canal ou d'un espace de travail. Les deux événements de Bundle nomment le Bundle dans profile_id et le canal ou l'espace de travail, par le même agent_id, dans scope_id.
Un événement ccr_agent_updated liste ce qui a changé dans updated_fields, sous les noms propres au flux :
| Paramètre | Nom dans updated_fields |
|---|---|
enabled | slackbot_version |
instructions | system_prompt_addendum |
model | default_model |
environment_id | default_environment_id |
guest_policy | guest_policy |
updated_fields peut également contenir is_virtual, qui ne nomme aucun paramètre. Il apparaît à côté des noms des paramètres modifiés dans l'événement correspondant à une modification effectuée via cette API qui est la première chose que quiconque stocke sur le canal ou l'espace de travail : un canal que la première utilisation de Claude a configuré, ou que cette API a configuré sans settings, ou un espace de travail dans lequel Claude n'a jamais été utilisé, et sur lequel personne n'a encore stocké de paramètre ni attaché de Bundle, ici ou dans claude.ai. Le model avec lequel démarre un canal de code ne compte pas comme stocké. L'attachement d'un Bundle n'enregistre que ccr_agent_proxy_profile_bound.
Les lectures, les requêtes qui ne modifient rien et les requêtes refusées avant que quoi que ce soit ne soit stocké n'enregistrent rien. Une requête de configuration qui configure un canal et dont settings est ensuite refusé enregistre ccr_agent_created.
Voir aussi
Où votre propriétaire principal crée une clé à portée limitée.
Ce qu'est Claude Tag, comment le configurer et ce que fait chaque paramètre dans Slack.
La piste d'audit de chaque modification effectuée ici et dans claude.ai.
Gérez les plugins de votre organisation Claude Enterprise.
Was this page helpful?