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

# Update project

`PATCH /v1/projects/{project_id}`

**Plan:** `All plans`

Updates supported project fields such as visibility and display_name.

## Path parameters

- `project_id` string, required — Project ID

## Request body

- PublicV1PatchProjectBody
  - `description` string — Project description. Does not affect generated_description, which the agent maintains on its own.
  - `display_name` string — Project display name
  - `visibility` 'draft' | 'private' | 'public' | 'workspace_view' — Project visibility

## Response `200`

OK

- V1ProjectResponse
  - `created_at` string, date-time — When the project was created.
  - `description` string — Description supplied by the caller on create or update.
  - `display_name` string — Human-readable project name.
  - `folder_id` string — Folder the project belongs to, if any.
  - `generated_description` string — AI-written summary of what the project does. Absent until the agent has completed a response for the project.
  - `id` string, required — Project ID.
  - `is_published` boolean — Whether the project is published.
  - `last_edited_at` string, date-time — When the project was last edited.
  - `latest_commit_sha` string — SHA of the latest commit
  - `latest_screenshot_url` string — URL of the latest screenshot.
  - `name` string — Project slug.
  - `og_image_url` string — Open Graph image URL.
  - `preview_url` string — Static-preview URL for the project, on the workspace's branded host when it has one. Resolves once the first build completes. Opening it requires a Lovable login unless the project is publicly remixable; to frame it from a third-party origin without one, mint an origin-bound token via POST /v1/projects/{project_id}/embed-url.
  - `project_type` string — Project type. One of: project, library. Absent on older projects. More values may be added; clients must tolerate unknown values.
  - `publish_visibility` string — Published visibility. One of: public, private. More values may be added; clients must tolerate unknown values.
  - `status` string — Project status. One of: in_progress, completed, failed. More values may be added; clients must tolerate unknown values.
  - `tech_stack` string — Project tech stack.
  - `updated_at` string, date-time — When the project was last updated.
  - `url` string — Published project URL.
  - `user_id` string — Project owner user ID.
  - `visibility` string — Project visibility: draft, private, workspace_view, or public.
  - `workspace_id` string, required — Workspace the project belongs to.

## Other responses

- `401` — Missing or invalid API key.
- `402` — This operation or requested configuration requires a workspace plan that includes this feature.
- `403` — The key or caller lacks the required scope or permission.
- `406` — The Accept header excludes every media type this endpoint produces.
- `429` — Too many requests. Retry after the interval in Retry-After when present.
- `default` — Error. The response body uses the standard error envelope; status matches the HTTP status code and type is a machine-readable error code.

---

[API](https://skmtc.dev/lovable/apis/lovable-api.md) · [All operations](https://skmtc.dev/lovable/apis/lovable-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/lovable/lovable-api/revisions/7fd7141a8e7c/schema)
