# List items

> GET /boards/{boardId}/items

Source: https://mockflow.com/developers/reference/items/list-items

**GET** `https://api.mockflow.com/v1/boards/{boardId}/items`  
Scopes: `boards:read`

**curl**

```bash
curl https://api.mockflow.com/v1/boards/brd_3f9e2a/items \
  -H "Authorization: Bearer $MOCKFLOW_API_KEY"
```

**JavaScript**

```javascript
const response = await fetch("https://api.mockflow.com/v1/boards/brd_3f9e2a/items", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.MOCKFLOW_API_KEY}`
  }
});

const data = await response.json();
```

**Python**

```python
import os, requests

response = requests.get(
    "https://api.mockflow.com/v1/boards/brd_3f9e2a/items",
    headers={"Authorization": f"Bearer {os.environ['MOCKFLOW_API_KEY']}"},
)

response.raise_for_status()
data = response.json()
```

**200**

```json
{
  "nextCursor": "string",
  "hasMore": false,
  "data": [
    {
      "id": "itm_k9",
      "type": "string",
      "componentType": "string",
      "boardId": "brd_3f9e2a",
      "sectionId": "string",
      "groupId": "string"
    }
  ]
}
```

**429**

```json
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests.",
    "docsUrl": "https://mockflow.com/developers/concepts/errors#rate_limited"
  },
  "requestId": "req_45d49816999bac40"
}
```

Every item on the board in z-order, flat: sections contain items by position, which `sectionId` reports. Add `include=data` to get each item's decoded content.

### Authorization

- `Authorization` (string, required): `Bearer <key>`. The key needs `boards:read` scope. Create and manage keys in the [developer console](/developers/console/); what each scope unlocks is on the [scopes page](/developers/concepts/scopes).

### Path parameters

- `boardId` (string, required)

### Query parameters

- `type` (string): Filter by item type. Comma separate several.
- `sectionId` (string): Only items inside this section, or `none` for items in no section.
- `groupId` (string)
- `q` (string): Substring match on item text.
- `include` (enum<string>): `data` to include each item's decoded content. One of `data`.
- `cursor` (string): Opaque cursor from a previous response's `nextCursor`.
- `limit` (integer): Defaults to `50`.

### Response

- `nextCursor` (string | null)
- `hasMore` (boolean)
- `data` (Item[]): - `id` (string)
  - `type` (string): An ItemType, or `other` for an editor widget the API has no type for.
  - `componentType` (string): The editor's own class name, exact where `type` is a family.
  - `boardId` (string)
  - `sectionId` (string | null): The section the item sits inside, by position.
  - `groupId` (string | null)
  - `position` (Point)
  - `size` (Size)
  - `rotation` (number)
  - `zIndex` (integer)
  - `locked` (boolean)
  - `text` (string): Plain text extracted from the item, for search and the outline.
  - `readback` (enum<string>): One of `exact`, `unwrapped`, `text`, `pointer`, `parts` or `none`.
  - `data` (ItemData): Selected by the sibling `type`. One schema per item type, generated from the component registry.
  - `from` (string | null): Connectors only: the item or `group:` the line starts at.
  - `to` (string | null): Connectors only.
  - `directed` (boolean): Connectors only.
  - `label` (string): Connectors only.
  - `url` (string): Opens the board focused on this item.

### Errors

- 429 `rate_limited`: Too many requests.
