Bulk Update Workspace Member Roles
Update the role of multiple workspace members and invites in one request. An invite can be updated regardless of status — pending, declined, or expired.
This answers 200 once the batch is applied, even when every item failed — a per-item problem is reported in results rather than failing the whole request. IDs are deduplicated before processing, so results can be shorter than the request; match a result back to your input by id, not by position.
Required scope | workspace_members:write
role and defaultSiteRole together decide what every id in the batch can do and what role the dashboard shows for them. Submit only one of the combinations below — the dashboard’s own role picker never produces any other pairing.
Authentication
Bearer authentication of the form Bearer <token>, where token is your auth token.
Path parameters
Unique identifier for a Workspace. Find it with List Workspaces (workspace API tokens and Data Client apps), or with authorization.authorizedTo.workspaceIds from Get Authorization Info. With a site token, read workspaceId from Get Site.
Request
Requires at least one of memberIds or inviteIds. Their combined length is capped at 100. role: reviewer only pairs with defaultSiteRole: reviewer; any other pairing fails a member id with invalid_workspace_role and fails an invite id with cannot_update_user_role. On a Workspace not enrolled in Workspace Seats, moving a member (not an invite) to or from reviewer also fails with cannot_update_user_role, regardless of defaultSiteRole.
ID of the custom Site Role named by defaultSiteRole. Requires defaultSiteRole to be custom, and rejected with any other defaultSiteRole. Rejected if the id doesn’t name a custom Site Role belonging to this workspace.
Response
Result for each id. Match results to the request by id, not by position.