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

# Update Factory Project

`PATCH /api/factory/projects/{project_id}`

## Request

- Base URL: `https://api.ruzora.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ruzora.com/api/factory/projects/{project_id}`
- Auth: HTTP bearer

Update a factory project.

## Path parameters

- `project_id` string, required

## Request body

- FactoryProjectUpdate
  - `title` string, nullable
  - `description` string, nullable
  - `tech_stack` string[], nullable
  - `status` string, nullable
  - `total_price_cents` integer, nullable
  - `start_date` string, date, nullable
  - `target_delivery_date` string, date, nullable
  - `actual_delivery_date` string, date, nullable
  - `staging_url` string, nullable
  - `production_url` string, nullable
  - `repo_url` string, nullable
  - `assigned_pm_id` string, nullable
  - `contract_id` string, nullable
  - `sow_contract_id` string, nullable
  - `maintenance_contract_id` string, nullable
  - `notes` string, nullable
  - `billing_model` string, nullable: monthly|milestone|split
  - `monthly_rate_cents` integer, nullable
  - `payment_schedule` string, nullable: JSON for split billing model

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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