Claude Platform Docs
관리조직

Claude Tag API

Claude Enterprise 조직의 Slack용 Claude Tag를 자체 시스템에서 관리합니다. 채널, 워크스페이스, 조직의 Slack 기본값에 대한 설정을 읽고 변경하며, 어떤 설정이 적용되는지와 그 이유를 확인하고, Access bundle을 연결할 수 있습니다.

Claude Tag는 Slack에서 팀원처럼 일하는 Claude입니다. 누군가 채널에서 Claude를 멘션하면 Claude가 스레드에서 답변합니다. Claude Tag API를 사용하면 조직 소유자가 claude.ai > Organization settings > Claude Tag에서 직접 설정하는 Claude Tag 설정을 자체 시스템에서 읽고 변경할 수 있습니다. 승인 워크플로에서 채널별로 Claude를 켜거나, 구성을 버전 관리에 보관하거나, 모든 채널에 무엇이 적용되는지 감사하는 데 사용하세요.

Claude Tag는 claude.ai 제품입니다. 이 API는 Claude Enterprise 조직을 위해 Claude Tag를 관리하며, Claude Platform 워크스페이스, API 사용량 또는 Claude Console과는 관련이 없습니다.

엔드포인트

이 API는 5개 리소스에 걸쳐 18개의 엔드포인트를 제공합니다:

리소스엔드포인트
Slack 채널: 채널 설정, 워크스페이스의 채널 목록 조회 또는 Slack ID로 채널 찾기, 채널 읽기, 설정 변경, 적용되는 설정 확인, 채널 제거POST /v1/organizations/claude_tag/slack_channels
GET /v1/organizations/claude_tag/slack_channels
GET /v1/organizations/claude_tag/slack_channels/{id}
POST /v1/organizations/claude_tag/slack_channels/{id}
GET /v1/organizations/claude_tag/slack_channels/{id}/effective
DELETE /v1/organizations/claude_tag/slack_channels/{id}
Slack 워크스페이스: 연결된 워크스페이스 목록 조회 또는 Slack ID로 워크스페이스 찾기, 워크스페이스 읽기, 설정 변경, 적용되는 설정 확인GET /v1/organizations/claude_tag/slack_workspaces
GET /v1/organizations/claude_tag/slack_workspaces/{id}
POST /v1/organizations/claude_tag/slack_workspaces/{id}
GET /v1/organizations/claude_tag/slack_workspaces/{id}/effective
Slack 기본값: 모든 워크스페이스와 채널에 적용되는 설정 읽기 및 변경GET /v1/organizations/claude_tag/slack_defaults
POST /v1/organizations/claude_tag/slack_defaults
Bundle: 조직의 Access bundle 목록 조회, Bundle 읽기(읽기 전용)GET /v1/organizations/claude_tag/bundles
GET /v1/organizations/claude_tag/bundles/{bundle_id}
Bundle 대상: Bundle이 연결된 위치 목록 조회, 채널 또는 워크스페이스에 연결, 연결 하나 읽기, 분리GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets
POST /v1/organizations/claude_tag/bundles/{bundle_id}/targets
GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id}
DELETE /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id}

이번 릴리스는 Slack을 다룹니다. Slack 워크스페이스 연결 및 연결 해제, Access bundle 생성 및 편집, 지출 한도, 그리고 설정에 있는 다섯 가지를 제외한 모든 Claude Tag 설정은 claude.ai에서 관리합니다.

사전 요구 사항

  • 조직이 Claude Enterprise 플랜을 사용 중이어야 하며, Claude Tag가 설정되어 있고 하나 이상의 Slack 워크스페이스가 연결되어 있어야 합니다.
  • 기본 소유자가 claude.ai > Organization settings > API에서 read:claude_tag 범위, write:claude_tag 범위 또는 둘 다를 가진 Admin API 키를 생성합니다. Admin API 키 생성을 참조하세요.
  • 모든 요청에는 x-api-key, anthropic-version: 2023-06-01, anthropic-beta: claude-tag-2026-09-28의 세 가지 헤더가 포함됩니다.

Python, TypeScript, C#, Go, Java, PHP, Ruby SDK는 이 엔드포인트를 client.beta.organization.claude_tag 아래에, ant CLI는 ant beta:organization:claude-tag 아래에 제공하며, anthropic-version 및 anthropic-beta 헤더를 자동으로 전송합니다. 이 페이지의 예제는 각 SDK의 기본 클라이언트를 사용하며, 이 클라이언트는 CLI와 마찬가지로 ANTHROPIC_API_KEY 환경 변수에서 Admin API 키를 읽습니다. curl 예제는 같은 변수에서 키를 읽어 x-api-key 헤더로 전달합니다. SDK나 CLI가 추가 페이지를 자동으로 가져오는 경우, limit은 전체 개수가 아니라 페이지 크기를 설정합니다(페이지네이션 참조).

API 키는 조직에 속하며, 키를 생성한 사람이 조직을 떠난 후에도 계속 작동합니다. 키를 공유하거나 소스 제어에 체크인하지 마세요.

빠른 시작

조직이 Claude Tag에 연결한 Slack 워크스페이스 목록을 조회합니다:

client = anthropic.Anthropic()

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

# 필요에 따라 추가 페이지를 자동으로 가져옵니다.
for workspace in workspaces:
    print(f"{workspace.id}: {workspace.slack.team_id}")
Response
{
  "data": [
    {
      "type": "slack_workspace",
      "id": "slws_011CZkZnWa7xPc3uJfZe5LgT",
      "slack": {
        "team_id": "T01ABCD2EFG"
      },
      "settings": {
        "enabled": null,
        "instructions": "Answer in English unless asked otherwise.",
        "model": null,
        "environment_id": null,
        "guest_policy": null
      },
      "agent_id": "cagt_011CZkZrFy4aSg8uMkDt9PqW",
      "created_at": "2026-09-02T17:04:11Z",
      "updated_at": "2026-10-06T09:41:53Z"
    }
  ],
  "next_page": null
}

null인 설정은 이 워크스페이스에 설정되지 않은 것이므로 워크스페이스가 해당 설정을 상속합니다. 저장된 설정과 유효 설정을 참조하세요.

범위

범위부여 권한
read:claude_tag이 페이지의 모든 GET 엔드포인트.
write:claude_tag이 페이지의 모든 POST 및 DELETE 엔드포인트. 변경에 대한 응답에는 변경된 리소스가 포함되지만, 읽기 권한은 부여하지 않습니다.

하나의 키가 두 범위를 모두 가질 수 있습니다. 채널을 조회한 다음 변경하는 통합에는 두 범위가 모두 필요합니다. 다른 어떤 범위도 이 엔드포인트에 대한 액세스 권한을 부여하지 않습니다.

키는 조직 전체에 속해야 합니다. 조직은 항상 키가 속한 조직이며, 어떤 요청도 조직을 지정하지 않습니다. anthropic-workspace-id 헤더를 보내는 요청은 400을 반환합니다. 여기에 있는 어떤 것도 Claude Platform 워크스페이스에 속하지 않기 때문입니다.

주요 개념

이 페이지와 claude.ai에서의 명칭

이 APIclaude.ai 및 Slack
Slack 워크스페이스Slack 워크스페이스(Slack에서는 팀이라고도 부름). ID가 wrkspc_로 시작하는 Claude Platform 워크스페이스와는 관련이 없습니다.
Slack 기본값Default Slack access
설정 수준범위: 채널, 워크스페이스 또는 Slack 기본값
BundleAccess bundle
enabledEnable Claude Tag in Slack 스위치
instructionsCustom instructions
modelModel
environment_idEnvironment
guest_policyHow should Claude work in channels with guests: restrict는 Restrict, channel_only는 Channel only, allow는 Full access에 해당

설정된 채널과 워크스페이스

Claude Tag가 채널 또는 워크스페이스에 대한 설정 레코드를 보유하면 해당 채널 또는 워크스페이스는 설정된(set up) 상태입니다. 설정된 채널 또는 워크스페이스만 id를 가지며, 이들만 목록에 표시됩니다. 워크스페이스의 전체 채널 목록은 이 API가 아니라 Slack이 보유합니다.

  • 워크스페이스는 조직 소유자가 claude.ai에서 연결할 때 설정됩니다. 워크스페이스를 설정하거나 제거하는 엔드포인트는 없습니다.
  • 채널은 claude.ai에서, 채널에서 Claude를 처음 사용할 때, 또는 채널 설정을 통해 설정됩니다.
  • Slack 기본값은 누군가 처음으로 Claude Tag를 설정할 때 설정됩니다. 즉, 소유자가 Slack 워크스페이스를 연결하거나, 멤버가 Slack에서 Claude에 로그인하거나 처음 사용할 때입니다.

조직은 연결이 활성 상태인 동안 워크스페이스를 소유하며, 그 안의 채널도 소유합니다. 소유하지 않은 채널 또는 워크스페이스는 존재하지 않는 것과 동일한 404를 반환합니다.

ID

채널은 Slack이 보여주는 ID로 알 수 있습니다. Slack ID로 채널 찾기를 사용해 채널의 id를 한 번 조회한 다음, 그 id를 저장하여 사용하세요.

ID접두사나타나는 위치
Slack 채널 리소스slch_채널의 id; 요청 본문과 응답의 slack_channel_id
Slack 워크스페이스 리소스slws_워크스페이스의 id; 요청 본문과 응답의 slack_workspace_id
Bundlecapp_Bundle의 id; 경로의 {bundle_id}
Bundle 대상btgt_Bundle 대상의 id; 경로의 {target_id}
Slack 자체 팀 IDTslack.team_id; slack_team_id 쿼리 매개변수
Slack 자체 채널 IDC 또는 Gslack.channel_id; slack_channel_id 쿼리 매개변수

id는 채널 또는 워크스페이스가 설정되어 있는 동안 무엇을 변경하든 바뀌지 않으며, 읽기 전용 모드에 설명된 한 가지 예외만 있습니다. 제거된 후 다시 설정된 채널 또는 워크스페이스는 새 id를 가지며, 이전 id는 계속 404를 반환합니다. 저장된 id가 error_code 없이 404를 반환하면, 같은 키와 헤더로 Slack 기본값을 가져오세요. 이 요청은 채널이나 워크스페이스를 지정하지 않으므로, 404 이외의 상태는 해당 id가 사라졌음을 의미합니다. 이 경우 Slack ID로 채널 또는 워크스페이스를 다시 찾으세요. 여기서도 404가 반환되면 id에 대해서는 아무것도 알 수 없습니다. 저장된 id 값을 유지하고 오류 응답을 참조하세요.

agent_id(접두사 cagt_)는 Compliance API가 같은 채널 또는 워크스페이스를 지칭하는 방식으로, Claude가 그곳에서 실행한 세션의 소유자를 나타낼 때와 Activity Feed 이벤트에서 모두 사용됩니다. id가 유지되는 동안 함께 유지됩니다.

설정

각 설정 수준은 동일한 다섯 가지 설정을 저장하며, 모두 선택 사항입니다:

설정유형설명
enabledbooleanClaude가 켜져 있는지 여부.
instructionsstringClaude가 모든 세션에서 읽는 상시 지침. 앞뒤 공백을 제거한 후 최대 8,192자. 빈 텍스트는 설정을 지웁니다.
modelstring새 세션이 시작되는 모델: 조직이 Claude Tag에서 사용할 수 있는 모델 ID. 최대 128자.
environment_idstring세션이 실행되는 클라우드 환경으로, 접두사는 env_. 활성 상태여야 하며 조직에 속해야 합니다.
guest_policyobjectSlack 게스트가 채널에 있는 동안 채널의 모든 사람에 대해 Claude가 하는 동작: {"type": "allow"}(Claude가 답변), {"type": "restrict"}(Claude가 답변하지 않음), 또는 {"type": "channel_only"}(Claude가 채널 자체에 연결된 Bundle만으로 답변). Slack Connect를 통해 공유되거나 Enterprise Grid 전반에 걸친 채널에서의 의미는 게스트 채널 제한을 참조하세요.

model과 environment_id는 값을 쓸 때 확인되며 이후에는 다시 확인되지 않습니다. 나중에 모델이나 환경이 변경되더라도 두 뷰 모두 저장된 값을 계속 반환합니다.

조직 소유자가 claude.ai에서 설정 수준에 자체 호스팅 러너 풀을 지정한 경우, 해당 environment_id는 ccpool_로 시작하는 풀의 ID를 반환합니다. 이 API는 러너 풀을 설정할 수 없으며, 러너 풀을 저장하고 있는 설정 수준에서 environment_id를 변경하거나 지우는 요청에 대해 400을 반환합니다.

저장된 설정과 유효 설정

설정은 세 가지 수준에 존재합니다: 채널, 채널이 속한 워크스페이스, 그리고 조직의 Slack 기본값입니다. 각 수준은 해당 수준에 설정된 것만 저장합니다. API는 두 가지 뷰를 제공합니다:

각 설정은 개별적으로 결정됩니다:

설정규칙어떤 수준도 설정하지 않은 경우
enabled이를 설정한 가장 가까운 수준이 결정하므로, 워크스페이스가 false를 저장하더라도 채널의 true는 그 채널에서 Claude를 켭니다.true
instructions누적됩니다. 이를 설정한 모든 수준의 텍스트가 가장 넓은 수준부터 빈 줄을 사이에 두고 결합됩니다.null
model이를 설정한 가장 가까운 수준이 결정합니다.null: Claude는 제품의 기본 모델을 사용
environment_id이를 설정한 가장 가까운 수준이 결정합니다.null
guest_policy이를 설정한 가장 가까운 수준이 결정합니다.Slack 기본값이 설정된 조직에서는 restrict

예를 들어, 조직이 Slack 기본값에 지침을 저장하고, 한 워크스페이스에서 Claude를 끄고, 그 워크스페이스의 한 채널에 모델을 설정했다고 가정합니다. 채널의 유효 뷰는 세 값과 각 값의 출처를 보여줍니다:

{
  "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_channelslack_channel_id에 지정된 채널.
slack_workspaceslack_workspace_id에 지정된 워크스페이스.
slack_parent_channel코드 채널의 상위 채널로, slack_channel_id에 지정됩니다. 코드 채널은 다른 채널에서 시작된 채널입니다. 상위 채널이 같은 워크스페이스의 공개 채널인 동안에는 채널과 워크스페이스 사이에 위치하며 instructions와 environment_id만 제공합니다.
slack_defaults조직의 Slack 기본값으로, ID가 없음.
default어떤 수준도 값을 설정하지 않아 기본 제공 기본값이 적용됨.

sources.instructions는 텍스트를 제공하는 모든 수준을 가장 넓은 수준부터 나열한 목록이며, 아무 수준도 제공하지 않으면 비어 있습니다. 채널 자체의 워크스페이스가 아니라 Slack Enterprise Grid 연결을 통해 채널에 접근하는 조직에서는 출처의 ID가 null일 수 있습니다.

설정 변경

세 가지 업데이트 엔드포인트와 채널 설정은 동일한 규칙에 따라 settings 객체를 받습니다:

  • 생략한 설정은 변경되지 않습니다. {"settings": {"enabled": false}}는 Claude를 끄고 나머지 네 가지 설정은 그대로 둡니다.
  • null로 보낸 설정은 지워지므로, 해당 수준은 다시 그 설정을 상속합니다.
  • 전부 아니면 전무. 요청의 값 중 하나라도 거부되면 요청의 어떤 설정도 저장되지 않습니다.
  • 반복해도 안전합니다. 모든 변경은 첫 번째 동일한 요청이 남긴 상태로 리소스를 남기므로, 어떤 엔드포인트도 Idempotency-Key를 받지 않습니다. 아무것도 바꾸지 않는 요청은 아무것도 쓰지 않으며 Activity Feed 이벤트도 기록하지 않습니다.
  • 마지막 쓰기가 우선합니다. 어떤 요청도 전제 조건을 받지 않습니다. 각각 리소스를 읽은 다음 같은 설정을 변경하는 두 호출자는 서로를 덮어씁니다. 409는 요청이 실행되는 동안 다른 변경이 겹칠 때만 반환됩니다. 이 경우 요청의 어떤 내용도 저장되지 않았으므로, 리소스를 다시 읽고 여전히 필요하다면 변경을 다시 보내세요.

채널의 guest_policy를 변경하면 해당 채널에서 실행 중인 세션이 종료될 수 있습니다. 세션은 백그라운드에서 종료되며, 응답은 이를 기다리지 않습니다.

구성된 수준

사람이나 키가 설정 수준의 설정을 변경하거나 Bundle을 연결하면 해당 수준은 구성된(configured) 상태가 됩니다. 이후 모든 설정이 지워지고 모든 Bundle이 분리되더라도 계속 구성된 상태로 유지됩니다. Claude의 첫 사용으로 설정되었거나 이 API를 통해 아무 설정도 지정하지 않고 설정된 채널은 첫 변경이나 첫 Bundle 연결 전까지는 구성된 상태가 아닙니다. 이는 두 곳에서 중요합니다: 구성된 채널만 제거할 수 있으며, 구성되지 않은 채널만 새 id를 받을 수 있습니다(읽기 전용 모드 참조).

읽기 전용 모드

API / Terraform read-only mode는 조직 소유자가 claude.ai의 Claude Tag 설정에서 켜고 끄는 설정입니다. 이 이름은 claude.ai와 Slack을 기준으로 합니다. 이 모드가 켜져 있는 동안 claude.ai와 Slack은 이 API가 관리하는 항목에 대한 사람의 변경을 거부하므로, 키만 해당 변경을 할 수 있습니다. 이 모드가 이 API를 읽기 전용으로 만드는 것은 아닙니다. 이 페이지의 모든 엔드포인트는 모드가 켜져 있든 꺼져 있든 동일하게 응답하며, 어떤 엔드포인트도 이 모드를 읽거나 변경하지 않습니다.

모드가 꺼져 있는 동안에는 사람과 키가 같은 설정을 변경하고 같은 Bundle을 연결 및 분리하며, 각 변경은 저장된 내용을 대체합니다. 파이프라인이 유일한 변경 출처가 되어야 한다면 이 모드를 켜세요.

모드가 켜져 있는 동안 claude.ai와 Slack은 다음을 거부합니다:

  • 채널, 워크스페이스 또는 Slack 기본값에서 다섯 가지 설정 중 하나를 변경하는 것.
  • claude.ai에서 채널을 설정하거나, 채널을 제거하거나, 워크스페이스 연결을 해제하는 것.
  • 채널 또는 워크스페이스에 Bundle을 연결하거나, 분리하거나, 연결된 Bundle을 삭제하는 것.

어느 경우든 가능한 작업도 있습니다: 소유자는 여전히 새 워크스페이스를 연결하고, Bundle을 생성 및 편집하고, 이 API가 관리하지 않는 Claude Tag 설정을 변경할 수 있습니다. Claude의 첫 사용은 여전히 채널을 설정하고, Slack에서 채널을 삭제하면 여전히 채널이 제거되며, Claude의 Slack 앱을 제거하면 여전히 해당 워크스페이스의 연결이 해제됩니다.

모드가 꺼져 있는 동안, 이미 설정되어 있고 구성되지 않은 채널을 claude.ai에서 설정하면 채널의 레코드가 대체될 수 있습니다. 그러면 채널은 새 id와 agent_id를 가지며, 이전 id는 404를 반환합니다. 구성된 채널의 id는 채널이 제거될 때까지 유지됩니다.

그룹 다이렉트 메시지

Slack 그룹 다이렉트 메시지는 채널 형식의 ID를 가지므로, 그룹 다이렉트 메시지에서 Claude를 사용하면 채널처럼 설정됩니다. 즉, id를 가지고, 목록에 표시되며, 읽을 수 있습니다. 이 API를 통해 그룹 다이렉트 메시지를 설정하거나, 설정을 변경하거나, Bundle을 연결하면 각각 400을 반환합니다. Bundle 분리는 허용됩니다.

예제 워크플로

승인된 채널에서만 Claude 켜기

모든 멤버는 공개 채널에 Claude를 초대할 수 있습니다. 승인한 곳에서만 Claude를 켜 두려면:

  1. Slack 기본값에서 enabled를 false로 설정하여 모든 곳에서 Claude를 끄세요.
  2. 승인 시스템이 채널을 승인하면 "settings": {"enabled": true}로 채널을 설정하세요. 이 요청은 Slack 자체 ID를 받으며 채널이 이미 설정되어 있는지와 관계없이 채널을 반환하므로 반복해도 안전합니다.
  3. 같은 실행에서 팀이 승인받은 Bundle을 연결하여, 채널의 첫 세션부터 도구를 사용할 수 있도록 하세요.

구성을 버전 관리에 보관

  1. Slack이 각 채널에 대해 보여주는 ID를 기준으로 구성을 작성하고, 그 ID로 각 채널을 찾으세요.
  2. 저장된 뷰를 리포지토리에 선언된 내용과 비교하세요. 유효 뷰에는 상속된 값이 섞여 있습니다.
  3. 차이가 있는 설정만 보내고, 리포지토리에서 더 이상 선언하지 않는 설정은 null로 보내세요.
  4. 아무도 같은 설정을 직접 변경하지 않도록 조직 소유자에게 읽기 전용 모드를 켜 달라고 요청하세요.

모든 곳에 적용되는 내용 감사

  1. 워크스페이스 목록을 조회한 다음, 각 워크스페이스의 채널 목록을 조회하세요.
  2. 각 채널의 유효 설정을 읽고, 승인 기록 없이 enabled가 true인 채널이나 guest_policy가 allow인 채널처럼 정책이 금지하는 항목을 표시하세요.
  3. Bundle 목록을 조회한 다음 각 Bundle의 대상을 조회하여, 민감한 시스템에 대한 액세스 권한이 어디에 연결되어 있는지 확인하세요.

Slack 채널

채널 객체는 하나의 Slack 채널에 대한 저장된 뷰입니다:

필드설명
typeslack_channel.
idslch_ 접두사가 붙습니다. ID를 참조하세요.
slackSlack 자체 ID: 채널이 속한 워크스페이스의 team_id와 채널의 channel_id입니다.
settings채널 자체가 저장하는 내용입니다. 항상 존재하며 다섯 가지 설정을 모두 포함합니다. 설정되지 않은 항목은 null입니다.
agent_idcagt_ 접두사가 붙습니다. ID를 참조하세요.
created_at채널이 설정된 시점입니다.
updated_atClaude Tag의 채널 레코드가 마지막으로 변경된 시점입니다. 여기, claude.ai 또는 Slack에서 설정이 변경될 때마다 갱신되며, 여기의 어떤 응답에도 나타나지 않는 변경으로 인해 갱신될 수도 있습니다. 더 나중의 값은 설정이 변경되었다는 증거가 아니라 채널을 다시 읽어야 할 이유로 취급하세요. Bundle을 연결하거나 분리하는 것만으로는 갱신되지 않습니다.

slch_ 접두사가 없는 id는 400을 반환합니다. 접두사는 있지만 조직의 어떤 채널도 가리키지 않는 id는 404를 반환합니다.

채널 설정

POST /v1/organizations/claude_tag/slack_channels는 Slack 채널을 설정하고 반환합니다. slack.team_id와 slack.channel_id는 필수이며 Slack 자체 ID입니다. settings는 선택 사항이며 설정 변경을 따릅니다. 채널이 이미 설정되어 있으면 요청은 기존 채널을 반환하고 settings를 적용합니다. 두 경우 모두 응답은 200입니다. write:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

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

채널이 설정되기 전에 Claude의 Slack 앱은 채널이 워크스페이스에 있고, 보관되지 않았으며, 앱에 표시되는지 Slack에 확인합니다. 이 확인에 실패한 채널은 404를 반환하며, Claude의 Slack 앱이 설치되지 않은 워크스페이스도 마찬가지입니다.

채널 설정과 settings 적용은 두 단계입니다. 첫 번째 단계가 성공하고 두 번째 단계가 거부되면, 응답은 거부이며 채널은 아무것도 저장되지 않은 채 설정된 상태로 남습니다. 이 거부에는 slack_channel_set_up_으로 시작하는 error_code와 error.details.slack_channel_id에 새 채널의 id가 포함됩니다(오류 응답 참조). settings를 수정하여 해당 id에 대한 업데이트로 보내거나, 설정 요청을 다시 보내세요.

채널 목록 조회

GET /v1/organizations/claude_tag/slack_channels는 한 워크스페이스의 설정된 채널을 created_at 기준 최신순으로 나열합니다. slack_team_id는 필수이며 워크스페이스에 대한 Slack 자체 ID입니다. next_page가 여전히 설정되어 있는 동안에도 한 페이지에 limit보다 적은 채널이 있거나 채널이 없을 수 있으므로, next_page가 null이 될 때까지 계속 페이지를 요청하세요(페이지네이션 참조). read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

# 필요에 따라 추가 페이지를 자동으로 가져옵니다.
for channel in channels:
    print(f"{channel.id}: {channel.slack.channel_id}")

응답은 {"data": [...], "next_page": ...}이며, 각 항목은 채널 객체입니다. 조직이 소유하지 않은 워크스페이스를 가리키는 slack_team_id는 404를 반환합니다.

Slack ID로 채널 찾기

채널 하나를 조회하려면 채널에 대한 Slack 자체 ID인 slack_channel_id를 추가하세요. data에는 해당 채널이 담기며, 채널이 설정되지 않은 경우 비어 있습니다. 조회는 limit과 page를 무시하며, next_page는 null입니다. 이것이 채널의 id를 찾는 방법입니다.

client = anthropic.Anthropic()

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

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

slch_ ID를 slack_channel_id로 전달하면 400을 반환합니다.

채널 가져오기

GET /v1/organizations/claude_tag/slack_channels/{id}는 채널 객체를 반환합니다. read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

print(channel.settings.enabled)

채널 업데이트

POST /v1/organizations/claude_tag/slack_channels/{id}는 채널의 설정을 변경하고 채널 객체를 반환합니다. settings는 필수이며 설정 변경을 따릅니다. write:claude_tag 범위가 필요합니다.

한 채널에서 Claude를 끄고 나머지 설정은 그대로 둡니다:

client = anthropic.Anthropic()

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

print(channel.settings.enabled)

상속된 지침만 적용되도록 채널의 지침을 지웁니다:

client = anthropic.Anthropic()

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

print(channel.settings.instructions)

채널의 유효 설정 가져오기

GET /v1/organizations/claude_tag/slack_channels/{id}/effective는 채널에 적용되는 내용과 각 값의 출처를 반환합니다. 저장된 설정과 유효 설정에서 전체 응답을 확인할 수 있습니다. 이 뷰에서 enabled와 guest_policy는 절대 null이 아닙니다. 이 뷰는 읽을 때마다 결정되므로 created_at이나 updated_at이 없습니다. 어떤 수준을 읽을 수 없는 경우, 해당 수준 없이 결정하는 대신 요청이 503으로 실패합니다. read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

print(effective.settings.instructions)

채널 제거

DELETE /v1/organizations/claude_tag/slack_channels/{id}는 Claude Tag에서 채널을 제거합니다. 이는 조직 소유자가 claude.ai에서 수행하는 제거와 동일하며 효과도 같습니다. Slack의 채널이나 그 안의 메시지를 삭제, 보관 또는 변경하지 않습니다. write:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

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

요청이 반환되는 즉시 해당 id는 404를 반환하며, 나머지는 백그라운드에서 삭제됩니다. 제거를 반복하면 404가 반환됩니다.

채널을 제거해도 해당 채널에서 Claude가 중지되지 않습니다. Claude는 채널이 상속하는 설정에 따라 채널에 대한 메모리 없이 계속 답변하며, 다음 사용 시 새 id로 채널이 다시 설정될 수 있습니다.

  • 채널에서 Claude의 답변을 중지하려면 대신 해당 채널의 enabled를 false로 설정하세요.
  • 채널이 아무것도 저장하지 않으면서 세션과 메모리는 유지하도록 하려면 대신 각 설정을 지우고 각 Bundle을 분리하세요.

두 종류의 채널은 여기서 제거할 수 없으며 400을 반환합니다: 구성되지 않은 채널(error_code: "slack_channel_not_configured"), 그리고 러너 풀이나 claude.ai에만 있는 설정처럼 이 API가 관리하지 않는 구성을 보유한 채널입니다. 두 번째 종류는 조직 소유자가 claude.ai에서 제거합니다.

Slack 워크스페이스

워크스페이스 객체는 하나의 Slack 워크스페이스에 대한 저장된 뷰입니다. type이 slack_workspace이고, id에 slws_ 접두사가 붙으며, slack이 team_id만 보유한다는 점을 제외하면 채널 객체와 동일한 필드를 가집니다. 빠른 시작 응답에서 전체 객체를 확인할 수 있습니다.

slws_ 접두사가 없는 id는 400을 반환합니다. 접두사는 있지만 조직의 어떤 워크스페이스도 가리키지 않는 id는 404를 반환합니다.

워크스페이스 목록 조회

GET /v1/organizations/claude_tag/slack_workspaces는 조직이 소유한 설정된 워크스페이스를 created_at 기준 최신순으로 나열합니다. 빠른 시작에서 요청과 응답을 확인할 수 있습니다. Slack 자체 ID로 워크스페이스 하나를 찾으려면 slack_team_id를 추가하세요. data에는 해당 워크스페이스가 담기며, 워크스페이스가 설정되지 않은 경우 비어 있습니다. 조직이 소유하지 않은 워크스페이스는 404를 반환합니다. read:claude_tag 범위가 필요합니다.

워크스페이스 가져오기

GET /v1/organizations/claude_tag/slack_workspaces/{id}는 워크스페이스 객체를 반환합니다. read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

print(workspace.settings.instructions)

워크스페이스 업데이트

POST /v1/organizations/claude_tag/slack_workspaces/{id}는 워크스페이스의 설정을 변경하고 워크스페이스 객체를 반환합니다. settings는 필수이며 설정 변경을 따릅니다. 여기서 설정한 값은 워크스페이스에서 자체 값을 설정하지 않은 모든 채널에 적용됩니다. write:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

print(workspace.settings.guest_policy)

워크스페이스의 유효 설정 가져오기

GET /v1/organizations/claude_tag/slack_workspaces/{id}/effective는 워크스페이스와 Slack 기본값으로부터 결정된, 워크스페이스에 적용되는 내용을 저장된 설정과 유효 설정에 나온 형태로 반환하며, type은 slack_workspace_effective로 설정됩니다. read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

print(effective.settings.enabled)

Slack 기본값

조직에는 정확히 하나의 Slack 기본값 객체가 있습니다. 이 객체는 모든 워크스페이스와 채널에 적용되며, id가 없고, 더 넓은 수준이 없으므로 유효 뷰도 없습니다.

필드설명
typeslack_defaults.
settings채널에서와 같이 기본값이 저장하는 내용입니다.
agent_idcagt_ 접두사가 붙습니다. Slack 기본값이 설정될 때까지 null입니다.

Slack 기본값 가져오기

GET /v1/organizations/claude_tag/slack_defaults는 객체를 반환합니다. Slack 기본값이 설정되지 않은 조직은 모든 설정과 agent_id가 null인 200을 받습니다. read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

print(defaults.settings.guest_policy)

Slack 기본값 업데이트

POST /v1/organizations/claude_tag/slack_defaults는 기본값을 변경하고 객체를 반환합니다. settings는 필수이며 설정 변경을 따릅니다. Slack 기본값이 설정되지 않은 상태에서 값을 설정하는 요청은 400을 반환합니다. write:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

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

Bundle

Bundle은 claude.ai에서 Access bundle이라고 부르는 것으로, Claude가 채널이나 워크스페이스에서 사용할 수 있는 커넥터, 리포지토리, 자격 증명 등의 이름이 지정된 액세스 집합입니다. 조직 소유자는 claude.ai에서 Bundle을 생성, 편집, 삭제합니다. 이 API는 Bundle을 나열하고 연결합니다. Bundle의 이름과 설명을 반환하며, Bundle이 부여하는 내용은 절대 반환하지 않습니다.

필드설명
typebundle.
idcapp_ 접두사가 붙습니다.
display_nameBundle의 이름입니다.
descriptionBundle의 용도입니다. 없으면 null입니다.
created_at, updated_atBundle이 생성된 시점과 마지막으로 변경된 시점입니다.

capp_ 접두사가 없는 bundle_id는 400을 반환합니다. 접두사가 있지만 존재하지 않거나 다른 조직에 속한 경우, 요청에 다른 내용이 무엇이든 404를 반환합니다. Claude Tag가 자체적으로 관리하는 Bundle은 나열되지 않으며 404를 반환합니다.

Bundle 목록 조회

GET /v1/organizations/claude_tag/bundles는 조직의 Bundle을 created_at 기준 최신순으로 나열합니다. read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

# 필요에 따라 추가 페이지를 자동으로 가져옵니다.
for bundle in bundles:
    print(f"{bundle.id}: {bundle.display_name}")
Response
{
  "data": [
    {
      "type": "bundle",
      "id": "capp_011CZkZjLP1cWxj5EtMmdgbq",
      "display_name": "Support tools",
      "description": "Issue tracker and the support runbooks repository.",
      "created_at": "2026-09-12T08:15:30Z",
      "updated_at": "2026-09-30T13:02:47Z"
    }
  ],
  "next_page": null
}

Bundle 가져오기

GET /v1/organizations/claude_tag/bundles/{bundle_id}는 Bundle 객체를 반환합니다. read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

print(bundle.display_name)

Bundle 대상

Bundle 대상은 하나의 Bundle이 하나의 채널 또는 하나의 워크스페이스에 연결되었음을 나타내는 레코드입니다. 워크스페이스에 연결된 Bundle은 해당 워크스페이스와 그 안의 모든 채널에서 사용할 수 있습니다. 채널에 연결된 Bundle은 해당 채널에서만 사용할 수 있습니다.

필드설명
typeslack_channel 또는 slack_workspace.
idbtgt_ 접두사가 붙습니다. 경로의 {target_id}이며, 채널이나 워크스페이스 자체의 id는 절대 아닙니다.
slack_channel_idslack_channel 대상의 경우: slch_ 접두사가 붙은 채널의 id입니다.
slack_workspace_idslack_workspace 대상의 경우: slws_ 접두사가 붙은 워크스페이스의 id입니다.
created_atBundle이 연결된 시점입니다.

Bundle은 채널이나 워크스페이스에 최대 한 번만 연결되며, 같은 쌍은 분리 후 다시 연결하더라도 항상 같은 id를 가집니다. id는 불투명한 값입니다. 연결 요청의 응답이나 목록에서 가져오세요. Bundle 대상은 해당 Bundle의 id를 보유하지 않지만 경로에는 이것도 필요하므로, 두 값을 함께 보관하세요.

채널이나 워크스페이스에 처음 연결된 Bundle은 해당 채널이나 워크스페이스를 구성된 상태로 만듭니다. 연결이나 분리는 저장된 설정을 변경하지 않습니다. 채널이나 워크스페이스에서 실행 중인 세션에는 액세스가 변경되었다는 사실이 전달됩니다.

claude.ai가 온콜 설정의 일부로 연결하는 Bundle은 나열되고 읽을 수 있지만 여기서 연결하거나 분리할 수 없으며, 온콜 설정이 관리하는 채널이나 워크스페이스에는 어떤 것도 연결하거나 분리할 수 없습니다. 이러한 요청은 각각 400을 반환합니다.

Bundle의 대상 목록 조회

GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets는 Bundle이 연결된 채널과 워크스페이스를 created_at 기준 최신순으로 나열합니다. read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

# 필요에 따라 추가 페이지를 자동으로 가져옵니다.
for target in targets:
    print(f"{target.id}: {target.type}")
Response
{
  "data": [
    {
      "type": "slack_channel",
      "id": "btgt_011CZkZpBv9yQd6wKhAr8MnU",
      "slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
      "created_at": "2026-10-19T16:21:44Z"
    },
    {
      "type": "slack_workspace",
      "id": "btgt_011CZkZuMc3dVk7xQpGw9StZ",
      "slack_workspace_id": "slws_011CZkZnWa7xPc3uJfZe5LgT",
      "created_at": "2026-09-12T08:17:02Z"
    }
  ],
  "next_page": null
}

채널과 워크스페이스에 대한 연결만 나열됩니다. claude.ai에서 Default Slack access와 같은 다른 대상에 연결된 Bundle에는 그에 대한 Bundle 대상이 없으며, 여러 채널에 한 번에 Bundle을 적용하는 규칙도 마찬가지입니다. 따라서 Claude가 채널에서 사용할 수 있는 Bundle은 해당 채널을 지정하는 대상보다 많을 수 있습니다. 하나의 채널이나 워크스페이스에 연결된 Bundle을 나열하는 엔드포인트는 없습니다.

Bundle 연결

POST /v1/organizations/claude_tag/bundles/{bundle_id}/targets는 Bundle을 연결하고 Bundle 대상을 반환합니다. 본문에는 type과 그에 맞는 id를 지정합니다. 채널이나 워크스페이스는 이미 설정되어 있어야 합니다. 연결은 절대 채널을 설정하지 않습니다. 이미 연결된 쌍을 연결하면 기존 Bundle 대상과 함께 200이 반환됩니다. write:claude_tag 범위가 필요합니다.

채널에 Bundle을 연결합니다:

client = anthropic.Anthropic()

target = client.beta.organization.claude_tag.bundles.targets.create(
    "capp_011CZkZjLP1cWxj5EtMmdgbq",
    type="slack_channel",
    slack_channel_id="slch_011CZkZmRt4vNq8sHbYw2KdX",
)

print(target.id)
Response
{
  "type": "slack_channel",
  "id": "btgt_011CZkZpBv9yQd6wKhAr8MnU",
  "slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX",
  "created_at": "2026-10-19T16:21:44Z"
}

워크스페이스에 Bundle을 연결합니다:

client = anthropic.Anthropic()

target = client.beta.organization.claude_tag.bundles.targets.create(
    "capp_011CZkZjLP1cWxj5EtMmdgbq",
    type="slack_workspace",
    slack_workspace_id="slws_011CZkZnWa7xPc3uJfZe5LgT",
)

print(target.id)

채널에 대한 연결에는 적용 조건이 있습니다. 예를 들어 채널에 Slack 게스트가 없는 동안에만 적용되는 조건입니다. 조건은 claude.ai에서 설정되며 여기서는 반환되지 않습니다. 이 API를 통한 연결은 기본 조건을 사용하며, 이미 연결된 쌍을 연결하면 해당 조건은 변경되지 않습니다.

Bundle 대상 가져오기

GET /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id}는 Bundle 대상을 반환합니다. btgt_ 접두사가 없는 target_id는 400을 반환합니다. 다른 Bundle에 속하거나, 분리되었거나, 더 이상 설정되지 않은 채널이나 워크스페이스를 가리키는 경우 404를 반환합니다. read:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

print(target.type)

Bundle 분리

DELETE /v1/organizations/claude_tag/bundles/{bundle_id}/targets/{target_id}는 Bundle을 분리합니다. 분리를 반복하면 404가 반환됩니다. write:claude_tag 범위가 필요합니다.

client = anthropic.Anthropic()

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

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

인식할 수 없는 값

guest_policy.type, 출처의 type, Bundle 대상의 type, 그리고 오류 코드에는 언제든지 새로운 값이 추가될 수 있습니다. 인식할 수 없는 값은 실패로 처리하지 말고, 다른 알 수 없는 문자열과 마찬가지로 처리하세요.

속도 제한

요청은 조직 단위로 제한되며, 조직의 모든 키가 공유하고 조직의 다른 Admin API 제한과는 별개인 두 가지 예산이 있습니다. 각 예산은 버스트를 허용한 후 일정한 속도로 보충됩니다:

예산요청버스트보충
읽기모든 GET120초당 2회
변경모든 POST 및 DELETE60초당 1회

예산을 초과한 요청은 retry-after 헤더와 함께 429 Too Many Requests를 반환합니다. 응답에는 요청이 소비한 예산에 대한 anthropic-ratelimit-requests-limit, anthropic-ratelimit-requests-remaining, anthropic-ratelimit-requests-reset 헤더가 포함됩니다.

페이지네이션

목록 엔드포인트는 불투명 커서를 사용합니다. 첫 번째 요청은 최대 limit개의 행과 next_page 커서를 반환합니다. 다음 요청에서 커서를 변경하지 않고 page 매개변수로 전달하고, next_page가 null이 될 때까지 반복하세요. 커서 문자열은 불투명한 값으로 취급하세요. 직접 파싱하거나, 수정하거나, 생성하지 마세요. 채널 목록 조회는 next_page가 여전히 설정된 상태에서 limit보다 적은 채널이 있거나 채널이 없는 페이지를 반환할 수 있으므로, next_page가 null이 될 때까지 계속 페이지를 요청하세요. Python, TypeScript, C#, Go, Java, Ruby SDK의 목록 반복자와 CLI(--format raw 사용 시 제외)는 이를 자동으로 처리합니다. PHP와 curl에서는 각 페이지를 직접 요청하고 해당 next_page를 page로 전달하세요.

limit의 기본값은 20이며, 최솟값은 1, 최댓값은 100입니다. 모든 목록은 created_at 기준 최신순으로 정렬되며, 다른 정렬 순서는 지원하지 않습니다.

오류 응답

오류 응답은 오류에 설명된 표준 형식을 따릅니다. 지원팀에 문의할 때는 응답 본문의 request_id를 함께 알려 주세요.

상태의미
400잘못된 입력이거나, 해당 작업이 이 채널, 워크스페이스 또는 Bundle에 적용되지 않습니다(각 엔드포인트 섹션 참조).
401x-api-key 헤더가 없거나 키를 인식할 수 없습니다.
403키가 조직 수준의 범위가 지정된 키가 아니거나, 필요한 범위가 없거나, 조직이 이 변경을 수행할 수 없습니다.
404리소스를 찾을 수 없거나 조직의 리소스가 아닙니다. 요청에 anthropic-beta 값이 누락되었거나 조직에 API가 활성화되지 않은 경우에도 반환되어, 엔드포인트가 존재하지 않는 것처럼 보입니다.
409요청이 실행되는 동안 다른 무언가가 리소스를 변경하거나 제거했습니다. 아무것도 저장되지 않았습니다. 리소스를 다시 읽고 여전히 필요하다면 변경 사항을 다시 보내세요.
429속도 제한을 초과했습니다. 속도 제한을 참조하세요.
500내부 오류입니다.
503일시적인 오류입니다. 변경 요청의 경우 변경 사항이 저장되었는지 여부를 알려 주지 않습니다. 모든 변경은 반복해도 안전하므로 요청을 변경 없이 다시 보내세요.

하나의 상태 코드에 서로 다르게 처리해야 하는 여러 원인이 있는 경우, 오류에는 error.details.error_code도 포함됩니다:

{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "...",
    "details": {
      "error_code": "slack_channel_set_up_settings_refused",
      "slack_channel_id": "slch_011CZkZmRt4vNq8sHbYw2KdX"
    }
  },
  "request_id": "req_018EeWyXxfu5pfWkrYcMdjWG"
}
error_code상태의미 및 조치 방법
organization_level_scoped_api_key_required403자격 증명이 조직 전체에 속한 범위가 지정된 Admin API 키가 아닙니다. 기본 소유자에게 키를 요청하세요.
api_key_scope_missing403키에 엔드포인트가 요구하는 read:claude_tag 또는 write:claude_tag가 없습니다.
workspace_selection_not_accepted400요청에 anthropic-workspace-id 헤더가 포함되었습니다. 제거하세요.
claude_tag_writes_not_enabled403조직이 이 API를 통해 읽을 수는 있지만 변경은 활성화되지 않았습니다.
compliance_configuration_restricted403조직에 제로 데이터 보존과 같이 Claude Tag가 새로운 내용을 저장하지 않는 규정 준수 구성이 있습니다. 채널 설정, 설정 업데이트(지우는 경우 포함), Bundle 연결은 거부됩니다. Bundle 분리와 채널 제거는 거부되지 않습니다.
environment_not_found404environment_id가 조직이 여기서 사용할 수 있는 환경을 가리키지 않습니다. 경로의 id는 문제가 없습니다.
environment_archived400environment_id가 보관된 환경을 가리킵니다.
slack_channel_set_up_settings_refused400요청이 채널을 설정한 후 settings가 거부되었습니다. details.slack_channel_id가 해당 채널입니다. 채널 설정을 참조하세요.
slack_channel_set_up_environment_not_found404요청이 채널을 설정한 후 environment_id를 찾을 수 없었습니다. details.slack_channel_id가 해당 채널입니다.
slack_channel_set_up_settings_conflict409요청이 채널을 설정한 후 다른 변경이 settings와 겹쳤습니다. settings의 어떤 내용도 저장되지 않았습니다. details.slack_channel_id가 해당 채널입니다.
slack_channel_not_configured400채널이 구성되지 않았으므로 제거할 수 없습니다.

새로운 코드가 추가될 수 있습니다. 인식하지 못하는 코드는 해당 상태 코드와 동일하게 처리하세요. error_code가 없는 404에는 두 가지 원인 중 하나가 있습니다. 요청이 지정한 무언가(경로의 id, 또는 본문이나 쿼리의 Slack 채널이나 워크스페이스)를 찾을 수 없었거나, 요청에 anthropic-beta 값이 누락되었거나 조직에 API가 활성화되지 않아 모든 엔드포인트가 존재하지 않는 것처럼 보이는 경우입니다. 둘을 구분하려면 동일한 키와 헤더로 Slack 기본값을 가져오세요. 이 요청은 아무것도 지정하지 않으므로 두 번째 경우에만 404를 반환합니다.

Activity Feed 이벤트

이 API를 통한 모든 변경 사항은 조직의 Compliance API Activity Feed에 기록되며, apikey_ ID를 가진 api_actor로서 API 키에 귀속됩니다. 이 이벤트들은 claude.ai에서 동일한 변경을 수행했을 때 피드가 기록하는 이벤트와 같으므로, 변경이 어떤 방식으로 이루어졌든 하나의 쿼리로 찾을 수 있습니다.

이벤트발생 시점
ccr_agent_created채널이 설정될 때.
ccr_agent_updated채널, 워크스페이스 또는 Slack 기본값의 설정이 변경되거나, 특정 수준이 구성된 상태가 될 때.
ccr_agent_deleted채널이 제거될 때. 해당 채널의 Bundle 대상도 함께 제거되며 자체 이벤트는 발생하지 않습니다.
ccr_agent_proxy_profile_boundBundle이 연결될 때.
ccr_agent_proxy_profile_unboundBundle이 분리될 때.

이벤트는 채널 또는 워크스페이스를 id가 아닌 agent_id로 지칭합니다. 두 Bundle 이벤트는 profile_id에 Bundle을, scope_id에 채널 또는 워크스페이스를 지정합니다.

ccr_agent_updated 이벤트는 변경된 항목을 피드 고유의 이름으로 updated_fields에 나열합니다:

설정updated_fields에서의 이름
enabledslackbot_version
instructionssystem_prompt_addendum
modeldefault_model
environment_iddefault_environment_id
guest_policyguest_policy
(해당 수준이 구성된 상태가 됨)is_virtual

읽기, 아무것도 변경하지 않는 요청, 그리고 저장되기 전에 거부된 요청은 아무것도 기록하지 않습니다. 채널을 설정한 후 settings가 거부된 설정 요청은 ccr_agent_created를 기록합니다.

참고 항목

Was this page helpful?