Reten Docs

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

HeaderRequiredValue
AuthorizationYesBearer <access_token>
x-tenant-idYesTenant UUID

Query Parameters

ParameterTypeDefaultDescription
pagenumber1Page number, starting at 1
limitnumber20Items per page (maximum 100)
searchstring—Case-insensitive partial match on firstName, lastName, email or username
rolestring—Only users with this role value: super_admin, admin, fde, supervisor, operator, viewer
isActiveboolean—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

StatusDescription
400Validation error — page or limit out of range, role is not a role value, or isActive is not true/false
403Missing permission — Required permissions: user:view