List Tenant Users
Get a paginated list of users in the current tenant.
GET /api/user/tenant-users
Returns a paginated list of the users of the active tenant, newest first.
Auth: Required — user:view permission
Headers
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer <access_token> |
x-tenant-id | Yes | Tenant UUID |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | number | 1 | Page number, starting at 1 |
limit | number | 20 | Items per page (maximum 100) |
search | string | — | Case-insensitive partial match on firstName, lastName, email or username |
role | string | — | Only users with this role value: super_admin, admin, fde, supervisor, operator, viewer |
isActive | boolean | — | true or false |
Example
curl "https://api.reten.ai/api/user/tenant-users?page=1&limit=10" \
-H "Authorization: Bearer <token>" \
-H "x-tenant-id: <tenant-id>"const params = new URLSearchParams({ page: "1", limit: "10" });
const response = await fetch(`https://api.reten.ai/api/user/tenant-users?${params}`, {
headers: {
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
},
});
const data = await response.json();import requests
response = requests.get(
"https://api.reten.ai/api/user/tenant-users",
headers={
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
},
params={"page": 1, "limit": 10},
)
data = response.json()Response 200 OK
{
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"firstName": "Jane",
"lastName": "Doe",
"username": "jdoe",
"email": "jdoe@example.com",
"roles": ["supervisor"],
"isActive": true,
"createdAt": "2026-09-28T14:30:00.000Z"
}
],
"total": 1,
"page": 1,
"limit": 10,
"totalPages": 1
}With role, the roles of each user lists only the filtered role, even when the user has other roles.
Error Responses
| Status | Description |
|---|---|
400 | Validation error — page or limit out of range, role is not a role value, or isActive is not true/false |
403 | Missing permission — Required permissions: user:view |