## List project canvas nodes

`$ flora projects list-nodes`

**get** `/projects/{projectId}/nodes`

Returns sanitized visible media nodes on a project canvas. The response omits raw graph documents, Liveblocks internals, raw Convex IDs, and unbounded node data blobs.

### Parameters

- `--project-id: string`

  Project identifier

- `--cursor: optional string`

  Opaque cursor for fetching the next page

- `--limit: optional number`

  Maximum number of results to return

### Returns

- `unnamed_schema_4: object { canvas_url, meta, nodes, project_id }`

  - `canvas_url: string`

    Project canvas URL

  - `meta: object { next_cursor, total_estimate }`

    - `next_cursor: string`

      Opaque cursor for fetching the next page

    - `total_estimate: optional number`

      Estimated total matching items

  - `nodes: array of object { node_id, type, asset_id, 4 more }`

    - `node_id: string`

      Canvas node identifier

    - `type: "image" or "video" or "audio" or "text"`

      Canvas node media type

      - `"image"`

      - `"video"`

      - `"audio"`

      - `"text"`

    - `asset_id: optional string`

      Asset identifier

    - `height: optional number`

    - `label: optional string`

      Canvas node label

    - `url: optional string`

      Canvas node output URL or text content

    - `width: optional number`

  - `project_id: string`

    Project identifier

### Example

```cli
flora projects list-nodes \
  --api-key 'My API Key' \
  --project-id prj_abc123
```

#### Response

```json
{
  "canvas_url": "https://example.com",
  "meta": {
    "next_cursor": "eyJvZmZzZXQiOjIwfQ",
    "total_estimate": 0
  },
  "nodes": [
    {
      "node_id": "node_abc123",
      "type": "image",
      "asset_id": "asset_abc123",
      "height": 0,
      "label": "Logo",
      "url": "https://media.flora.ai/output.png",
      "width": 0
    }
  ],
  "project_id": "prj_abc123"
}
```
