Skip to content
DELETE /member/{userId}

Irreversible: revokes the member's access to this organization immediately. Re-adding them means a fresh invite, and their roles and team memberships are not restored. Their personal connections are resolved first — call `GET /member/{userId}/offboarding` to see which ones shared toolboxes depend on, then supply a `connection_actions` entry for each. Personal connections with no entry are DELETED, which destroys the vaulted credential. Nothing is applied unless every referenced connection has a resolution: otherwise the call fails with 409 `connections_need_resolution` and lists the unresolved connections in `error.details`. `transfer` hands a connection to one named member and rewrites `owner_user_id` only (§2) — its existing grants are untouched. There is deliberately no "give it to the team/org" shortcut: that is a grant, a separate act via `POST /connection/{id}/share`, not something offboarding manufactures on an admin's behalf. Requires `member:manage`. A BROWSER SESSION must additionally carry a fresh step-up reauthentication (`X-Step-Up-Token`, obtained from `/auth/step-up`); without one the call answers `428 step_up_required` and `error.details` names the action and resource to prove. An organization API token is not challenged: step-up re-proves the person behind a session, and a token has no person behind it. The gate is demanded LAST, after every resolution refusal above, so an admin never re-authenticates only to be told the removal needs decisions first.

Path Parameters

userIdstring
required·

User id (usr_…) of an org member.

Request Body

connection_actionsobject[]

One decision per personal connection that a shared toolbox references.

actionstring

transfer keeps the vaulted credential and the toolbox entries that pin the connection working, moving ownership to target_user_id; delete destroys the credential.

Possible values:
transferdelete
connection_idstring

Connection id (conn_…) from the offboarding preflight.

target_user_idstring

Required for transfer (usr_…) — the member who becomes the connection's new owner. Cannot be the member being removed.

Response Body

successboolean
curl -X DELETE 'https://api.elaichi.ai/member/<userId>' \
  -H 'Authorization: Bearer $ELAICHI_API_TOKEN' \
  -H 'Content-Type: application/json'
const response = await fetch('https://api.elaichi.ai/member/<userId>', {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer ' + process.env.ELAICHI_API_TOKEN,
    'Content-Type': 'application/json',
  },
});

const data = await response.json();
console.log(data);
import os
import requests

url = "https://api.elaichi.ai/member/<userId>"
headers = {
    "Authorization": f"Bearer {os.environ['ELAICHI_API_TOKEN']}",
    "Content-Type": "application/json",
}

response = requests.delete(url, headers=headers)
print(response.json())