Lists organizations one page at a time (newest first by default), each with a capped list of its members (id, name, email, role in that organization, active state) that leaves out claimable placeholder accounts and deleted users; membershipCount counts every membership and hasMoreUsers means the list was cut, so page the rest with GET /admin/user?organizationId=<id> using skip/limit. searchText matches the organization name, slug or email, not users, and total counts organizations. Super admin only.
Query parameters
-
Maximum value is
1000. Default value is1. -
Maximum value is
100. Default value is10. -
Takes precedence over page/perPage when provided. Mutually exclusive with page in practice: nextPage/previousPage track
page, so they are meaningless when paging by skip.Maximum value is
100000. -
Takes precedence over perPage when provided.
Maximum value is
100. -
Values are
ascordesc. Default value isdesc. -
Case-insensitive partial match on organization name, slug, or email. Does not match users.
Minimum length is
1, maximum length is100. -
Values are
createdAt,updatedAt, orname. Default value iscreatedAt. -
Filter by the ORGANIZATION's active state. Does not filter the nested users.
curl \
--request GET 'http://api.example.com/admin/organization/directory' \
--header "Authorization: Bearer $ACCESS_TOKEN"
{
"data": {
"total": 42,
"page": 1,
"perPage": 20,
"skip": 0,
"limit": 20,
"totalPages": 3,
"nextPage": 2,
"previousPage": 42.0,
"data": [
{
"createdAt": "2026-01-15T14:30:00.000Z",
"updatedAt": "2026-01-15T14:30:00.000Z",
"id": "507f1f77bcf86cd799439011",
"name": "Example Firm",
"slug": "example-firm",
"isActive": true,
"users": [
{
"id": "65a1b2c3d4e5f6a7b8c9d0e4",
"name": "Jane Doe",
"email": "jane.doe@example.com",
"role": "admin",
"isActive": true
}
],
"membershipCount": 12,
"hasMoreUsers": false
}
]
},
"statusCode": 200,
"timestamp": "2026-01-15T10:15:00.000Z"
}