---
title: "Update Project"
method: PATCH
path: "/api/projects/{project_id}"
tags: ["projects"]
---

# Update Project

`PATCH /api/projects/{project_id}`

## Request

- Base URL: `https://api.electricair.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.electricair.io/api/projects/{project_id}`
- Auth: none declared

## Path parameters

- `project_id` integer, required

## Request body

- ProjectUpdateSchema
  - `status` string, nullable
  - `hers_status` string, nullable
  - `payment_status` string, nullable
  - `delivery_manager_id` integer, nullable
  - `notes` string, nullable
  - `installed_on` string, date, nullable
  - `final_inspection_on` string, date, nullable
  - `done_on` string, date, nullable

## Response `200`

OK

- ProjectDetailSchema
  - `id` integer, required
  - `deal_id` integer, required
  - `customer_name` string, required
  - `customer_phone` string, required
  - `address` string, required
  - `locality` string, required
  - `status` string, required
  - `status_label` string, required
  - `phase` string, required
  - `hers_status` string, required
  - `payment_status` string, required
  - `delivery_manager` UserRefSchema
    - `id` integer, required
    - `name` string, required
  - `contract_value` number, nullable
  - `sold_at` string, date-time, nullable
  - `completed_at` string, date-time, nullable
  - `days_in_status` integer, nullable
  - `permit_status` string, nullable
  - `permit_status_label` string, nullable
  - `incentive_summary` string, required
  - `loan_summary` string, required
  - `warranty_registered` boolean, required
  - `pre_install_checklist` integer[], required
  - `closeout_checklist` integer[], required
  - `customer_email` string, required
  - `installed_on` string, date, nullable
  - `final_inspection_on` string, date, nullable
  - `done_on` string, date, nullable
  - `notes` string, required
  - `quote_id` integer, nullable
  - `onboarding_items` ChecklistItemSchema[], required
    - `key` string, required
    - `label` string, required
    - `checked_at` string, nullable
  - `closeout_items` ChecklistItemSchema[], required
    - `key` string, required
    - `label` string, required
    - `checked_at` string, nullable
  - `permits` PermitSchema[], required
    - `id` integer, required
    - `project_id` integer, required
    - `deal_id` integer, required
    - `ahj_id` integer, nullable
    - `ahj_name` string, nullable
    - `jurisdiction_name` string, required
    - `name_override` string, required
    - `permit_number` string, required
    - `status` string, required
    - `status_label` string, required
    - `applied_by` string, required
    - `responsible` UserRefSchema
      - `id` integer, required
      - `name` string, required
    - `permit_fee` number, nullable
    - `processing_fee` number, nullable
    - `other_costs` number, nullable
    - `total_cost` number, required
    - `applied_on` string, date, nullable
    - `issued_on` string, date, nullable
    - `expires_on` string, date, nullable
    - `days_to_issue` integer, nullable
    - `inspection_at` string, date-time, nullable
    - `requires_onsite_inspection` boolean, required
    - `is_closed` boolean, required
    - `status_changed_at` string, date-time, nullable
    - `project` ProjectRefSchema
      - `id` integer, required
      - `deal_id` integer, required
      - `customer_name` string, required
      - `address` string, required
      - `locality` string, required
      - `status` string, required
      - `status_label` string, required
      - `phase` string, required
    - `note_count` integer
    - `latest_note` string, nullable
    - `latest_note_at` string, date-time, nullable
    - `latest_note_author` string, nullable
  - `incentive_applications` IncentiveApplicationSchema[], required
    - `id` integer, required
    - `project_id` integer, required
    - `deal_id` integer, required
    - `incentive_id` string, nullable
    - `incentive_quote_id` integer, nullable
    - `on_contract` boolean, required
    - `name` string, required
    - `program_name` string, required
    - `status` string, required
    - `status_label` string, required
    - `requires_preapproval` boolean, required
    - `payee` string, required
    - `expected_amount` number, nullable
    - `received_amount` number, nullable
    - `reservation_number` string, required
    - `reservation_expires_on` string, date, nullable
    - `submitted_on` string, date, nullable
    - `responsible` UserRefSchema
      - `id` integer, required
      - `name` string, required
    - `is_closed` boolean, required
    - `status_changed_at` string, date-time, nullable
    - `project` ProjectRefSchema
      - `id` integer, required
      - `deal_id` integer, required
      - `customer_name` string, required
      - `address` string, required
      - `locality` string, required
      - `status` string, required
      - `status_label` string, required
      - `phase` string, required
    - `note_count` integer
    - `latest_note` string, nullable
    - `latest_note_at` string, date-time, nullable
    - `latest_note_author` string, nullable
  - `loans` LoanSchema[], required
    - `id` integer, required
    - `project_id` integer, required
    - `finance_program` RefSchema
      - `id` integer, required
      - `name` string, required
    - `finance_to_quote_id` integer, nullable
    - `on_contract` boolean, required
    - `name` string, required
    - `lender_name` string, required
    - `status` string, required
    - `status_label` string, required
    - `amount` number, nullable
    - `approved_on` string, date, nullable
    - `expires_on` string, date, nullable
    - `funded_on` string, date, nullable
    - `document_link` string, required
    - `is_closed` boolean, required
    - `status_changed_at` string, date-time, nullable
    - `project` ProjectRefSchema
      - `id` integer, required
      - `deal_id` integer, required
      - `customer_name` string, required
      - `address` string, required
      - `locality` string, required
      - `status` string, required
      - `status_label` string, required
      - `phase` string, required
    - `note_count` integer
    - `latest_note` string, nullable
    - `latest_note_at` string, date-time, nullable
    - `latest_note_author` string, nullable
  - `equipment` EquipmentSchema[], required
    - `id` integer, required
    - `project_id` integer, required
    - `kind` string, required
    - `kind_label` string, required
    - `manufacturer` string, required
    - `model_number` string, required
    - `serial_number` string, required
    - `warranty_years` integer, nullable
    - `registration_number` string, required
    - `registered_at` string, date-time, nullable
    - `registered_by` UserRefSchema
      - `id` integer, required
      - `name` string, required
    - `notes` string, required
  - `contract` ProjectContractSchema
    - `id` integer, required
    - `quote_id` integer, required
    - `signed_at` string, date-time, nullable
    - `url` string, required
    - `kind` 'signed' | 'custom' | 'generated', required
  - `sold_scope` SoldScopeSchema, required
    - `quote_id` integer, nullable
    - `contract_id` integer, nullable
    - `contract_signed_at` string, date-time, nullable
    - `contract_subtotal` number, nullable
    - `ahjs` SoldAhjSchema[], required
      - `ahj_id` integer, required
      - `name` string, required
      - `is_primary` boolean, required
      - `permit_id` integer, nullable
      - `permit_status` string, nullable
      - `permit_status_label` string, nullable
      - `requirements` SoldRequirementSchema[], required
        - `id` integer, required
        - `title` string, required
        - `category` string, required
        - `description` string, required
        - `on_quote` boolean, required
    - `incentives` SoldIncentiveSchema[], required
      - `incentive_quote_id` integer, required
      - `incentive_id` string, required
      - `name` string, required
      - `quantity` integer, required
      - `amount` number, nullable
      - `instant` boolean, required
      - `application_id` integer, nullable
      - `application_status` string, nullable
      - `application_status_label` string, nullable
      - `application_amount` number, nullable
    - `financing` SoldFinancingSchema[], required
      - `finance_to_quote_id` integer, required
      - `name` string, required
      - `amount` number, nullable
      - `program_id` integer, nullable
      - `loan_id` integer, nullable
      - `loan_status` string, nullable
      - `loan_status_label` string, nullable
      - `loan_amount` number, nullable
    - `mismatches` AttentionSchema[], required
      - `area` string, required
      - `label` string, required
      - `severity` string, required

## Changes

> 22 revisions in range; 1 not diffed.

- **2026-10-25** `b83021506ece`: 6 info
  - added the new optional request property `done_on`
  - added the new optional request property `final_inspection_on`
  - added the new optional request property `installed_on`
  - added the optional property `done_on` to the response with the `200` status
  - …2 more
- **2026-10-25** `a181801f95f1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/electricair/apis/electric-air-autoquote-api/changes/api/projects/:project_id/patch.md)

---

[API](https://skmtc.dev/electricair/apis/electric-air-autoquote-api.md) - [All operations](https://skmtc.dev/electricair/apis/electric-air-autoquote-api/llms.txt) - [OpenAPI document](https://skmtc.dev/electricair/apis/electric-air-autoquote-api/revisions/a13d832a5676?raw)
