List Users
This endpoint returns a page of users in your account, with their assignments, groups, and supplier.
Endpoint
Section titled “Endpoint”GET /v1/users/usersAuthentication
Section titled “Authentication”Include your API key in the x-api-key header. See Authentication.
Required Scope
Section titled “Required Scope”users:readQuery Parameters
Section titled “Query Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | Zero-based page index. Defaults to 0. |
pageSize | number | No | Number of users per page. Defaults to 25. |
sortCol | "id" | "fullName" | "email" | "systemRole" | "createdAt" | "updatedAt" | No | Sort column. Applies only when sortDir is also sent. |
sortDir | "asc" | "desc" | No | Sort direction. Applies only when sortCol is also sent. |
archived | "true" | "false" | No | "true" returns only archived users. Any other value, or no value, returns only active users. |
all | "true" | "false" | No | "true" returns active and archived users and ignores archived. |
When no valid sort is sent, users are sorted by updatedAt and then createdAt, newest first. See Pagination for paging and sorting rules.
Request Body
Section titled “Request Body”This endpoint does not accept a request body.
Example Request
Section titled “Example Request”curl "https://api.crewsum.com/v1/users/users?page=0&pageSize=25" \ -H "x-api-key: $CREWSUM_API_KEY"const response = await fetch( "https://api.crewsum.com/v1/users/users?page=0&pageSize=25", { headers: { "x-api-key": process.env.CREWSUM_API_KEY, }, },);const result = await response.json();GET /v1/users/users?page=0&pageSize=25 HTTP/1.1Host: api.crewsum.comx-api-key: <your-api-key>Response
Section titled “Response”On success, the API returns HTTP 200 OK.
Example Response
Section titled “Example Response”{ "message": "Successfully Fetched Profiles", "data": { "profiles": [ { "userId": "user-a", "contactAssignment": null, "isDisabled": false, "canReviewTimesheets": false, "displayName": "User Display Name", "email": "placeholder@example.com", "systemRole": "assoc", "accountMisconfigured": false, "customFields": {}, "isArchived": false, "projects": [ { "id": "project-mno123pqr4567890", "name": "Project Name", "source": { "type": "direct" }, "groupSources": [], "tasks": [ { "id": "task-pqr123stu4567890", "name": "Task Name", "source": { "type": "direct" }, "groupSources": [] } ] } ], "groups": [ { "id": "36b735f8-4dd7-4c3c-836f-35d2fe84e872", "name": "Operations", "description": "Users who manage operations work.", "userCount": 1, "createdAt": "2026-05-27T18:00:00.000Z", "updatedAt": null } ], "supplier": null, "startDate": "2023-01-01", "endDate": null, "createdAt": "2023-01-01T00:00:00.000Z", "updatedAt": "2023-01-01T00:00:00.000Z", "preferredTimezone": "America/Denver", "hasAuthProfile": true } ], "count": 1 }}Behavior
Section titled “Behavior”countis the total number of users that match the filters, not the number on this page.userIdis the user ID without the tenant prefix.projectsincludes direct assignments and assignments the user receives through user groups. Each project and task hassourceandgroupSources, as described on Get User.supplier,groups,associations,internalContactId, andcontactAssignmenthave the same shape as on Get User.canReviewTimesheetsis alwaysfalseon this endpoint.- The sign-in profile fields (
hasAuthProfile,accountMisconfigured, andisDisabled) are read from only the first 60 sign-in profiles in your account. If your account has more than 60 users, some users can showhasAuthProfile: falseandaccountMisconfigured: trueeven though they can sign in. Use Get User for an accurate value.
Error Responses
Section titled “Error Responses”| Status | Meaning |
|---|---|
500 | "Error fetching users": the request failed. |
Authentication and scope failures are described in Errors.
Related Webhooks
Section titled “Related Webhooks”This endpoint does not trigger a webhook.