Update a member's roles
PATCHhttps://api.spice.ai/v1/members/{memberId}
Updates the roles assigned to a specific organization member. Organization owners cannot have their roles modified.
Authorizations
AuthorizationstringRequiredBearer <token>. Authentication lists the tokens it accepts.
Path parameters
memberIdintegerRequiredThe user ID of the member
Header parameters
X-Org-NamestringThe organization to act on, by handle. Omit it to act on the organization the credential is bound to; sending it blank is a 400, not the same as omitting it. A user credential may name any organization its owner belongs to; a machine credential is pinned to its own. A portal session token is bound to none, so it must send this header on every route but
GET /v1/orgs(400org_assertion_requiredotherwise).- Pattern:
^[A-Za-z0-9._-]{1,255}$
- Pattern:
Body
application/jsonRequired
rolesarray of stringRequiredNew roles to assign to the member
Responses
200Member roles updated successfullyapplication/json
user_idintegerusernamestringrolesarray of stringcreated_atstring (date-time)
400Invalid request body
401Unauthorized
403Forbidden
Insufficient scope, not an org admin/owner, cannot modify owner, only owners can modify/assign admin or owner roles
404Member not found, or the membership was removed before the role change was written
413Request body too large
500The organization could not be read, or the role change failed
curl -X PATCH "https://api.spice.ai/v1/members/<memberId>" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"roles": [
"string"
]
}'PATCH /v1/members/<memberId> HTTP/1.1
Host: api.spice.ai
Authorization: Bearer <token>
Content-Type: application/json
Content-Length: 33
{
"roles": [
"string"
]
}{
"user_id": 0,
"username": "string",
"roles": [
"string"
],
"created_at": "2026-01-01T00:00:00Z"
}application/json
No response body
No response body
No response body
No response body
No response body
No response body
PATCHhttps://api.spice.ai/v1/orgs/{orgId}/members/{memberId}
The org is orgId in the path. Updates the roles assigned to a specific organization member. Organization owners cannot have their roles modified.
Authorizations
AuthorizationstringRequiredBearer <token>. Authentication lists the tokens it accepts.
Path parameters
orgIdintegerRequiredThe org id from GET /v1/orgs
- Minimum:
1
- Minimum:
memberIdintegerRequiredThe user ID of the member
Header parameters
X-Org-NamestringWhen present, X-Org-Name must name the same org as orgId. Otherwise the request returns org_path_mismatch (400).
- Pattern:
^[A-Za-z0-9._-]{1,255}$
- Pattern:
Body
application/jsonRequired
rolesarray of stringRequiredNew roles to assign to the member
Responses
200Member roles updated successfullyapplication/json
user_idintegerusernamestringrolesarray of stringcreated_atstring (date-time)
400Bad Request
Invalid request body. orgId is not a valid org id (invalid_org_id), or X-Org-Name does not name that org (org_path_mismatch).
401Unauthorized
403Forbidden
Insufficient scope, not an org admin/owner, cannot modify owner, only owners can modify/assign admin or owner roles. The caller is not a member of the org (org_forbidden). A machine credential named a different org (org_assertion_mismatch). The org is deleted (org_deleted).
404Member not found, or the membership was removed before the role change was written
413Request body too large
500The organization could not be read, or the role change failed
OpenAPIapi.spice.ai/openapi.json
curl -X PATCH "https://api.spice.ai/v1/orgs/<orgId>/members/<memberId>" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"roles": [
"string"
]
}'PATCH /v1/orgs/<orgId>/members/<memberId> HTTP/1.1
Host: api.spice.ai
Authorization: Bearer <token>
Content-Type: application/json
Content-Length: 33
{
"roles": [
"string"
]
}{
"user_id": 0,
"username": "string",
"roles": [
"string"
],
"created_at": "2026-01-01T00:00:00Z"
}application/json
No response body
No response body
No response body
No response body
No response body
No response body