---
title: "Change a member role or monthly cap"
method: PATCH
path: "/v1/users/{userID}/members/{memberID}"
---

# Change a member role or monthly cap

`PATCH /v1/users/{userID}/members/{memberID}`

## Request

- Base URL: `https://api.plori.ai`
- URL: `https://api.plori.ai/v1/users/{userID}/members/{memberID}`
- Auth: HTTP bearer

Only the authenticated account owner can use this route. Members use their own credentials and cannot manage another account. Omitted or null fields leave the stored values unchanged. An empty object returns the current membership.

## Path parameters

- `userID` string, uuid, required
- `memberID` string, uuid, required

## Request body

- object
  - `role` 'member' | 'viewer' | 'null', nullable
  - `monthly_spend_limit_micro_usd` integer, nullable: Micro-US-dollars. Zero clears the cap.

## Response `200`

Updated membership.

- AccountMember
  - `id` string, uuid, required
  - `email` string, required
  - `role` 'member' | 'viewer', required
  - `state` 'invited' | 'active', required
  - `invited_at` string, date-time, required
  - `invite_expires_at` string, date-time
  - `accepted_at` string, date-time
  - `member_user_id` string, uuid
  - `monthly_spend_limit_micro_usd` integer, required: Monthly cap in micro-US-dollars. Zero means no member cap.

## Other responses

- `400`: Malformed request.
- `401`: Missing or invalid credential.
- `403`: The resource belongs to another account.
- `404`: No such resource.
- `500`: Internal error with request_id.

---

[API](https://skmtc.dev/plori/apis/plori-rest-api.md) · [All operations](https://skmtc.dev/plori/apis/plori-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/plori/apis/plori-rest-api/revisions/15c4f9260dff?raw)
