---
title: "List projects"
method: GET
path: "/projects"
tags: ["Projects"]
---

# List projects

`GET /projects`

## Request

- Base URL: `https://www.ruddr.io/api/workspace`
- URL: `https://www.ruddr.io/api/workspace/projects`
- Auth: HTTP bearer

## Query parameters

- `startingAfter` string
- `endingBefore` string
- `limit` integer
- `modifiedAtAfter` union
  - string, date
  - string, date-time
- `modifiedAtOnAfter` union
  - string, date
  - string, date-time
- `modifiedAtBefore` union
  - string, date
  - string, date-time
- `modifiedAtOnBefore` union
  - string, date
  - string, date-time
- `clientId` string
- `code` string
- `projectTypeId` string
- `statusId` 'tentative' | 'not_started' | 'in_progress' | 'paused' | 'completed' | 'cancelled'
- `name` string
- `nameContains` string
- `nameStartsWith` string
- `nameEndsWith` string
- `poNumber` string

## Response `200`

200

- object
  - `results` Project[]: The list of results for the current page.
    - `id` string: The unique identifier for the object.
    - `key` string: The URL-friendly slug for the project.
    - `name` string: The name of the project.
    - `notes` string, nullable: Notes associated with the project.
    - `accountingNotes` string, nullable: Accounting notes associated with the project.
    - `statusId` 'tentative' | 'not_started' | 'in_progress' | 'paused' | 'completed' | 'cancelled': The project status.
    - `start` string, date, nullable: The start date for the project. Will be in the form YYYY-MM-DD.
    - `end` string, date, nullable: The end date for the project. Will be in the form YYYY-MM-DD. `null` if no end date is set.
    - `code` string, nullable: The project code.
    - `poNumber` string, nullable: The purchase order number.
    - `billingTypeId` 'tm' | 'fixed' | 'fixed_recurring' | 'non_billable': The billing type for the project.
    - `isBillable` boolean: Whether this project is billable. Derived from `billingTypeId` — `false` only when `billingTypeId` is `"non_billable"`.
    - `currency` string: The 3-letter currency code associated with the project.
    - `revenueRecognitionMethod` 'invoiced' | 'manual' | 'automated_hours' | 'automated_tm_basis', nullable: The revenue recognition method. Only applicable when `billingTypeId` is `"fixed"` or `"fixed_recurring"`. `null` for other billing types.
    - `revenueAttributionMethod` 'hours' | 'services_cost' | 'tm_basis', nullable: The revenue attribution method. Only applicable when `billingTypeId` is `"fixed"` or `"fixed_recurring"`. `null` for other billing types.
    - `fixedFee` number, nullable: Deprecated. Always `null`.
    - `fixedRecurringFee` number, nullable: Deprecated. Always `null`.
    - `fixedRecurringStart` string, nullable: Deprecated. Always `null`.
    - `fixedRecurringEnd` string, nullable: Deprecated. Always `null`.
    - `useRoles` boolean: Whether the project uses roles.
    - `useRateCards` boolean: Whether the project can have more than one dated rate card. See the project rate cards endpoints.
    - `useDependencies` boolean: Whether the project uses task dependencies. When disabled, tasks cannot have predecessors or successors.
    - `autoCompleteMilestones` boolean: Whether a milestone is automatically completed once all of its predecessors are complete. Has no effect when task dependencies are disabled.
    - `useBudget` boolean: Whether the project has a budget.
    - `budgetMode` 'summary' | 'detailed' | 'aggregated', nullable: The budget mode. `null` when `useBudget` is `false`.
    - `budgetRateCardId` string: The ID (`uuid`) of the rate card whose rates price the project's budget. See the project rate cards endpoints.
    - `useMonthlyBudget` boolean: Whether the project has a monthly budget.
    - `monthlyBudgetMode` 'summary' | 'detailed', nullable: The monthly budget mode. `null` when `useMonthlyBudget` is `false`.
    - `capMaxMemberHoursPerDay` boolean: When enabled, caps the number of hours a member can log per day on the project.
    - `maxMemberHoursPerDay` integer, nullable: The maximum number of hours a member can log per day on the project. Only used if `capMaxMemberHoursPerDay` is `true`. `null` when `capMaxMemberHoursPerDay` is `false`.
    - `capMaxMemberHoursPerWeek` boolean: When enabled, caps the number of hours a member can log per week on the project.
    - `maxMemberHoursPerWeek` integer, nullable: The maximum number of hours a member can log per week on the project. Only used if `capMaxMemberHoursPerWeek` is `true`. `null` when `capMaxMemberHoursPerWeek` is `false`.
    - `capMaxMemberHoursPerMonth` boolean: When enabled, caps the number of hours a member can log per month on the project.
    - `maxMemberHoursPerMonth` integer, nullable: The maximum number of hours a member can log per month on the project. Only used if `capMaxMemberHoursPerMonth` is `true`. `null` when `capMaxMemberHoursPerMonth` is `false`.
    - `requiresNotes` boolean: Requires notes on time entries for this project.
    - `requiresTasks` boolean: Requires a task selection on time entries for this project.
    - `recordStatusId` 'active' | 'archived': The record status of the project.
    - `isProductive` boolean, nullable: Whether time logged on this project counts as productive time. Only applicable for internal client projects; `null` for external client projects.
    - `lockTimeAndExpenses` boolean: When enabled, locks time and expenses on the project, preventing further edits.
    - `trackTimeToAssignedRoles` boolean, nullable: Whether time should be tracked per assigned role. Only applies when `useRoles` is `true`. `null` when `useRoles` is `false`.
    - `restrictTimeToAllocatedDays` boolean: When enabled, members can only log time on days they are allocated to the project.
    - `cloudFolderUrl` string, nullable: The URL to the associated cloud storage folder.
    - `createdAt` string, date-time: The timestamp when the object was created.
    - `modifiedAt` string, date-time: The timestamp when the object was last modified.
    - `completedOn` string, date, nullable: The date the project was completed. Only populated when `statusId` is `"completed"`.
    - `client` object: The client associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the client.
    - `practice` object, nullable: The practice associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the practice.
    - `projectType` object, nullable: The project type associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the project type.
    - `projectGroup` object, nullable: The project group associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the project group.
    - `tags` object[]: The tags associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the tag.
    - `salesRepresentative` object, nullable: The sales representative for the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the member.
    - `businessUnit` object, nullable: The business unit associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the business unit.
    - `budget` object, nullable: The overall budget targets for the project. `null` when `useBudget` is `false`.
      - `revenue` number: The total budgeted revenue.
      - `servicesRevenue` number: The budgeted services revenue.
      - `productRevenue` number: The budgeted product revenue.
      - `otherRevenue` number: The budgeted revenue from other items.
      - `billableExpenses` number: The budgeted billable expenses cost.
      - `nonBillableExpenses` number: The budgeted non-billable expenses cost.
      - `billableHours` number: The budgeted billable hours.
      - `nonBillableHours` number: The budgeted non-billable hours.
    - `monthlyBudget` object, nullable: The monthly budget targets for the project. `null` when `useMonthlyBudget` is `false`.
      - `revenue` number: The total budgeted monthly revenue.
      - `servicesRevenue` number: The budgeted monthly services revenue.
      - `productRevenue` number: The budgeted monthly product revenue.
      - `otherRevenue` number: The budgeted monthly revenue from other items.
      - `billableExpenses` number: The budgeted monthly billable expenses cost.
      - `nonBillableExpenses` number: The budgeted monthly non-billable expenses cost.
      - `billableHours` number: The budgeted monthly billable hours.
      - `nonBillableHours` number: The budgeted monthly non-billable hours.
    - `integrations` object[]: The accounting integration mappings for this project. Each entry ties the project to a record in an external accounting system. Empty when no integrations are configured.
      - `type` 'qbo': The accounting integration provider.
      - `connectionId` string: The Ruddr accounting connection ID associated with this mapping.
      - `externalId` string: The identifier of the corresponding record in the external accounting system.
  - `hasMore` boolean: Whether there are more results available after this page.

## Other responses

- `400`: 400

---

[API](https://skmtc.dev/ruddr/apis/ruddr-api.md) · [All operations](https://skmtc.dev/ruddr/apis/ruddr-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruddr/apis/ruddr-api/revisions/01c3f2a969ba?raw)
