projects

Plan: Business or higher

Scope: workspaces:read

Returns projects across the selected workspaces in one cursor-paginated list, sorted by last edited time descending then project ID ascending. Projects without a last edit use their update time for ordering; projects with neither sort last. Repeat workspace_id to select up to 10 workspaces. Every selected workspace must pass authorization; any failure rejects the whole request. Workspace-scoped API keys remain limited to their own workspace. Cursors are bound to the selected workspace set and filters. Reads are eventually consistent: recent changes may not appear immediately. Retry the read with backoff if an expected change is missing.

get/v1/projects

Request

  • Base URL
    https://api.lovable.dev
  • Auth
    • API key in header Lovable-API-Key
    • or HTTP bearer

Query parameters

workspace_idstring[] required

Workspace IDs to list projects from. Repeat the parameter to select up to 10 workspaces; duplicates are ignored. Every workspace must be accessible to the caller. Workspace-scoped API keys can select only their own workspace.

[
  "workspace_01jw3k9m2xq8r5v0c7d4e6f2gh"
]
visibilitystring[]

Filter by the visibility field. Repeat to match any of the values. Omit to include every level you can access.

[
  "workspace_edit"
]
is_publishedboolean

Filter by whether the project is published. Omit for no filter.

Example:true
publish_audiencestring[]

Filter published projects by the publish_audience field, resolved the same way the response resolves it, including the workspace default. Repeat to match any value. Omit for no filter. Requires is_published to be true or omitted.

[
  "workspace"
]
folder_idstring[]

Filter by the folder_id field: projects placed directly in the folder, not those in folders nested inside it. Repeat to match any of the folders, for example a folder and its children from GET /v1/workspaces/{workspace_id}/folders. Omit for no filter.

[
  "fold_01jw3k9m2xq8r5v0c7d4e6f2gh"
]
is_in_folderboolean

Filter by whether the project is in a folder. false selects projects whose folder_id is null. Omit for no filter. Cannot be false when folder_id is set.

Example:true
querystring

Search project names, generated descriptions, and owner names or email addresses. Terms shorter than 3 characters are ignored.

Example:landing
limitinteger

Maximum number of items to return per page.

Example:50
cursorstring

Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages.

Headers

Lovable-Versionstring

Stable API version to serve, as a YYYY-MM-DD date. Omit for the oldest supported stable version, currently 2026-09-11.

Lovable-Betastring

Comma-separated beta revision strings to enable on top of the stable version.

Response

OK

Example response

{
  "data": [
    {
      "created_at": "2026-01-15T09:30:00Z",
      "description": "A landing page for Acme with a hero, features, and pricing.",
      "folder_id": "fold_01jw3k9m2xq8r5v0c7d4e6f2gh",
      "id": "prj_01jw3k9m2xq8r5v0c7d4e6f2gh",
      "is_published": true,
      "last_edited_at": "2026-01-15T09:30:00Z",
      "latest_screenshot_url": "https://screenshot2.lovable.dev/acme-landing-page.png",
      "name": "Acme Landing Page",
      "owner_id": "404666c6-b533-5d2c-9768-c425bf40559b",
      "publish_audience": "public",
      "visibility": "workspace_edit",
      "workspace_id": "workspace_01jw3k9m2xq8r5v0c7d4e6f2gh"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "eyJ2IjoxLCJpZCI6InByal8wMWp3M2s5In0"
  }
}

Changes

    • info

      added the new optional query request parameter folder_id

    • info

      added the new optional query request parameter is_in_folder

    • info

      added the required property // to the response with the status

    • warning

      deleted the query request parameter type

    • info

      for the header request parameter Lovable-Version, the format was generalized from date to no format

    • info

      added the non-success response with the status