---
title: "Change someone's role in one workspace of the organization."
method: PUT
path: "/v1/organizations/current/people/{userId}/role"
tags: ["organizations"]
---

# Change someone's role in one workspace of the organization.

`PUT /v1/organizations/current/people/{userId}/role`

## Request

- Base URL: `https://api.50heads.com`
- URL: `https://api.50heads.com/v1/organizations/current/people/{userId}/role`
- Auth: HTTP bearer

Organization admins only (403 `organization_admin_required`), on a browser session with a fresh proof in the `x-50h-reauth` header (401 `reauth_required`). It needs a person: API keys, connected apps and service accounts get 403 `session_required`. Every change is written to the organization's audit. Not the owner's role (409 `owner_role`); not in a closed workspace (409 `workspace_closed`). An admin's choice replaces the identity provider's group mapping for that person from then on.

## Path parameters

- `userId` string, required

## Request body

- OrganizationPersonRoleRequest
  - `workspaceId` string, required
  - `role` 'admin' | 'member' | 'viewer' | 'billing', required

## Response `200`

OK

- OrganizationPersonRoleResponse
  - `userId` string, required
  - `workspaceId` string, required
  - `role` string, required

## Other responses

- `400`: The request is not valid; `error.details.validation` lists the fixes.
- `401`: No key or token, or it expired or was revoked.
- `403`: The key or token lacks the scope (`insufficient_scope`), or the action is not allowed.
- `404`: No such question, endpoint or delivery on this account.
- `429`: Too many requests; wait for Retry-After.

---

[API](https://skmtc.dev/50heads/apis/50heads-api.md) · [All operations](https://skmtc.dev/50heads/apis/50heads-api/llms.txt) · [OpenAPI document](https://skmtc.dev/50heads/apis/50heads-api/revisions/edbfecb1e360?raw)
