List Members

GET /v1/account/members

List everyone who belongs to your active account — their user uuid, email, username, the role they hold, when they joined, and whether they are the account owner.

Every account has exactly one owner. The owner is returned with is_owner: true and no role_uuid (the owner implicitly has full access). All other members carry the role they were assigned. Use this to render a team-management table or to look up a member's user_uuid before changing their role or removing them.

Permission required

Calling this endpoint requires the members:read permission on the active account.

Query parameters

page int optional
1-based page number. Omit it to get every member in one response.
page_size int optional
Members per page when page is sent. Default 15, capped at 200.

Response (200 OK)

members object[]
The members (fields below). Always present; [] when empty.
seats object
Seat usage against the plan's member cap, to show "X of Y members" and disable inviting at the cap. unlimited (boolean) is always present; when it is false the object also has used (active members plus pending invitations, the owner included), max (the cap) and remaining (never below 0).
page, page_size int
The page returned and the effective page size. Both 0 when page was not sent (the whole list).
total int
Number of members across all pages.

Each member contains:

user_uuid string (uuid)
The member's user uuid. Pass this as the {user_uuid} path parameter when changing a role or removing the member.
account_uuid string (uuid)
The uuid of the active account.
email string
The member's email address.
username string
The member's username.
is_owner boolean
true for the single account owner. The owner cannot be removed and has no assignable role — ownership changes only via /account/transfer-owner.
role_uuid string (uuid)?
The uuid of the member's role. Omitted for the owner.
role_name string?
Human-readable name of the member's role (e.g. "Developer"). Omitted for the owner.
status string
Membership status (e.g. "active").
joined_at datetime?
RFC 3339 timestamp of when the member joined the account. Omitted when unset.
created_at, updated_at datetime
When the membership row was created and last changed (for example a role change), RFC 3339 UTC.

Deprecated: until the sunset each member also carries the legacy integer id (the membership row, which has no public id), user_id, account_id and role_id. Don't use them; a member is addressed by user_uuid.

Errors

401 Unauthorized
Missing or invalid auth.
403 Forbidden
No active account selected, or the caller lacks members:read.
500
Failed to load members (database error).
Request
curl "https://api.ngris.com/v1/account/members?page=1&page_size=15" \ -H "X-API-KEY: <your_api_key>"
Python
from ngris import Ngris client = Ngris(api_key="<your_api_key>") resp = client._get_raw("/account/members") for m in resp["members"]: print(m["email"], "Owner" if m["is_owner"] else m.get("role_name")) if not resp["seats"]["unlimited"]: print(resp["seats"]["remaining"], "seats left")
Response — 200 OK
{ "members": [ { "user_uuid": "019a52c2-ca1e-78ba-ab5c-50362cc29134", "account_uuid": "019a68b9-1a79-7820-a884-41f554aba6bd", "email": "alice@example.com", "username": "alice", "is_owner": true, "status": "active", "joined_at": "2026-01-12T09:00:00Z", "created_at": "2026-01-12T09:00:00Z", "updated_at": "2026-01-12T09:00:00Z" }, { "user_uuid": "019a5f28-be41-7264-9ed2-2e6aceae8290", "account_uuid": "019a68b9-1a79-7820-a884-41f554aba6bd", "email": "bob@example.com", "username": "bob", "is_owner": false, "role_uuid": "019a9625-4dd4-7506-aa4b-97bbf9a69640", "role_name": "Developer", "status": "active", "joined_at": "2026-03-04T14:30:00Z", "created_at": "2026-03-04T14:30:00Z", "updated_at": "2026-03-04T14:30:00Z" } ], "seats": {"unlimited": true}, "page": 1, "page_size": 15, "total": 2 }
Was this helpful?
On this page
List Members
Was this helpful?