> ## Documentation Index
> Fetch the complete documentation index at: https://developers.projectcor.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Project

> Updates an existing project in your COR instance using its external ID

Updates an existing project in your COR instance using its external ID. Only the fields provided in the request body will be updated; other fields remain unchanged.

## Path Parameters

<ParamField path="id" type="string" required>
  External project ID that was used when creating the project
</ParamField>

## Request Body Requirements

The `metadata.source` field is required. All other fields are optional — only provided fields will be updated.

<ParamField body="metadata" type="object" required>
  <Expandable title="properties">
    <ParamField body="source" type="string" required>
      Integration source identifier. Must match the source used when creating the project.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="name" type="string">
  Updated project name
</ParamField>

<ParamField body="client_id" type="string">
  External client ID
</ParamField>

<ParamField body="brief" type="string">
  Updated project description
</ParamField>

<ParamField body="start" type="string">
  Project start date in `YYYY-MM-DD` format
</ParamField>

<ParamField body="end" type="string">
  Project end date in `YYYY-MM-DD` format
</ParamField>

<ParamField body="pm_id" type="string">
  External project manager user ID
</ParamField>

<ParamField body="estimated_time" type="number">
  Estimated hours for the project
</ParamField>

<ParamField body="billable" type="boolean">
  Whether the project is billable
</ParamField>

<ParamField body="status" type="string">
  Project status
</ParamField>

<ParamField body="currency_id" type="string">
  External currency ID
</ParamField>

<ParamField body="evaluation_date" type="string">
  Project evaluation date in `YYYY-MM-DD` format
</ParamField>

<ParamField body="estimated" type="number">
  Estimated monetary value for the project
</ParamField>

<ParamField body="fee_id" type="string">
  External fee ID
</ParamField>

<ParamField body="contract_id" type="string">
  External contract ID
</ParamField>

<ParamField body="deliverables" type="string">
  Project deliverables description
</ParamField>

<ParamField body="work_order" type="string">
  Work order number or code
</ParamField>

<ParamField body="income_type" type="string">
  Income type for the project. Possible values: `fee`, `one_time`, `hourly_rate`, `contract`
</ParamField>

<ParamField body="archived" type="boolean" default="false">
  Whether the project is archived
</ParamField>

## Known Errors

* `ProjectNotFoundError` — No project found with the specified external ID for this source
* `ValidationError` — Missing required `metadata.source` field
* `InvalidDateRangeError` — The `start` date is after the `end` date

<RequestExample>
  ```bash cURL theme={null}
  curl --location --request PUT 'https://integrations.projectcor.com/v2/integrations/projects/SF-OPP-12345' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "metadata": {
      "source": "SALESFORCE"
    },
    "name": "Website Redesign Project - Phase 2",
    "end": "2025-04-30",
    "estimated_time": 250,
    "status": "in_progress",
    "estimated": 18000
  }'
  ```

  ```python Python theme={null}
  import requests

  url = "https://integrations.projectcor.com/v2/integrations/projects/SF-OPP-12345"

  payload = {
      "metadata": {
          "source": "SALESFORCE"
      },
      "name": "Website Redesign Project - Phase 2",
      "end": "2025-04-30",
      "estimated_time": 250,
      "status": "in_progress",
      "estimated": 18000
  }

  headers = {
      "Authorization": "Bearer YOUR_ACCESS_TOKEN",
      "Content-Type": "application/json"
  }

  response = requests.put(url, json=payload, headers=headers)
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://integrations.projectcor.com/v2/integrations/projects/SF-OPP-12345',
    {
      method: 'PUT',
      headers: {
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        metadata: {
          source: 'SALESFORCE'
        },
        name: 'Website Redesign Project - Phase 2',
        end: '2025-04-30',
        estimated_time: 250,
        status: 'in_progress',
        estimated: 18000
      })
    }
  );

  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": 155693,
    "name": "Website Redesign Project - Phase 2",
    "client_id": 25855,
    "brief": "Complete website overhaul including new branding",
    "start": "2025-01-15 00:00:00",
    "end": "2025-04-30 00:00:00",
    "pm_id": 8546,
    "estimated_time": 250,
    "billable": true,
    "status": "in_progress",
    "estimated": 18000,
    "company_id": 1234,
    "created_at": "2025-01-10T14:30:00Z",
    "updated_at": "2025-01-15T10:00:00Z"
  }
  ```

  ```json 404 theme={null}
  {
    "error": "ProjectNotFoundError",
    "message": "Project with external ID 'SF-OPP-12345' not found for source SALESFORCE",
    "code": "ZC004"
  }
  ```
</ResponseExample>
