URL: /code/apps/scheduling/list · Id: `page:/code/apps/scheduling/list`

# Meeting.list

> Lists your Meetings by day, deal or seat, each with its agenda and notes.

GET https://api.sb/&#123;your-domain&#125;/meetings

Lists your [Meetings](https://startupbuilder.dev/business/nouns/meeting) by day, [deal](https://startupbuilder.dev/business/nouns/deal) or seat, each with its agenda and notes.

- **Action class:** None
- **Approval:** Runs on its own
- **Emits:** None
- **Price:** Free

```text title="Run it · Ask"
What calls do I have this week?
```

```ts title="Run it · SDK"
import { $ } from 'startup-builder'

const result = await $.try.Meeting.list({ where: 'at >= \'2026-10-26\' and at < \'2026-11-02\'', sort: 'at', limit: 10 })
```

```json title="Run it · Response"
{
  "api": "https://api.sb/leaseline.app",
  "meetings": [
    {
      "$id": "https://api.sb/leaseline.app/meetings/meeting_Th4uR7sD2y",
      "$type": "Meeting",
      "at": "2026-10-29T17:00:00Z",
      "deal": "https://api.sb/leaseline.app/deals/deal_Hv8kD2nQ4s"
    }
  ],
  "total": 1
}
```

It extends the hub’s record call [`Meeting.list`](https://startupbuilder.dev/business/nouns/meeting/list), which every [Meeting](https://startupbuilder.dev/business/nouns/meeting) takes. It is one of the [Verbs](https://startupbuilder.dev/business/nouns/verb) of [Scheduling](/code/apps/scheduling#verbs).

## Inputs
| Name | Type | Meaning |
| --- | --- | --- |
| `limit` | `integer` | At most this many records, up to 100. The default is 20. Optional. |
| `after` | `string` | The cursor from the previous page. Optional. |
| `where` | `string` | A filter over the properties, such as `paidAt = null and total.amount > 500`. Optional. |
| `sort` | `string` | Properties to sort by, comma-separated; a leading minus sorts descending. Optional. |
| `total` | `boolean` | True adds the match count as `meta.total`, exact up to 10,000 matches and estimated above. Optional. |
| `facets` | `string` | Properties to count by value, comma-separated, returned as `meta.facets`. Optional. |
| `fields` | `string` | Properties to return on each record, comma-separated; `$id` and `$type` always return. Optional. |
| `include` | `string` | Related records to embed in place of their URLs, comma-separated. Optional. |
| `depth` | `integer` | How many levels of related records to embed. The default is 1. Optional. |
| `q` | `string` | Words to match across the text properties, ranked by relevance. Optional. |
| `match` | `string` | Ranks the search by `words`, or `meaning`; words is the default. Optional. |

The hub inherits this call on every Noun: it takes the Meeting’s own Properties, listed on [the hub’s Meeting page](https://startupbuilder.dev/business/nouns/meeting).

## Outputs
| Field | Type | What `null` means |
| --- | --- | --- |
| `meeting` | `Meeting` | Never null: the Meeting as the call leaves it. |

## Effects
**Action class**

None: it reads, so no approval rule names it

**Modes**

A read takes no Mode: it returns the records your seat’s Permissions allow.

**Emits**

None: a read emits no Event.

**Price**

Free on your own account: the platform charges nothing for the call.

## On each Venue
It acts on your own records and reaches no Venue, so every account answers the same way.

## What try does
Runs every check the call meets and returns the record as it would be; nothing is stored, sent or posted.

## Refuses when
The hub sets no guard of its own on this call: it refuses only on the shared checks every write meets (a missing record, a Permission the seat lacks).

## When it waits
Returns in one response; nothing waits.

## Example
The next page: pass the `after` cursor the first page returned; the last page returns `after: null`.

**Ask**

```text
What calls do I have this week, the next page.
```

**API**

```bash
curl -X GET "https://api.sb/leaseline.app/meetings?mode=try" \
  -H "Authorization: Bearer $SB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "where": "at >= '\''2026-10-26'\'' and at < '\''2026-11-02'\''",
  "sort": "at",
  "limit": 10,
  "after": "cursor_Mt7wQ2"
}'
```

**CLI**

```bash
npx startup-builder do Meeting.list --data '{
  "where": "at >= '\''2026-10-26'\'' and at < '\''2026-11-02'\''",
  "sort": "at",
  "limit": 10,
  "after": "cursor_Mt7wQ2"
}'
```

The CLI runs in try mode unless you pass `--do`.

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "mode": "try",
    "code": "return await $.Meeting.list({ where: 'at >= \\'2026-10-26\\' and at < \\'2026-11-02\\'', sort: 'at', limit: 10, after: 'cursor_Mt7wQ2' })"
  }
}
```

**SDK**

```ts
import { $ } from 'startup-builder'

const result = await $.try.Meeting.list({
  where: 'at >= \'2026-10-26\' and at < \'2026-11-02\'',
  sort: 'at',
  limit: 10,
  after: 'cursor_Mt7wQ2',
})
```


```json title="Response, in try mode"
{
  "api": "https://api.sb/leaseline.app",
  "meetings": [],
  "after": null
}
```

To retry, send the same `Idempotency-Key`: the retry returns the first answer for $0. A new key reads again.

## Used by
None.

## Related
[`Meeting.book`](/code/apps/scheduling/book) · [`Meeting.create`](/code/apps/scheduling/create) · [`Meeting.update`](/code/apps/scheduling/update)