List organization members
Account and platform
List organization members
List the organization’s human members, oldest first, keyset-paginated.
GET
List organization members
admin scope: this route enumerates real people (id, email, display name,
role), so it follows the same posture as
GET /v1/usage — org-wide
enumeration requires an admin key, and a non-admin key gets 403
permission_denied. Rows with role='service' (provisioned subjects
and sandbox identities) are never returned: they are not team members and
their internal user ids are an isolation detail. Ordered by joinedAt
ascending with the member id as a stable tiebreaker; page with
nextCursor until hasMore is false. No totals — use
memberCount on GET /v1/team for the size of the team.
Authorization
This route requires theadmin scope.
A missing or invalid credential returns 401 authentication_error. A valid credential without the scope returns 403 permission_denied, and the problem body names the exact scope required.
Headers
These are request conventions the contract does not declare as parameters, so they do not appear in the schema tables below.Success responses
Errors
Every error is an RFC 9457
application/problem+json body carrying a stable code, a requestId, and a suggestedAction where Exo has one. See Errors.
Notes
- Admin scope, because this enumerates real people. Provisioned subjects and sandbox identities are never returned: they are not team members and their internal ids are an isolation detail.
Authorizations
An Exo API key (exo_...) sent as the X-Exo-API-Key header.
Query Parameters
Opaque cursor from a previous nextCursor.
Page size, coerced into [1, 100] (default 25).