Change a member's role

Change a member's sub-account role.

PATCH https://api.centerfy.ai/webhooks/inbound/users/:id/role

Headers

HeaderRequiredValueDescription
x-api-keyYesyour sub-account API key (cfy_…)Authenticates the request; or use Authorization: Bearer <key>.

Path parameters

NameTypeRequiredDescription
idstring (uuid)YesThe member’s user id (user_id from List team members).

Body parameters

NameTypeRequiredDefaultDescription
rolestringYes—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.

© 2026 Centerfy AI. All rights reserved.