> ## Documentation Index
> Fetch the complete documentation index at: https://docs.browsary.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Projects

> Create workspaces and manage their metadata before using project-scoped APIs.

Projects are the top-level containers for pipelines, functions, MCP servers, and browser sessions. Every project is addressable by slug or UUID via the `/:project/api/...` routes.

## List projects

### GET `/api/projects`

| Query    | Type   | Description                                                                          |
| -------- | ------ | ------------------------------------------------------------------------------------ |
| `limit`  | number | Optional pagination limit.                                                           |
| `offset` | number | Optional pagination offset.                                                          |
| `my`     | flag   | When present, only returns projects owned by the authenticated user (requires auth). |

* **Auth** – optional. Responses include extra fields (owner, timestamps) when authenticated.
* **Response**

```json theme={null}
[
  {
    "id": "proj_123",
    "name": "Marketing Research",
    "description": "Agents that summarise competitor landing pages",
    "visibility": "private",
    "slug": "marketing-research",
    "owner": "usr_123",
    "created": "2024-05-01T12:00:00.000Z",
    "updated": "2024-05-01T12:00:00.000Z"
  }
]
```

## Create a project

### PUT `/api/projects`

* **Auth** – signed-in user with a verified email.
* **Body**

```json theme={null}
{
  "name": "Marketing Research",
  "description": "Agents that summarise competitor landing pages",
  "public": false,
  "slug": "marketing-research"
}
```

Slugs must contain only alphanumeric characters, dashes, or underscores. If creation succeeds, Browsary attempts to provision a default browser session (`"Default session"`) for the project. The response body is the new project ID.

## Update or delete a project

All project-scoped operations use the slug in the URL: `/marketing-research/api`.

| Endpoint               | Auth                                           | Body                                                     | Description                                                                                                                     |
| ---------------------- | ---------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `PATCH /:project/api`  | Requires `projects.write` on the slug.         | Optional fields `name`, `description`, `public`, `slug`. | Changing `public` or `slug` is restricted to the owner. Setting `public` toggles between `"public"` and `"private"` visibility. |
| `DELETE /:project/api` | Only the project owner can call this endpoint. | —                                                        | Permanently removes the project and cascades to its child resources.                                                            |

Any other `/:project/api/...` endpoint documented in the Project Resources section inherits the same slug semantics.
