Claude Platform Docs

List Workspaces For Service Account

organization.service_accounts.workspaces.list(service_account_id, **kwargs) -> SyncPageCursor[ServiceAccountWorkspaceMember]
GET/v1/organizations/service_accounts/{service_account_id}/workspaces

Requires an OAuth access token with the org:admin scope, from ant auth login --scope org:admin or a workload identity federation rule; Admin API keys are not accepted. See Manage WIF with the Admin API.

List the workspaces a service account is a member of.

Each entry includes the service account's workspace_role in that workspace. Use limit and the next_page cursor to paginate. When the service account has no explicit default-workspace membership, the implicit (implicit: true) membership is returned as the first entry on the first page; with limit=1 the first page may return up to 2 entries (the implicit entry plus one explicit membership) so a pagination cursor can be derived. Memberships are returned only while the service account is active. Without a page cursor, an archived service account returns an empty list. A page cursor that does not match an active membership returns a 400 invalid-request error. A cursor stops matching when the membership is removed, the workspace is deleted, or the service account is archived. Restart pagination from the first page to recover.

Parameters
service_account_id: str⁠Path parameter

ID of the service account.

limit: Optional[int]⁠Query parameter

Number of results per page.

default20
minimum1
maximum100
page: Optional[str]⁠Query parameter

Opaque cursor from a previous response's next_page.

Returns
class ServiceAccountWorkspaceMember: type: "service_account_workspace_member"; created_by_actor_id; implicit; ... # 3 more
type: Literal["service_account_workspace_member"]
defaultservice_account_workspace_member
created_by_actor_id: Optional[str]

Tagged ID (user_.../svac_...) of the actor who created this membership.

implicit: Optional[bool]

True when this is the implicit default-workspace membership every service account has when no explicit membership exists. Implicit memberships have role workspace_user and cannot be removed.

service_account_id: str

Tagged service account ID (svac_...).

workspace_id: str

Tagged workspace ID (wrkspc_...).

workspace_role: WorkspaceRole

Role of the service account in this workspace. Service accounts cannot hold the workspace_billing role.

One of the following:
"workspace_admin"
"workspace_billing"
"workspace_developer"
"workspace_restricted_developer"
"workspace_user"
List Workspaces For Service Account
import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ.get(
        "ANTHROPIC_API_KEY"
    ),  # This is the default and can be omitted
)
page = client.organization.service_accounts.workspaces.list(
    service_account_id="service_account_id",
)
page = page.data[0]
print(page.created_by_actor_id)
Returns Examples
Response 200
{
  "data": [
    {
      "created_by_actor_id": "created_by_actor_id",
      "implicit": true,
      "service_account_id": "service_account_id",
      "type": "service_account_workspace_member",
      "workspace_id": "workspace_id",
      "workspace_role": "workspace_admin"
    }
  ],
  "next_page": "next_page"
}