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

# Update Project

`PATCH /projects/{project_id}`

Update a project's metadata.

Only provided fields will be updated. Project names must remain unique
per team (the ``unique_active_project_name_per_team`` index): no two
projects in the same team may share a name. User must be a member of
the project's team.

## Path parameters

- `project_id` string, uuid, required

## Request body

- ProjectUpdate — Request model for updating a project. ``autonomy_enabled`` is not an accepted field — it is derived from ``adaptive_cadence`` and must not be sent directly. Sending an unknown field (e.g. the old ``autonomy_enabled``) raises a 422 so callers learn to migrate to ``adaptive_cadence``.
  - `name` string, nullable — New name for the project
  - `icon` string, nullable — New icon identifier for the project
  - `repo` string, nullable — New repository reference or URL
  - `description` string, nullable — New project description
  - `tag` string, nullable — Short kebab-case label set by clustering agent
  - `observations` string, nullable — Free-text agent notes about patterns observed
  - `active_model_id` string, nullable — Active model ID for inference
  - `selected_model_id` string, nullable — [Deprecated] Use active_model_id instead.
  - `visibility` 'private' | 'team', nullable — Who can see this project: private (creator only) or team (all team members).
  - `adaptive_cadence` 'off' | 'daily' | 'weekly' | 'monthly' — User-facing cadence preset for autonomous adaptive finetuning runs.
  - `router_type` string, nullable — When set, makes this project a router that selects a model per request. Must be a registered router id.
  - `routing_params` object, nullable — Router policy configuration; validated against the router_type schema.

## Response `200`

Successful Response

- ProjectResponse — Response model for a single project.
  - `id` string, required
  - `user_id` string, required
  - `name` string, required
  - `icon` string
  - `repo` string, nullable
  - `description` string, nullable
  - `active_model_id` string, nullable
  - `tag` string, nullable
  - `observations` string, nullable
  - `example` object, nullable
  - `team_id` string, required
  - `visibility` string
  - `adaptive_cadence` 'off' | 'daily' | 'weekly' | 'monthly' — User-facing cadence preset for autonomous adaptive finetuning runs.
  - `autonomy_enabled` boolean
  - `router_type` string, nullable
  - `routing_params` object
  - `created_at` string, required
  - `updated_at` string, required
  - `selected_model_id` string, nullable, required — Deprecated alias for active_model_id -- kept for backward compat.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/pioneer/apis/brain-api.md) · [All operations](https://skmtc.net/pioneer/apis/brain-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pioneer/brain-api/versions/31dfe831e079/schema)
