---
title: Claude Tag API
url: https://platform.claude.com/docs/ja/manage-claude/claude-tag-api
description: Claude Enterprise組織のSlackにおけるClaude Tagを自社のシステムから管理します。チャンネル、ワークスペース、組織のSlackデフォルトの設定を読み取って変更し、どの設定がなぜ適用されるかを確認し、Access bundleをアタッチできます。
---

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

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

<Check>
  **スコープ付きAdmin APIキーが必要です**

  これらのエンドポイントには、`read:claude_tag`スコープ（`GET`エンドポイントの場合）または`write:claude_tag`スコープ（`POST`および`DELETE`エンドポイントの場合）を持つAdmin APIキーが必要です。[スコープ](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#scopes)を参照してください。プライマリオーナーがキーを作成する場所については、[Admin APIキーを作成する](https://platform.claude.com/docs/ja/manage-claude/admin-api-keys#create-a-key-for-a-claude-enterprise-organization)を参照してください。すべてのリクエストで、キーを`x-api-key`ヘッダーに渡し、[`anthropic-version`](https://platform.claude.com/docs/ja/api/versioning)ヘッダーと次の注記に示すベータヘッダーも併せて送信してください。
</Check>

<Note>
  Claude Tag APIは**ベータ版**であり、Claude Enterprise組織のみが利用できます。Claude Platform（Claude Console）組織では利用できません。

  すべてのリクエストには[ベータヘッダー](https://platform.claude.com/docs/ja/api/beta-headers)`anthropic-beta: claude-tag-2026-09-28`を含める必要があります（SDKと`ant` CLIは自動的に送信します）。このヘッダーがないリクエストは、エンドポイントが存在しない場合とまったく同じように`404`を返します。
</Note>

## エンドポイント

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

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

このリリースはSlackを対象としています。Slackワークスペースの接続と切断、Access bundleの作成と編集、支出上限、および[設定](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#settings)にある5つ以外のすべてのClaude Tag設定は、引き続きclaude.aiで行います。

## 前提条件

* 組織がClaude Enterpriseプランを利用しており、[Claude Tagがセットアップ済み](https://claude.com/docs/claude-tag/admins/setup-overview)で、少なくとも1つのSlackワークスペースが接続されている必要があります。
* プライマリオーナーが、[claude.ai > Organization settings > API](https://claude.ai/admin-settings/api-access)で、`read:claude_tag`スコープ、`write:claude_tag`スコープ、またはその両方を持つAdmin APIキーを作成します。[Admin APIキーを作成する](https://platform.claude.com/docs/ja/manage-claude/admin-api-keys#create-a-key-for-a-claude-enterprise-organization)を参照してください。
* すべてのリクエストには、`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` (typescript: `client.beta.organization.claudeTag`; csharp, go: `client.Beta.Organization.ClaudeTag`; java: `client.beta().organization().claudeTag()`; php: `$client->beta->organization->claudeTag`)の下で公開し、[`ant` CLI](https://platform.claude.com/docs/ja/cli-sdks-libraries/cli/quickstart)は`ant beta:organization:claude-tag`の下で公開しています。これらは`anthropic-version`ヘッダーと`anthropic-beta`ヘッダーを自動的に送信します。このページの例では各SDKのデフォルトクライアントを使用しており、CLIと同様に`ANTHROPIC_API_KEY`環境変数からAdmin APIキーを読み取ります。curlの例も同じ変数からキーを読み取り、`x-api-key`ヘッダーで渡します。SDKまたはCLIが追加のページを自動的に取得する場合、`limit`は合計数ではなくページサイズを設定します（[ページネーション](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#pagination)を参照）。

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

## クイックスタート

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

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/slack_workspaces" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-workspaces list
  ```

  ```python Python
  client = anthropic.Anthropic()

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

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

  ```typescript TypeScript
  const client = new Anthropic();

  const workspaces = await client.beta.organization.claudeTag.slackWorkspaces.list();

  for await (const workspace of workspaces) {
    console.log(`${workspace.id}: ${workspace.slack.team_id}`);
  }
  ```

  ```csharp C#
  AnthropicClient client = new();

  var page = await client.Beta.Organization.ClaudeTag.SlackWorkspaces.List();

  await foreach (var workspace in page.Paginate())
  {
      Console.WriteLine($"{workspace.ID}: {workspace.Slack.TeamID}");
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  workspaces := client.Beta.Organization.ClaudeTag.SlackWorkspaces.ListAutoPaging(
  	context.Background(),
  	anthropic.BetaOrganizationClaudeTagSlackWorkspaceListParams{},
  )

  for workspaces.Next() {
  	workspace := workspaces.Current()
  	fmt.Printf("%s: %s\n", workspace.ID, workspace.Slack.TeamID)
  }
  if err := workspaces.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var workspaces = client.beta().organization().claudeTag().slackWorkspaces().list();

  for (var workspace : workspaces.autoPager()) {
      IO.println(workspace.id() + ": " + workspace.slack().teamId());
  }
  ```

  ```php PHP
  $client = new Client();

  $workspaces = $client->beta->organization->claudeTag->slackWorkspaces->list();

  // このページのみです。次のページを取得するには、page: $workspaces->nextPage を指定して list() を再度呼び出します。
  foreach ($workspaces->getItems() as $workspace) {
      echo "{$workspace->id}: {$workspace->slack->teamID}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.claude_tag.slack_workspaces.list

  page.auto_paging_each do |workspace|
    puts "#{workspace.id}: #{workspace.slack.team_id}"
  end
  ```
</CodeGroup>

```json 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`の設定はこのワークスペースで設定されていないため、ワークスペースはその設定を継承します。[保存された設定と有効な設定](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#stored-and-effective-settings)を参照してください。

## スコープ

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

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

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

## 主要な概念

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

| このAPI            | claude.aiとSlack                                                                                                                    |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Slackワークスペース     | Slackワークスペース（Slackではチームとも呼ばれます）。IDが`wrkspc_`で始まるClaude Platformのワークスペースとは無関係です。                                                    |
| Slackデフォルト       | **Default Slack access**                                                                                                           |
| 設定レベル            | [スコープ](https://claude.com/docs/claude-tag/admins/customize)：チャンネル、ワークスペース、またはSlackデフォルト                                            |
| Bundle           | [Access bundle](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle)                                                |
| `enabled`        | **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**、`allow`は**Full access** |

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

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

* **ワークスペース**は、組織オーナーがclaude.aiで接続したときにセットアップされます。ワークスペースをセットアップまたは削除するエンドポイントはありません。
* **チャンネル**は、claude.aiで、そのチャンネルでのClaudeの初回使用によって、または[チャンネルをセットアップする](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#set-up-a-channel)によってセットアップされます。
* **Slackデフォルト**は、誰かが初めてClaude Tagをセットアップしたときにセットアップされます。つまり、オーナーがSlackワークスペースを接続したとき、またはメンバーがSlackでClaudeにサインインするか初めて使用したときです。

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

### ID

チャンネルは、Slackに表示されるIDで識別できます。[Slack IDでチャンネルを検索する](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#find-a-channel-by-its-slack-ids)でその`id`を一度検索し、その後は`id`を保存して使用してください。

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

<Warning>
  `slack_channel_id`には2つの意味があります。**クエリパラメータ**ではSlack独自のID（`C05HJKL6MNP`）です。**リクエストボディまたはレスポンス**では、このAPIが発行する`id`（`slch_...`）です。ボディまたはレスポンス内のSlack独自のIDは、常に`slack`の下にあります。
</Warning>

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

`agent_id`（プレフィックス`cagt_`）は、[Compliance API](https://platform.claude.com/docs/ja/manage-claude/compliance-api)が同じチャンネルまたはワークスペースを指す名前であり、そこでClaudeが実行したセッションの所有者としても、[Activity Feedイベント](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#activity-feed-events)内でも使用されます。`id`と同じ期間存続します。

### 設定

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

| 設定               | 型       | 説明                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`        | boolean | Claudeがオンかどうか。                                                                                                                                                                                                                                                                                                                                                        |
| `instructions`   | string  | Claudeがすべてのセッションで読む、常時適用されるガイダンス。先頭と末尾の空白を除去した後で最大8,192文字。空白のみのテキストは設定をクリアします。                                                                                                                                                                                                                                                                                        |
| `model`          | string  | 新しいセッションの開始時に使用されるモデル。組織がClaude Tagで使用できる[モデルID](https://platform.claude.com/docs/ja/models/overview)です。最大128文字。                                                                                                                                                                                                                                                      |
| `environment_id` | string  | セッションが実行されるクラウド環境。プレフィックスは`env_`です。アクティブであり、組織に属している必要があります。                                                                                                                                                                                                                                                                                                          |
| `guest_policy`   | object  | Slackのゲストがチャンネルにいる間、チャンネル内の全員に対してClaudeがどう動作するか：`{"type": "allow"}`（Claudeが回答する）、`{"type": "restrict"}`（Claudeは回答しない）、または`{"type": "channel_only"}`（Claudeはチャンネル自体にアタッチされたBundleのみを使って回答する）。Slack Connectを通じて、またはEnterprise Gridをまたいで共有されたチャンネルでの意味については、[ゲストチャンネルを制限する](https://claude.com/docs/claude-tag/admins/restrict-access#restrict-guest-channels)を参照してください。 |

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

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

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

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

* **保存された**ビュー（[チャンネルを取得する](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#get-a-channel)、[ワークスペースを取得する](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#get-a-workspace)）には、チャンネルまたはワークスペース自体が保存しているものが含まれます。そこで設定されていない設定は`null`です。他の場所で管理している構成と比較するために使用します。
* **有効な**ビュー（[チャンネルの有効な設定を取得する](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#get-a-channels-effective-settings)、[ワークスペースの有効な設定を取得する](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#get-a-workspaces-effective-settings)）には、すべてのレベルを考慮した上で適用されるものが含まれ、`sources`は各値がどのレベルから来ているかを示します。監査のため、または特定のチャンネルでClaudeがなぜそのように動作するのかを調べるために使用します。

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

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

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

```json
{
  "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つの更新エンドポイントと[チャンネルをセットアップする](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#set-up-a-channel)は、同じルールに従う`settings`オブジェクトを受け取ります。

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

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

### 構成済みのレベル

人またはキーが設定レベルの設定を変更するか、Bundleをアタッチすると、その設定レベルは**構成済み**になります。その後は、すべての設定がクリアされ、すべてのBundleがデタッチされた後でも、構成済みのままです。Claudeの初回使用によって、または設定なしでこのAPIを通じてセットアップされたチャンネルは、最初の変更または最初のBundleまでは構成済みではありません。これは2つの場面で重要です。[削除](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#remove-a-channel)できるのは構成済みのチャンネルのみであり、新しい`id`が付与されることがあるのは構成済みでないチャンネルのみです（[読み取り専用モード](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#read-only-mode)を参照）。

### 読み取り専用モード

**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アプリをアンインストールすると引き続きそのワークスペースは切断されます。

モードがオフの間、すでにセットアップ済みで[構成済み](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#configured-levels)でないチャンネルをclaude.aiでセットアップすると、チャンネルのレコードが置き換えられることがあります。その場合、チャンネルには新しい`id`と`agent_id`が付与され、古い`id`は`404`を返します。構成済みのチャンネルの`id`は、チャンネルが削除されるまで存続します。

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

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

## ワークフローの例

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

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

1. [Slackデフォルト](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#update-the-slack-defaults)で`enabled`を`false`に設定し、すべての場所でClaudeをオフにします。
2. 承認システムがチャンネルを承認したら、`"settings": {"enabled": true}`を指定して[チャンネルをセットアップ](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#set-up-a-channel)します。このリクエストはSlack独自のIDを受け取り、チャンネルがすでにセットアップ済みかどうかにかかわらずチャンネルを返すため、繰り返しても安全です。
3. 同じ実行の中で、チーム向けに承認されたBundleを[アタッチ](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#attach-a-bundle)し、チャンネルの最初のセッションですでにツールが使えるようにします。

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

1. 各チャンネルについてSlackに表示されるIDをキーとして構成を管理し、それらのIDで[各チャンネルを検索](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#find-a-channel-by-its-slack-ids)します。
2. **保存された**ビューをリポジトリで宣言している内容と比較します。有効なビューには継承された値が混ざってしまいます。
3. 異なる設定のみを送信し、リポジトリで宣言しなくなった設定には`null`を送信します。
4. 誰も同じ設定を手動で変更しないように、組織オーナーに[読み取り専用モード](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#read-only-mode)をオンにするよう依頼します。

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

1. [ワークスペースを一覧表示](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#list-workspaces)し、次に[各ワークスペースのチャンネルを一覧表示](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#list-channels)します。
2. 各チャンネルの[有効な設定](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#get-a-channels-effective-settings)を読み取り、ポリシーで禁止されているもの、たとえば承認記録がないのに`enabled`が`true`になっているチャンネルや、`guest_policy`が`allow`になっているチャンネルにフラグを立てます。
3. [Bundleを一覧表示](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#list-bundles)し、次に[各Bundleのターゲット](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#list-a-bundles-targets)を一覧表示して、機密性の高いシステムへのアクセスがどこにアタッチされているかを確認します。

## Slackチャンネル

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

| フィールド        | 説明                                                                                                                                                                                        |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`       | `slack_channel`。                                                                                                                                                                          |
| `id`         | プレフィックスは`slch_`。[ID](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#ids)を参照してください。                                                                                      |
| `slack`      | Slack独自のID：チャンネルが属するワークスペースの`team_id`と、チャンネルの`channel_id`。                                                                                                                                |
| `settings`   | チャンネル自体が保存しているもの。常に存在し、5つの[設定](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#settings)すべてを含みます。設定されていないものは`null`です。                                                    |
| `agent_id`   | プレフィックスは`cagt_`。[ID](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#ids)を参照してください。                                                                                      |
| `created_at` | チャンネルがセットアップされた日時。                                                                                                                                                                        |
| `updated_at` | Claude 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`は省略可能で、[設定の変更](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#changing-settings)に従います。チャンネルがすでにセットアップ済みの場合、リクエストは既存のチャンネルを返し、`settings`を適用します。どちらの場合もレスポンスは`200`です。`write:claude_tag`スコープが必要です。

<CodeGroup>
  ```bash cURL
  curl -X POST "https://api.anthropic.com/v1/organizations/claude_tag/slack_channels" \
    -H "content-type: application/json" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28" \
    -d '{
      "slack": {"team_id": "T01ABCD2EFG", "channel_id": "C05HJKL6MNP"},
      "settings": {"instructions": "Answer in the language of the question."}
    }'
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-channels create \
    --slack '{team_id: T01ABCD2EFG, channel_id: C05HJKL6MNP}' \
    --settings '{instructions: "Answer in the language of the question."}'
  ```

  ```python Python
  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)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const channel = await client.beta.organization.claudeTag.slackChannels.create({
    slack: { team_id: "T01ABCD2EFG", channel_id: "C05HJKL6MNP" },
    settings: { instructions: "Answer in the language of the question." }
  });

  console.log(channel.id);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var channel = await client.Beta.Organization.ClaudeTag.SlackChannels.Create(
      new()
      {
          Slack = new() { TeamID = "T01ABCD2EFG", ChannelID = "C05HJKL6MNP" },
          Settings = new() { Instructions = "Answer in the language of the question." },
      }
  );

  Console.WriteLine(channel.ID);
  ```

  ```go Go
  client := anthropic.NewClient()

  channel, err := client.Beta.Organization.ClaudeTag.SlackChannels.New(
  	context.Background(),
  	anthropic.BetaOrganizationClaudeTagSlackChannelNewParams{
  		Slack: anthropic.BetaClaudeTagSlackChannelIdentifiersParam{
  			TeamID:    "T01ABCD2EFG",
  			ChannelID: "C05HJKL6MNP",
  		},
  		Settings: anthropic.BetaClaudeTagSettingsCreateParam{
  			Instructions: anthropic.String("Answer in the language of the question."),
  		},
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(channel.ID)
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.BetaClaudeTagSettingsCreate;
  import com.anthropic.models.beta.organization.claudetag.slackchannels.BetaClaudeTagSlackChannelIdentifiers;
  import com.anthropic.models.beta.organization.claudetag.slackchannels.SlackChannelCreateParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = SlackChannelCreateParams.builder()
          .slack(BetaClaudeTagSlackChannelIdentifiers.builder()
              .teamId("T01ABCD2EFG")
              .channelId("C05HJKL6MNP")
              .build())
          .settings(BetaClaudeTagSettingsCreate.builder()
              .instructions("Answer in the language of the question.")
              .build())
          .build();
      var channel = client.beta().organization().claudeTag().slackChannels().create(params);

      IO.println(channel.id());
  }
  ```

  ```php PHP
  $client = new Client();

  $channel = $client->beta->organization->claudeTag->slackChannels->create(
      slack: ['teamID' => 'T01ABCD2EFG', 'channelID' => 'C05HJKL6MNP'],
      settings: ['instructions' => 'Answer in the language of the question.'],
  );

  echo "{$channel->id}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  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."}
  )

  puts channel.id
  ```
</CodeGroup>

```json 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`が含まれます（[エラーレスポンス](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#error-responses)を参照）。`settings`を修正してその`id`への[更新](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#update-a-channel)で送信するか、セットアップリクエストを再度送信してください。

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

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

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/slack_channels?slack_team_id=T01ABCD2EFG" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-channels list --slack-team-id T01ABCD2EFG
  ```

  ```python Python
  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}")
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const channels = await client.beta.organization.claudeTag.slackChannels.list({
    slack_team_id: "T01ABCD2EFG"
  });

  for await (const channel of channels) {
    console.log(`${channel.id}: ${channel.slack.channel_id}`);
  }
  ```

  ```csharp C#
  AnthropicClient client = new();

  var page = await client.Beta.Organization.ClaudeTag.SlackChannels.List(
      new() { SlackTeamID = "T01ABCD2EFG" }
  );

  await foreach (var channel in page.Paginate())
  {
      Console.WriteLine($"{channel.ID}: {channel.Slack.ChannelID}");
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  channels := client.Beta.Organization.ClaudeTag.SlackChannels.ListAutoPaging(
  	context.Background(),
  	anthropic.BetaOrganizationClaudeTagSlackChannelListParams{
  		SlackTeamID: "T01ABCD2EFG",
  	},
  )

  for channels.Next() {
  	channel := channels.Current()
  	fmt.Printf("%s: %s\n", channel.ID, channel.Slack.ChannelID)
  }
  if err := channels.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.slackchannels.SlackChannelListParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = SlackChannelListParams.builder()
          .slackTeamId("T01ABCD2EFG")
          .build();
      var channels = client.beta().organization().claudeTag().slackChannels().list(params);

      for (var channel : channels.autoPager()) {
          IO.println(channel.id() + ": " + channel.slack().channelId());
      }
  }
  ```

  ```php PHP
  $client = new Client();

  $channels = $client->beta->organization->claudeTag->slackChannels->list(
      slackTeamID: 'T01ABCD2EFG',
  );

  // このページのみです。次のページを取得するには、page: $channels->nextPage を指定して list() を再度呼び出します。
  foreach ($channels->getItems() as $channel) {
      echo "{$channel->id}: {$channel->slack->channelID}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  page.auto_paging_each do |channel|
    puts "#{channel.id}: #{channel.slack.channel_id}"
  end
  ```
</CodeGroup>

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

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

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

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/slack_channels?slack_team_id=T01ABCD2EFG&slack_channel_id=C05HJKL6MNP" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-channels list \
    --slack-team-id T01ABCD2EFG \
    --slack-channel-id C05HJKL6MNP
  ```

  ```python Python
  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)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const page = await client.beta.organization.claudeTag.slackChannels.list({
    slack_team_id: "T01ABCD2EFG",
    slack_channel_id: "C05HJKL6MNP"
  });

  for (const channel of page.data) {
    console.log(channel.id);
  }
  ```

  ```csharp C#
  AnthropicClient client = new();

  var page = await client.Beta.Organization.ClaudeTag.SlackChannels.List(
      new() { SlackTeamID = "T01ABCD2EFG", SlackChannelID = "C05HJKL6MNP" }
  );

  foreach (var channel in page.Items)
  {
      Console.WriteLine(channel.ID);
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  page, err := client.Beta.Organization.ClaudeTag.SlackChannels.List(
  	context.Background(),
  	anthropic.BetaOrganizationClaudeTagSlackChannelListParams{
  		SlackTeamID:    "T01ABCD2EFG",
  		SlackChannelID: anthropic.String("C05HJKL6MNP"),
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  for _, channel := range page.Data {
  	fmt.Println(channel.ID)
  }
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.slackchannels.SlackChannelListParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = SlackChannelListParams.builder()
          .slackTeamId("T01ABCD2EFG")
          .slackChannelId("C05HJKL6MNP")
          .build();
      var page = client.beta().organization().claudeTag().slackChannels().list(params);

      for (var channel : page.items()) {
          IO.println(channel.id());
      }
  }
  ```

  ```php PHP
  $client = new Client();

  $channels = $client->beta->organization->claudeTag->slackChannels->list(
      slackTeamID: 'T01ABCD2EFG',
      slackChannelID: 'C05HJKL6MNP',
  );

  foreach ($channels->getItems() as $channel) {
      echo "{$channel->id}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  page.data&.each do |channel|
    puts channel.id
  end
  ```
</CodeGroup>

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

### チャンネルを取得する

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

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/slack_channels/slch_011CZkZmRt4vNq8sHbYw2KdX" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-channels retrieve \
    --id slch_011CZkZmRt4vNq8sHbYw2KdX
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(channel.settings.enabled)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const channel = await client.beta.organization.claudeTag.slackChannels.retrieve(
    "slch_011CZkZmRt4vNq8sHbYw2KdX"
  );

  console.log(channel.settings.enabled);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var channel = await client.Beta.Organization.ClaudeTag.SlackChannels.Retrieve(
      "slch_011CZkZmRt4vNq8sHbYw2KdX"
  );

  Console.WriteLine(channel.Settings.Enabled);
  ```

  ```go Go
  client := anthropic.NewClient()

  channel, err := client.Beta.Organization.ClaudeTag.SlackChannels.Get(
  	context.Background(),
  	"slch_011CZkZmRt4vNq8sHbYw2KdX",
  	anthropic.BetaOrganizationClaudeTagSlackChannelGetParams{},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(channel.Settings.Enabled)
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var channel = client.beta().organization().claudeTag().slackChannels()
      .retrieve("slch_011CZkZmRt4vNq8sHbYw2KdX");

  IO.println(channel.settings().enabled().orElse(null));
  ```

  ```php PHP
  $client = new Client();

  $channel = $client->beta->organization->claudeTag->slackChannels->retrieve(
      id: 'slch_011CZkZmRt4vNq8sHbYw2KdX',
  );

  echo json_encode($channel->settings->enabled) . "\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts channel.settings.enabled
  ```
</CodeGroup>

### チャンネルを更新する

`POST /v1/organizations/claude_tag/slack_channels/{id}`はチャンネルの設定を変更し、チャンネルオブジェクトを返します。`settings`は必須で、[設定の変更](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#changing-settings)に従います。`write:claude_tag`スコープが必要です。

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

<CodeGroup>
  ```bash cURL
  curl -X POST "https://api.anthropic.com/v1/organizations/claude_tag/slack_channels/slch_011CZkZmRt4vNq8sHbYw2KdX" \
    -H "content-type: application/json" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28" \
    -d '{"settings": {"enabled": false}}'
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-channels update \
    --id slch_011CZkZmRt4vNq8sHbYw2KdX \
    --settings '{enabled: false}'
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(channel.settings.enabled)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const channel = await client.beta.organization.claudeTag.slackChannels.update(
    "slch_011CZkZmRt4vNq8sHbYw2KdX",
    { settings: { enabled: false } }
  );

  console.log(channel.settings.enabled);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var channel = await client.Beta.Organization.ClaudeTag.SlackChannels.Update(
      "slch_011CZkZmRt4vNq8sHbYw2KdX",
      new() { Settings = new() { Enabled = false } }
  );

  Console.WriteLine(channel.Settings.Enabled);
  ```

  ```go Go
  client := anthropic.NewClient()

  channel, err := client.Beta.Organization.ClaudeTag.SlackChannels.Update(
  	context.Background(),
  	"slch_011CZkZmRt4vNq8sHbYw2KdX",
  	anthropic.BetaOrganizationClaudeTagSlackChannelUpdateParams{
  		Settings: anthropic.BetaClaudeTagSettingsUpdateParam{
  			Enabled: anthropic.Bool(false),
  		},
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(channel.Settings.Enabled)
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.BetaClaudeTagSettingsUpdate;
  import com.anthropic.models.beta.organization.claudetag.slackchannels.SlackChannelUpdateParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = SlackChannelUpdateParams.builder()
          .settings(BetaClaudeTagSettingsUpdate.builder()
              .enabled(false)
              .build())
          .build();
      var channel = client.beta().organization().claudeTag().slackChannels()
          .update("slch_011CZkZmRt4vNq8sHbYw2KdX", params);

      IO.println(channel.settings().enabled().orElse(null));
  }
  ```

  ```php PHP
  $client = new Client();

  $channel = $client->beta->organization->claudeTag->slackChannels->update(
      id: 'slch_011CZkZmRt4vNq8sHbYw2KdX',
      settings: ['enabled' => false],
  );

  echo json_encode($channel->settings->enabled) . "\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts channel.settings.enabled
  ```
</CodeGroup>

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

<CodeGroup>
  ```bash cURL
  curl -X POST "https://api.anthropic.com/v1/organizations/claude_tag/slack_channels/slch_011CZkZmRt4vNq8sHbYw2KdX" \
    -H "content-type: application/json" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28" \
    -d '{"settings": {"instructions": null}}'
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-channels update \
    --id slch_011CZkZmRt4vNq8sHbYw2KdX \
    --settings '{instructions: null}'
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(channel.settings.instructions)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const channel = await client.beta.organization.claudeTag.slackChannels.update(
    "slch_011CZkZmRt4vNq8sHbYw2KdX",
    { settings: { instructions: null } }
  );

  console.log(channel.settings.instructions);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var channel = await client.Beta.Organization.ClaudeTag.SlackChannels.Update(
      "slch_011CZkZmRt4vNq8sHbYw2KdX",
      new() { Settings = new() { Instructions = null } }
  );

  Console.WriteLine(channel.Settings.Instructions);
  ```

  ```go Go
  client := anthropic.NewClient()

  channel, err := client.Beta.Organization.ClaudeTag.SlackChannels.Update(
  	context.Background(),
  	"slch_011CZkZmRt4vNq8sHbYw2KdX",
  	anthropic.BetaOrganizationClaudeTagSlackChannelUpdateParams{
  		Settings: anthropic.BetaClaudeTagSettingsUpdateParam{
  			Instructions: param.Null[string](),
  		},
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(channel.Settings.Instructions)
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.BetaClaudeTagSettingsUpdate;
  import com.anthropic.models.beta.organization.claudetag.slackchannels.SlackChannelUpdateParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = SlackChannelUpdateParams.builder()
          .settings(BetaClaudeTagSettingsUpdate.builder()
              .instructions(Optional.empty())
              .build())
          .build();
      var channel = client.beta().organization().claudeTag().slackChannels()
          .update("slch_011CZkZmRt4vNq8sHbYw2KdX", params);

      IO.println(channel.settings().instructions().orElse(null));
  }
  ```

  ```php PHP
  use Anthropic\Beta\Organization\ClaudeTag\ClaudeTagSettingsUpdate;
  // ...

  $client = new Client();

  // update() は配列内の null を削除するため、null を送信するには settings オブジェクトを自分で構築します。
  $channel = $client->beta->organization->claudeTag->slackChannels->update(
      id: 'slch_011CZkZmRt4vNq8sHbYw2KdX',
      settings: (new ClaudeTagSettingsUpdate())->withInstructions(null),
  );

  echo "{$channel->settings->instructions}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts channel.settings.instructions
  ```
</CodeGroup>

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

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

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/slack_channels/slch_011CZkZmRt4vNq8sHbYw2KdX/effective" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-channels:effective retrieve \
    --id slch_011CZkZmRt4vNq8sHbYw2KdX
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(effective.settings.instructions)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const effective = await client.beta.organization.claudeTag.slackChannels.effective.retrieve(
    "slch_011CZkZmRt4vNq8sHbYw2KdX"
  );

  console.log(effective.settings.instructions);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var effective = await client.Beta.Organization.ClaudeTag.SlackChannels.Effective.Retrieve(
      "slch_011CZkZmRt4vNq8sHbYw2KdX"
  );

  Console.WriteLine(effective.Settings.Instructions);
  ```

  ```go Go
  client := anthropic.NewClient()

  effective, err := client.Beta.Organization.ClaudeTag.SlackChannels.Effective.Get(
  	context.Background(),
  	"slch_011CZkZmRt4vNq8sHbYw2KdX",
  	anthropic.BetaOrganizationClaudeTagSlackChannelEffectiveGetParams{},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(effective.Settings.Instructions)
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var effective = client.beta().organization().claudeTag().slackChannels().effective()
      .retrieve("slch_011CZkZmRt4vNq8sHbYw2KdX");

  IO.println(effective.settings().instructions().orElse(null));
  ```

  ```php PHP
  $client = new Client();

  $effective = $client->beta->organization->claudeTag->slackChannels->effective->retrieve(
      id: 'slch_011CZkZmRt4vNq8sHbYw2KdX',
  );

  echo "{$effective->settings->instructions}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts effective.settings.instructions
  ```
</CodeGroup>

### チャンネルを削除する

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

<Warning>
  削除は元に戻せません。Claude Tagがそのチャンネルについて保持している以下のものが削除されます。

  * 保存された設定とBundleターゲット
  * セッションとそのトランスクリプト（実行中のセッションを含む）
  * メモリ（Claudeがセッションをまたいでチャンネルについて保持している内容）
  * ルーティンと、そこから公開されたアーティファクト
</Warning>

<CodeGroup>
  ```bash cURL
  curl -X DELETE "https://api.anthropic.com/v1/organizations/claude_tag/slack_channels/slch_011CZkZmRt4vNq8sHbYw2KdX" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-channels delete \
    --id slch_011CZkZmRt4vNq8sHbYw2KdX
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(deleted_channel.id)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const deletedChannel = await client.beta.organization.claudeTag.slackChannels.delete(
    "slch_011CZkZmRt4vNq8sHbYw2KdX"
  );

  console.log(deletedChannel.id);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var deletedChannel = await client.Beta.Organization.ClaudeTag.SlackChannels.Delete(
      "slch_011CZkZmRt4vNq8sHbYw2KdX"
  );

  Console.WriteLine(deletedChannel.ID);
  ```

  ```go Go
  client := anthropic.NewClient()

  deletedChannel, err := client.Beta.Organization.ClaudeTag.SlackChannels.Delete(
  	context.Background(),
  	"slch_011CZkZmRt4vNq8sHbYw2KdX",
  	anthropic.BetaOrganizationClaudeTagSlackChannelDeleteParams{},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(deletedChannel.ID)
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var deletedChannel = client.beta().organization().claudeTag().slackChannels()
      .delete("slch_011CZkZmRt4vNq8sHbYw2KdX");

  IO.println(deletedChannel.id());
  ```

  ```php PHP
  $client = new Client();

  $deletedChannel = $client->beta->organization->claudeTag->slackChannels->delete(
      id: 'slch_011CZkZmRt4vNq8sHbYw2KdX',
  );

  echo "{$deletedChannel->id}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts deleted_channel.id
  ```
</CodeGroup>

```json Response
{
  "type": "slack_channel_deleted",
  "id": "slch_011CZkZmRt4vNq8sHbYw2KdX"
}
```

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

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

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

2種類のチャンネルはここでは削除できず、`400`を返します。1つは[構成済み](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#configured-levels)でないチャンネル（`error_code: "slack_channel_not_configured"`）、もう1つはランナープールやclaude.aiにしかない設定など、このAPIが管理しない構成を保持しているチャンネルです。後者は組織オーナーがclaude.aiで削除します。

## Slackワークスペース

ワークスペースオブジェクトは、1つのSlackワークスペースの保存されたビューです。[チャンネルオブジェクト](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#slack-channels)と同じフィールドを持ちますが、`type`が`slack_workspace`であること、`id`のプレフィックスが`slws_`であること、`slack`が`team_id`のみを保持することが異なります。完全な例は[クイックスタート](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#quick-start)のレスポンスに示されています。

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

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

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

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

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

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/slack_workspaces/slws_011CZkZnWa7xPc3uJfZe5LgT" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-workspaces retrieve \
    --id slws_011CZkZnWa7xPc3uJfZe5LgT
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(workspace.settings.instructions)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const workspace = await client.beta.organization.claudeTag.slackWorkspaces.retrieve(
    "slws_011CZkZnWa7xPc3uJfZe5LgT"
  );

  console.log(workspace.settings.instructions);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var workspace = await client.Beta.Organization.ClaudeTag.SlackWorkspaces.Retrieve(
      "slws_011CZkZnWa7xPc3uJfZe5LgT"
  );

  Console.WriteLine(workspace.Settings.Instructions);
  ```

  ```go Go
  client := anthropic.NewClient()

  workspace, err := client.Beta.Organization.ClaudeTag.SlackWorkspaces.Get(
  	context.Background(),
  	"slws_011CZkZnWa7xPc3uJfZe5LgT",
  	anthropic.BetaOrganizationClaudeTagSlackWorkspaceGetParams{},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(workspace.Settings.Instructions)
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var workspace = client.beta().organization().claudeTag().slackWorkspaces()
      .retrieve("slws_011CZkZnWa7xPc3uJfZe5LgT");

  IO.println(workspace.settings().instructions().orElse(null));
  ```

  ```php PHP
  $client = new Client();

  $workspace = $client->beta->organization->claudeTag->slackWorkspaces->retrieve(
      id: 'slws_011CZkZnWa7xPc3uJfZe5LgT',
  );

  echo "{$workspace->settings->instructions}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts workspace.settings.instructions
  ```
</CodeGroup>

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

`POST /v1/organizations/claude_tag/slack_workspaces/{id}`はワークスペースの設定を変更し、ワークスペースオブジェクトを返します。`settings`は必須で、[設定の変更](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#changing-settings)に従います。ここで設定した内容は、独自の値を設定していないワークスペース内のすべてのチャンネルに適用されます。`write:claude_tag`スコープが必要です。

<CodeGroup>
  ```bash cURL
  curl -X POST "https://api.anthropic.com/v1/organizations/claude_tag/slack_workspaces/slws_011CZkZnWa7xPc3uJfZe5LgT" \
    -H "content-type: application/json" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28" \
    -d '{"settings": {"guest_policy": {"type": "restrict"}}}'
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-workspaces update \
    --id slws_011CZkZnWa7xPc3uJfZe5LgT \
    --settings '{guest_policy: {type: restrict}}'
  ```

  ```python Python
  client = anthropic.Anthropic()

  workspace = client.beta.organization.claude_tag.slack_workspaces.update(
      "slws_011CZkZnWa7xPc3uJfZe5LgT",
      settings={"guest_policy": {"type": "restrict"}},
  )

  print(workspace.settings.guest_policy)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const workspace = await client.beta.organization.claudeTag.slackWorkspaces.update(
    "slws_011CZkZnWa7xPc3uJfZe5LgT",
    { settings: { guest_policy: { type: "restrict" } } }
  );

  console.log(workspace.settings.guest_policy?.type);
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.ClaudeTag;

  AnthropicClient client = new();

  var workspace = await client.Beta.Organization.ClaudeTag.SlackWorkspaces.Update(
      "slws_011CZkZnWa7xPc3uJfZe5LgT",
      new() { Settings = new() { GuestPolicy = new BetaClaudeTagGuestPolicyRestrict() } }
  );

  Console.WriteLine(workspace.Settings.GuestPolicy?.Type.GetString());
  ```

  ```go Go
  client := anthropic.NewClient()

  workspace, err := client.Beta.Organization.ClaudeTag.SlackWorkspaces.Update(
  	context.Background(),
  	"slws_011CZkZnWa7xPc3uJfZe5LgT",
  	anthropic.BetaOrganizationClaudeTagSlackWorkspaceUpdateParams{
  		Settings: anthropic.BetaClaudeTagSettingsUpdateParam{
  			GuestPolicy: anthropic.BetaClaudeTagGuestPolicyUnionParam{
  				OfRestrict: &anthropic.BetaClaudeTagGuestPolicyRestrictParam{},
  			},
  		},
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(workspace.Settings.GuestPolicy.Type)
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.BetaClaudeTagGuestPolicyRestrict;
  import com.anthropic.models.beta.organization.claudetag.BetaClaudeTagSettingsUpdate;
  import com.anthropic.models.beta.organization.claudetag.slackworkspaces.SlackWorkspaceUpdateParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = SlackWorkspaceUpdateParams.builder()
          .settings(BetaClaudeTagSettingsUpdate.builder()
              .guestPolicy(BetaClaudeTagGuestPolicyRestrict.builder().build())
              .build())
          .build();
      var workspace = client.beta().organization().claudeTag().slackWorkspaces()
          .update("slws_011CZkZnWa7xPc3uJfZe5LgT", params);

      IO.println(workspace.settings().guestPolicy().map(policy -> policy.type().asString()).orElse(null));
  }
  ```

  ```php PHP
  $client = new Client();

  $workspace = $client->beta->organization->claudeTag->slackWorkspaces->update(
      id: 'slws_011CZkZnWa7xPc3uJfZe5LgT',
      settings: ['guestPolicy' => ['type' => 'restrict']],
  );

  echo "{$workspace->settings->guestPolicy?->type}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  workspace_id = "slws_011CZkZnWa7xPc3uJfZe5LgT"
  workspace = client.beta.organization.claude_tag.slack_workspaces.update(
    workspace_id,
    settings: {guest_policy: {type: :restrict}}
  )

  puts workspace.settings.guest_policy&.type
  ```
</CodeGroup>

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

`GET /v1/organizations/claude_tag/slack_workspaces/{id}/effective`は、ワークスペースとSlackデフォルトから解決された、ワークスペースで適用される内容を、[保存された設定と有効な設定](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#stored-and-effective-settings)に示されている形式で、`type`を`slack_workspace_effective`に設定して返します。`read:claude_tag`スコープが必要です。

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/slack_workspaces/slws_011CZkZnWa7xPc3uJfZe5LgT/effective" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-workspaces:effective retrieve \
    --id slws_011CZkZnWa7xPc3uJfZe5LgT
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(effective.settings.enabled)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const effective = await client.beta.organization.claudeTag.slackWorkspaces.effective.retrieve(
    "slws_011CZkZnWa7xPc3uJfZe5LgT"
  );

  console.log(effective.settings.enabled);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var effective = await client.Beta.Organization.ClaudeTag.SlackWorkspaces.Effective.Retrieve(
      "slws_011CZkZnWa7xPc3uJfZe5LgT"
  );

  Console.WriteLine(effective.Settings.Enabled);
  ```

  ```go Go
  client := anthropic.NewClient()

  effective, err := client.Beta.Organization.ClaudeTag.SlackWorkspaces.Effective.Get(
  	context.Background(),
  	"slws_011CZkZnWa7xPc3uJfZe5LgT",
  	anthropic.BetaOrganizationClaudeTagSlackWorkspaceEffectiveGetParams{},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(effective.Settings.Enabled)
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var effective = client.beta().organization().claudeTag().slackWorkspaces().effective()
      .retrieve("slws_011CZkZnWa7xPc3uJfZe5LgT");

  IO.println(effective.settings().enabled().orElse(null));
  ```

  ```php PHP
  $client = new Client();

  $effective = $client->beta->organization->claudeTag->slackWorkspaces->effective->retrieve(
      id: 'slws_011CZkZnWa7xPc3uJfZe5LgT',
  );

  echo json_encode($effective->settings->enabled) . "\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts effective.settings.enabled
  ```
</CodeGroup>

## Slackデフォルト

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

| フィールド      | 説明                                                                                                                                                  |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`     | `slack_defaults`。                                                                                                                                   |
| `settings` | デフォルトが保存する内容。[チャンネル](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#slack-channels)と同様です。                                         |
| `agent_id` | プレフィックスは`cagt_`。Slackデフォルトが[セットアップ](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#set-up-channels-and-workspaces)されるまでは`null`です。 |

### Slackデフォルトを取得する

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

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/slack_defaults" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-defaults retrieve
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(defaults.settings.guest_policy)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const defaults = await client.beta.organization.claudeTag.slackDefaults.retrieve();

  console.log(defaults.settings.guest_policy?.type);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var defaults = await client.Beta.Organization.ClaudeTag.SlackDefaults.Retrieve();

  Console.WriteLine(defaults.Settings.GuestPolicy?.Type.GetString());
  ```

  ```go Go
  client := anthropic.NewClient()

  defaults, err := client.Beta.Organization.ClaudeTag.SlackDefaults.Get(
  	context.Background(),
  	anthropic.BetaOrganizationClaudeTagSlackDefaultGetParams{},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(defaults.Settings.GuestPolicy.Type)
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var defaults = client.beta().organization().claudeTag().slackDefaults().retrieve();

  IO.println(defaults.settings().guestPolicy().map(policy -> policy.type().asString()).orElse(null));
  ```

  ```php PHP
  $client = new Client();

  $defaults = $client->beta->organization->claudeTag->slackDefaults->retrieve();

  echo "{$defaults->settings->guestPolicy?->type}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts defaults.settings.guest_policy&.type
  ```
</CodeGroup>

### Slackデフォルトを更新する

`POST /v1/organizations/claude_tag/slack_defaults`はデフォルトを変更し、オブジェクトを返します。`settings`は必須で、[設定の変更](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#changing-settings)に従います。Slackデフォルトがセットアップされていない状態で値を設定するリクエストは`400`を返します。`write:claude_tag`スコープが必要です。

<CodeGroup>
  ```bash cURL
  curl -X POST "https://api.anthropic.com/v1/organizations/claude_tag/slack_defaults" \
    -H "content-type: application/json" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28" \
    -d '{
      "settings": {
        "instructions": "Keep replies under 200 words.",
        "environment_id": "env_011CZkZqDx2zRf5tLjCs7NpV"
      }
    }'
  ```

  ```bash CLI
  ant beta:organization:claude-tag:slack-defaults update \
    --settings '{instructions: "Keep replies under 200 words.", environment_id: env_011CZkZqDx2zRf5tLjCs7NpV}'
  ```

  ```python Python
  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)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const defaults = await client.beta.organization.claudeTag.slackDefaults.update({
    settings: {
      instructions: "Keep replies under 200 words.",
      environment_id: "env_011CZkZqDx2zRf5tLjCs7NpV"
    }
  });

  console.log(defaults.settings.environment_id);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var defaults = await client.Beta.Organization.ClaudeTag.SlackDefaults.Update(
      new()
      {
          Settings = new()
          {
              Instructions = "Keep replies under 200 words.",
              EnvironmentID = "env_011CZkZqDx2zRf5tLjCs7NpV",
          },
      }
  );

  Console.WriteLine(defaults.Settings.EnvironmentID);
  ```

  ```go Go
  client := anthropic.NewClient()

  defaults, err := client.Beta.Organization.ClaudeTag.SlackDefaults.Update(
  	context.Background(),
  	anthropic.BetaOrganizationClaudeTagSlackDefaultUpdateParams{
  		Settings: anthropic.BetaClaudeTagSettingsUpdateParam{
  			Instructions:  anthropic.String("Keep replies under 200 words."),
  			EnvironmentID: anthropic.String("env_011CZkZqDx2zRf5tLjCs7NpV"),
  		},
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(defaults.Settings.EnvironmentID)
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.BetaClaudeTagSettingsUpdate;
  import com.anthropic.models.beta.organization.claudetag.slackdefaults.SlackDefaultUpdateParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = SlackDefaultUpdateParams.builder()
          .settings(BetaClaudeTagSettingsUpdate.builder()
              .instructions("Keep replies under 200 words.")
              .environmentId("env_011CZkZqDx2zRf5tLjCs7NpV")
              .build())
          .build();
      var defaults = client.beta().organization().claudeTag().slackDefaults().update(params);

      IO.println(defaults.settings().environmentId().orElse(null));
  }
  ```

  ```php PHP
  $client = new Client();

  $defaults = $client->beta->organization->claudeTag->slackDefaults->update(
      settings: [
          'instructions' => 'Keep replies under 200 words.',
          'environmentID' => 'env_011CZkZqDx2zRf5tLjCs7NpV',
      ],
  );

  echo "{$defaults->settings->environmentID}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts defaults.settings.environment_id
  ```
</CodeGroup>

```json 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](https://claude.com/docs/claude-tag/admins/add-connections)と呼ばれているものです。これは、Claudeがチャンネルやワークスペースで使用できる、コネクタ、リポジトリ、認証情報などのアクセスの名前付きセットです。組織オーナーはclaude.aiでBundleを作成、編集、削除します。このAPIはBundleを一覧表示し、アタッチします。Bundleの名前と説明を返しますが、Bundleが付与する内容は決して返しません。

| フィールド                     | 説明                         |
| ------------------------- | -------------------------- |
| `type`                    | `bundle`。                  |
| `id`                      | プレフィックスは`capp_`。           |
| `display_name`            | Bundleの名前。                 |
| `description`             | Bundleの用途。ない場合は`null`。     |
| `created_at`、`updated_at` | Bundleが作成された日時と最後に変更された日時。 |

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

### Bundleを一覧表示する

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

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/bundles" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:bundles list
  ```

  ```python Python
  client = anthropic.Anthropic()

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

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

  ```typescript TypeScript
  const client = new Anthropic();

  const bundles = await client.beta.organization.claudeTag.bundles.list();

  for await (const bundle of bundles) {
    console.log(`${bundle.id}: ${bundle.display_name}`);
  }
  ```

  ```csharp C#
  AnthropicClient client = new();

  var page = await client.Beta.Organization.ClaudeTag.Bundles.List();

  await foreach (var bundle in page.Paginate())
  {
      Console.WriteLine($"{bundle.ID}: {bundle.DisplayName}");
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  bundles := client.Beta.Organization.ClaudeTag.Bundles.ListAutoPaging(
  	context.Background(),
  	anthropic.BetaOrganizationClaudeTagBundleListParams{},
  )

  for bundles.Next() {
  	bundle := bundles.Current()
  	fmt.Printf("%s: %s\n", bundle.ID, bundle.DisplayName)
  }
  if err := bundles.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var bundles = client.beta().organization().claudeTag().bundles().list();

  for (var bundle : bundles.autoPager()) {
      IO.println(bundle.id() + ": " + bundle.displayName());
  }
  ```

  ```php PHP
  $client = new Client();

  $bundles = $client->beta->organization->claudeTag->bundles->list();

  // このページのみです。次のページを取得するには、page: $bundles->nextPage を指定して list() を再度呼び出します。
  foreach ($bundles->getItems() as $bundle) {
      echo "{$bundle->id}: {$bundle->displayName}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  page = client.beta.organization.claude_tag.bundles.list

  page.auto_paging_each do |bundle|
    puts "#{bundle.id}: #{bundle.display_name}"
  end
  ```
</CodeGroup>

```json 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`スコープが必要です。

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/bundles/capp_011CZkZjLP1cWxj5EtMmdgbq" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:bundles retrieve \
    --bundle-id capp_011CZkZjLP1cWxj5EtMmdgbq
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(bundle.display_name)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const bundle = await client.beta.organization.claudeTag.bundles.retrieve(
    "capp_011CZkZjLP1cWxj5EtMmdgbq"
  );

  console.log(bundle.display_name);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var bundle = await client.Beta.Organization.ClaudeTag.Bundles.Retrieve(
      "capp_011CZkZjLP1cWxj5EtMmdgbq"
  );

  Console.WriteLine(bundle.DisplayName);
  ```

  ```go Go
  client := anthropic.NewClient()

  bundle, err := client.Beta.Organization.ClaudeTag.Bundles.Get(
  	context.Background(),
  	"capp_011CZkZjLP1cWxj5EtMmdgbq",
  	anthropic.BetaOrganizationClaudeTagBundleGetParams{},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(bundle.DisplayName)
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var bundle = client.beta().organization().claudeTag().bundles()
      .retrieve("capp_011CZkZjLP1cWxj5EtMmdgbq");

  IO.println(bundle.displayName());
  ```

  ```php PHP
  $client = new Client();

  $bundle = $client->beta->organization->claudeTag->bundles->retrieve(
      bundleID: 'capp_011CZkZjLP1cWxj5EtMmdgbq',
  );

  echo "{$bundle->displayName}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts bundle.display_name
  ```
</CodeGroup>

## Bundleターゲット

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

| フィールド                | 説明                                                                    |
| -------------------- | --------------------------------------------------------------------- |
| `type`               | `slack_channel`または`slack_workspace`。                                  |
| `id`                 | プレフィックスは`btgt_`。パス内の`{target_id}`であり、チャンネルやワークスペース自身の`id`になることはありません。 |
| `slack_channel_id`   | `slack_channel`ターゲットの場合：チャンネルの`id`（プレフィックスは`slch_`）。                  |
| `slack_workspace_id` | `slack_workspace`ターゲットの場合：ワークスペースの`id`（プレフィックスは`slws_`）。              |
| `created_at`         | Bundleがアタッチされた日時。                                                     |

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

チャンネルまたはワークスペースに最初のBundleがアタッチされると、それは[構成済み](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#configured-levels)になります。アタッチやデタッチによって保存された設定が変わることはありません。チャンネルまたはワークスペースで実行中のセッションには、アクセスが変更されたことが通知されます。

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

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

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

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/bundles/capp_011CZkZjLP1cWxj5EtMmdgbq/targets" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:bundles:targets list \
    --bundle-id capp_011CZkZjLP1cWxj5EtMmdgbq
  ```

  ```python Python
  client = anthropic.Anthropic()

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

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

  ```typescript TypeScript
  const client = new Anthropic();

  const targets = await client.beta.organization.claudeTag.bundles.targets.list(
    "capp_011CZkZjLP1cWxj5EtMmdgbq"
  );

  for await (const target of targets) {
    console.log(`${target.id}: ${target.type}`);
  }
  ```

  ```csharp C#
  AnthropicClient client = new();

  var page = await client.Beta.Organization.ClaudeTag.Bundles.Targets.List(
      "capp_011CZkZjLP1cWxj5EtMmdgbq"
  );

  await foreach (var target in page.Paginate())
  {
      Console.WriteLine($"{target.ID}: {target.Type.GetString()}");
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  targets := client.Beta.Organization.ClaudeTag.Bundles.Targets.ListAutoPaging(
  	context.Background(),
  	"capp_011CZkZjLP1cWxj5EtMmdgbq",
  	anthropic.BetaOrganizationClaudeTagBundleTargetListParams{},
  )

  for targets.Next() {
  	target := targets.Current()
  	fmt.Printf("%s: %s\n", target.ID, target.Type)
  }
  if err := targets.Err(); err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  var targets = client.beta().organization().claudeTag().bundles().targets()
      .list("capp_011CZkZjLP1cWxj5EtMmdgbq");

  for (var target : targets.autoPager()) {
      IO.println(target.id() + ": " + target.type().asString());
  }
  ```

  ```php PHP
  $client = new Client();

  $targets = $client->beta->organization->claudeTag->bundles->targets->list(
      bundleID: 'capp_011CZkZjLP1cWxj5EtMmdgbq',
  );

  // このページのみです。次のページを取得するには、page: $targets->nextPage を指定して list() を再度呼び出します。
  foreach ($targets->getItems() as $target) {
      echo "{$target->id}: {$target->type}\n";
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  page.auto_paging_each do |target|
    puts "#{target.id}: #{target.type}"
  end
  ```
</CodeGroup>

```json 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をアタッチします。

<CodeGroup>
  ```bash cURL
  curl -X POST "https://api.anthropic.com/v1/organizations/claude_tag/bundles/capp_011CZkZjLP1cWxj5EtMmdgbq/targets" \
    -H "content-type: application/json" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28" \
    -d '{"type": "slack_channel", "slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX"}'
  ```

  ```bash CLI
  ant beta:organization:claude-tag:bundles:targets create \
    --bundle-id capp_011CZkZjLP1cWxj5EtMmdgbq \
    --type slack_channel \
    --slack-channel-id slch_011CZkZmRt4vNq8sHbYw2KdX
  ```

  ```python Python
  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)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const target = await client.beta.organization.claudeTag.bundles.targets.create(
    "capp_011CZkZjLP1cWxj5EtMmdgbq",
    { type: "slack_channel", slack_channel_id: "slch_011CZkZmRt4vNq8sHbYw2KdX" }
  );

  console.log(target.id);
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.ClaudeTag.Bundles.Targets;

  AnthropicClient client = new();

  var target = await client.Beta.Organization.ClaudeTag.Bundles.Targets.Create(
      "capp_011CZkZjLP1cWxj5EtMmdgbq",
      new()
      {
          BetaClaudeTagBundleTargetCreate = new BetaClaudeTagSlackChannelBundleTargetCreate
          {
              SlackChannelID = "slch_011CZkZmRt4vNq8sHbYw2KdX",
          },
      }
  );

  Console.WriteLine(target.ID);
  ```

  ```go Go
  client := anthropic.NewClient()

  target, err := client.Beta.Organization.ClaudeTag.Bundles.Targets.New(
  	context.Background(),
  	"capp_011CZkZjLP1cWxj5EtMmdgbq",
  	anthropic.BetaOrganizationClaudeTagBundleTargetNewParams{
  		BetaClaudeTagBundleTargetCreate: anthropic.BetaClaudeTagBundleTargetCreateUnionParam{
  			OfSlackChannel: &anthropic.BetaClaudeTagSlackChannelBundleTargetCreateParam{
  				SlackChannelID: "slch_011CZkZmRt4vNq8sHbYw2KdX",
  			},
  		},
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(target.ID)
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.bundles.targets.TargetCreateParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = TargetCreateParams.builder()
          .slackChannelBetaClaudeTagBundleTargetCreate("slch_011CZkZmRt4vNq8sHbYw2KdX")
          .build();
      var target = client.beta().organization().claudeTag().bundles().targets()
          .create("capp_011CZkZjLP1cWxj5EtMmdgbq", params);

      IO.println(target.id());
  }
  ```

  ```php PHP
  $client = new Client();

  $target = $client->beta->organization->claudeTag->bundles->targets->create(
      bundleID: 'capp_011CZkZjLP1cWxj5EtMmdgbq',
      betaClaudeTagBundleTargetCreate: [
          'type' => 'slack_channel',
          'slackChannelID' => 'slch_011CZkZmRt4vNq8sHbYw2KdX',
      ],
  );

  echo "{$target->id}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  bundle_id = "capp_011CZkZjLP1cWxj5EtMmdgbq"
  target = client.beta.organization.claude_tag.bundles.targets.create(
    bundle_id,
    beta_claude_tag_bundle_target_create: {
      type: :slack_channel,
      slack_channel_id: "slch_011CZkZmRt4vNq8sHbYw2KdX"
    }
  )

  puts target.id
  ```
</CodeGroup>

```json Response
{
  "type": "slack_channel",
  "id": "btgt_011CZkZpBv9yQd6wKhAr8MnU",
  "slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
  "created_at": "2026-10-19T16:21:44Z"
}
```

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

<CodeGroup>
  ```bash cURL
  curl -X POST "https://api.anthropic.com/v1/organizations/claude_tag/bundles/capp_011CZkZjLP1cWxj5EtMmdgbq/targets" \
    -H "content-type: application/json" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28" \
    -d '{"type": "slack_workspace", "slack_workspace_id": "slws_011CZkZnWa7xPc3uJfZe5LgT"}'
  ```

  ```bash CLI
  ant beta:organization:claude-tag:bundles:targets create \
    --bundle-id capp_011CZkZjLP1cWxj5EtMmdgbq \
    --type slack_workspace \
    --slack-workspace-id slws_011CZkZnWa7xPc3uJfZe5LgT
  ```

  ```python Python
  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)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const target = await client.beta.organization.claudeTag.bundles.targets.create(
    "capp_011CZkZjLP1cWxj5EtMmdgbq",
    { type: "slack_workspace", slack_workspace_id: "slws_011CZkZnWa7xPc3uJfZe5LgT" }
  );

  console.log(target.id);
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Organization.ClaudeTag.Bundles.Targets;

  AnthropicClient client = new();

  var target = await client.Beta.Organization.ClaudeTag.Bundles.Targets.Create(
      "capp_011CZkZjLP1cWxj5EtMmdgbq",
      new()
      {
          BetaClaudeTagBundleTargetCreate = new BetaClaudeTagSlackWorkspaceBundleTargetCreate
          {
              SlackWorkspaceID = "slws_011CZkZnWa7xPc3uJfZe5LgT",
          },
      }
  );

  Console.WriteLine(target.ID);
  ```

  ```go Go
  client := anthropic.NewClient()

  target, err := client.Beta.Organization.ClaudeTag.Bundles.Targets.New(
  	context.Background(),
  	"capp_011CZkZjLP1cWxj5EtMmdgbq",
  	anthropic.BetaOrganizationClaudeTagBundleTargetNewParams{
  		BetaClaudeTagBundleTargetCreate: anthropic.BetaClaudeTagBundleTargetCreateUnionParam{
  			OfSlackWorkspace: &anthropic.BetaClaudeTagSlackWorkspaceBundleTargetCreateParam{
  				SlackWorkspaceID: "slws_011CZkZnWa7xPc3uJfZe5LgT",
  			},
  		},
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(target.ID)
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.bundles.targets.TargetCreateParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = TargetCreateParams.builder()
          .slackWorkspaceBetaClaudeTagBundleTargetCreate("slws_011CZkZnWa7xPc3uJfZe5LgT")
          .build();
      var target = client.beta().organization().claudeTag().bundles().targets()
          .create("capp_011CZkZjLP1cWxj5EtMmdgbq", params);

      IO.println(target.id());
  }
  ```

  ```php PHP
  $client = new Client();

  $target = $client->beta->organization->claudeTag->bundles->targets->create(
      bundleID: 'capp_011CZkZjLP1cWxj5EtMmdgbq',
      betaClaudeTagBundleTargetCreate: [
          'type' => 'slack_workspace',
          'slackWorkspaceID' => 'slws_011CZkZnWa7xPc3uJfZe5LgT',
      ],
  );

  echo "{$target->id}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  bundle_id = "capp_011CZkZjLP1cWxj5EtMmdgbq"
  target = client.beta.organization.claude_tag.bundles.targets.create(
    bundle_id,
    beta_claude_tag_bundle_target_create: {
      type: :slack_workspace,
      slack_workspace_id: "slws_011CZkZnWa7xPc3uJfZe5LgT"
    }
  )

  puts target.id
  ```
</CodeGroup>

チャンネルへのアタッチには、チャンネルに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`スコープが必要です。

<CodeGroup>
  ```bash cURL
  curl "https://api.anthropic.com/v1/organizations/claude_tag/bundles/capp_011CZkZjLP1cWxj5EtMmdgbq/targets/btgt_011CZkZpBv9yQd6wKhAr8MnU" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:bundles:targets retrieve \
    --bundle-id capp_011CZkZjLP1cWxj5EtMmdgbq \
    --target-id btgt_011CZkZpBv9yQd6wKhAr8MnU
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(target.type)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const target = await client.beta.organization.claudeTag.bundles.targets.retrieve(
    "btgt_011CZkZpBv9yQd6wKhAr8MnU",
    { bundle_id: "capp_011CZkZjLP1cWxj5EtMmdgbq" }
  );

  console.log(target.type);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var target = await client.Beta.Organization.ClaudeTag.Bundles.Targets.Retrieve(
      "btgt_011CZkZpBv9yQd6wKhAr8MnU",
      new() { BundleID = "capp_011CZkZjLP1cWxj5EtMmdgbq" }
  );

  Console.WriteLine(target.Type.GetString());
  ```

  ```go Go
  client := anthropic.NewClient()

  target, err := client.Beta.Organization.ClaudeTag.Bundles.Targets.Get(
  	context.Background(),
  	"btgt_011CZkZpBv9yQd6wKhAr8MnU",
  	anthropic.BetaOrganizationClaudeTagBundleTargetGetParams{
  		BundleID: "capp_011CZkZjLP1cWxj5EtMmdgbq",
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(target.Type)
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.bundles.targets.TargetRetrieveParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = TargetRetrieveParams.builder()
          .bundleId("capp_011CZkZjLP1cWxj5EtMmdgbq")
          .build();
      var target = client.beta().organization().claudeTag().bundles().targets()
          .retrieve("btgt_011CZkZpBv9yQd6wKhAr8MnU", params);

      IO.println(target.type().asString());
  }
  ```

  ```php PHP
  $client = new Client();

  $target = $client->beta->organization->claudeTag->bundles->targets->retrieve(
      targetID: 'btgt_011CZkZpBv9yQd6wKhAr8MnU',
      bundleID: 'capp_011CZkZjLP1cWxj5EtMmdgbq',
  );

  echo "{$target->type}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts target.type
  ```
</CodeGroup>

### Bundleをデタッチする

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

<CodeGroup>
  ```bash cURL
  curl -X DELETE "https://api.anthropic.com/v1/organizations/claude_tag/bundles/capp_011CZkZjLP1cWxj5EtMmdgbq/targets/btgt_011CZkZpBv9yQd6wKhAr8MnU" \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: claude-tag-2026-09-28"
  ```

  ```bash CLI
  ant beta:organization:claude-tag:bundles:targets delete \
    --bundle-id capp_011CZkZjLP1cWxj5EtMmdgbq \
    --target-id btgt_011CZkZpBv9yQd6wKhAr8MnU
  ```

  ```python Python
  client = anthropic.Anthropic()

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

  print(deleted_target.id)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const deletedTarget = await client.beta.organization.claudeTag.bundles.targets.delete(
    "btgt_011CZkZpBv9yQd6wKhAr8MnU",
    { bundle_id: "capp_011CZkZjLP1cWxj5EtMmdgbq" }
  );

  console.log(deletedTarget.id);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var deletedTarget = await client.Beta.Organization.ClaudeTag.Bundles.Targets.Delete(
      "btgt_011CZkZpBv9yQd6wKhAr8MnU",
      new() { BundleID = "capp_011CZkZjLP1cWxj5EtMmdgbq" }
  );

  Console.WriteLine(deletedTarget.ID);
  ```

  ```go Go
  client := anthropic.NewClient()

  deletedTarget, err := client.Beta.Organization.ClaudeTag.Bundles.Targets.Delete(
  	context.Background(),
  	"btgt_011CZkZpBv9yQd6wKhAr8MnU",
  	anthropic.BetaOrganizationClaudeTagBundleTargetDeleteParams{
  		BundleID: "capp_011CZkZjLP1cWxj5EtMmdgbq",
  	},
  )
  if err != nil {
  	log.Fatal(err)
  }

  fmt.Println(deletedTarget.ID)
  ```

  ```java Java
  import com.anthropic.models.beta.organization.claudetag.bundles.targets.TargetDeleteParams;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      var params = TargetDeleteParams.builder()
          .bundleId("capp_011CZkZjLP1cWxj5EtMmdgbq")
          .build();
      var deletedTarget = client.beta().organization().claudeTag().bundles().targets()
          .delete("btgt_011CZkZpBv9yQd6wKhAr8MnU", params);

      IO.println(deletedTarget.id());
  }
  ```

  ```php PHP
  $client = new Client();

  $deletedTarget = $client->beta->organization->claudeTag->bundles->targets->delete(
      targetID: 'btgt_011CZkZpBv9yQd6wKhAr8MnU',
      bundleID: 'capp_011CZkZjLP1cWxj5EtMmdgbq',
  );

  echo "{$deletedTarget->id}\n";
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

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

  puts deleted_target.id
  ```
</CodeGroup>

```json Response
{
  "type": "bundle_target_deleted",
  "id": "btgt_011CZkZpBv9yQd6wKhAr8MnU"
}
```

## 認識できない値

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

## レート制限

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

| 予算   | リクエスト               | バースト | 補充  |
| ---- | ------------------- | ---- | --- |
| 読み取り | すべての`GET`           | 120  | 毎秒2 |
| 変更   | すべての`POST`と`DELETE` | 60   | 毎秒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`になるまで繰り返してください。カーソル文字列は不透明なものとして扱い、解析、変更、または自分で構築しないでください。[チャンネルを一覧表示する](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#list-channels)は、`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`の新しい順に並べられ、他の順序は指定できません。

## エラーレスポンス

エラーレスポンスは、[エラー](https://platform.claude.com/docs/ja/api/errors)に記載されている標準の形式に従います。サポートに問い合わせる際は、レスポンスボディの`request_id`を伝えてください。

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

1つのステータスに、それぞれ異なる対処が必要な複数の原因がある場合、エラーには`error.details.error_code`も含まれます。

```json
{
  "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_required` | 403   | 認証情報が、組織全体に属するスコープ付きAdmin APIキーではありません。プライマリオーナーに発行を依頼してください。                                                                                                                                   |
| `api_key_scope_missing`                      | 403   | キーに、エンドポイントが必要とする`read:claude_tag`または`write:claude_tag`がありません。                                                                                                                                  |
| `workspace_selection_not_accepted`           | 400   | リクエストで`anthropic-workspace-id`ヘッダーが送信されました。削除してください。                                                                                                                                            |
| `claude_tag_writes_not_enabled`              | 403   | 組織はこのAPIを通じて読み取りはできますが、変更は有効になっていません。                                                                                                                                                           |
| `compliance_configuration_restricted`        | 403   | 組織に、ゼロデータ保持など、Claude Tagが新しいものを何も保存しないコンプライアンス構成があります。チャンネルのセットアップ、設定の更新（クリアする場合も含む）、Bundleのアタッチは拒否されます。Bundleのデタッチとチャンネルの削除は拒否されません。                                                           |
| `environment_not_found`                      | 404   | `environment_id`が、組織がここで使用できる環境を指していません。パス内の`id`は問題ありません。                                                                                                                                       |
| `environment_archived`                       | 400   | `environment_id`がアーカイブされた環境を指しています。                                                                                                                                                             |
| `slack_channel_set_up_settings_refused`      | 400   | リクエストによってチャンネルがセットアップされた後、`settings`が拒否されました。`details.slack_channel_id`がそのチャンネルです。[チャンネルをセットアップする](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#set-up-a-channel)を参照してください。 |
| `slack_channel_set_up_environment_not_found` | 404   | リクエストによってチャンネルがセットアップされた後、`environment_id`が見つかりませんでした。`details.slack_channel_id`がそのチャンネルです。                                                                                                     |
| `slack_channel_set_up_settings_conflict`     | 409   | リクエストによってチャンネルがセットアップされた後、別の変更が`settings`と重なりました。`settings`の内容は何も保存されていません。`details.slack_channel_id`がそのチャンネルです。                                                                                |
| `slack_channel_not_configured`               | 400   | チャンネルが[構成済み](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#configured-levels)でないため、削除できません。                                                                                  |

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

## Activity Feedイベント

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

| イベント                              | 発行されるタイミング                                                                                                                                      |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `ccr_agent_created`               | チャンネルがセットアップされたとき。                                                                                                                              |
| `ccr_agent_updated`               | チャンネル、ワークスペース、またはSlackデフォルトで設定が変更されたとき、またはレベルが[構成済み](https://platform.claude.com/docs/ja/manage-claude/claude-tag-api#configured-levels)になったとき。 |
| `ccr_agent_deleted`               | チャンネルが削除されたとき。そのBundleターゲットも一緒に削除され、それら自体のイベントは発行されません。                                                                                         |
| `ccr_agent_proxy_profile_bound`   | Bundleがアタッチされたとき。                                                                                                                               |
| `ccr_agent_proxy_profile_unbound` | Bundleがデタッチされたとき。                                                                                                                               |

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

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

| 設定               | `updated_fields`での名前     |
| ---------------- | ------------------------ |
| `enabled`        | `slackbot_version`       |
| `instructions`   | `system_prompt_addendum` |
| `model`          | `default_model`          |
| `environment_id` | `default_environment_id` |
| `guest_policy`   | `guest_policy`           |
| （レベルが構成済みになった）   | `is_virtual`             |

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

## 関連項目

<CardGroup cols={2}>
  <Card title="Admin APIキーを作成する" href="https://platform.claude.com/docs/ja/manage-claude/admin-api-keys">
    プライマリオーナーがスコープ付きキーを作成する場所です。
  </Card>

  <Card title="Claude Tagドキュメント" href="https://claude.com/docs/claude-tag/overview">
    Claude Tagとは何か、そのセットアップ方法、およびSlackで各設定が何を行うかについて説明します。
  </Card>

  <Card title="Compliance API Activity Feed" href="https://platform.claude.com/docs/ja/manage-claude/compliance-activity-feed">
    ここおよびclaude.aiで行われたすべての変更の監査証跡です。
  </Card>

  <Card title="Plugins API" href="https://platform.claude.com/docs/ja/manage-claude/plugins-api">
    Claude Enterprise組織内のプラグインを管理します。
  </Card>
</CardGroup>
