Management APIs / Members

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

  • AuthorizationstringRequired

    Bearer <token>. Authentication lists the tokens it accepts.

Path parameters

  • memberIdintegerRequired

    The user ID of the member

Header parameters

  • X-Org-Namestring

    The 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 (400 org_assertion_required otherwise).

    • Pattern: ^[A-Za-z0-9._-]{1,255}$

Body

application/jsonRequired

  • rolesarray of stringRequired

    New roles to assign to the member

Responses

200Member roles updated successfullyapplication/json
  • user_idinteger

  • usernamestring

  • rolesarray of string

  • created_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"
    ]
  }'
{
  "user_id": 0,
  "username": "string",
  "roles": [
    "string"
  ],
  "created_at": "2026-01-01T00:00:00Z"
}

application/json

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

  • AuthorizationstringRequired

    Bearer <token>. Authentication lists the tokens it accepts.

Path parameters

  • orgIdintegerRequired

    The org id from GET /v1/orgs

    • Minimum: 1
  • memberIdintegerRequired

    The user ID of the member

Header parameters

  • X-Org-Namestring

    When 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}$

Body

application/jsonRequired

  • rolesarray of stringRequired

    New roles to assign to the member

Responses

200Member roles updated successfullyapplication/json
  • user_idinteger

  • usernamestring

  • rolesarray of string

  • created_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"
    ]
  }'
{
  "user_id": 0,
  "username": "string",
  "roles": [
    "string"
  ],
  "created_at": "2026-01-01T00:00:00Z"
}

application/json