Admin API
使用 Admin API 以编程方式管理组织成员、工作区、邀请和 API 密钥,可使用 Admin API 密钥、org:admin OAuth 令牌,或个人密钥或服务账户密钥进行身份验证。
Admin API 让您能够以编程方式管理组织的成员、工作区、邀请和 API 密钥,而无需在 Claude Console 中手动操作。
身份验证
使用三种凭证中的任意一种进行身份验证。Admin API 密钥涵盖大多数端点。服务账户、联合身份颁发者和联合规则端点仅接受 org:admin OAuth 令牌。个人密钥或服务账户密钥与 Admin API 密钥一样,通过 x-api-key 标头发送。以下示例分别使用 OAuth 令牌和 Admin API 密钥调用组织信息端点。
Python、TypeScript、C#、Go、Java、PHP 和 Ruby SDK 在 client.beta.organization 下提供 Admin API,ant CLI 则在 ant beta:organization 下提供。本页的示例使用默认客户端,它会从 ANTHROPIC_API_KEY 读取 Admin API 密钥,或从 ANTHROPIC_AUTH_TOKEN 读取 OAuth bearer 令牌。Python、TypeScript、C#、Go 和 Java 中的 SDK 列表方法返回一个按需获取更多页面的迭代器,因此 limit 设置的是页面大小,而非总数。PHP、Ruby 和 curl 示例返回单页结果。在 CLI 中,--limit 会限制成员、邀请、工作区、工作区成员和 API 密钥列表的结果数量。有关每个端点的参数和响应,请参阅 Admin API 参考。
OAuth bearer 令牌
使用 ant CLI 在具有 org:admin 作用域的专用配置文件下登录(请参阅管理员访问),然后导出 bearer 令牌。--profile admin 会将 org:admin 凭证存储在其自己的配置文件下,并将其设为 CLI 的活动配置文件。导出的变量适用于该 shell 中的每个 SDK 和 CLI 调用。请使用专门用于管理的 shell,完成后取消设置该变量,并使用 ant profile activate default 将 CLI 切换回去:
ant auth login --profile admin --scope "org:admin"
export ANTHROPIC_AUTH_TOKEN=$(ant auth print-credentials --profile admin --access-token)交互式令牌的有效期很短。如果请求开始返回 401,请重新运行 export 命令以刷新令牌。
SDK 和 ant CLI 会自动读取 ANTHROPIC_AUTH_TOKEN。请在同一 shell 中保持 ANTHROPIC_API_KEY 未设置,以便它们发送 bearer 令牌。自动化工作负载可跳过登录:它们通过工作负载身份联合进行身份验证,SDK 和 CLI 会根据联合环境变量执行令牌交换。请参阅引导工作负载以管理 WIF。
使用导出的令牌调用 Admin API:
client = anthropic.Anthropic()
organization = client.beta.organization.retrieve()
print(f"id: {organization.id}")
print(f"name: {organization.name}")org:admin 令牌授予对整个组织的访问权限,无论底层配置文件或联合规则绑定到哪个工作区。
对于 CI 和其他非交互式工作负载,请使用工作负载身份联合(Workload Identity Federation)签发令牌,而不是交互式登录。请参阅使用 Admin API 管理 WIF。
Admin API 密钥
要为您的组织类型创建 Admin API 密钥,请参阅创建 Admin API 密钥。
client = anthropic.Anthropic()
organization = client.beta.organization.retrieve()
print(f"id: {organization.id}")
print(f"name: {organization.name}")Admin API 的工作原理
使用身份验证中的任意凭证进行身份验证,然后管理以下资源:
- 组织成员及其角色
- 组织邀请
- 工作区及其成员
- API 密钥
- 服务账户、联合身份颁发者和联合规则(仅限
org:adminOAuth 令牌)
常见用途包括自动化入职和离职流程、管理工作区访问权限以及审计 API 密钥。
组织角色和权限
共有五种组织级角色。详情请参阅 API Console 角色和权限。
| 角色 | 权限 |
|---|---|
| user | 可以使用 playground |
| claude_code_user | 可以使用 playground 和 Claude Code |
| developer | 可以使用 playground 并管理 API 密钥 |
| billing | 可以使用 playground 并管理账单详情 |
| admin | 可以执行上述所有操作,并可管理用户 |
组织 owner 和 primary owner 拥有所有 admin 权限,并且还可以管理 admin。本页中所有对 admin 角色的引用同样适用于 owner 和 primary owner。
关键概念
组织成员
列出组织成员、更新其角色以及移除成员。
列出您组织的成员:
client = anthropic.Anthropic()
users = client.beta.organization.users.list(limit=10)
# 根据需要自动获取更多页面。
for user in users:
print(f"{user.id}: {user.email} ({user.role})")更新成员的角色:
client = anthropic.Anthropic()
user = client.beta.organization.users.update(
"user_01XyDMpzjS89pFZXqSFUBDr6", role="developer"
)
print(f"id: {user.id}")
print(f"role: {user.role}")从组织中移除成员:
client = anthropic.Anthropic()
removed_user = client.beta.organization.users.remove("user_01XyDMpzjS89pFZXqSFUBDr6")
print(f"id: {removed_user.id}")组织邀请
邀请用户加入您的组织并管理待处理的邀请。
邀请用户加入您的组织:
client = anthropic.Anthropic()
invite = client.beta.organization.invites.create(
email="user@example.com", role="developer"
)
print(f"id: {invite.id}")
print(f"email: {invite.email}")
print(f"status: {invite.status}")
print(f"expires_at: {invite.expires_at}")列出待处理的邀请:
client = anthropic.Anthropic()
invites = client.beta.organization.invites.list(limit=10)
# 根据需要自动获取更多页面。
for invite in invites:
print(f"{invite.id}: {invite.email} ({invite.status})")删除邀请:
client = anthropic.Anthropic()
deleted_invite = client.beta.organization.invites.delete(
"invite_015gWxHNr6h6TdRPZTmuCGnn"
)
print(f"id: {deleted_invite.id}")工作区
有关 Console 和 API 示例,请参阅工作区。
工作区成员
向工作区添加成员:
client = anthropic.Anthropic()
member = client.beta.organization.workspaces.members.add(
"wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
user_id="user_01XyDMpzjS89pFZXqSFUBDr6",
workspace_role="workspace_developer",
)
print(f"user_id: {member.user_id}")
print(f"workspace_role: {member.workspace_role}")列出工作区的成员:
client = anthropic.Anthropic()
members = client.beta.organization.workspaces.members.list(
"wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ", limit=10
)
# 根据需要自动获取更多页面。
for member in members:
print(f"{member.user_id}: {member.workspace_role}")更新工作区成员的角色:
client = anthropic.Anthropic()
member = client.beta.organization.workspaces.members.update(
"user_01XyDMpzjS89pFZXqSFUBDr6",
workspace_id="wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
workspace_role="workspace_admin",
)
print(f"user_id: {member.user_id}")
print(f"workspace_role: {member.workspace_role}")从工作区中移除成员:
client = anthropic.Anthropic()
removed_member = client.beta.organization.workspaces.members.remove(
"user_01XyDMpzjS89pFZXqSFUBDr6", workspace_id="wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
)
print(f"user_id: {removed_member.user_id}")API 密钥
监控和管理 API 密钥。响应中的每个密钥都包含其 expires_at 时间戳(对于没有过期时间的密钥为 null)和 principal,即该密钥所代表的身份(请参阅密钥类型)。对于个人密钥,principal 为 {"type": "user_actor", "user_id": "user_..."};对于服务账户密钥,为 {"type": "service_account_actor", "service_account_id": "svac_..."};对于工作区密钥,为 null。每个密钥还有一个 scope 对象:对于绑定到单个工作区的密钥为 {"type": "workspace", "workspace_id": "wrkspc_..."},对于可在账户有权访问的任何工作区中使用的密钥为 {"type": "organization"}。顶层 workspace_id 字段已弃用,对于绑定到默认工作区的密钥和没有工作区作用域的密钥均为 null;请使用 scope 来区分它们。使用默认工作区的 ID 按 workspace_id 筛选列表时,仅返回绑定到默认工作区的密钥;没有工作区作用域的密钥不会在任何 workspace_id 筛选条件下返回。
列出工作区中的活动 API 密钥:
client = anthropic.Anthropic()
api_keys = client.beta.organization.api_keys.list(
limit=10, status="active", workspace_id="wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
)
# 根据需要自动获取更多页面。
for api_key in api_keys:
print(f"{api_key.id}: {api_key.name} ({api_key.status})")重命名或停用 API 密钥:
client = anthropic.Anthropic()
api_key = client.beta.organization.api_keys.update(
"apikey_01Rj2N8SVvo6BePZj99NhmiT", status="inactive", name="New Key Name"
)
print(f"id: {api_key.id}")
print(f"name: {api_key.name}")
print(f"status: {api_key.status}")服务账户
创建和管理服务账户(svac_...),即服务账户密钥和工作负载身份联合令牌所代表的非人类身份。这些端点与联合身份颁发者和联合规则端点一样,需要 org:admin OAuth 令牌。请参阅使用 Admin API 管理 WIF。
联合身份颁发者
注册其令牌可为您的组织声明工作负载身份的 OIDC 身份提供商(fdis_...)。请参阅使用 Admin API 管理 WIF。
联合规则
管理将颁发者令牌映射到服务账户和作用域的规则(fdrl_...)。请参阅使用 Admin API 管理 WIF。
访问组织信息
/v1/organizations/me 端点返回您的凭证所属的组织:
client = anthropic.Anthropic()
organization = client.beta.organization.retrieve()
print(f"id: {organization.id}")
print(f"name: {organization.name}"){
"id": "12345678-1234-5678-1234-567812345678",
"type": "organization",
"name": "Organization Name"
}有关参数详情和响应架构,请参阅组织信息 API 参考。
用量和成本报告
使用用量和成本 API 跟踪您组织的用量和成本。
Claude Code 分析
使用 Claude Code 分析 API 监控开发者生产力和 Claude Code 采用情况。
速率限制
使用速率限制 API 读取为您的组织及其工作区配置的速率限制。
合规 API
使用合规 API 检索您组织的审计和活动数据。Admin API 密钥只能读取活动源(Activity Feed)。如需完整访问权限,请参阅设置合规 API。
最佳实践
- 为工作区和 API 密钥使用有意义的名称和描述
- 处理失败操作产生的错误
- 定期审计成员角色和权限
- 清理未使用的工作区和已过期的邀请
- 监控 API 密钥使用情况,审计每个密钥的
expires_at,并定期轮换密钥
常见问题
Admin API 接受 Admin API 密钥(以 sk-ant-admin 开头)、具有 org:admin 作用域的 OAuth bearer 令牌,或未限定于特定工作区的个人密钥或服务账户密钥。只有具有 admin 角色的组织成员才能配置 Admin API 密钥,只有具有 admin、owner 或 primary owner 角色的成员才能获取 org:admin 令牌。个人密钥或服务账户密钥拥有与所关联账户相同的权限。请参阅身份验证。
不可以。您需要在 Claude Console 中创建 API 密钥。Admin API 只能读取、重命名和更改现有密钥的状态。
具体行为取决于密钥类型。
个人密钥在其用户被从组织中移除时停止工作。服务账户密钥在其服务账户被归档时停止工作,但即使创建它们的用户被移除,它们仍会继续工作。工作区 API 密钥会继续工作。在 Claude Code 工作区中,每个密钥都绑定到创建它的成员,并在该成员被移除时停止工作。
不可以。API 无法移除具有 admin 角色的成员。
邀请在 21 天后过期。过期期限不可配置。
有关工作区的具体问题,请参阅工作区常见问题。
Was this page helpful?