Members
List org members
VIEWER+ — every member sees the full roster. Role-change / remove are gated tighter on the `[memberId]` routes.
GET
/api/organizations/{orgId}/membersVIEWER+ — every member sees the full roster. Role-change / remove are gated tighter on the [memberId] routes.
Path Parameters
orgId*string
Organisation id (cuid)
Response Body
application/json
curl -X GET "https://loading/api/organizations/string/members"[
{
"id": "mem_aaaa1111",
"role": "OWNER",
"joinedAt": "2026-04-12T09:00:00.000Z",
"user": {
"id": "usr_owner",
"name": "Sam Owner",
"email": "sam@your-company.com",
"image": "https://api.dicebear.com/9.x/shapes/svg?seed=sam"
}
},
{
"id": "mem_bbbb2222",
"role": "ADMIN",
"joinedAt": "2026-04-15T14:22:00.000Z",
"user": {
"id": "usr_admin",
"name": "Jordan Admin",
"email": "jordan@your-company.com",
"image": "https://api.dicebear.com/9.x/shapes/svg?seed=jordan"
}
},
{
"id": "mem_cccc3333",
"role": "VIEWER",
"joinedAt": "2026-04-20T08:45:00.000Z",
"user": {
"id": "usr_viewer",
"name": null,
"email": "support@your-company.com",
"image": "https://api.dicebear.com/9.x/shapes/svg?seed=support"
}
}
]Empty
Empty
Switch the caller's active organisation PATCH
Persists `User.activeOrganizationId` (mirrored to JWT). Membership is verified inside the same transaction so the active-org pointer can never flip to an org the caller doesn't belong to.
Change a member's role PATCH
OWNER-only. Multiple OWNERs per org are allowed — single-OWNER lock-out is not enforced by the API.