API do Claude Tag
Gerencie o Claude Tag no Slack para sua organização Claude Enterprise a partir de seus próprios sistemas: leia e altere configurações em canais e workspaces do Slack, veja quais configurações se aplicam e por quê, e anexe Access bundles.
O Claude Tag é o Claude trabalhando como um colega de equipe no Slack: alguém menciona o Claude em um canal e o Claude responde na thread. A API do Claude Tag permite que você leia e altere, a partir dos seus próprios sistemas, as configurações do Claude Tag que um proprietário da organização, de outra forma, define manualmente em claude.ai > Organization settings > Claude Tag. Use-a para ativar o Claude canal por canal a partir de um fluxo de aprovação, manter sua configuração em controle de versão ou auditar o que se aplica em cada canal.
O Claude Tag é um produto do claude.ai. Esta API o gerencia para uma organização Claude Enterprise e não tem nenhuma relação com workspaces da Claude Platform, uso da API ou o Claude Console.
Endpoints
A API expõe 14 endpoints em quatro recursos:
| Recurso | Endpoints |
|---|---|
| Canais do Slack: configurar um canal, listar os canais de um workspace ou encontrar um pelos seus IDs do Slack, ler um, alterar suas configurações, removê-lo | 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} |
| Workspaces do Slack: listar seus workspaces ou encontrar um pelo seu ID do Slack, ler um, alterar suas configurações | GET /v1/organizations/claude_tag/slack_workspacesGET /v1/organizations/claude_tag/slack_workspaces/{id}POST /v1/organizations/claude_tag/slack_workspaces/{id} |
| Bundles: listar os Access bundles da sua organização, ler um (somente leitura) | GET /v1/organizations/claude_tag/bundlesGET /v1/organizations/claude_tag/bundles/{bundle_id} |
| Destinos de Bundle: listar onde um Bundle está anexado, anexá-lo a um canal ou workspace, ler um anexo, desanexá-lo | 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} |
Esta versão abrange o Slack. Conectar e desconectar um workspace do Slack ou Enterprise Grid, os padrões do Slack da sua organização, criar e editar Access bundles, limites de gastos e todas as configurações do Claude Tag além das cinco em Configurações permanecem no claude.ai.
Pré-requisitos
- Sua organização deve estar em um plano Claude Enterprise, com o Claude Tag configurado e pelo menos um workspace do Slack ou Enterprise Grid conectado.
- Seu proprietário principal cria uma chave de API de Admin com o escopo
read:claude_tag, o escopowrite:claude_tagou ambos em claude.ai > Organization settings > API. Consulte Criar uma chave para uma organização Claude Enterprise. - Toda solicitação carrega três cabeçalhos:
x-api-key,anthropic-version: 2023-06-01(consulte Versões da API) eanthropic-beta: experimental-claude-tag-2026-10-21.
Em Python, TypeScript, C#, Go, Java, PHP e Ruby, o SDK expõe esses endpoints em client.beta.organization.claude_tag, e a CLI ant em ant beta:organization:claude-tag; eles enviam os cabeçalhos anthropic-version e anthropic-beta para você. Os exemplos nesta página leem a chave de API de Admin da variável de ambiente ANTHROPIC_API_KEY. Quando um SDK ou a CLI busca mais páginas para você, limit define o tamanho da página, não o total (consulte Paginação).
As chaves de API pertencem à organização e continuam funcionando depois que a pessoa que as criou sai. Não as compartilhe nem as inclua no controle de versão.
Início rápido
Liste os workspaces do Slack da sua organização no Claude Tag:
client = anthropic.Anthropic()
workspaces = client.beta.organization.claude_tag.slack_workspaces.list()
# Busca automaticamente mais páginas conforme necessário.
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
}Uma configuração que é null em settings não está definida neste workspace, então o workspace a herda e não tem uma origem para ela. Para ler o que se aplica em vez disso, consulte Valores armazenados e herdados.
Escopos
| Escopo | Concede |
|---|---|
read:claude_tag | Todos os endpoints GET nesta página. |
write:claude_tag | Todos os endpoints POST e DELETE nesta página. Ele não concede leituras, embora a resposta a uma alteração contenha o recurso alterado. |
Uma chave pode ter ambos os escopos. Uma integração que consulta um canal e depois o altera precisa de ambos. Nenhum outro escopo concede acesso a esses endpoints, e uma chave criada no Claude Console não funciona aqui.
A chave deve pertencer à organização como um todo. A organização é sempre aquela à qual a chave pertence, e nenhuma solicitação nomeia uma. O cabeçalho anthropic-workspace-id é ignorado, porque nada aqui pertence a um workspace do Claude Platform.
Conceitos principais
Nomes nesta página e no claude.ai
| Esta API | claude.ai e Slack |
|---|---|
| Workspace do Slack | Um workspace do Slack. A própria API do Slack o chama de team, então o ID do workspace do próprio Slack nesta página é o team ID lá. Ele não tem relação com um workspace do Claude Platform, cujos IDs começam com wrkspc_. |
| Padrões do Slack | Default Slack access: as configurações que se aplicam a todos os workspaces e canais. Um proprietário da organização as altera no claude.ai; esta API mostra onde um canal ou workspace as herda. |
| Nível de configurações | Um escopo: um canal, um workspace ou os padrões do Slack |
| Bundle | Um Access bundle (glossário do Claude Tag) |
enabled | O botão Enable Claude Tag in Slack |
instructions | Custom instructions |
model | Model |
environment_id | Environment |
guest_policy | How should Claude work in channels with guests: restrict é Restrict, channel_only é Channel only e allow é Full access |
Canais e workspaces configurados
Um canal ou workspace está configurado (set up) quando o Claude Tag mantém um registro de configurações para ele. Somente um canal ou workspace configurado tem um id, e somente esses são listados: o Slack, e não esta API, mantém a lista completa dos canais de um workspace.
- Um workspace é configurado quando um proprietário da organização o conecta no claude.ai. Quando um proprietário conecta um Slack Enterprise Grid, os workspaces do Grid são configurados pouco depois. O primeiro uso do Claude em um workspace, ou o primeiro canal que você configura nele, configura qualquer um que não estava configurado. Nenhum outro endpoint configura um workspace, e nenhum remove um.
- Um canal é configurado no claude.ai, pelo primeiro uso do Claude nele ou com Configurar um canal.
Sua organização é proprietária de um workspace enquanto sua conexão com esse workspace estiver ativa, e é proprietária dos canais nele. Um Slack Enterprise Grid agrupa vários workspaces sob uma empresa. Enquanto a conexão da sua organização com um Grid estiver ativa, ela também é proprietária de todos os workspaces no Grid que nenhuma outra organização conectou. Tal workspace é um workspace como qualquer outro: uma vez configurado, ele tem um id, é listado e pode ser lido, alterado e receber Bundles, e seus canais podem ser listados. O Grid em si não é um recurso desta API e não tem id. Um canal ou workspace do qual você não é proprietário retorna o mesmo 404 que um que não existe.
Um workspace do qual sua organização é proprietária apenas por meio de um Grid retorna esse 404 até ser configurado, sempre que uma solicitação o nomeia pelo ID do próprio Slack: quando você encontra o workspace, lista seus canais ou consulta um canal nele que não está configurado. Você ainda pode configurar um canal nele, o que também configura o workspace, sem configurações armazenadas.
Um canal compartilhado com um Grid inteiro pode ser armazenado sob o próprio ID do Slack do Grid, que começa com E, no lugar do de um workspace. Esse ID é então o slack.workspace_id do canal, e listar canais com ele como slack_workspace_id retorna esses canais. Nenhum objeto de workspace o possui: se um proprietário armazenou configurações no próprio Grid no claude.ai, sources pode nomeá-las como um slack_workspace cujo id retorna 404 quando você o lê.
IDs
Você conhece um canal pelos IDs que o Slack mostra. Consulte o id dele uma vez com Encontrar um canal pelos seus IDs do Slack, depois armazene e use o id.
| ID | Prefixo | Onde aparece |
|---|---|---|
| Recurso de canal do Slack | slch_ | id em um canal; slack_channel_id em corpos de solicitação e respostas |
| Recurso de workspace do Slack | slws_ | id em um workspace; slack_workspace_id em corpos de solicitação e respostas |
| Bundle | capp_ | id em um Bundle; {bundle_id} em caminhos |
| Destino de Bundle | btgt_ | id em um destino de Bundle; {target_id} em caminhos |
| ID de workspace do próprio Slack | T, ou E para o próprio ID de um Grid (consulte Canais e workspaces configurados) | slack.workspace_id; o parâmetro de consulta slack_workspace_id |
| ID de canal do próprio Slack | C ou G | slack.channel_id; o parâmetro de consulta slack_channel_id |
Um ID de canal do Slack em um parâmetro de consulta ou corpo de solicitação que não começa com C ou G retorna 400, assim como qualquer ID do Slack que tenha algo além de letras maiúsculas e dígitos após sua primeira letra ou que tenha mais de 32 caracteres.
Um id não muda enquanto o canal ou workspace estiver configurado, seja o que for que você altere nele, com uma exceção descrita em Modo somente leitura. Um canal ou workspace que é removido e configurado novamente tem um novo id, e o antigo continua retornando 404. Quando um id armazenado retorna 404 sem error_code, liste seus workspaces com a mesma chave e os mesmos cabeçalhos. Essa solicitação não nomeia nenhum canal ou workspace, então, se ela retornar 200, o id não existe mais: encontre o canal ou workspace novamente pelos seus IDs do Slack. Qualquer outro status não diz nada sobre o id: mantenha seus valores de id armazenados e consulte Respostas de erro.
Configurações
Cada nível de configurações armazena as mesmas cinco configurações, todas opcionais:
| Configuração | Tipo | Descrição |
|---|---|---|
enabled | boolean | Se o Claude está ativado. |
instructions | string | Orientação permanente que o Claude lê em todas as sessões. No máximo 8.192 caracteres depois que os espaços em branco iniciais e finais são removidos. Texto em branco limpa a configuração. |
model | string | O modelo com que novas sessões começam: um ID de modelo que sua organização pode usar com o Claude Tag. No máximo 128 caracteres. |
environment_id | string | O ambiente de nuvem em que as sessões são executadas, com o prefixo env_. Ele deve estar ativo e pertencer à sua organização. |
guest_policy | object | O que o Claude faz em um canal enquanto um convidado do Slack está nele, para todos no canal: {"type": "allow"} (o Claude responde), {"type": "restrict"} (o Claude não responde) ou {"type": "channel_only"} (o Claude responde apenas com os Bundles anexados ao próprio canal; se channel_only não estiver disponível para sua organização, uma solicitação que o define retorna 400). Consulte Restringir canais com convidados para saber o que isso significa em canais compartilhados por meio do Slack Connect ou em um Enterprise Grid. |
model e environment_id são verificados quando você os grava e não novamente: se o modelo ou o ambiente mudar depois, as respostas continuam retornando o valor armazenado.
Se um proprietário da organização tiver colocado um nível de configurações em um pool de runners auto-hospedado no claude.ai, seu environment_id retorna o ID do pool, que começa com ccpool_. Esta API não pode definir um pool de runners e retorna 400 para uma requisição que altera ou limpa environment_id em um nível de configurações que armazena um.
Valores armazenados e herdados
As configurações existem em três níveis: o canal, o workspace em que o canal está e os padrões do Slack da sua organização, que um proprietário da organização define no claude.ai. Cada nível armazena apenas o que foi definido nele. O settings de um objeto de canal ou workspace pode conter uma de duas coisas:
- O que ele armazena. É isso que uma resposta contém, a menos que você peça o contrário. Uma configuração que não está definida no canal ou workspace é
null. Use isso para comparar com a configuração que você mantém em outro lugar. - O que se aplica nele, uma vez que todos os níveis são levados em conta. Para obter isso, adicione o parâmetro de consulta
include_inherited=truea qualquer solicitaçãoGETque retorne um canal ou um workspace, incluindo as duas listas. Use isso para auditar, ou para descobrir por que o Claude se comporta de determinada forma em um canal. O parâmetro tem como padrãofalse, e um valor que não seja booleano retorna400. Uma solicitação que configura um canal ou altera configurações não aceita o parâmetro e retorna400se você o enviar; sua resposta contém o que está armazenado.
Em ambos os casos, sources nomeia, para cada configuração, o nível de onde vem o valor em settings. Sem include_inherited, a origem de uma configuração que o canal ou workspace armazena nomeia o próprio canal ou workspace, e uma configuração que ele não armazena não tem origem: null, ou uma lista vazia para instructions. Com include_inherited=true, toda configuração exceto instructions tem uma origem, e uma configuração que nenhum nível define tem a origem {"type": "default"}; quando nenhum nível define instructions, ela é null e sua lista de origens está vazia. Portanto, para distinguir um valor que o canal ou workspace define por conta própria de um que ele herda, observe sua origem, e não se o valor é null.
Cada configuração é resolvida individualmente:
| Configuração | Regra | Quando nenhum nível a define |
|---|---|---|
enabled | O nível mais próximo que a define determina o valor, então true em um canal ativa o Claude lá mesmo quando seu workspace armazena false. | true |
instructions | Aditiva. O texto de cada nível que a define é unido, do mais amplo para o mais específico, com uma linha em branco entre eles. | null |
model | O nível mais próximo que a define determina o valor. | null: o Claude usa o modelo padrão do produto |
environment_id | O nível mais próximo que a define determina o valor. | null |
guest_policy | O nível mais próximo que a define determina o valor. | restrict |
Por exemplo, uma organização armazena instruções nos seus padrões do Slack, desativa o Claude em um workspace e define um modelo em um canal desse workspace. Lido com include_inherited=true, o canal mostra os três valores e de onde cada um vem:
{
"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"
}Lido sem o parâmetro, o mesmo canal tem seu model e quatro configurações null em settings; em sources, model nomeia o canal, instructions é uma lista vazia e as outras três são null.
Uma origem é uma das seguintes:
type | Significado |
|---|---|
slack_channel | O canal, nomeado em slack_channel_id. |
slack_workspace | O workspace, nomeado em slack_workspace_id. |
slack_parent_channel | O pai de um canal de código, nomeado em slack_channel_id. Um canal de código é aquele que foi iniciado a partir de outro canal. Enquanto o pai for um canal público no mesmo workspace, ele fica entre o canal e o workspace e contribui apenas com instructions e environment_id. |
slack_grid_channel | O mesmo canal do Slack conforme configurado em outro workspace do seu Slack Enterprise Grid, nomeado pelos IDs do próprio Slack sob slack. Ele contribui apenas com enabled: quando nem o canal nem seu workspace definem enabled, um true armazenado para o canal em outro workspace do Grid se aplica. |
slack_default | Os padrões do Slack da sua organização, que não têm ID. |
default | Nenhum nível define um valor, então o padrão integrado se aplica. |
sources.instructions lista todos os níveis que contribuem com texto, do mais amplo para o mais específico, que é a ordem do texto deles em settings.instructions, e fica vazio quando nenhum contribui. Ele diz de quem é o texto que vem primeiro, não onde termina o texto de um nível: para obter o texto próprio de um nível, leia esse canal ou workspace sem include_inherited ou, para os padrões do Slack, consulte o claude.ai. Uma origem que nomeia um canal ou workspace sempre carrega seu ID, que nunca é null: um id desta API em slack_channel_id ou slack_workspace_id ou, em slack_grid_channel, os IDs do próprio Slack sob slack, como em um objeto de canal.
Com include_inherited=true, uma solicitação falha com 503 se um nível não puder ser lido, em vez de responder sem ele.
Alterando configurações
Os dois endpoints de atualização e Configurar um canal aceitam um objeto settings sob as mesmas regras:
- Uma configuração que você omite permanece inalterada.
{"settings": {"enabled": false}}desativa o Claude e deixa as outras quatro configurações como estão. - Uma configuração que você envia como
nullé limpa, então o nível volta a herdá-la. - Tudo ou nada. Se qualquer valor em uma solicitação for recusado, nenhuma configuração da solicitação é armazenada.
- Seguro para repetir. Toda alteração deixa o recurso como a primeira solicitação idêntica o deixou, então nenhum endpoint aceita um
Idempotency-Key. Uma solicitação que não altera nada não grava nada e não registra nenhum evento no Activity Feed. - A última gravação vence. Nenhuma solicitação aceita uma pré-condição. Dois chamadores que leem um recurso e depois alteram a mesma configuração sobrescrevem um ao outro. Um
409é retornado apenas quando outra alteração se sobrepõe à sua solicitação enquanto ela é executada; nada do que sua solicitação pediu para alterar ou excluir foi feito, exceto que uma solicitação de configuração pode já ter configurado o canal, então leia o recurso novamente e reenvie a alteração se ela ainda for necessária.
Uma alteração em guest_policy em um canal pode encerrar sessões que estão em execução nesse canal. Elas são encerradas em segundo plano, e a resposta não espera por isso.
Modo somente leitura
API / Terraform read-only mode é uma configuração que um proprietário da organização ativa e desativa nas configurações do Claude Tag no claude.ai. O nome descreve o claude.ai e o Slack: enquanto o modo está ativado, eles recusam as alterações de uma pessoa ao que esta API gerencia, então apenas chaves fazem essas alterações. Eles também recusam algumas alterações relacionadas que nenhuma chave faz, como alterar uma configuração nos padrões do Slack, então ninguém as faz até que um proprietário desative o modo. Ele não torna esta API somente leitura. Todos os endpoints nesta página respondem da mesma forma, com o modo ativado ou desativado, e nenhum endpoint o lê ou altera.
Enquanto o modo está desativado, pessoas e chaves alteram as mesmas configurações e anexam e desanexam os mesmos Bundles, e cada alteração substitui o que está armazenado. Ative-o se o seu pipeline deve ser a única fonte de alterações.
Enquanto o modo está ativado, o claude.ai e o Slack recusam:
- Alterar qualquer uma das cinco configurações em um canal, um workspace ou nos padrões do Slack (que nenhuma chave altera também)
- Configurar um canal, remover um canal, adicionar um workspace de um Enterprise Grid conectado ou desconectar um workspace ou um Grid no claude.ai
- Anexar um Bundle a um canal ou workspace, desanexar um, ou excluir um Bundle que esteja anexado a um
Algumas coisas continuam possíveis de qualquer forma: um proprietário ainda pode conectar um novo workspace ou Grid, criar e editar Bundles e alterar configurações do Claude Tag que esta API não gerencia. O primeiro uso do Claude ainda configura um canal, ou um workspace de Grid que não estava configurado, excluir um canal no Slack ainda o remove, e desinstalar o app do Claude para Slack ainda desconecta esse workspace ou Grid.
Enquanto o modo está desativado, configurar no claude.ai um canal que já está configurado pode substituir o registro do canal, mas apenas de um canal que ainda não contém nada: um que o primeiro uso do Claude configurou, ou que esta API configurou sem settings, e no qual ninguém desde então armazenou uma configuração ou anexou um Bundle. O canal passa então a ter um novo id, e o antigo retorna 404. Qualquer outro canal mantém seu id até ser removido.
Mensagens diretas em grupo
Uma mensagem direta em grupo do Slack tem um ID no formato de um canal, então o uso do Claude em uma a configura como um canal: ela tem um id, é listada e pode ser lida. Configurar uma por meio desta API, alterar uma configuração em uma, anexar um Bundle a uma e remover uma retornam 400, exceto que uma solicitação de configuração que omite settings para uma que já está configurada a retorna com 200, como uma leitura faz. Desanexar um Bundle de uma é permitido.
Fluxos de trabalho de exemplo
Ativar o Claude apenas em canais aprovados
Qualquer membro pode convidar o Claude para um canal público. Para manter o Claude ativado apenas onde você o aprovou:
- Peça a um proprietário da organização para desativar o Claude em todos os lugares no claude.ai, com o botão Enable Claude Tag in Slack em Default Slack access, que armazena
enabledcomofalsenos padrões do Slack da sua organização. O modo somente leitura deve estar desativado enquanto ele faz isso. - Quando seu sistema de aprovação aprovar um canal, configure o canal com
"settings": {"enabled": true}. A solicitação aceita os IDs do próprio Slack e retorna o canal mesmo que ele já estivesse configurado, então é seguro repeti-la. - Na mesma execução, anexe os Bundles para os quais a equipe foi aprovada, para que a primeira sessão do canal já tenha suas ferramentas.
Manter a configuração em controle de versão
- Identifique sua configuração pelos IDs que o Slack mostra para cada canal e encontre cada canal por eles.
- Leia cada canal sem
include_inheritede compare seusettingscom o que seu repositório declara. Com o parâmetro, valores herdados seriam misturados. - Envie apenas as configurações que diferem, e envie
nullpara uma configuração que seu repositório não declara mais. - Peça a um proprietário da organização para ativar o modo somente leitura, para que ninguém altere as mesmas configurações manualmente.
Auditar o que se aplica em todos os lugares
- Liste seus workspaces, depois liste os canais de cada workspace, ambos com
include_inherited=true, para que cada item contenha o que se aplica nele. Se sua organização conectou um Enterprise Grid, liste também os canais armazenados sob o próprio ID do Slack do Grid. Consulte Canais e workspaces configurados. - Sinalize o que sua política proíbe, como um canal em que
enabledétruesem uma aprovação registrada, ou em queguest_policyéallow. - Liste seus Bundles, depois os destinos de cada Bundle, para ver onde o acesso a sistemas sensíveis está anexado.
Canais do Slack
O objeto de canal descreve um canal do Slack:
| Campo | Descrição |
|---|---|
type | slack_channel. |
id | Com o prefixo slch_. Consulte IDs. |
slack | Os IDs do próprio Slack: workspace_id para o workspace em que o canal está e channel_id para o canal. |
settings | O que o próprio canal armazena ou, com include_inherited=true, o que se aplica nele. Sempre presente, com todas as cinco configurações; uma que não está definida é null. Consulte Valores armazenados e herdados. |
sources | Para cada configuração, o nível de onde vem o valor em settings. Sempre presente. |
created_at | Quando o canal foi configurado. |
updated_at | Quando o registro do canal no Claude Tag mudou pela última vez. Ele muda a cada alteração de uma configuração, aqui, no claude.ai ou no Slack, e também pode mudar por uma alteração que nenhuma resposta aqui mostra. Trate um valor posterior como um motivo para ler o canal novamente, não como prova de que uma configuração mudou. Anexar ou desanexar um Bundle não o altera por si só. |
Um id que não é um identificador slch_ válido retorna 400. Um válido que não nomeia nenhum canal da sua organização retorna 404.
Configurar um canal
POST /v1/organizations/claude_tag/slack_channels configura um canal do Slack e o retorna. slack.workspace_id e slack.channel_id são obrigatórios e são os IDs do próprio Slack. settings é opcional e segue Alterando configurações. Se o canal já estiver configurado, a solicitação retorna o canal existente e aplica settings; a resposta é 200 em ambos os casos. Requer o escopo 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"
}Antes de um canal ser configurado, o app do Claude para Slack confirma com o Slack que o canal está no workspace, não está arquivado e é visível para o app. Um canal que falha nessa verificação retorna 404, assim como um workspace que não tem o app do Claude para Slack instalado. Para um workspace do qual sua organização é proprietária por meio de um Enterprise Grid, o app deve estar instalado no Grid.
Configurar o canal e aplicar settings são duas etapas. Quando esta solicitação configura o canal e settings é então recusado com um 400, 404 ou 409, a resposta é a recusa e o canal permanece configurado sem nada armazenado (após um 409, a menos que a alteração sobreposta o tenha removido ou substituído). Essa recusa carrega um error_code que começa com slack_channel_set_up_ e o id do novo canal em error.details.slack_channel_id (consulte Respostas de erro). Corrija settings e envie-o em uma atualização para esse id, ou envie a solicitação de configuração novamente. Se o canal já estava configurado, um settings recusado retorna o mesmo erro que uma atualização retornaria, e o canal mantém o que armazenava. Um 500 ou 503 em qualquer dos casos não carrega error_code e não diz se o canal foi configurado ou se settings foi armazenado: envie a solicitação de configuração novamente.
Listar canais
GET /v1/organizations/claude_tag/slack_channels lista os canais configurados de um workspace, do mais recente para o mais antigo por created_at. slack_workspace_id é obrigatório e é o ID do próprio Slack para o workspace. Adicione include_inherited=true para que cada canal contenha o que se aplica nele (consulte Valores armazenados e herdados). Uma página pode conter menos de limit canais, ou nenhum, enquanto next_page ainda estiver definido, então continue solicitando páginas até que next_page seja null (consulte Paginação). Requer o escopo read:claude_tag.
client = anthropic.Anthropic()
channels = client.beta.organization.claude_tag.slack_channels.list(
slack_workspace_id="T01ABCD2EFG"
)
# Busca automaticamente mais páginas conforme necessário.
for channel in channels:
print(f"{channel.id}: {channel.slack.channel_id}")A resposta é {"data": [...], "next_page": ...}, em que cada item é um objeto de canal. Um slack_workspace_id que nomeia um workspace do qual sua organização não é proprietária retorna 404, assim como um do qual ela é proprietária apenas por meio de um Enterprise Grid até que esse workspace seja configurado (consulte Canais e workspaces configurados).
Encontrar um canal pelos seus IDs do Slack
Adicione slack_channel_id, o ID do próprio Slack para o canal, para consultar um canal. data contém esse canal, ou fica vazio quando o canal não está configurado. Em um workspace que não está configurado e do qual sua organização é proprietária apenas por meio de um Enterprise Grid, um canal que não está configurado retorna 404 em vez disso. Uma consulta não pagina: ela ignora page e qualquer limit de 1 a 100 (um limit fora desse intervalo ainda retorna 400), e seu next_page é null. É assim que você encontra o id de um 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)Passar um ID slch_ como slack_channel_id retorna 400.
Obter um canal
GET /v1/organizations/claude_tag/slack_channels/{id} retorna o objeto de canal, contendo o que o canal armazena. Para ler o que se aplica nele em vez disso, consulte Ler o que se aplica em um canal. Requer o escopo read:claude_tag.
client = anthropic.Anthropic()
channel = client.beta.organization.claude_tag.slack_channels.retrieve(
"slch_011CZkZmRt4vNq8sHbYw2KdX"
)
print(channel.settings.enabled)Ler o que se aplica em um canal
A mesma solicitação com include_inherited=true retorna o objeto de canal com settings contendo o que se aplica no canal, e sources dizendo de onde vem cada valor. Valores armazenados e herdados mostra uma resposta completa; enabled e guest_policy nunca são null nela. Se um nível não puder ser lido, a solicitação falha com 503 em vez de responder sem ele. Requer o escopo read:claude_tag.
client = anthropic.Anthropic()
channel = client.beta.organization.claude_tag.slack_channels.retrieve(
"slch_011CZkZmRt4vNq8sHbYw2KdX",
include_inherited=True,
)
print(channel.settings.instructions)Atualizar um canal
POST /v1/organizations/claude_tag/slack_channels/{id} altera as configurações do canal e retorna o objeto de canal. settings é obrigatório e segue Alterando configurações. Requer o escopo write:claude_tag.
Desative o Claude em um canal e deixe suas outras configurações como estão:
client = anthropic.Anthropic()
channel = client.beta.organization.claude_tag.slack_channels.update(
"slch_011CZkZmRt4vNq8sHbYw2KdX",
settings={"enabled": False},
)
print(channel.settings.enabled)Limpe as instruções do canal, para que apenas as herdadas se apliquem:
client = anthropic.Anthropic()
channel = client.beta.organization.claude_tag.slack_channels.update(
"slch_011CZkZmRt4vNq8sHbYw2KdX",
settings={"instructions": None},
)
print(channel.settings.instructions)Remover um canal
DELETE /v1/organizations/claude_tag/slack_channels/{id} remove um canal do Claude Tag. É a mesma remoção que um proprietário da organização faz no claude.ai, com o mesmo efeito. Ela não exclui, arquiva nem altera o canal no Slack, nem qualquer mensagem nele. Requer o escopo write:claude_tag.
Um canal só pode ser removido enquanto o Claude estiver desativado nele. Enquanto enabled for resolvido como true para o canal, conforme Ler o que se aplica em um canal o retorna, a solicitação retorna 400 com error_code: "slack_channel_enabled". Defina enabled como false no canal primeiro e depois envie a solicitação novamente. A única exceção é uma organização com uma configuração de conformidade restrita: ela não pode fazer essa alteração, então sua solicitação remove o canal esteja o Claude ativado nele ou não. Se um nível de que essa verificação precisa não puder ser lido, a solicitação retorna 503 e não remove nada.
A verificação protege contra a remoção por engano de um canal que está em uso. Ela não mantém o Claude fora do canal depois. A remoção exclui as configurações próprias do canal, incluindo um enabled de false, então a partir de então apenas o que o canal herda determina se o Claude está ativado lá. Se isso ativar o Claude, o Claude volta a responder no canal na próxima menção, e esse uso configura o canal novamente: um novo id, sem configurações próprias e sem nada da memória do canal removido.
- Para manter o Claude fora de um canal, mantenha-o configurado com
enableddefinido comofalseem vez de removê-lo, ou certifique-se de que o que ele herdaria, que a remoção não afeta, mantém o Claude desativado. - Para que um canal não armazene nada e mantenha suas sessões e memória, limpe cada configuração e desanexe cada Bundle em vez disso.
Dois tipos de canal não podem ser removidos aqui de forma alguma, esteja o Claude ativado ou desativado neles, e retornam 400 sem error_code: uma mensagem direta em grupo e um canal que contém configuração que esta API não gerencia, como um pool de runners ou uma configuração que apenas o claude.ai tem. Eles são verificados antes de enabled, então desativar o Claude não ajuda; um proprietário da organização remove o segundo tipo no 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"
}O id retorna 404 assim que a solicitação retorna, e o restante é excluído em segundo plano. Uma remoção repetida retorna 404, então, se você reenviar uma remoção após um 503, um 404 significa que o canal já não existe.
Workspaces do Slack
O objeto de workspace descreve um workspace do Slack. Ele tem os mesmos campos que o objeto de canal, exceto que type é slack_workspace, id tem o prefixo slws_ e slack contém apenas workspace_id. A resposta do Início rápido mostra um completo. Lido com include_inherited=true, um workspace mostra cada configuração conforme o workspace e os padrões do Slack a resolvem, que é o que um canal do workspace herda, a menos que um nível mais próximo defina essa configuração.
Um id que não é um identificador slws_ válido retorna 400. Um válido que não nomeia nenhum workspace da sua organização retorna 404.
Listar workspaces
GET /v1/organizations/claude_tag/slack_workspaces lista os workspaces configurados dos quais sua organização é proprietária, do mais recente para o mais antigo por created_at. O Início rápido mostra a solicitação e a resposta. Para encontrar um workspace pelo ID do próprio Slack, adicione slack_workspace_id: data contém esse workspace, ou fica vazio quando ele não está configurado, e um workspace do qual sua organização não é proprietária retorna 404. Um workspace do qual ela é proprietária apenas por meio de um Enterprise Grid também retorna 404 até ser configurado. Adicione include_inherited=true para que cada workspace contenha o que se aplica nele (consulte Valores armazenados e herdados). Requer o escopo read:claude_tag.
Obter um workspace
GET /v1/organizations/claude_tag/slack_workspaces/{id} retorna o objeto de workspace, contendo o que o workspace armazena ou, com include_inherited=true na consulta, como em Ler o que se aplica em um canal, o que se aplica nele. Requer o escopo read:claude_tag.
client = anthropic.Anthropic()
workspace = client.beta.organization.claude_tag.slack_workspaces.retrieve(
"slws_011CZkZnWa7xPc3uJfZe5LgT"
)
print(workspace.settings.instructions)Atualizar um workspace
POST /v1/organizations/claude_tag/slack_workspaces/{id} altera as configurações do workspace e retorna o objeto de workspace. settings é obrigatório e segue Alterando configurações. O que você define aqui se aplica em todos os canais do workspace que não definem seu próprio valor, exceto instructions, ao qual cada canal adiciona o seu próprio em vez de substituí-lo. Requer o escopo 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
Um Bundle é o que o claude.ai chama de Access bundle: um conjunto nomeado de acessos, como conectores, repositórios e credenciais, que o Claude pode usar em um canal ou workspace. Proprietários da organização criam, editam e excluem Bundles no claude.ai. Esta API os lista e os anexa. Ela retorna o nome e a descrição de um Bundle e nunca o que o Bundle concede.
| Campo | Descrição |
|---|---|
type | bundle. |
id | Com prefixo capp_. |
display_name | O nome do Bundle. |
description | Para que serve o Bundle. null quando não tem descrição. |
created_at, updated_at | Quando o Bundle foi criado e alterado pela última vez. |
Um bundle_id que não é um identificador capp_ válido retorna 400. Um válido que não existe ou pertence a outra organização retorna 404, independentemente do que mais a solicitação contenha. Bundles que o Claude Tag gerencia para si mesmo não são listados e retornam 404.
Listar Bundles
GET /v1/organizations/claude_tag/bundles lista os Bundles da sua organização, do mais recente para o mais antigo por created_at. Requer o escopo read:claude_tag.
client = anthropic.Anthropic()
bundles = client.beta.organization.claude_tag.bundles.list()
# Busca automaticamente mais páginas conforme necessário.
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
}Obter um Bundle
GET /v1/organizations/claude_tag/bundles/{bundle_id} retorna o objeto Bundle. Requer o escopo read:claude_tag.
client = anthropic.Anthropic()
bundle = client.beta.organization.claude_tag.bundles.retrieve(
"capp_011CZkZjLP1cWxj5EtMmdgbq"
)
print(bundle.display_name)Destinos de Bundle
Um destino de Bundle é o registro de um Bundle anexado a um canal ou a um workspace. Um Bundle anexado a um workspace pode ser usado no workspace e em todos os canais dele. Um Bundle anexado a um canal pode ser usado apenas nesse canal.
| Campo | Descrição |
|---|---|
type | slack_channel ou slack_workspace. |
id | Com prefixo btgt_. É o {target_id} nos caminhos e nunca é o próprio id do canal ou do workspace. |
slack_channel_id | Em um destino slack_channel: o id do canal, com prefixo slch_. |
slack_workspace_id | Em um destino slack_workspace: o id do workspace, com prefixo slws_. |
created_at | Quando o Bundle foi anexado. |
Um Bundle é anexado a um canal ou workspace no máximo uma vez, e o mesmo par sempre tem o mesmo id, inclusive após uma desanexação e uma nova anexação. O id é opaco: obtenha-o da resposta a uma anexação ou da lista. Um destino de Bundle não contém o id do seu Bundle, que seus caminhos também exigem, portanto mantenha os dois juntos.
Anexar ou desanexar não altera nenhuma configuração armazenada. As sessões em execução no canal ou workspace são informadas de que seu acesso mudou.
O Bundle que o claude.ai anexa como parte de uma configuração de plantão (on-call) é listado e pode ser lido, mas não pode ser anexado nem desanexado aqui, e nada pode ser anexado a um canal ou workspace que uma configuração de plantão gerencia, nem desanexado dele. Cada uma dessas requisições retorna 400.
Listar os destinos de um Bundle
GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets lista os canais e workspaces aos quais o Bundle está anexado, do mais recente para o mais antigo por created_at. Requer o escopo read:claude_tag.
client = anthropic.Anthropic()
targets = client.beta.organization.claude_tag.bundles.targets.list(
"capp_011CZkZjLP1cWxj5EtMmdgbq"
)
# Busca automaticamente mais páginas conforme necessário.
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
}Apenas anexações a canais e workspaces são listadas. Um Bundle que está anexado no claude.ai a qualquer outra coisa, como Default Slack access, não tem um destino de Bundle para isso, e o mesmo vale para uma regra que aplica um Bundle em muitos canais de uma vez. Portanto, os Bundles que o Claude pode usar em um canal podem ser mais do que os destinos que o identificam. Nenhum endpoint lista os Bundles anexados a um canal ou workspace.
Anexar um Bundle
POST /v1/organizations/claude_tag/bundles/{bundle_id}/targets anexa o Bundle e retorna o destino de Bundle. O corpo informa o type e o id correspondente. O canal ou workspace já deve estar configurado: anexar nunca configura um canal. Anexar um par que já está anexado retorna 200 com o destino de Bundle existente. Requer o escopo write:claude_tag.
Anexe um Bundle a um 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"
}Anexe um Bundle a um workspace:
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)Uma anexação a um canal tem condições sob as quais se aplica, como apenas enquanto nenhum convidado do Slack estiver no canal. As condições são definidas no claude.ai e não são retornadas aqui. Anexar por meio desta API usa as condições padrão, e anexar um par que já está anexado mantém suas condições inalteradas.
Obter um destino de Bundle
GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id} retorna o destino de Bundle. Um target_id que não é um identificador btgt_ válido retorna 400. Um válido que pertence a outro Bundle, foi desanexado ou nomeia um canal ou workspace que não está mais configurado retorna 404. Requer o escopo read:claude_tag.
client = anthropic.Anthropic()
target = client.beta.organization.claude_tag.bundles.targets.retrieve(
"btgt_011CZkZpBv9yQd6wKhAr8MnU1CZkZwPd5fSj8tMxUr3ZcH",
bundle_id="capp_011CZkZjLP1cWxj5EtMmdgbq",
)
print(target.type)Desanexar um Bundle
DELETE /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id} desanexa o Bundle. Uma desanexação repetida retorna 404, então, após um 503, uma desanexação reenviada que retorna 404 significa que o destino de Bundle já não existe. Requer o escopo 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"
}Valores não reconhecidos
guest_policy.type, o type de uma origem, o type de um destino de Bundle e os códigos de erro podem ganhar novos valores a qualquer momento. Trate um valor que você não reconhece como trataria qualquer string desconhecida, em vez de falhar.
Limitação de taxa
As solicitações são limitadas para cada organização, em dois orçamentos que todas as chaves da sua organização compartilham e que são separados dos outros limites da Admin API da sua organização. Cada orçamento permite um pico e depois é reabastecido a uma taxa constante:
| Orçamento | Requisições | Pico | Reabastecimento |
|---|---|---|---|
| Leituras | Todo GET | 120 | 2 por segundo |
| Alterações | Todo POST e DELETE | 60 | 1 por segundo |
Solicitações acima de um orçamento retornam 429 Too Many Requests com um cabeçalho retry-after: aguarde esse número de segundos e depois envie a solicitação novamente. Uma solicitação que chegou até seu orçamento, qualquer que seja seu resultado, recebe os cabeçalhos anthropic-ratelimit-requests-limit, anthropic-ratelimit-requests-remaining e anthropic-ratelimit-requests-reset para esse orçamento; uma solicitação recusada antes disso, por exemplo por causa de sua chave, escopo ou cabeçalhos, ou porque a API, as alterações ou o novo armazenamento não estão habilitados para sua organização, não recebe nenhum.
Paginação
Os endpoints de lista usam um cursor opaco. A primeira solicitação retorna até limit linhas mais um cursor next_page; passe o cursor sem alterações como o parâmetro page na próxima solicitação, com os outros parâmetros de consulta inalterados, e repita até que next_page seja null. Um cursor enviado com o outro valor de include_inherited em relação à solicitação que o retornou retorna 400. Trate a string do cursor como opaca: não a analise, modifique ou construa você mesmo. Listar canais pode retornar uma página com menos de limit canais, ou nenhum, enquanto next_page ainda estiver definido, então continue solicitando páginas até que next_page seja null. Os iteradores de lista dos SDKs de Python, TypeScript, C#, Go, Java e Ruby e a CLI (exceto com --format raw) fazem isso por você. Em PHP e curl, solicite cada página você mesmo e passe seu next_page como page.
limit tem como padrão 20, com mínimo de 1 e máximo de 100; um valor fora desse intervalo retorna 400 em todas as listas. Todas as listas são ordenadas da mais recente para a mais antiga por created_at, e não aceitam outra ordem.
Respostas de erro
As respostas de erro seguem o formato padrão documentado em Erros da Claude API. Informe o request_id do corpo da resposta ao entrar em contato com o suporte.
| Status | Significado |
|---|---|
| 400 | Entrada inválida, ou a operação não se aplica a este canal, workspace ou Bundle (consulte a seção de cada endpoint). |
| 401 | Cabeçalho x-api-key ausente, ou a chave não é reconhecida. |
| 403 | A chave não é uma chave com escopo no nível da organização, não tem o escopo necessário ou sua organização não pode fazer essa alteração. |
| 404 | Recurso não encontrado, ou não pertence à sua organização. Também retornado quando a solicitação omite o valor anthropic-beta, ou a API não está habilitada para sua organização, de modo que os endpoints parecem inexistentes. |
| 409 | Outra coisa alterou ou removeu o recurso enquanto a solicitação era executada. Nada do que a solicitação pediu foi feito: nenhuma configuração armazenada, nada anexado, desanexado ou removido. A única exceção é uma solicitação de configuração, que pode ter configurado o canal antes que seu settings encontrasse o conflito (slack_channel_set_up_settings_conflict). Leia o recurso novamente e reenvie a solicitação se ela ainda for necessária. |
| 429 | "Rate limit" (limite de taxa) excedido. Consulte Limitação de taxa. |
| 500 | Erro interno. |
| 503 | Temporário. Em uma alteração, não diz se a alteração foi armazenada. Toda alteração é segura para repetir, então envie a solicitação novamente sem alterações. Se um DELETE reenviado retornar 404, o canal ou o destino de Bundle já não existe. |
Quando um status tem várias causas que você trataria de forma diferente, o erro também contém 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 | Status | Significado e o que fazer |
|---|---|---|
organization_level_scoped_api_key_required | 403 | A credencial não é uma chave de API de Admin com escopo que pertence à organização como um todo. Peça uma ao seu proprietário principal. |
api_key_scope_missing | 403 | A chave não tem read:claude_tag ou write:claude_tag, conforme o endpoint exigir. |
claude_tag_writes_not_enabled | 403 | Sua organização pode ler por meio desta API, mas não está habilitada para alterações. |
compliance_configuration_restricted | 403 | Sua organização tem uma configuração de conformidade sob a qual o Claude Tag não armazena nada novo, como retenção zero de dados. Configurar um canal, atualizar configurações (mesmo para limpá-las) e anexar um Bundle são recusados. Desanexar um Bundle e remover um canal não são, e tal organização pode remover um canal mesmo enquanto o Claude estiver ativado nele. |
environment_not_found | 404 | environment_id não nomeia nenhum ambiente que sua organização possa usar aqui. O id no caminho está correto. |
environment_archived | 400 | environment_id nomeia um ambiente arquivado. |
slack_channel_set_up_settings_refused | 400 | A solicitação configurou o canal, depois settings foi recusado. details.slack_channel_id é o canal. Consulte Configurar um canal. |
slack_channel_set_up_environment_not_found | 404 | A solicitação configurou o canal, depois environment_id não foi encontrado. details.slack_channel_id é o canal. Consulte Configurar um canal. |
slack_channel_set_up_settings_conflict | 409 | A solicitação configurou o canal, depois outra alteração se sobrepôs a settings. Nada de settings foi armazenado. details.slack_channel_id é o canal. Consulte Configurar um canal. |
slack_channel_enabled | 400 | O Claude está ativado no canal (enabled é resolvido como true), então ele não pode ser removido. Defina enabled como false primeiro. Consulte Remover um canal. |
Novos códigos podem ser adicionados. Trate um código que você não reconhece da mesma forma que trata seu status. Um 404 sem error_code tem uma de duas causas. Ou algo que a solicitação nomeia não foi encontrado (um id no caminho, ou um canal ou workspace do Slack no corpo ou na consulta), ou todos os endpoints parecem inexistentes porque a solicitação omite o valor anthropic-beta ou a API não está habilitada para sua organização. Para distingui-las, liste seus workspaces com a mesma chave e os mesmos cabeçalhos: essa solicitação não nomeia nada, então retorna 404 apenas no segundo caso.
Eventos do Activity Feed
Toda alteração feita por meio desta API é registrada no Compliance API Activity Feed da sua organização, atribuída à chave de API como um api_actor que contém seu ID apikey_. Os eventos são os mesmos que o feed registra quando a mesma alteração é feita no claude.ai, de modo que uma única consulta encontra uma alteração independentemente da forma como ela foi feita.
| Evento | Emitido quando |
|---|---|
ccr_agent_created | Um canal é configurado. |
ccr_agent_updated | Uma configuração muda em um canal ou workspace. |
ccr_agent_deleted | Um canal é removido. Seus destinos de Bundle vão junto e não emitem nenhum evento próprio. |
ccr_agent_proxy_profile_bound | Um Bundle é anexado. |
ccr_agent_proxy_profile_unbound | Um Bundle é desanexado. |
Os eventos nomeiam um canal ou workspace por um identificador próprio do feed, agent_id (com o prefixo cagt_), que nenhuma resposta desta API contém, então você ainda não pode associar um evento ao id de um canal ou workspace. Os dois eventos de Bundle nomeiam o Bundle em profile_id e o canal ou workspace, pelo mesmo agent_id, em scope_id.
Um evento ccr_agent_updated lista o que mudou em updated_fields, usando os nomes do próprio feed:
| Configuração | Nome em updated_fields |
|---|---|
enabled | slackbot_version |
instructions | system_prompt_addendum |
model | default_model |
environment_id | default_environment_id |
guest_policy | guest_policy |
updated_fields também pode conter is_virtual, que não nomeia nenhuma configuração. Ele aparece ao lado dos nomes das configurações alteradas no evento de uma alteração por meio desta API que é a primeira coisa que alguém armazena no canal ou workspace: um canal que o primeiro uso do Claude configurou, ou que esta API configurou sem settings, ou um workspace em que o Claude nunca foi usado, e no qual ninguém ainda armazenou uma configuração ou anexou um Bundle, aqui ou no claude.ai. O model com que um canal de código começa não conta como armazenado. Anexar um Bundle registra apenas ccr_agent_proxy_profile_bound.
Leituras, requisições que não alteram nada e requisições recusadas antes que qualquer coisa seja armazenada não registram nada. Uma requisição de configuração que configura um canal e cujo settings é então recusado registra ccr_agent_created.
Veja também
Onde o proprietário principal da sua organização cria uma chave com escopo.
O que é o Claude Tag, como configurá-lo e o que cada configuração faz no Slack.
A trilha de auditoria de todas as alterações feitas aqui e no claude.ai.
Gerencie os plugins da sua organização Claude Enterprise.
Was this page helpful?