Change a member's role
Change a member's sub-account role.
PATCH
https://api.centerfy.ai/webhooks/inbound/users/:id/role Headers
| Header | Required | Value | Description |
|---|---|---|---|
x-api-key | Yes | your sub-account API key (cfy_…) | Authenticates the request; or use Authorization: Bearer <key>. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | The member’s user id (user_id from List team members). |
Body parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
role | string | Yes | — | New role. One of sub_account_owner, sub_account_admin, sub_account_user, sub_account_read_only. |
Request body
{
"role": "sub_account_admin"
}Example
curl -X PATCH "https://api.centerfy.ai/webhooks/inbound/users/{id}/role" \
-H "x-api-key: $CENTERFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"role": "sub_account_admin"
}' import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.users.changeRole("<userId>", {
"role": "sub_account_admin"
});
console.log(result); centerfy users change-role <userId> '{"role":"sub_account_admin"}' MCP tool: centerfy_users_change_role (see MCP server)
Response
{
"status": "success",
"user_id": "8c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"role": "sub_account_admin",
"previous_role": "sub_account_user",
"changed": true
}Errors
400— if role is not one of the four values.403— if the member holds an agency-level role (manage it from the agency workspace).409— if this would demote the last active sub_account_owner.404— if the user is not an active member of this sub-account.
Notes
If the member already has the role, returns changed: false without previous_role.