---
title: "Updates an existing project. Only fields listed in the FieldsToUpdate array will be modified. When ProjectBillableTypeCode is updated, use ScheduleRateUpdateOption and TimesheetRateUpdateOption to control whether rate changes cascade to existing schedule bookings and timesheet entries respectively."
method: PUT
path: "/api/Project"
tags: ["Project"]
---

# Updates an existing project. Only fields listed in the FieldsToUpdate array will be modified. When ProjectBillableTypeCode is updated, use ScheduleRateUpdateOption and TimesheetRateUpdateOption to control whether rate changes cascade to existing schedule bookings and timesheet entries respectively.

`PUT /api/Project`

## Request body

- UpdateProjectModel — Request model for updating an existing project. Only fields in FieldsToUpdate are modified.
  - `ProjectID` integer — The ID of the Project to update
  - `FieldsToUpdate` string[] — A string array of field names to be updated. Only listed fields will be modified.
  - `ProjectTitle` string — (optional) An updated project title. (255 characters max)
  - `ProjectNotes` string — (optional) Any descriptive notes about the project. (2000 characters max)
  - `TimesheetApprovalRequiredbyDefault` boolean — Whether timesheet approval should be required by default for newly added project members.
  - `isTaskRequiredOnTimesheet` boolean — Whether timesheets entered against this project require a task to be selected.
  - `StartDate` string, date-time — Planned start date for the project.
  - `EndDate` string, date-time — Planned end date for the project.
  - `BudgetAmount` number, double — Monetary budget allocated to the project.
  - `BudgetHours` number, double — Hours budget allocated to the project.
  - `ProjectStatusCode` string — Update the project status (string, optional): (Possible values: NotStarted, InProgress, Complete, OnHold)
  - `ProjectCategoryIDFK` integer — The project category ID, if categorised.
  - `ProjectBillableTypeCode` string — The billing method of the project. (string, optional) Possible values: CategoryHourly, NoRate, NotBillable, PersonHourly, ProjectHourly
  - `ProjectBudgetTypeCode` string — The project budgeting type. (string, optional) Possible values: NoBudget, PersonHours, ProjectFees, ProjectHours, CategoryHours
  - `ScheduleRateUpdateOption` string — Controls whether updated rates are applied to existing schedule bookings when ProjectBillableTypeCode changes. Possible values: "new" (default, only new bookings), "all" (all existing bookings), "active" (bookings with end date in the future). Only applies when ProjectBillableTypeCode is included in FieldsToUpdate.
  - `TimesheetRateUpdateOption` string — Controls whether updated rates are applied to existing timesheet entries when ProjectBillableTypeCode changes. Possible values: "new" (do not update existing timesheets), "uninvoiced" (update all existing uninvoiced timesheets). Defaults to "uninvoiced" if not specified, to preserve backwards compatibility. Only applies when ProjectBillableTypeCode is included in FieldsToUpdate.
  - `ProjectTags` ProjectTagInput[] — Desired final set of tags on the project (replace semantics). Object array; each item has a Name. Only applied when "ProjectTags" is present in FieldsToUpdate. An empty array removes all of the project's tag associations. Names are matched case-insensitively against the account tag pool and created on first use. (255 characters max per name)
    - `Name` string — Tag name. (255 characters max)
  - `SendWebhooks` boolean — If true, fires the project_updated webhook event to any subscribed endpoints. Defaults to false to preserve existing integration behaviour.

## Response `200`

Returns the updated project details.

- ProjectDetails — Full project details including sections, team members with rates/permissions, and project tags.
  - `ProjectID` integer — Unique identifier for the project.
  - `Title` string — Project title/name.
  - `ProjectCode` string — Short reference code for the project.
  - `Notes` string — Project description or notes.
  - `CompanyName` string — Name of the customer company this project belongs to.
  - `CompanyIDFK` integer — The customer company ID this project is linked to.
  - `ProjectOwnerUserIDFK` integer — User ID of the project owner/manager.
  - `ProjectStatusCode` string — Project status code. Per-account configurable. Default codes (NotStarted, InProgress, Complete, OnHold) are seeded for every account; admins may add custom codes via the Project Statuses settings panel. Codes are unique within an account and stable once created.
  - `ProjectStatusName` string — Display name of the project status (e.g. "In Progress", "At Risk").
  - `ProjectStatusColor` string — Hex colour assigned to the project status (e.g. "#F0AD4E").
  - `ProjectStatusIsNotStarted` boolean — True if this is the account's default-for-new-projects status (one row per account).
  - `ProjectStatusIsComplete` boolean — True if this status marks the project as complete (one row per account).
  - `isArchived` boolean — Whether the project is archived. Archived projects are hidden from default views.
  - `ProjectBillableTypeCode` string — Possible values: CategoryHourly, NoRate, NotBillable, PersonHourly, ProjectHourly
  - `ProjectBudgetTypeCode` string — Possible Values: CategoryHours, NoBudget, PersonHours, ProjectFees, ProjectHours
  - `BudgetAmount` number, double — Monetary budget allocated to the project.
  - `BudgetHours` number, double — Hours budget allocated to the project.
  - `ProjectHourlyRate` number, double — The project-level hourly rate (when billing type is ProjectHourly).
  - `ProjectCategoryIDFK` integer — The project category ID, if categorised.
  - `ProjectCategoryName` string — Name of the project category.
  - `isTaskRequiredOnTimesheet` boolean — Whether users must select a task when logging time to this project.
  - `DefaultAccountTaskTypeIDFK` integer — The default task type ID used for new tasks in this project.
  - `DefaultAccountTaskTypeName` string — Name of the default task type.
  - `ProjectCategoryColor` string — Html Hex Color Code starting with #
  - `StartDate` string, date-time — Planned start date for the project.
  - `EndDate` string, date-time — Planned end date for the project.
  - `Sections` ProjectSectionDetails[] — List of sections (task groups) within this project.
    - `SectionID` integer — Unique identifier for the section.
    - `Title` string — Section title/name.
    - `StartDate` string, date-time — Planned start date for the section.
    - `EndDate` string, date-time — Planned end date for the section.
    - `DisplayOrder` integer — Sort order position for display.
  - `Members` ProjectMemberDetails[] — List of team members assigned to this project.
    - `UserIDFK` integer — The user ID of the project member.
    - `ProjectIDFK` integer — The project this membership belongs to.
    - `Firstname` string — Member's first name.
    - `Lastname` string — Member's last name.
    - `Fullname` string — Member's full display name.
    - `Email` string — Member's email address.
    - `CostAmount` number, double — Cost rate per hour for this member on this project.
    - `RateAmount` number, double — Bill rate per hour for this member on this project.
    - `BudgetAmount` number, double — Budget amount allocated to this member on this project.
    - `isMemberDisabled` boolean — Whether this member's access to the project is disabled.
    - `isTimesheetAllowed` boolean — Whether this member can log timesheets to this project.
    - `isTimesheetApprover` boolean — Whether this member can approve timesheets on this project.
    - `isTimesheetApprovalRequired` boolean — Whether this member's timesheets require approval.
    - `canCreateTasks` boolean — Whether this member can create tasks in this project.
    - `canDeleteTasks` boolean — Whether this member can delete tasks in this project.
    - `canCommentOnTasks` boolean — Whether this member can comment on tasks in this project.
    - `canUpdateTasks` boolean — Whether this member can update tasks in this project.
  - `ProjectTags` ProjectTagItem[] — List of tags applied to this project.
    - `ProjectTagID` integer — Unique identifier for the project tag.
    - `Name` string — Tag name.
  - `DateCreated` string, date-time — Date the project was created.
  - `DateUpdated` string, date-time — Date the project was last updated.
  - `ViewProjectURL` string — URL to view this project in the Avaza web application.

---

[API](https://skmtc.net/avaza/apis/avaza-api-documentation.md) · [All operations](https://skmtc.net/avaza/apis/avaza-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/avaza/avaza-api-documentation/versions/1eeadf750514/schema)
