Get Users
/usersCaller
Requires read:users and an active, verified key owner with access to the requested users.
| Key | Supported users |
|---|---|
| Company-scoped | Hirer company and project users |
| Agency-scoped | Agency Admin and Agency Staff users |
Summary
Returns a paginated list of public user profiles visible to the key owner within the API key scope. Both active and inactive users are included unless filtered by status.
Company and agency user lists require the corresponding entity access. Project admins can retrieve only users sharing their assigned projects. Project finance, approver, requestor and agency staff callers can retrieve only their own profile. A key's scope does not grant its owner additional platform permissions.
The companies, projects and agencies arrays contain only membership IDs visible to the caller within the selected key scope. Passwords, authentication tokens, MFA secrets, preferences and other private account settings are excluded.
URL Parameters
- None
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| company | string | No | Filter by company ObjectId(s); one ID or comma-separated IDs. Company-scoped keys only |
| project | string | No | Filter by project ObjectId(s); one ID or comma-separated IDs. Projects must be within accessible scoped companies. Company-scoped keys only |
| agency | string | No | Filter by agency ObjectId(s); one ID or comma-separated IDs. Agency-scoped keys only |
| role | string | No | Filter by base role: companyAdmin, companyFinance, companyBot, projectAdmin, projectFinance, projectApprover, projectRequestor, ldAdmin, or ldUser |
| status | enum(active, inactive) | No | Filter by user status; includes both when omitted |
| page | integer | No | Page number (default 1) |
| limit | integer | No | Records per page (default 50, max 200) |
| query | string | No | Case-insensitive search against user name, email or job title |
| sortBy | enum(createdAt, updatedAt, name, email) | No | Sort field (default name) |
| sortOrder | enum(asc, desc) | No | Sort direction (default asc) |
| fields | string | No | Comma-separated list of public response fields to return |
Omitting membership filters returns users across the entities available to both the key and its owner. Combining company and project filters requires users to match both. Role filters narrow visibility; they do not grant access to other user types.
Request Example
- cURL
- JavaScript
- Python
- Go
curl -X GET 'https://api.requidex.com/api/open/v1/users' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Accept: application/json'
const response = await fetch("https://api.requidex.com/api/open/v1/users", {
method: "GET",
headers: {
Authorization: "Bearer <API_KEY>",
Accept: "application/json",
},
});
const json = await response.json();
import requests
response = requests.request(
'GET',
'https://api.requidex.com/api/open/v1/users',
headers={
'Authorization': 'Bearer <API_KEY>',
'Accept': 'application/json',
},
timeout=30,
)
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.requidex.com/api/open/v1/users", nil)
req.Header.Set("Authorization", "Bearer <API_KEY>")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
payload, _ := io.ReadAll(resp.Body)
fmt.Println(string(payload))
}
Active project requestors in a company
curl -X GET 'https://api.requidex.com/api/open/v1/users?company=507f1f77bcf86cd799439011&role=projectRequestor&status=active' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Accept: application/json'
Agency users with selected fields
curl -X GET 'https://api.requidex.com/api/open/v1/users?agency=507f1f77bcf86cd799439017&fields=id,reference,name,email,role,agencies' \
-H 'Authorization: Bearer <AGENCY_API_KEY>' \
-H 'Accept: application/json'
Response Fields
| Field | Type | Description |
|---|---|---|
| id | string | User ObjectId |
| reference | string | User reference |
| name | string | Full name |
| firstName | string | First name |
| lastName | string | Last name |
| string | Email address | |
| phone | string | Phone number, when set |
| countryCode | string | Telephone dialling code, when set |
| jobTitle | string | Job title, when set |
| role | string | Base role |
| active | boolean | Whether the account is active |
| verified | boolean | Whether the account is verified |
| companies | array[string] | Visible company membership ObjectIds within the key scope |
| projects | array[string] | Visible project membership ObjectIds within the key scope |
| agencies | array[string] | Visible agency membership ObjectIds within the key scope |
| createdAt | string | Creation timestamp |
| updatedAt | string | Last update timestamp |
Response Example (200)
{
"success": true,
"data": [
{
"id": "507f1f77bcf86cd799439018",
"reference": "userref123",
"name": "Alex Taylor",
"firstName": "Alex",
"lastName": "Taylor",
"email": "alex@example.com",
"jobTitle": "Buyer",
"role": "projectRequestor",
"active": true,
"verified": true,
"companies": ["507f1f77bcf86cd799439011"],
"projects": ["507f1f77bcf86cd799439016"],
"agencies": [],
"createdAt": "2026-01-10T12:00:00.000Z",
"updatedAt": "2026-02-20T14:03:12.111Z"
}
],
"meta": { "page": 1, "limit": 50, "total": 1 }
}
Pagination totals count only users matching the caller's visibility and the requested filters. An accessible query with no matching users returns an empty data array.
MCP Tool
The MCP server exposes this operation as open_api_list_users with the inputs company, project, agency, role, status, page, limit, query, sortBy, sortOrder, and fields.
Errors
| HTTP Status | Description |
|---|---|
| 400 | Invalid filters or parameters, or membership filter incompatible with the key scope |
| 401 | Missing, invalid, revoked, or expired API key |
| 403 | Missing read:users, inactive or unverified owner, or insufficient user visibility permissions |
| 404 | Requested company, project or agency not found within accessible key scope |
| 405 | Method not allowed on Open API routes |
| 429 | Rate limit exceeded |
| 500 | Failed to fetch users |