---
title: "Update a firm member (owner-only) · 0 credits"
method: PATCH
path: "/api/v1/firm/members/{memberId}"
tags: ["Firm Management"]
---

# Update a firm member (owner-only) · 0 credits

`PATCH /api/v1/firm/members/{memberId}`

## Request

- Base URL: `https://legal.nexusquantum.legal`
- URL: `https://legal.nexusquantum.legal/api/v1/firm/members/{memberId}`
- Auth: HTTP bearer

Changes a member's role and/or active status. `memberId` goes in the URL. Reactivating (active=true) may require a free seat → `403 SEATS_EXCEEDED` when seat enforcement is active for the tenant. An id from another firm → 404 (owner-only preserved). `requireAAL2` is a no-op for API-key auth. No charge. Scope: mcp | *.

## Path parameters

- `memberId` string, uuid, required

## Request body

- UpdateFirmMemberRequest: PARTIAL update of a member: send `role` and/or `active`. `memberId` goes in the URL. Reactivating (active=true) may require a free seat (403 SEATS_EXCEEDED when seat enforcement is active for the tenant; `GET /seats` exposes `enforced`).
  - `role` 'author' | 'reviewer' | 'approver' | 'admin'
  - `active` boolean: Activate (true) or deactivate (false) the member.

## Response `200`

Member updated.

- FirmMember: Firm member (E4, OWNER-ONLY). The internal route filters by the `firm_owner_id` derived from the `userId` of the KEY: only the owner sees/manages their members. Soft-remove = `active:false`.
  - `id` string, uuid: UUID of the member row (firm_members.id).
  - `member_user_id` string, uuid, nullable: UUID of the member user (null while it is still an invitation pending redemption).
  - `email` string: Member's email.
  - `role` 'author' | 'reviewer' | 'approver' | 'admin': Member's role in the firm.
  - `active` boolean: Active status (soft-remove sets it to false).
  - `invited_at` string, date-time, nullable
  - `accepted_at` string, date-time, nullable

## Other responses

- `400`: INVALID_ID | invalid role / no fields to update
- `403`: SEATS_EXCEEDED — reactivation with no free seats while seat enforcement is active for the tenant.
- `404`: Member not found (id from another firm or nonexistent).

---

[API](https://skmtc.dev/nexusquantum/apis/nexus-legal-api.md) · [All operations](https://skmtc.dev/nexusquantum/apis/nexus-legal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nexusquantum/apis/nexus-legal-api/revisions/4084d8d4eb0b?raw)
