List users in the tenant
const url = 'https://example.com/v1/identity/users?limit=25';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/v1/identity/users?limit=25' \ --header 'Authorization: Bearer <token>'Cursor-paginated list of tenant users (sort order is binding-defined). Optional ?query= is a prefix match on displayName — the natural filter shape for a “search users” surface. primaryEmail may be redacted per tenant policy.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”1..100. Default 25.
Opaque cursor from a prior response. Absent → first page.
Prefix match on displayName.
Responses
Section titled “Responses”Page of users.
object
Tenant-scoped user record (admin plane). primaryEmail may be redacted on the wire based on tenant policy (the routes treat it as opaque). metadata is free-form JSON — deployments carry IdP claims / provisioning source / roles here.
object
object
Examplegenerated
{ "data": [ { "userId": "example", "tenantId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "primaryEmail": "example", "displayName": "example", "createdAt": "2026-04-15T12:00:00Z", "lastActiveAt": "2026-04-15T12:00:00Z", "metadata": {} } ], "hasMore": true, "nextCursor": "example"}Missing / malformed / expired / revoked bearer token.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}