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

# List meetings

> Retrieve a paginated list of meetings for the authenticated user.

Returns a list of meetings ordered by `started_at` descending (most recent first). Use query parameters to filter by status, date range, or paginate through results.

<ParamField query="limit" type="integer" default="20">
  Number of meetings to return per page. Must be between 1 and 100.
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Number of meetings to skip for pagination. Must be 0 or greater.
</ParamField>

<ParamField query="status" type="string">
  Filter meetings by status. One of `scheduled`, `in_progress`, `processing`, `completed`, or `failed`.
</ParamField>

<ParamField query="from" type="string">
  Return meetings that started on or after this date. ISO 8601 format (e.g., `2026-01-01T00:00:00Z`).
</ParamField>

<ParamField query="to" type="string">
  Return meetings that started on or before this date. ISO 8601 format (e.g., `2026-03-31T23:59:59Z`).
</ParamField>

<ParamField query="platform" type="string">
  Filter by meeting platform. One of `zoom`, `google_meet`, `microsoft_teams`, `desktop`, `mobile`, `browser`.
</ParamField>

### Response

<ResponseField name="data" type="array">
  An array of meeting objects.

  <Expandable title="Meeting object">
    <ResponseField name="id" type="string">
      Unique meeting identifier (e.g., `mtg_abc123def456`).
    </ResponseField>

    <ResponseField name="title" type="string">
      The meeting title, either auto-detected from the calendar event or set manually.
    </ResponseField>

    <ResponseField name="status" type="string">
      Current status: `scheduled`, `in_progress`, `processing`, `completed`, or `failed`.
    </ResponseField>

    <ResponseField name="platform" type="string">
      The platform where the meeting was recorded (e.g., `zoom`, `google_meet`, `desktop`).
    </ResponseField>

    <ResponseField name="started_at" type="string">
      ISO 8601 timestamp when the meeting recording started.
    </ResponseField>

    <ResponseField name="ended_at" type="string | null">
      ISO 8601 timestamp when the meeting recording ended. `null` if still in progress.
    </ResponseField>

    <ResponseField name="duration_seconds" type="integer | null">
      Duration of the meeting in seconds. `null` if still in progress.
    </ResponseField>

    <ResponseField name="participant_count" type="integer">
      Number of identified participants in the meeting.
    </ResponseField>

    <ResponseField name="transcript_id" type="string | null">
      The ID of the associated transcript. `null` if not yet available.
    </ResponseField>

    <ResponseField name="summary_id" type="string | null">
      The ID of the associated summary. `null` if not yet generated.
    </ResponseField>

    <ResponseField name="language" type="string">
      Primary language detected in the meeting (ISO 639-1 code, e.g., `en`).
    </ResponseField>

    <ResponseField name="created_at" type="string">
      ISO 8601 timestamp when the meeting record was created.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object">
  Pagination metadata.

  <Expandable title="Pagination object">
    <ResponseField name="total" type="integer">
      Total number of meetings matching the filters.
    </ResponseField>

    <ResponseField name="limit" type="integer">
      The limit used in this request.
    </ResponseField>

    <ResponseField name="offset" type="integer">
      The offset used in this request.
    </ResponseField>

    <ResponseField name="has_more" type="boolean">
      Whether there are more results beyond this page.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -G https://api.mavioapp.com/v1/meetings \
    -H "Authorization: Bearer mvo_live_abc123" \
    -d limit=10 \
    -d status=completed \
    -d from=2026-04-01T00:00:00Z
  ```

  ```python Python theme={null}
  import mavio

  client = mavio.Client(api_key="mvo_live_abc123")
  meetings = client.meetings.list(
      limit=10,
      status="completed",
      from_date="2026-04-01T00:00:00Z"
  )
  ```

  ```javascript Node.js theme={null}
  const { data, pagination } = await client.meetings.list({
    limit: 10,
    status: 'completed',
    from: '2026-04-01T00:00:00Z',
  });
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "mtg_8f3k2j1m4n5p",
        "title": "Weekly Product Sync",
        "status": "completed",
        "platform": "zoom",
        "started_at": "2026-04-10T14:00:00Z",
        "ended_at": "2026-04-10T14:47:32Z",
        "duration_seconds": 2852,
        "participant_count": 6,
        "transcript_id": "trs_9a2b3c4d5e6f",
        "summary_id": "sum_1g2h3i4j5k6l",
        "language": "en",
        "created_at": "2026-04-10T13:58:12Z"
      },
      {
        "id": "mtg_7e2d1c0b9a8g",
        "title": "Customer Discovery Call — Acme Corp",
        "status": "completed",
        "platform": "google_meet",
        "started_at": "2026-04-09T10:30:00Z",
        "ended_at": "2026-04-09T11:15:44Z",
        "duration_seconds": 2744,
        "participant_count": 3,
        "transcript_id": "trs_5f4e3d2c1b0a",
        "summary_id": "sum_6l5k4j3i2h1g",
        "language": "en",
        "created_at": "2026-04-09T10:28:55Z"
      }
    ],
    "pagination": {
      "total": 47,
      "limit": 10,
      "offset": 0,
      "has_more": true
    }
  }
  ```
</ResponseExample>
