---
title: "WorkspaceProject"
method: PUT
path: "/workspaces/{workspace_id}/projects/{project_id}"
tags: ["projects"]
---

# WorkspaceProject

`PUT /workspaces/{workspace_id}/projects/{project_id}`

## Request

- Base URL: `https://localhost:8080/api/v9`
- URL: `https://localhost:8080/api/v9/workspaces/{workspace_id}/projects/{project_id}`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/toggl/apis/toggl-api/docs/workspaces/:workspace_id/projects/:project_id/put.ts> (a function with typed inputs; its response is checked against the schema)

Update project for given workspace.

## Path parameters

- `workspace_id` integer, required
- `project_id` integer, required

## Request body

- ProjectPayload
  - `active` boolean: Whether the project is active or archived
  - `auto_estimates` boolean: Whether estimates are based on task hours, optional, premium feature
  - `billable` boolean: Whether the project is set as billable, optional, premium feature
  - `cid` integer: Client ID, legacy
  - `client_id` integer: Client ID, optional
  - `client_name` string: Client name, optional
  - `color` string: Project color
  - `currency` string: Project currency, optional, premium feature
  - `end_date` string: End date of a project timeframe
  - `estimated_hours` integer: Estimated hours, optional, premium feature
  - `fixed_fee` number: Project fixed fee, optional, premium feature
  - `is_private` boolean: Whether the project is private or not
  - `name` string: Project name
  - `rate` number: Hourly rate, optional, premium feature
  - `rate_change_mode` string: Rate change mode, optional, premium feature. Can be "start-today", "override-current", "override-all"
  - `recurring` boolean: Project is recurring, optional, premium feature
  - `recurring_parameters` ProjectRecurringParameters
    - `custom_period` integer: Recurring custom period, the "period" field must be "custom"
    - `period` string: Recurring period, example "monthly"
    - `project_start_date` string: Recurring start date
  - `start_date` string: Start date of a project timeframe
  - `template` boolean: Project is template, optional, premium feature
  - `template_id` integer: Template ID, optional

## Response `200`

Successful operation.

- ModelsProject
  - `active` boolean: Whether the project is active or archived
  - `actual_hours` integer, nullable: Actual hours
  - `actual_seconds` integer, nullable: Actual seconds
  - `at` string: Last updated date
  - `auto_estimates` boolean, nullable: Whether estimates are based on task hours, premium feature
  - `billable` boolean, nullable: Whether the project is billable, premium feature
  - `cid` integer: Client ID legacy field
  - `client_id` integer, nullable: Client ID
  - `color` string: Color
  - `created_at` string: Creation date
  - `currency` string, nullable: Currency, premium feature
  - `current_period` ModelsRecurringPeriod
    - `end_date` string
    - `start_date` string
  - `end_date` string: End date
  - `estimated_hours` integer, nullable: Estimated hours
  - `estimated_seconds` integer, nullable: Estimated seconds
  - `fixed_fee` number: Fixed fee, premium feature
  - `guid` string: GUID
  - `id` integer: Project ID
  - `is_private` boolean: Whether the project is private
  - `name` string: Name
  - `permissions` string
  - `rate` number: Hourly rate
  - `rate_last_updated` string, nullable: Last date for rate change
  - `recurring` boolean: Whether the project is recurring, premium feature
  - `recurring_parameters` ModelsRecurringProjectParameters[]: Project recurring parameters, premium feature
    - `custom_period` integer: Custom period, used when "period" field is "custom"
    - `estimated_seconds` integer: Estimated seconds
    - `parameter_end_date` string, nullable: Recurring end date
    - `parameter_start_date` string: Recurring start date
    - `period` string: Period
    - `project_start_date` string: Project start date
  - `server_deleted_at` string, nullable: Deletion date
  - `start_date` string: Start date
  - `status` string: Status of the project (upcoming, active, ended, archived, deleted)
  - `template` boolean, nullable: Whether the project is used as template, premium feature
  - `template_id` integer, nullable: Template ID
  - `wid` integer: Workspace ID legacy field
  - `workspace_id` integer: Workspace ID

## Other responses

- `400`: Possible errors:<ul><li>Client with the ID {client ID} isn't present in workspace {workspace ID}</li><li>Error in validating color '{color}'. Project color must be a hex value in the form of #[0-9a-f]{6}.</li></ul>
- `403`: Possible errors:<ul><li>Only admins may create projects in this workspace</li><li>User does not have access to this resource.</li></ul>
- `500`: Internal Server Error

---

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