Claude Platform Docs
管理組織

Claude Tag API

Claude Enterprise組織のSlackにおけるClaude Tagを自社のシステムから管理します。チャンネル、ワークスペース、組織のSlackデフォルトの設定を読み取って変更し、どの設定がなぜ適用されるかを確認し、Access bundleをアタッチできます。

Claude Tagは、Slackでチームメイトとして働くClaudeです。誰かがチャンネルでClaudeにメンションすると、Claudeがスレッドで回答します。Claude Tag APIを使用すると、組織オーナーが通常claude.ai > Organization settings > Claude Tagで手動で設定するClaude Tagの設定を、自社のシステムから読み取って変更できます。承認ワークフローからチャンネルごとにClaudeをオンにしたり、構成をバージョン管理で保持したり、すべてのチャンネルで何が適用されているかを監査したりするために使用します。

Claude Tagはclaude.aiの製品です。このAPIはClaude Enterprise組織向けにClaude Tagを管理するものであり、Claude Platformのワークスペース、APIの使用量、Claude Consoleとは一切関係ありません。

エンドポイント

このAPIは、5つのリソースにわたる18個のエンドポイントを公開しています。

リソースエンドポイント
Slackチャンネル: チャンネルのセットアップ、ワークスペースのチャンネルの一覧表示またはSlack IDによる検索、1件の読み取り、設定の変更、適用内容の確認、削除POST /v1/organizations/claude_tag/slack_channels
GET /v1/organizations/claude_tag/slack_channels
GET /v1/organizations/claude_tag/slack_channels/{id}
POST /v1/organizations/claude_tag/slack_channels/{id}
GET /v1/organizations/claude_tag/slack_channels/{id}/effective
DELETE /v1/organizations/claude_tag/slack_channels/{id}
Slackワークスペース: 接続済みワークスペースの一覧表示またはSlack IDによる検索、1件の読み取り、設定の変更、適用内容の確認GET /v1/organizations/claude_tag/slack_workspaces
GET /v1/organizations/claude_tag/slack_workspaces/{id}
POST /v1/organizations/claude_tag/slack_workspaces/{id}
GET /v1/organizations/claude_tag/slack_workspaces/{id}/effective
Slackデフォルト: すべてのワークスペースとチャンネルに適用される設定の読み取りと変更GET /v1/organizations/claude_tag/slack_defaults
POST /v1/organizations/claude_tag/slack_defaults
Bundle: 組織のAccess bundleの一覧表示、1件の読み取り(読み取り専用)GET /v1/organizations/claude_tag/bundles
GET /v1/organizations/claude_tag/bundles/{bundle_id}
Bundleターゲット: Bundleがアタッチされている場所の一覧表示、チャンネルまたはワークスペースへのアタッチ、1件のアタッチの読み取り、デタッチGET /v1/organizations/claude_tag/bundles/{bundle_id}/targets
POST /v1/organizations/claude_tag/bundles/{bundle_id}/targets
GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id}
DELETE /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id}

このリリースはSlackを対象としています。Slackワークスペースの接続と切断、Access bundleの作成と編集、支出上限、および設定にある5つ以外のすべてのClaude Tag設定は、引き続きclaude.aiで行います。

前提条件

  • 組織がClaude Enterpriseプランを利用しており、Claude Tagがセットアップ済みで、少なくとも1つのSlackワークスペースが接続されている必要があります。
  • プライマリオーナーが、claude.ai > Organization settings > APIで、read:claude_tagスコープ、write:claude_tagスコープ、またはその両方を持つAdmin APIキーを作成します。Admin APIキーを作成するを参照してください。
  • すべてのリクエストには、x-api-key、anthropic-version: 2023-06-01、anthropic-beta: claude-tag-2026-09-28の3つのヘッダーを含めます。

Python、TypeScript、C#、Go、Java、PHP、RubyのSDKは、これらのエンドポイントをclient.beta.organization.claude_tagの下で公開し、ant CLIはant beta:organization:claude-tagの下で公開しています。これらはanthropic-versionヘッダーとanthropic-betaヘッダーを自動的に送信します。このページの例では各SDKのデフォルトクライアントを使用しており、CLIと同様にANTHROPIC_API_KEY環境変数からAdmin APIキーを読み取ります。curlの例も同じ変数からキーを読み取り、x-api-keyヘッダーで渡します。SDKまたはCLIが追加のページを自動的に取得する場合、limitは合計数ではなくページサイズを設定します(ページネーションを参照)。

APIキーは組織に属しており、作成した人が退職した後も引き続き機能します。APIキーを共有したり、ソース管理にチェックインしたりしないでください。

クイックスタート

組織がClaude Tagに接続しているSlackワークスペースを一覧表示します。

client = anthropic.Anthropic()

workspaces = client.beta.organization.claude_tag.slack_workspaces.list()

# 必要に応じて後続のページを自動的に取得します。
for workspace in workspaces:
    print(f"{workspace.id}: {workspace.slack.team_id}")
Response
{
  "data": [
    {
      "type": "slack_workspace",
      "id": "slws_011CZkZnWa7xPc3uJfZe5LgT",
      "slack": {
        "team_id": "T01ABCD2EFG"
      },
      "settings": {
        "enabled": null,
        "instructions": "Answer in English unless asked otherwise.",
        "model": null,
        "environment_id": null,
        "guest_policy": null
      },
      "agent_id": "cagt_011CZkZrFy4aSg8uMkDt9PqW",
      "created_at": "2026-09-02T17:04:11Z",
      "updated_at": "2026-10-06T09:41:53Z"
    }
  ],
  "next_page": null
}

nullの設定はこのワークスペースで設定されていないため、ワークスペースはその設定を継承します。保存された設定と有効な設定を参照してください。

スコープ

スコープ付与される権限
read:claude_tagこのページのすべてのGETエンドポイント。
write:claude_tagこのページのすべてのPOSTおよびDELETEエンドポイント。読み取り権限は付与されませんが、変更に対するレスポンスには変更されたリソースが含まれます。

1つのキーに両方のスコープを持たせることができます。チャンネルを検索してから変更するインテグレーションには、両方が必要です。これらのエンドポイントへのアクセスを付与するスコープは他にありません。

キーは組織全体に属している必要があります。組織は常にキーが属する組織であり、リクエストで組織を指定することはありません。anthropic-workspace-idヘッダーを送信するリクエストは400を返します。ここにあるものはいずれもClaude Platformのワークスペースに属していないためです。

主要な概念

このページとclaude.aiでの名称

このAPIclaude.aiとSlack
SlackワークスペースSlackワークスペース(Slackではチームとも呼ばれます)。IDがwrkspc_で始まるClaude Platformのワークスペースとは無関係です。
SlackデフォルトDefault Slack access
設定レベルスコープ:チャンネル、ワークスペース、またはSlackデフォルト
BundleAccess bundle
enabledEnable Claude Tag in Slackスイッチ
instructionsCustom instructions
modelModel
environment_idEnvironment
guest_policyHow should Claude work in channels with guests:restrictはRestrict、channel_onlyはChannel only、allowはFull access

セットアップ済みのチャンネルとワークスペース

Claude Tagがチャンネルまたはワークスペースの設定レコードを保持している場合、そのチャンネルまたはワークスペースはセットアップ済みです。idを持つのはセットアップ済みのチャンネルまたはワークスペースのみであり、一覧に表示されるのもそれらのみです。ワークスペースのチャンネルの完全な一覧を保持しているのは、このAPIではなくSlackです。

  • ワークスペースは、組織オーナーがclaude.aiで接続したときにセットアップされます。ワークスペースをセットアップまたは削除するエンドポイントはありません。
  • チャンネルは、claude.aiで、そのチャンネルでのClaudeの初回使用によって、またはチャンネルをセットアップするによってセットアップされます。
  • Slackデフォルトは、誰かが初めてClaude Tagをセットアップしたときにセットアップされます。つまり、オーナーがSlackワークスペースを接続したとき、またはメンバーがSlackでClaudeにサインインするか初めて使用したときです。

組織は、接続がアクティブである間そのワークスペースを所有し、その中のチャンネルも所有します。所有していないチャンネルまたはワークスペースは、存在しないものと同じ404を返します。

ID

チャンネルは、Slackに表示されるIDで識別できます。Slack IDでチャンネルを検索するでそのidを一度検索し、その後はidを保存して使用してください。

IDプレフィックス表示される場所
Slackチャンネルリソースslch_チャンネルのid、リクエストボディとレスポンスのslack_channel_id
Slackワークスペースリソースslws_ワークスペースのid、リクエストボディとレスポンスのslack_workspace_id
Bundlecapp_Bundleのid、パスの{bundle_id}
Bundleターゲットbtgt_Bundleターゲットのid、パスの{target_id}
Slack独自のチームIDTslack.team_id、slack_team_idクエリパラメータ
Slack独自のチャンネルIDCまたはGslack.channel_id、slack_channel_idクエリパラメータ

idは、チャンネルまたはワークスペースがセットアップされている間、何を変更しても変わりません。ただし、読み取り専用モードで説明する1つの例外があります。削除されて再度セットアップされたチャンネルまたはワークスペースには新しいidが付与され、古いidは引き続き404を返します。保存しているidがerror_codeなしで404を返した場合は、同じキーとヘッダーでSlackデフォルトを取得してください。このリクエストはチャンネルもワークスペースも指定しないため、404以外のステータスが返れば、そのidは無効になっています。Slack IDでチャンネルまたはワークスペースを再度検索してください。そこでも404が返る場合、それはidについて何も示していません。保存しているidの値は保持したまま、エラーレスポンスを参照してください。

agent_id(プレフィックスcagt_)は、Compliance APIが同じチャンネルまたはワークスペースを指す名前であり、そこでClaudeが実行したセッションの所有者としても、Activity Feedイベント内でも使用されます。idと同じ期間存続します。

設定

各設定レベルには、同じ5つの設定が保存されます。いずれも省略可能です。

設定型説明
enabledbooleanClaudeがオンかどうか。
instructionsstringClaudeがすべてのセッションで読む、常時適用されるガイダンス。先頭と末尾の空白を除去した後で最大8,192文字。空白のみのテキストは設定をクリアします。
modelstring新しいセッションの開始時に使用されるモデル。組織がClaude Tagで使用できるモデルIDです。最大128文字。
environment_idstringセッションが実行されるクラウド環境。プレフィックスはenv_です。アクティブであり、組織に属している必要があります。
guest_policyobjectSlackのゲストがチャンネルにいる間、チャンネル内の全員に対してClaudeがどう動作するか:{"type": "allow"}(Claudeが回答する)、{"type": "restrict"}(Claudeは回答しない)、または{"type": "channel_only"}(Claudeはチャンネル自体にアタッチされたBundleのみを使って回答する)。Slack Connectを通じて、またはEnterprise Gridをまたいで共有されたチャンネルでの意味については、ゲストチャンネルを制限するを参照してください。

modelとenvironment_idは書き込み時にチェックされ、その後は再チェックされません。後でモデルや環境が変更されても、どちらのビューも保存された値を返し続けます。

組織オーナーがclaude.aiで設定レベルをセルフホストのランナープールに設定している場合、そのenvironment_idはccpool_で始まるプールのIDを返します。このAPIではランナープールを設定できず、ランナープールを保存している設定レベルでenvironment_idを変更またはクリアするリクエストには400を返します。

保存された設定と有効な設定

設定は3つのレベルに存在します。チャンネル、チャンネルが属するワークスペース、そして組織のSlackデフォルトです。各レベルには、そのレベルで設定されたものだけが保存されます。APIは2つのビューを提供します。

各設定は個別に解決されます。

設定ルールどのレベルでも設定されていない場合
enabledそれを設定している最も近いレベルが決定します。そのため、チャンネルでtrueにすると、ワークスペースがfalseを保存していても、そのチャンネルではClaudeがオンになります。true
instructions加算的です。それを設定しているすべてのレベルのテキストが、最も広いレベルから順に、空行を挟んで結合されます。null
modelそれを設定している最も近いレベルが決定します。null:Claudeは製品のデフォルトモデルを使用します
environment_idそれを設定している最も近いレベルが決定します。null
guest_policyそれを設定している最も近いレベルが決定します。Slackデフォルトがセットアップされている組織ではrestrict

たとえば、ある組織がSlackデフォルトに指示を保存し、あるワークスペースでClaudeをオフにし、そのワークスペースの1つのチャンネルでモデルを設定したとします。そのチャンネルの有効なビューには、3つの値とそれぞれの出所が表示されます。

{
  "type": "slack_channel_effective",
  "id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
  "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_defaults" }],
    "model": {
      "type": "slack_channel",
      "slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX"
    },
    "environment_id": { "type": "default" },
    "guest_policy": { "type": "default" }
  }
}

ソースは次のいずれかです。

type意味
slack_channelチャンネル。slack_channel_idで示されます。
slack_workspaceワークスペース。slack_workspace_idで示されます。
slack_parent_channelコードチャンネルの親。slack_channel_idで示されます。コードチャンネルとは、別のチャンネルから開始されたチャンネルです。親が同じワークスペース内のパブリックチャンネルである間、親はチャンネルとワークスペースの間に位置し、instructionsとenvironment_idのみに寄与します。
slack_defaults組織のSlackデフォルト。IDはありません。
defaultどのレベルも値を設定していないため、組み込みのデフォルトが適用されます。

sources.instructionsは、テキストに寄与するすべてのレベルを最も広いものから順に並べたリストであり、寄与するレベルがない場合は空です。チャンネル自体のワークスペースではなくSlack Enterprise Gridの接続を通じてチャンネルに到達する組織では、ソースのIDがnullになることがあります。

設定の変更

3つの更新エンドポイントとチャンネルをセットアップするは、同じルールに従うsettingsオブジェクトを受け取ります。

  • 省略した設定は変更されません。 {"settings": {"enabled": false}}はClaudeをオフにし、他の4つの設定はそのままにします。
  • nullとして送信した設定はクリアされ、そのレベルは再びその設定を継承します。
  • すべてか無か。 リクエスト内のいずれかの値が拒否された場合、リクエスト内のどの設定も保存されません。
  • 繰り返しても安全。 どの変更についても、同一のリクエストを繰り返したときのリソースの状態は最初のリクエストの後と変わらないため、Idempotency-Keyを受け取るエンドポイントはありません。何も変更しないリクエストは何も書き込まず、Activity Feedイベントも記録しません。
  • 最後の書き込みが優先。 前提条件を受け取るリクエストはありません。それぞれがリソースを読み取ってから同じ設定を変更する2つの呼び出し元は、互いに上書きし合います。409が返されるのは、リクエストの実行中に別の変更が重なった場合のみです。リクエストの内容は何も保存されていないため、リソースを再度読み取り、まだ必要であれば変更を再送信してください。

チャンネルのguest_policyを変更すると、そのチャンネルで実行中のセッションが終了することがあります。セッションはバックグラウンドで終了し、レスポンスはその完了を待ちません。

構成済みのレベル

人またはキーが設定レベルの設定を変更するか、Bundleをアタッチすると、その設定レベルは構成済みになります。その後は、すべての設定がクリアされ、すべてのBundleがデタッチされた後でも、構成済みのままです。Claudeの初回使用によって、または設定なしでこのAPIを通じてセットアップされたチャンネルは、最初の変更または最初のBundleまでは構成済みではありません。これは2つの場面で重要です。削除できるのは構成済みのチャンネルのみであり、新しいidが付与されることがあるのは構成済みでないチャンネルのみです(読み取り専用モードを参照)。

読み取り専用モード

API / Terraform read-only modeは、組織オーナーがclaude.aiのClaude Tag設定でオン・オフを切り替える設定です。この名前はclaude.aiとSlackについて説明したものです。このモードがオンの間、claude.aiとSlackはこのAPIが管理する対象への人による変更を拒否するため、それらの変更を行えるのはキーのみになります。このAPIが読み取り専用になるわけではありません。このページのすべてのエンドポイントは、モードがオンでもオフでも同じように応答し、このモードを読み取ったり変更したりするエンドポイントはありません。

モードがオフの間は、人とキーが同じ設定を変更し、同じBundleをアタッチおよびデタッチし、各変更は保存されている内容を置き換えます。パイプラインを唯一の変更元にしたい場合は、このモードをオンにしてください。

モードがオンの間、claude.aiとSlackは次の操作を拒否します。

  • チャンネル、ワークスペース、またはSlackデフォルトの5つの設定のいずれかを変更すること。
  • claude.aiでチャンネルをセットアップすること、チャンネルを削除すること、またはワークスペースを切断すること。
  • チャンネルまたはワークスペースにBundleをアタッチすること、デタッチすること、またはアタッチされているBundleを削除すること。

どちらの場合でも可能なままの操作もあります。オーナーは引き続き新しいワークスペースを接続し、Bundleを作成・編集し、このAPIが管理しないClaude Tag設定を変更できます。Claudeの初回使用は引き続きチャンネルをセットアップし、Slackでチャンネルを削除すると引き続きそのチャンネルはClaude Tagから削除され、ClaudeのSlackアプリをアンインストールすると引き続きそのワークスペースは切断されます。

モードがオフの間、すでにセットアップ済みで構成済みでないチャンネルをclaude.aiでセットアップすると、チャンネルのレコードが置き換えられることがあります。その場合、チャンネルには新しいidとagent_idが付与され、古いidは404を返します。構成済みのチャンネルのidは、チャンネルが削除されるまで存続します。

グループダイレクトメッセージ

Slackのグループダイレクトメッセージはチャンネル形式のIDを持つため、そこでClaudeを使用するとチャンネルと同様にセットアップされます。つまり、idを持ち、一覧に表示され、読み取ることができます。このAPIを通じてグループダイレクトメッセージをセットアップすること、その設定を変更すること、Bundleをアタッチすることは、いずれも400を返します。Bundleをデタッチすることは許可されています。

ワークフローの例

承認されたチャンネルでのみClaudeをオンにする

どのメンバーでもClaudeをパブリックチャンネルに招待できます。承認した場所でのみClaudeをオンにしておくには、次のようにします。

  1. Slackデフォルトでenabledをfalseに設定し、すべての場所でClaudeをオフにします。
  2. 承認システムがチャンネルを承認したら、"settings": {"enabled": true}を指定してチャンネルをセットアップします。このリクエストはSlack独自のIDを受け取り、チャンネルがすでにセットアップ済みかどうかにかかわらずチャンネルを返すため、繰り返しても安全です。
  3. 同じ実行の中で、チーム向けに承認されたBundleをアタッチし、チャンネルの最初のセッションですでにツールが使えるようにします。

構成をバージョン管理で保持する

  1. 各チャンネルについてSlackに表示されるIDをキーとして構成を管理し、それらのIDで各チャンネルを検索します。
  2. 保存されたビューをリポジトリで宣言している内容と比較します。有効なビューには継承された値が混ざってしまいます。
  3. 異なる設定のみを送信し、リポジトリで宣言しなくなった設定にはnullを送信します。
  4. 誰も同じ設定を手動で変更しないように、組織オーナーに読み取り専用モードをオンにするよう依頼します。

すべての場所で適用されている内容を監査する

  1. ワークスペースを一覧表示し、次に各ワークスペースのチャンネルを一覧表示します。
  2. 各チャンネルの有効な設定を読み取り、ポリシーで禁止されているもの、たとえば承認記録がないのにenabledがtrueになっているチャンネルや、guest_policyがallowになっているチャンネルにフラグを立てます。
  3. Bundleを一覧表示し、次に各Bundleのターゲットを一覧表示して、機密性の高いシステムへのアクセスがどこにアタッチされているかを確認します。

Slackチャンネル

チャンネルオブジェクトは、1つのSlackチャンネルの保存されたビューです。

フィールド説明
typeslack_channel。
idプレフィックスはslch_。IDを参照してください。
slackSlack独自のID:チャンネルが属するワークスペースのteam_idと、チャンネルのchannel_id。
settingsチャンネル自体が保存しているもの。常に存在し、5つの設定すべてを含みます。設定されていないものはnullです。
agent_idプレフィックスはcagt_。IDを参照してください。
created_atチャンネルがセットアップされた日時。
updated_atClaude Tagのチャンネルのレコードが最後に変更された日時。ここ、claude.ai、またはSlackでの設定の変更のたびに更新され、ここでのどのレスポンスにも表れない変更によって更新されることもあります。より新しい値は、設定が変更された証拠としてではなく、チャンネルを再度読み取る理由として扱ってください。Bundleのアタッチやデタッチだけでは更新されません。

slch_プレフィックスのないidは400を返します。プレフィックスはあるものの組織のどのチャンネルも指していないidは404を返します。

チャンネルをセットアップする

POST /v1/organizations/claude_tag/slack_channelsはSlackチャンネルをセットアップし、それを返します。slack.team_idとslack.channel_idは必須で、Slack独自のIDです。settingsは省略可能で、設定の変更に従います。チャンネルがすでにセットアップ済みの場合、リクエストは既存のチャンネルを返し、settingsを適用します。どちらの場合もレスポンスは200です。write:claude_tagスコープが必要です。

client = anthropic.Anthropic()

channel = client.beta.organization.claude_tag.slack_channels.create(
    slack={"team_id": "T01ABCD2EFG", "channel_id": "C05HJKL6MNP"},
    settings={"instructions": "Answer in the language of the question."},
)

print(channel.id)
Response
{
  "type": "slack_channel",
  "id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
  "slack": {
    "team_id": "T01ABCD2EFG",
    "channel_id": "C05HJKL6MNP"
  },
  "settings": {
    "enabled": null,
    "instructions": "Answer in the language of the question.",
    "model": null,
    "environment_id": null,
    "guest_policy": null
  },
  "agent_id": "cagt_011CZkZsHz6bTh2vNmEu4QrX",
  "created_at": "2026-10-19T16:20:05Z",
  "updated_at": "2026-10-19T16:20:05Z"
}

チャンネルがセットアップされる前に、ClaudeのSlackアプリは、チャンネルがワークスペース内にあり、アーカイブされておらず、アプリから見えることをSlackに確認します。このチェックに失敗したチャンネルは404を返し、ClaudeのSlackアプリがインストールされていないワークスペースも同様です。

チャンネルのセットアップとsettingsの適用は2つのステップです。最初のステップが成功し、2番目のステップが拒否された場合、レスポンスは拒否となり、チャンネルは何も保存されていない状態でセットアップ済みのままになります。その拒否にはslack_channel_set_up_で始まるerror_codeと、error.details.slack_channel_idに新しいチャンネルのidが含まれます(エラーレスポンスを参照)。settingsを修正してそのidへの更新で送信するか、セットアップリクエストを再度送信してください。

チャンネルを一覧表示する

GET /v1/organizations/claude_tag/slack_channelsは、1つのワークスペースのセットアップ済みチャンネルを、created_atの新しい順に一覧表示します。slack_team_idは必須で、ワークスペースのSlack独自のIDです。next_pageが設定されていても、ページに含まれるチャンネルがlimitより少ない場合や、まったくない場合があるため、next_pageがnullになるまでページのリクエストを続けてください(ページネーションを参照)。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

channels = client.beta.organization.claude_tag.slack_channels.list(
    slack_team_id="T01ABCD2EFG"
)

# 必要に応じて後続のページを自動的に取得します。
for channel in channels:
    print(f"{channel.id}: {channel.slack.channel_id}")

レスポンスは{"data": [...], "next_page": ...}で、各項目はチャンネルオブジェクトです。組織が所有していないワークスペースを指すslack_team_idは404を返します。

Slack IDでチャンネルを検索する

1つのチャンネルを検索するには、チャンネルのSlack独自のIDであるslack_channel_idを追加します。dataにはそのチャンネルが含まれ、チャンネルがセットアップされていない場合は空になります。検索ではlimitとpageは無視され、next_pageはnullになります。これがチャンネルのidを見つける方法です。

client = anthropic.Anthropic()

page = client.beta.organization.claude_tag.slack_channels.list(
    slack_team_id="T01ABCD2EFG",
    slack_channel_id="C05HJKL6MNP",
)

for channel in page.data:
    print(channel.id)

slack_channel_idとしてslch_のIDを渡すと400が返されます。

チャンネルを取得する

GET /v1/organizations/claude_tag/slack_channels/{id}はチャンネルオブジェクトを返します。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

channel = client.beta.organization.claude_tag.slack_channels.retrieve(
    "slch_011CZkZmRt4vNq8sHbYw2KdX"
)

print(channel.settings.enabled)

チャンネルを更新する

POST /v1/organizations/claude_tag/slack_channels/{id}はチャンネルの設定を変更し、チャンネルオブジェクトを返します。settingsは必須で、設定の変更に従います。write:claude_tagスコープが必要です。

1つのチャンネルでClaudeをオフにし、他の設定はそのままにします。

client = anthropic.Anthropic()

channel = client.beta.organization.claude_tag.slack_channels.update(
    "slch_011CZkZmRt4vNq8sHbYw2KdX",
    settings={"enabled": False},
)

print(channel.settings.enabled)

チャンネルの指示をクリアし、継承されたものだけが適用されるようにします。

client = anthropic.Anthropic()

channel = client.beta.organization.claude_tag.slack_channels.update(
    "slch_011CZkZmRt4vNq8sHbYw2KdX",
    settings={"instructions": None},
)

print(channel.settings.instructions)

チャンネルの有効な設定を取得する

GET /v1/organizations/claude_tag/slack_channels/{id}/effectiveは、チャンネルで適用される内容と、各値がどこから来ているかを返します。完全なレスポンスは保存された設定と有効な設定に示されています。このビューでは、enabledとguest_policyがnullになることはありません。このビューは読み取りのたびに解決されるため、created_atやupdated_atはありません。いずれかのレベルを読み取れない場合、そのレベルを除いて解決するのではなく、リクエストは503で失敗します。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

effective = client.beta.organization.claude_tag.slack_channels.effective.retrieve(
    "slch_011CZkZmRt4vNq8sHbYw2KdX"
)

print(effective.settings.instructions)

チャンネルを削除する

DELETE /v1/organizations/claude_tag/slack_channels/{id}は、Claude Tagからチャンネルを削除します。これは組織オーナーがclaude.aiで行う削除と同じもので、同じ効果があります。Slack上のチャンネルやその中のメッセージを削除、アーカイブ、または変更することはありません。write:claude_tagスコープが必要です。

client = anthropic.Anthropic()

deleted_channel = client.beta.organization.claude_tag.slack_channels.delete(
    "slch_011CZkZmRt4vNq8sHbYw2KdX"
)

print(deleted_channel.id)
Response
{
  "type": "slack_channel_deleted",
  "id": "slch_011CZkZmRt4vNq8sHbYw2KdX"
}

リクエストが返った時点で、そのidは404を返すようになり、残りはバックグラウンドで削除されます。削除を繰り返すと404が返されます。

チャンネルを削除しても、そのチャンネルでClaudeが停止するわけではありません。 Claudeはチャンネルが継承する設定のもとで、チャンネルに関するメモリを持たないまま回答を続け、次に使用されたときに新しいidでチャンネルが再びセットアップされることがあります。

  • チャンネルでClaudeが回答しないようにするには、代わりにそのチャンネルでenabledをfalseに設定してください。
  • チャンネルに何も保存させず、セッションとメモリを保持したい場合は、代わりに各設定をクリアし、各Bundleをデタッチしてください。

2種類のチャンネルはここでは削除できず、400を返します。1つは構成済みでないチャンネル(error_code: "slack_channel_not_configured")、もう1つはランナープールやclaude.aiにしかない設定など、このAPIが管理しない構成を保持しているチャンネルです。後者は組織オーナーがclaude.aiで削除します。

Slackワークスペース

ワークスペースオブジェクトは、1つのSlackワークスペースの保存されたビューです。チャンネルオブジェクトと同じフィールドを持ちますが、typeがslack_workspaceであること、idのプレフィックスがslws_であること、slackがteam_idのみを保持することが異なります。完全な例はクイックスタートのレスポンスに示されています。

slws_プレフィックスのないidは400を返します。プレフィックスはあるものの、組織のどのワークスペースも指していないidは404を返します。

ワークスペースを一覧表示する

GET /v1/organizations/claude_tag/slack_workspacesは、組織が所有するセットアップ済みのワークスペースを、created_atの新しい順に一覧表示します。リクエストとレスポンスはクイックスタートに示されています。Slack独自のIDで1つのワークスペースを検索するには、slack_team_idを追加します。dataにはそのワークスペースが含まれ、セットアップされていない場合は空になります。組織が所有していないワークスペースは404を返します。read:claude_tagスコープが必要です。

ワークスペースを取得する

GET /v1/organizations/claude_tag/slack_workspaces/{id}はワークスペースオブジェクトを返します。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

workspace = client.beta.organization.claude_tag.slack_workspaces.retrieve(
    "slws_011CZkZnWa7xPc3uJfZe5LgT"
)

print(workspace.settings.instructions)

ワークスペースを更新する

POST /v1/organizations/claude_tag/slack_workspaces/{id}はワークスペースの設定を変更し、ワークスペースオブジェクトを返します。settingsは必須で、設定の変更に従います。ここで設定した内容は、独自の値を設定していないワークスペース内のすべてのチャンネルに適用されます。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)

ワークスペースの有効な設定を取得する

GET /v1/organizations/claude_tag/slack_workspaces/{id}/effectiveは、ワークスペースとSlackデフォルトから解決された、ワークスペースで適用される内容を、保存された設定と有効な設定に示されている形式で、typeをslack_workspace_effectiveに設定して返します。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

effective = client.beta.organization.claude_tag.slack_workspaces.effective.retrieve(
    "slws_011CZkZnWa7xPc3uJfZe5LgT"
)

print(effective.settings.enabled)

Slackデフォルト

組織にはSlackデフォルトオブジェクトがちょうど1つあります。これはすべてのワークスペースとチャンネルに適用され、idを持たず、これより広いレベルが存在しないため有効なビューもありません。

フィールド説明
typeslack_defaults。
settingsデフォルトが保存する内容。チャンネルと同様です。
agent_idプレフィックスはcagt_。Slackデフォルトがセットアップされるまではnullです。

Slackデフォルトを取得する

GET /v1/organizations/claude_tag/slack_defaultsはオブジェクトを返します。Slackデフォルトがセットアップされていない組織では、すべての設定とagent_idがnullの状態で200が返されます。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

defaults = client.beta.organization.claude_tag.slack_defaults.retrieve()

print(defaults.settings.guest_policy)

Slackデフォルトを更新する

POST /v1/organizations/claude_tag/slack_defaultsはデフォルトを変更し、オブジェクトを返します。settingsは必須で、設定の変更に従います。Slackデフォルトがセットアップされていない状態で値を設定するリクエストは400を返します。write:claude_tagスコープが必要です。

client = anthropic.Anthropic()

defaults = client.beta.organization.claude_tag.slack_defaults.update(
    settings={
        "instructions": "Keep replies under 200 words.",
        "environment_id": "env_011CZkZqDx2zRf5tLjCs7NpV",
    },
)

print(defaults.settings.environment_id)
Response
{
  "type": "slack_defaults",
  "settings": {
    "enabled": null,
    "instructions": "Keep replies under 200 words.",
    "model": null,
    "environment_id": "env_011CZkZqDx2zRf5tLjCs7NpV",
    "guest_policy": null
  },
  "agent_id": "cagt_011CZkZtKa8cUj4wPnFv6RsY"
}

Bundle

Bundleは、claude.aiでAccess bundleと呼ばれているものです。これは、Claudeがチャンネルやワークスペースで使用できる、コネクタ、リポジトリ、認証情報などのアクセスの名前付きセットです。組織オーナーはclaude.aiでBundleを作成、編集、削除します。このAPIはBundleを一覧表示し、アタッチします。Bundleの名前と説明を返しますが、Bundleが付与する内容は決して返しません。

フィールド説明
typebundle。
idプレフィックスはcapp_。
display_nameBundleの名前。
descriptionBundleの用途。ない場合はnull。
created_at、updated_atBundleが作成された日時と最後に変更された日時。

capp_プレフィックスのないbundle_idは400を返します。プレフィックスはあるものの、存在しないか別の組織に属している場合は、リクエストの他の内容にかかわらず404を返します。Claude Tagが自身のために管理するBundleは一覧に表示されず、404を返します。

Bundleを一覧表示する

GET /v1/organizations/claude_tag/bundlesは、組織のBundleをcreated_atの新しい順に一覧表示します。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

bundles = client.beta.organization.claude_tag.bundles.list()

# 必要に応じて後続のページを自動的に取得します。
for bundle in bundles:
    print(f"{bundle.id}: {bundle.display_name}")
Response
{
  "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
}

Bundleを取得する

GET /v1/organizations/claude_tag/bundles/{bundle_id}はBundleオブジェクトを返します。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

bundle = client.beta.organization.claude_tag.bundles.retrieve(
    "capp_011CZkZjLP1cWxj5EtMmdgbq"
)

print(bundle.display_name)

Bundleターゲット

Bundleターゲットは、1つのBundleが1つのチャンネルまたは1つのワークスペースにアタッチされていることを示すレコードです。ワークスペースにアタッチされたBundleは、そのワークスペースとその中のすべてのチャンネルで使用できます。チャンネルにアタッチされたBundleは、そのチャンネルでのみ使用できます。

フィールド説明
typeslack_channelまたはslack_workspace。
idプレフィックスはbtgt_。パス内の{target_id}であり、チャンネルやワークスペース自身のidになることはありません。
slack_channel_idslack_channelターゲットの場合:チャンネルのid(プレフィックスはslch_)。
slack_workspace_idslack_workspaceターゲットの場合:ワークスペースのid(プレフィックスはslws_)。
created_atBundleがアタッチされた日時。

Bundleは1つのチャンネルまたはワークスペースに最大1回までアタッチされ、同じ組み合わせは、デタッチして再度アタッチした後も含め、常に同じidを持ちます。idは不透明な値です。アタッチのレスポンスまたは一覧から取得してください。Bundleターゲットは、そのパスにも必要なBundleのidを保持していないため、この2つをまとめて保持してください。

チャンネルまたはワークスペースに最初のBundleがアタッチされると、それは構成済みになります。アタッチやデタッチによって保存された設定が変わることはありません。チャンネルまたはワークスペースで実行中のセッションには、アクセスが変更されたことが通知されます。

claude.aiがオンコール設定の一部としてアタッチするBundleは一覧に表示され、読み取ることもできますが、ここでアタッチやデタッチを行うことはできません。また、オンコール設定が管理するチャンネルやワークスペースに対しては、何もアタッチまたはデタッチできません。これらのリクエストはいずれも400を返します。

Bundleのターゲットを一覧表示する

GET /v1/organizations/claude_tag/bundles/{bundle_id}/targetsは、Bundleがアタッチされているチャンネルとワークスペースをcreated_atの新しい順に一覧表示します。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

targets = client.beta.organization.claude_tag.bundles.targets.list(
    "capp_011CZkZjLP1cWxj5EtMmdgbq"
)

# 必要に応じて後続のページを自動的に取得します。
for target in targets:
    print(f"{target.id}: {target.type}")
Response
{
  "data": [
    {
      "type": "slack_channel",
      "id": "btgt_011CZkZpBv9yQd6wKhAr8MnU",
      "slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
      "created_at": "2026-10-19T16:21:44Z"
    },
    {
      "type": "slack_workspace",
      "id": "btgt_011CZkZuMc3dVk7xQpGw9StZ",
      "slack_workspace_id": "slws_011CZkZnWa7xPc3uJfZe5LgT",
      "created_at": "2026-09-12T08:17:02Z"
    }
  ],
  "next_page": null
}

一覧に表示されるのは、チャンネルとワークスペースへのアタッチのみです。claude.aiでDefault Slack accessなどそれ以外のものにアタッチされたBundleにはBundleターゲットがなく、多数のチャンネルに一度にBundleを適用するルールにもBundleターゲットはありません。そのため、チャンネルでClaudeが使用できるBundleは、そのチャンネルを指すターゲットよりも多い場合があります。1つのチャンネルまたはワークスペースにアタッチされたBundleを一覧表示するエンドポイントはありません。

Bundleをアタッチする

POST /v1/organizations/claude_tag/bundles/{bundle_id}/targetsはBundleをアタッチし、Bundleターゲットを返します。ボディにはtypeと対応するidを指定します。チャンネルまたはワークスペースはすでにセットアップされている必要があります。アタッチによってチャンネルがセットアップされることはありません。すでにアタッチされている組み合わせをアタッチすると、既存のBundleターゲットとともに200が返されます。write:claude_tagスコープが必要です。

チャンネルにBundleをアタッチします。

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)
Response
{
  "type": "slack_channel",
  "id": "btgt_011CZkZpBv9yQd6wKhAr8MnU",
  "slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
  "created_at": "2026-10-19T16:21:44Z"
}

ワークスペースにBundleをアタッチします。

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)

チャンネルへのアタッチには、チャンネルにSlackのゲストがいない間のみなど、適用される条件があります。条件はclaude.aiで設定され、ここでは返されません。このAPIを通じたアタッチではデフォルトの条件が使用され、すでにアタッチされている組み合わせをアタッチしても、その条件は変更されません。

Bundleターゲットを取得する

GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id}はBundleターゲットを返します。btgt_プレフィックスのないtarget_idは400を返します。別のBundleに属しているもの、デタッチされたもの、またはセットアップ済みでなくなったチャンネルやワークスペースを指すものは404を返します。read:claude_tagスコープが必要です。

client = anthropic.Anthropic()

target = client.beta.organization.claude_tag.bundles.targets.retrieve(
    "btgt_011CZkZpBv9yQd6wKhAr8MnU",
    bundle_id="capp_011CZkZjLP1cWxj5EtMmdgbq",
)

print(target.type)

Bundleをデタッチする

DELETE /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id}はBundleをデタッチします。デタッチを繰り返すと404が返されます。write:claude_tagスコープが必要です。

client = anthropic.Anthropic()

deleted_target = client.beta.organization.claude_tag.bundles.targets.delete(
    "btgt_011CZkZpBv9yQd6wKhAr8MnU",
    bundle_id="capp_011CZkZjLP1cWxj5EtMmdgbq",
)

print(deleted_target.id)
Response
{
  "type": "bundle_target_deleted",
  "id": "btgt_011CZkZpBv9yQd6wKhAr8MnU"
}

認識できない値

guest_policy.type、ソースのtype、Bundleターゲットのtype、およびエラーコードには、いつでも新しい値が追加される可能性があります。認識できない値は、失敗させるのではなく、他の未知の文字列と同様に扱ってください。

レート制限

リクエストは組織ごとに、2つの予算で制限されます。これらの予算は組織のすべてのキーで共有され、組織の他のAdmin APIの制限とは別です。各予算はバーストを許可し、その後一定のレートで補充されます。

予算リクエストバースト補充
読み取りすべてのGET120毎秒2
変更すべてのPOSTとDELETE60毎秒1

予算を超えたリクエストは、retry-afterヘッダー付きで429 Too Many Requestsを返します。レスポンスには、リクエストが消費した予算についてのanthropic-ratelimit-requests-limit、anthropic-ratelimit-requests-remaining、anthropic-ratelimit-requests-resetヘッダーが含まれます。

ページネーション

一覧エンドポイントはopaque cursor(不透明なカーソル)を使用します。最初のリクエストは最大limit行とnext_pageカーソルを返します。次のリクエストでそのカーソルを変更せずにpageパラメータとして渡し、next_pageがnullになるまで繰り返してください。カーソル文字列は不透明なものとして扱い、解析、変更、または自分で構築しないでください。チャンネルを一覧表示するは、next_pageが設定されたまま、limitより少ないチャンネルを含むページ、またはチャンネルを含まないページを返すことがあるため、next_pageがnullになるまでページのリクエストを続けてください。Python、TypeScript、C#、Go、Java、Rubyの各SDKのリストイテレーターとCLI(--format rawを使用する場合を除く)は、これを自動的に行います。PHPとcurlでは、各ページを自分でリクエストし、そのnext_pageをpageとして渡してください。

limitのデフォルトは20で、最小値は1、最大値は100です。すべての一覧はcreated_atの新しい順に並べられ、他の順序は指定できません。

エラーレスポンス

エラーレスポンスは、エラーに記載されている標準の形式に従います。サポートに問い合わせる際は、レスポンスボディのrequest_idを伝えてください。

ステータス意味
400入力が無効であるか、操作がこのチャンネル、ワークスペース、またはBundleに適用されません(各エンドポイントのセクションを参照)。
401x-api-keyヘッダーがないか、キーが認識されません。
403キーが組織レベルのスコープ付きキーではないか、必要なスコープがないか、組織がこの変更を行えません。
404リソースが見つからないか、組織のものではありません。リクエストでanthropic-betaの値が省略されている場合や、組織でAPIが有効になっていない場合にも返され、エンドポイントは存在しないものとして扱われます。
409リクエストの実行中に、別の操作によってリソースが変更または削除されました。何も保存されていません。再度読み取り、まだ必要であれば変更を再送信してください。
429レート制限を超過しました。レート制限を参照してください。
500内部エラーです。
503一時的なエラーです。変更の場合、変更が保存されたかどうかは示されません。すべての変更は繰り返しても安全なため、リクエストを変更せずに再送信してください。

1つのステータスに、それぞれ異なる対処が必要な複数の原因がある場合、エラーには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ステータス意味と対処方法
organization_level_scoped_api_key_required403認証情報が、組織全体に属するスコープ付きAdmin APIキーではありません。プライマリオーナーに発行を依頼してください。
api_key_scope_missing403キーに、エンドポイントが必要とするread:claude_tagまたはwrite:claude_tagがありません。
workspace_selection_not_accepted400リクエストでanthropic-workspace-idヘッダーが送信されました。削除してください。
claude_tag_writes_not_enabled403組織はこのAPIを通じて読み取りはできますが、変更は有効になっていません。
compliance_configuration_restricted403組織に、ゼロデータ保持など、Claude Tagが新しいものを何も保存しないコンプライアンス構成があります。チャンネルのセットアップ、設定の更新(クリアする場合も含む)、Bundleのアタッチは拒否されます。Bundleのデタッチとチャンネルの削除は拒否されません。
environment_not_found404environment_idが、組織がここで使用できる環境を指していません。パス内のidは問題ありません。
environment_archived400environment_idがアーカイブされた環境を指しています。
slack_channel_set_up_settings_refused400リクエストによってチャンネルがセットアップされた後、settingsが拒否されました。details.slack_channel_idがそのチャンネルです。チャンネルをセットアップするを参照してください。
slack_channel_set_up_environment_not_found404リクエストによってチャンネルがセットアップされた後、environment_idが見つかりませんでした。details.slack_channel_idがそのチャンネルです。
slack_channel_set_up_settings_conflict409リクエストによってチャンネルがセットアップされた後、別の変更がsettingsと重なりました。settingsの内容は何も保存されていません。details.slack_channel_idがそのチャンネルです。
slack_channel_not_configured400チャンネルが構成済みでないため、削除できません。

新しいコードが追加される可能性があります。認識できないコードは、そのステータスと同じように扱ってください。error_codeのない404には、2つの原因のいずれかがあります。リクエストが指定したもの(パス内のid、またはボディやクエリ内のSlackチャンネルやワークスペース)が見つからなかったか、リクエストでanthropic-betaの値が省略されているか組織でAPIが有効になっていないために、すべてのエンドポイントが存在しないものとして扱われているかのどちらかです。これらを区別するには、同じキーとヘッダーでSlackデフォルトを取得してください。このリクエストは何も指定しないため、404を返すのは2つ目の場合のみです。

Activity Feedイベント

このAPIを通じて行われたすべての変更は、組織のCompliance API Activity Feedに記録され、apikey_ IDを持つapi_actorとしてAPIキーに帰属されます。これらのイベントは、同じ変更がclaude.aiで行われた場合にフィードが記録するものと同じであるため、どちらの方法で変更が行われたかにかかわらず、1つのクエリで変更を見つけることができます。

イベント発行されるタイミング
ccr_agent_createdチャンネルがセットアップされたとき。
ccr_agent_updatedチャンネル、ワークスペース、またはSlackデフォルトで設定が変更されたとき、またはレベルが構成済みになったとき。
ccr_agent_deletedチャンネルが削除されたとき。そのBundleターゲットも一緒に削除され、それら自体のイベントは発行されません。
ccr_agent_proxy_profile_boundBundleがアタッチされたとき。
ccr_agent_proxy_profile_unboundBundleがデタッチされたとき。

イベントは、チャンネルまたはワークスペースをidではなくagent_idで示します。2つのBundleイベントは、Bundleをprofile_idで、チャンネルまたはワークスペースをscope_idで示します。

ccr_agent_updatedイベントは、変更された内容をフィード独自の名前でupdated_fieldsに列挙します。

設定updated_fieldsでの名前
enabledslackbot_version
instructionssystem_prompt_addendum
modeldefault_model
environment_iddefault_environment_id
guest_policyguest_policy
(レベルが構成済みになった)is_virtual

読み取り、何も変更しないリクエスト、および何かが保存される前に拒否されたリクエストは、何も記録しません。チャンネルをセットアップし、その後settingsが拒否されたセットアップリクエストは、ccr_agent_createdを記録します。

関連項目

Was this page helpful?