---
title: "Update a project"
method: PUT
path: "/projects/{id}"
tags: ["projects"]
---

# Update a project

`PUT /projects/{id}`

## Request

- Base URL: `https://api.onplana.com/api`
- URL: `https://api.onplana.com/api/projects/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `name` string
  - `description` string
  - `status` 'PLANNING' | 'ACTIVE' | 'ON_HOLD' | 'COMPLETED' | 'CANCELLED'
  - `startDate` string, date-time
  - `endDate` string, date-time
  - `statusDate` string, date, nullable: Status date (as-of) for progress reporting; null clears
  - `budget` number
  - `progress` integer

## Response `200`

Updated project

- Project
  - `id` string, uuid, required
  - `name` string, required
  - `status` 'PLANNING' | 'ACTIVE' | 'ON_HOLD' | 'COMPLETED' | 'CANCELLED', required
  - `progress` integer, required
  - `budget` number, nullable
  - `startDate` string, date-time, nullable
  - `endDate` string, date-time, nullable
  - `statusDate` string, date, nullable: The "as of" date for progress reporting; null means today
  - `autoSchedule` boolean: Automatic scheduling. False: editing a date or adding a link moves no other task; only Recalculate writes the dates the scheduler works out. Set with PUT /scheduling/projects/{id}/auto-schedule.
  - `parentDatesFromSubtasks` boolean: The default for a task with subtasks: true takes its start and due dates from them, unless the task's own isManual says otherwise. Read only while the server switch parent_date_rollup_enabled is on. Set with PUT /scheduling/projects/{id}/parent-dates.
  - `organizationId` string, uuid, required

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `403`: Forbidden - insufficient role

---

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