# remove_workspace_member

Source: https://modulify.ai/docs/api/workspaces/remove-workspace-member

Removes a person from a workspace, ending their access to every site in it immediately.

- Title: Remove someone from a workspace
- Scope: `members:write`
- Access: Destructive
- Endpoint: `POST /v1/remove_workspace_member`

They have to be invited again to return. This affects a real colleague, so the tool tells the client to call it only once you have named who to remove and confirmed it.

The owner cannot be removed, and trying is refused with `You cannot remove the workspace owner!` It needs the **Manage members** permission (`members.manage`).

The connectors they installed in the workspace are revoked, and their account email comes off the [forwarding addresses](https://modulify.ai/docs/automations/emails#forwarding-addresses) of its sites where they added it themselves. See [Members and roles](https://modulify.ai/docs/reference/members-and-roles#resend-cancel-and-remove).

## Request

Call it with a `POST` to `https://api.modulify.ai/v1/remove_workspace_member`, sending the inputs below as a JSON object. The token needs the `members:write` scope.

> **Warning**
>
> This method is marked destructive: it deletes or overwrites data. Check the inputs before you call it, and send an [Idempotency-Key](https://modulify.ai/docs/api/idempotency) header whenever you might retry it.

```bash
curl -X POST https://api.modulify.ai/v1/remove_workspace_member \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"workspaceId":"WORKSPACE_ID","memberId":"MEMBER_ID"}'
```

Over MCP, the same method is the [remove_workspace_member tool](https://modulify.ai/docs/mcp/workspaces/remove-workspace-member).

## Inputs

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `workspaceId` | string | Yes | The workspace id. |
| `memberId` | string | Yes | The member id, from `list_workspace_members`. This is the membership id, not the user id. |

## Response

Every call answers with the [JSON envelope](https://modulify.ai/docs/api/requests-and-responses#the-response) of `success`, `message`, `data`, `code` and `version`. `data` holds the result described above, and on a method that returns a total, `count` carries it. The [response headers](https://modulify.ai/docs/api/requests-and-responses#headers-on-every-method-call) carry the call's `X-Request-Id` and what is left of your per-minute budget in `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`. [Errors](https://modulify.ai/docs/api/errors) explains every status code a call can answer with.