curl --request PATCH \
--url 'https://api.lovable.dev/v1/projects/project-id' \
--header 'Lovable-API-Key: lov_your-api-key' \
--header 'Lovable-Version: 2026-09-11' \
--header 'Content-Type: application/json' \
--data '{}'{
"created_at": "2026-01-15T09:30:00Z",
"description": "A landing page for Acme with a hero, features, and pricing.",
"id": "prj_01jw3k9m2xq8r5v0c7d4e6f2gh",
"is_published": true,
"last_edited_at": "2026-01-15T09:30:00Z",
"latest_commit_sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
"latest_screenshot_url": "https://screenshot2.lovable.dev/acme-landing-page.png",
"name": "Acme Landing Page",
"owner_id": "404666c6-b533-5d2c-9768-c425bf40559b",
"preview_url": "https://id-preview--fa8b85cf-b9ff-4f1c-989a-74c32d1326f4.lovable.app",
"publish_audience": "public",
"publish_audience_targets": [
{
"id": "grp_01jw3k9m2xq8r5v0c7d4e6f2gh",
"type": "group"
}
],
"visibility": "workspace_edit",
"workspace_id": "workspace_01jw3k9m2xq8r5v0c7d4e6f2gh"
}{
"detail": "validation failed",
"errors": [
{
"location": "body.members",
"message": "expected array length >= 1"
}
],
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 400,
"title": "Bad Request",
"type": "invalid_request"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 401,
"title": "Authorization header required",
"type": "unauthorized"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 402,
"title": "You need to upgrade your plan to access this feature",
"type": "payment_required"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 403,
"title": "You don't have the permissions to perform this action",
"type": "forbidden"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 404,
"title": "Not Found",
"type": "project_not_found"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 406,
"title": "This endpoint produces application/json. Send a matching Accept header, */*, or omit the header.",
"type": "not_acceptable"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 429,
"title": "Too Many Requests",
"type": "rate_limited"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 503,
"title": "Request timed out",
"type": "request_timeout"
}{
"detail": "validation failed",
"errors": [
{
"location": "body.workspace_id",
"message": "expected string"
}
],
"props": {
"finding_refs": [
"supabase/finding-1"
]
},
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 429,
"title": "Too Many Requests",
"type": "rate_limited"
}Update project
Plan: Business or higher
Scope: projects:write
Updates project sharing or the human-readable name. The description is generated by the agent and cannot be edited through this endpoint. Omitted fields keep their current values. This does not change access to the published app; use PATCH /v1/projects//publish for that.
curl --request PATCH \
--url 'https://api.lovable.dev/v1/projects/project-id' \
--header 'Lovable-API-Key: lov_your-api-key' \
--header 'Lovable-Version: 2026-09-11' \
--header 'Content-Type: application/json' \
--data '{}'{
"created_at": "2026-01-15T09:30:00Z",
"description": "A landing page for Acme with a hero, features, and pricing.",
"id": "prj_01jw3k9m2xq8r5v0c7d4e6f2gh",
"is_published": true,
"last_edited_at": "2026-01-15T09:30:00Z",
"latest_commit_sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
"latest_screenshot_url": "https://screenshot2.lovable.dev/acme-landing-page.png",
"name": "Acme Landing Page",
"owner_id": "404666c6-b533-5d2c-9768-c425bf40559b",
"preview_url": "https://id-preview--fa8b85cf-b9ff-4f1c-989a-74c32d1326f4.lovable.app",
"publish_audience": "public",
"publish_audience_targets": [
{
"id": "grp_01jw3k9m2xq8r5v0c7d4e6f2gh",
"type": "group"
}
],
"visibility": "workspace_edit",
"workspace_id": "workspace_01jw3k9m2xq8r5v0c7d4e6f2gh"
}{
"detail": "validation failed",
"errors": [
{
"location": "body.members",
"message": "expected array length >= 1"
}
],
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 400,
"title": "Bad Request",
"type": "invalid_request"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 401,
"title": "Authorization header required",
"type": "unauthorized"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 402,
"title": "You need to upgrade your plan to access this feature",
"type": "payment_required"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 403,
"title": "You don't have the permissions to perform this action",
"type": "forbidden"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 404,
"title": "Not Found",
"type": "project_not_found"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 406,
"title": "This endpoint produces application/json. Send a matching Accept header, */*, or omit the header.",
"type": "not_acceptable"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 429,
"title": "Too Many Requests",
"type": "rate_limited"
}{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 503,
"title": "Request timed out",
"type": "request_timeout"
}{
"detail": "validation failed",
"errors": [
{
"location": "body.workspace_id",
"message": "expected string"
}
],
"props": {
"finding_refs": [
"supabase/finding-1"
]
},
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 429,
"title": "Too Many Requests",
"type": "rate_limited"
}Authorizations
Lovable API key. Send its value in the Lovable-API-Key header.
Headers
Stable API version to serve, as a YYYY-MM-DD date. Omit for the oldest supported stable version, currently 2026-09-11.
Comma-separated beta revision strings to enable on top of the stable version.
Path Parameters
Project ID.
Body
Project display name, 1-100 Unicode code points. Must contain a non-whitespace character. Allows Unicode letters, combining marks, numbers, space separators (Zs), punctuation - _ . ' · & ( ) [ ] | , ! : ‘ ’, and the zero-width non-joiner/joiner U+200C/U+200D. Other characters (including 🚀, tabs, and line breaks), links, recognized domain names, and IP addresses are rejected. Leading and trailing spaces are preserved. Omit to keep the current name.
1 - 100"Acme Landing Page"
Who can open the project in the Lovable editor. restricted: only the project owner, invited collaborators, and the workspace owner (Business or Enterprise). workspace_edit: every workspace member, at the access level their workspace role grants. workspace_view: every workspace member, with the access their workspace role grants capped at read; explicit project, folder, and group grants still permit editing (Business or Enterprise). Published app access is configured separately via publish_audience. Omit to keep the current setting.
restricted, workspace_edit, workspace_view "workspace_edit"
Response
OK
When the project was created; null when unavailable.
"2026-01-15T09:30:00Z"
AI-written summary of what the project does; null until the agent has completed a response for the project.
"A landing page for Acme with a hero, features, and pricing."
Project ID.
"prj_01jw3k9m2xq8r5v0c7d4e6f2gh"
Whether the project is published.
true
When the project last received an edit or a user chat message; null when neither has happened.
"2026-01-15T09:30:00Z"
SHA of the latest commit; null before the first commit.
"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"
URL of the latest screenshot; null until one has been captured.
"https://screenshot2.lovable.dev/acme-landing-page.png"
Human-readable project name; null when none is set.
"Acme Landing Page"
Project owner user UUID, matching the OAuth subject for clients using derived UUIDs. Null when unavailable.
"404666c6-b533-5d2c-9768-c425bf40559b"
URL of the project's main preview. Serves the latest successful preview build at the same address across commits; it is not pinned to a commit or draft. Uses the workspace's branded hostname unless the project opts out, and may change when branding changes. Null when the environment has no preview host; a URL does not mean a preview build is ready. Contains no authentication token; opening it requires a Lovable login unless the project is publicly remixable. To embed it from a third-party origin, use POST /v1/projects/{project_id}/embed-url.
"https://id-preview--fa8b85cf-b9ff-4f1c-989a-74c32d1326f4.lovable.app"
Who can open the published app: the audience set via POST or PATCH /v1/projects/{project_id}/publish; null while the app is not published. More values may be added; clients must tolerate unknown values.
public, workspace, custom, null "public"
Groups and users who can open the published app when publish_audience is custom; empty for other audiences and while the app is offline. Users granted through invitations or organization membership are included; organization-wide access and pending email invitations are not listed.
Show child attributes
Show child attributes
Who can open the project in the Lovable editor. restricted: only the project owner, invited collaborators, and the workspace owner (Business or Enterprise). workspace_edit: every workspace member, at the access level their workspace role grants. workspace_view: every workspace member, with the access their workspace role grants capped at read; explicit project, folder, and group grants still permit editing (Business or Enterprise). Null when no setting is stored. Published app access is configured separately via publish_audience. More values may be added; clients must tolerate unknown values.
restricted, workspace_edit, workspace_view, null "workspace_edit"
Workspace the project belongs to.
"workspace_01jw3k9m2xq8r5v0c7d4e6f2gh"
Was this page helpful?