---
title: "Remove workspace members in bulk"
method: POST
path: "/api/workspace/members/bulk/remove"
---

# Remove workspace members in bulk

`POST /api/workspace/members/bulk/remove`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Removes up to 200 people from a workspace at once, the same way as [Remove workspace member](/api-reference/remove-workspace-member).

Removing someone takes away their access to the workspace and its apps right away:

- Apps they own move to the workspace owner, and their webhooks go to the owner too.
- Their personal access tokens for the workspace are deleted, and integrations they connected in the workspace are disconnected.
- They leave every custom group.
- If this was the last workspace they could sign in to, their Base44 account is disabled.

Removing someone whose invitation is still pending cancels the invitation.

You can't remove yourself or the workspace owner.

Every item is checked before anything changes. If any item can't be applied, nothing changes and the request returns a `400` whose `detail.errors` lists each rejected item with its `email`, a `message`, and an `error_code` when there is one. A member who isn't in the workspace, or a change you couldn't make on the single-member endpoint, is reported there rather than as a `403` or `404`. A `200` lists every person removed in `results`, in request order. Retrying a request that succeeded returns a `400` listing those people as not found.

People are handled one at a time before any membership is deleted. If a `409` stops the request, nobody is removed, but the people handled before the blocked one have already lost their app access and personal access tokens. Send the request again once the block clears.

This is limited to 5 requests per minute, shared by [Update workspace member roles in bulk](/api-reference/update-workspace-member-roles-in-bulk), [Remove workspace members in bulk](/api-reference/remove-workspace-members-in-bulk), and [Set member credit limits in bulk](/api-reference/set-member-credit-limits-in-bulk). A signed-in session has its own limit, and every personal access token for the workspace shares one. Some workspaces have a different limit.

<Note>Call this as an owner or admin of the workspace, with a personal access token for that workspace sent as a Bearer token, or from a signed-in session. A read-only token is refused, and workspace API keys aren't accepted.</Note>

## Query parameters

- `workspaceId` string, required — ID of the workspace. With a personal access token, use the token's workspace. Get it from `organization_id` in [Get app](/api-reference/get-app).

## Request body

- BulkRemoveMembersRequest — People to remove in one request.
  - `emails` string[], required — Emails of the members or pending invitees to remove, 1 to 200, exactly as `email` in [List workspace members](/api-reference/list-workspace-members) returns them. Each email can appear once.

## Response `200`

Everyone was removed.

- BulkMemberOperationResponse — The outcome of each item.
  - `results` BulkMemberResult[], required — One entry per item, in request order.
    - `email` string, required — Email of the member.
    - `status` 'success' | 'skipped', required — `success` when the change was applied, `skipped` when the member changed while the request ran and nothing was applied.
    - `message` string, required — Short explanation. Its wording can change, so don't parse it.

## Other responses

- `400` — At least one item can't be applied, and nothing changed. `detail.errors` lists each one.
- `401` — Missing or invalid credentials.
- `403` — You aren't an owner or admin of the workspace, your token is for a different workspace or is read-only, or your credential can't be used on this endpoint.
- `409` — Your workspace requires an unlocked SSO session, or an app the person owns can't move to the owner right now: an ownership transfer is being accepted, a Google Business profile is being created, or the workspace has no active owner.
- `422` — Validation Error
- `429` — Rate limit exceeded.

## Changes

> 28 revisions in range; 1 not diffed.

- **2026-10-06** `dddf17e0f9f0` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/workspace/members/bulk/remove/post.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/99df85f579f9?raw)
