---
title: "Update a project"
method: PUT
path: "/demand/accounts/{account_id}/projects/{project_id}"
tags: ["Projects"]
---

# Update a project

`PUT /demand/accounts/{account_id}/projects/{project_id}`

## Request

- Base URL: `https://api.cint.com/v1`
- URL: `https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/cint/apis/demand-api/docs/demand/accounts/:account_id/projects/:project_id/put.ts> (a function with typed inputs; its response is checked against the schema)

This endpoint updates the details of an existing project.

To prevent race conditions, this endpoint uses optimistic locking. You must provide the `If-Match` header with the `ETag` value of the resource you intend to update.

You can get the latest `ETag` by performing a `GET` request on the project first.

## Headers

- `If-Match` string, etag, required
- `idempotency-key` string, required: A shallow unique ID used as part of the deduplication mechanism for mutable operations. We suggest using UUIDv4 or another random string with sufficient entropy to avoid collisions.

## Request body

- ProjectInfoUpdate: The request payload for updating an existing project.
  - `name` string, required: The name of the project. Any leading or trailing whitespace will be trimmed.
  - `project_manager_id` string, uuid, required: A unique identifier for the user.
  - `project_customer_reference_number` string, nullable, required: A customer-provided reference number assigned to the project. :::danger Deletion Warning If this field is omitted from the request body during an update, the existing customer reference number will be permanently deleted. :::

## Response `200`

Returns the updated project's `id` and `human_readable_id`.

- ProjectIDWithHumanReadableIDResponse: The response payload containing a project's `id` and `human_readable_id`.
  - `id` string: The character string representing a unique project ID (ULID format).
  - `human_readable_id` string: The project's human-readable ID. This ID is unique within the scope of an account.

## Other responses

- `400`: A request is not valid and can't be processed.
- `401`: A request is unauthorized.
- `403`: A requested is forbidden.
- `404`: A requested resource isn't found.
- `412`: The resource could not be modified because the ETag in the If-Match header does not match the current version. This means the resource was updated by another request after you retrieved it.
- `500`: A request failed due to an internal error.

---

[API](https://skmtc.dev/cint/apis/demand-api.md) - [All operations](https://skmtc.dev/cint/apis/demand-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cint/apis/demand-api/revisions/077a4bdda5cb?raw)
