# List projects

`GET https://api.vidmoat.com/v1/projects`

- Scope: `projects.read`
- Cost: Free

List your projects, most recently updated first. Add `?workspace=<id>` to list one folder, or `?workspace=unfiled` for the ones in none.

### Query parameters

- `limit` (integer, optional, default `20`): Page size, up to 100.
- `cursor` (string, optional): The `nextCursor` of the previous page.
- `view` (enum, optional, default `summary`): How much of each project to return. `document` is only available on a single project; asking for it here returns `clips` with a `note`. One of `summary`, `clips`.
- `workspace` (string, optional): A workspace id, or `unfiled`.

## Response

Returns `200`.

### Response fields

- `data` (array): Projects, in the requested view.
  - `id` (string): Project id.
  - `name` (string): Project name.
  - `createdAt` (string): ISO 8601 time.
  - `updatedAt` (string): ISO 8601 time.
  - `durationSec` (number): End of the last clip, in seconds.
  - `clipCount` (integer): Number of clips on the timeline.
  - `settings` (object): Output settings.
    - `aspectRatio` (string): For example `16:9`.
    - `width` (integer): Pixels.
    - `height` (integer): Pixels.
    - `fps` (number): Frames per second.
    - `background` (string): CSS colour.
  - `workspace` (object or null): The workspace it is filed in: `{ id, name }`, or `null`.
  - `tracks` (array): Only in the `clips` and `document` views. The timeline tracks.
  - `clips` (array): Only in the `clips` view: a summary per clip (`id`, `type`, `name`, `start`, `duration`, `trackIndex`, and `src`, `text`, `effects`, `speed`, `keyframedProps` when set).
  - `document` (object): Only in the `document` view: the full edit document, verbatim.
- `hasMore` (boolean): Whether another page exists.
- `nextCursor` (string or null): Pass as `cursor` for the next page.

## Request examples

```bash curl
curl "https://api.vidmoat.com/v1/projects?limit=20" \
  -H "Authorization: Bearer $VIDMOAT_KEY"
```

```js Node
const res = await fetch('https://api.vidmoat.com/v1/projects?limit=20', {
  headers: {
    Authorization: `Bearer ${process.env.VIDMOAT_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(data.error?.message ?? `HTTP ${res.status}`);
console.log(data);
```

```python Python
import os
import requests

res = requests.get(
    "https://api.vidmoat.com/v1/projects?limit=20",
    headers={"Authorization": f"Bearer {os.environ['VIDMOAT_KEY']}"},
    timeout=60,
)
res.raise_for_status()
print(res.json())
```

## Example response

```json
{
  "data": [
    {
      "id": "cm1abc",
      "name": "Launch teaser",
      "createdAt": "2026-09-30T10:00:00.000Z",
      "updatedAt": "2026-10-02T09:00:00.000Z",
      "durationSec": 12.5,
      "clipCount": 4,
      "settings": { "aspectRatio": "9:16", "width": 1080, "height": 1920, "fps": 30, "background": "#000000" },
      "workspace": null
    }
  ],
  "hasMore": true,
  "nextCursor": "Y20xYWJj"
}
```

---

Source: https://developer.vidmoat.com/developer/docs/api/projects/list-projects
Previous: [Get the command schema](https://developer.vidmoat.com/developer/docs/api/account/get-command-schema.md)
Next: [Create a project](https://developer.vidmoat.com/developer/docs/api/projects/create-project.md)
All documentation: https://developer.vidmoat.com/llms-full.txt
