This endpoint returns only active members. Pending invitations live under
/team/invitations. Removed members are never returned — and once removed, a GET, PATCH, or DELETE against that member id returns 404, as if it never existed in your org.The member object
| Field | Type | Notes |
|---|---|---|
id | uuid | Membership id. Stable per (org, user). |
user_id | uuid | The user behind the membership. The same user may belong to other orgs under a different id. |
first_name | string ∣ null | From profile. |
last_name | string ∣ null | From profile. |
avatar_url | url ∣ null | From profile. |
role_id | uuid | The org-scoped role. Pass on PATCH to change role. |
role | string | Display-only role name. |
joined_at | timestamp | When the membership became active. |
updated_at | timestamp | Last change to the membership row. |
List members
cURL
Get a member
cURL
Change role
PATCH /team/members/{id} with the target role_id. The change fires member.role_changed and is reflected in the response. The role_id must be one of your organization’s roles — a role id from another org (or a nonexistent one) is rejected. The owner role is the one exception you can’t assign (see below).
cURL
Remove a member
DELETE /team/members/{id} soft-removes the row (status = "removed"). The user keeps their profile but loses access to your org. Fires member.removed.
cURL
204 No Content on success.
Removing a member does not delete their work — articles they authored, conversations they handled, and notes they wrote stay in place. Only their access is revoked.

