Skip to content

List Projects

This endpoint returns a page of projects for the authenticated account.

GET /v1/projects/projects

Include your API key in the x-api-key header. See Authentication.

projects:read
ParameterTypeRequiredDescription
clientIdstringNoReturn only projects for this client.
billingCategory"billable" | "non-billable" | "not-assigned"NoFilter by billing category. The values are lowercase. not-assigned matches projects with a null category. Any other value applies no filter.
archivedstringNo"true" returns only archived projects. Any other value, or no value, returns only non-archived projects.
allstringNo"true" returns archived and non-archived projects and ignores archived.
pagestringNo0-based page index. Defaults to 0.
pageSizestringNoNumber of items per page. Defaults to 25.
sortColstringNoSort column. One of projectName, projectDescription, EndCustomer.name, createdAt, updatedAt, Client.client_name.
sortDirstringNoSort direction: asc or desc (not case-sensitive).

The API uses sortCol and sortDir only when both are present and valid. Otherwise it ignores them without an error and sorts by updatedAt then createdAt, newest first. See Pagination for paging and sorting rules.

This endpoint does not accept a request body.

Terminal window
curl "https://api.crewsum.com/v1/projects/projects?clientId=client-ghi123jkl4567890&billingCategory=billable&page=0&pageSize=25" \
-H "x-api-key: $CREWSUM_API_KEY"

On success, the API returns HTTP 200 OK.

{
"message": "Successfully fetched projects",
"data": {
"projects": [
{
"id": "project-mno123pqr4567890",
"name": "Project Name",
"description": "A brief description of the project",
"endCustomerId": "endcustomer-abc123def4567890",
"endCustomerName": "End Customer Name",
"endCustomerDeleted": false,
"endCustomerArchived": false,
"isArchived": false,
"createdAt": "2026-01-05T15:30:00.000Z",
"updatedAt": "2026-01-12T09:15:00.000Z",
"clientId": "client-ghi123jkl4567890",
"clientName": "Client Name",
"isDeleted": false,
"clientDeleted": false,
"clientArchived": false,
"billingCategory": "BILLABLE",
"completed": false,
"autoAssign": true,
"associations": [
{
"contactId": "contact-jkl123mno4567890",
"contactName": "Contact Name",
"contactEmail": "placeholder@example.com",
"contactType": "MANAGER",
"notificationLevel": "COPY_ONLY"
}
],
"customFields": {
"department": "Operations"
},
"submittedHours": 40
}
],
"count": 1
}
}
  • count is the total number of matching projects across all pages.
  • Deleted projects are never returned.
  • List items have the same fields as Get Project, except clientCustomFields, which list items do not include.
  • submittedHours is the total of hours on approved timecards for the project.
  • hoursBudget is included only when the project has an hours budget.
StatusMeaning
500Crewsum could not fetch projects. The message is Error fetching projects.

Authentication and scope failures are described in Errors.

This endpoint does not trigger a webhook.