---
title: "Get a project"
method: GET
path: "/projects/{id}"
tags: ["Projects"]
---

# Get a project

`GET /projects/{id}`

## Request

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

## Path parameters

- `id` string, required

## Response `200`

200

- Project
  - `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.

## Other responses

- `400`: 400
- `404`: 404

---

[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)
