# List meeting participants

`GET /meeting.participants`

## Description

Paginate through all participants of a meeting. This is the dedicated endpoint for retrieving the full participant list, complementing the capped inline participants in [`/meeting.info`](/docs/api/meeting-info).

Pagination uses an **opaque cursor** (not a row offset). Pass `nextCursor`
from a previous response as `cursor` to fetch the next page. Invalid cursors
return `error: "invalid_cursor"` — see [Responses and Errors](/docs/guides/responses-and-errors).

**Access:** Organization and Personal. Personal access tokens restrict to meetings the authenticated user participated in.

**Required scope:** `meetings:read` and `user:read` (add `user:read.email` for participant emails)

---

**OpenAPI Spec:** [chat-v1.json](https://developer.ro.am/chat-v1.json)

## Authentication

```
Authorization: Bearer YOUR_API_KEY
```

## Parameters

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `id` | query | string | Yes | The meeting ID. |
| `limit` | query | integer | No | Number of participants to return per page (default 50, max 200). |
| `cursor` | query | string | No | Opaque pagination cursor from a previous response's `nextCursor`. Do not parse or construct cursors yourself.  |

## Responses

### 200 - Participants retrieved successfully

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `ok` | "true" | No |  |
| `participants` | MeetingParticipant[] | Yes |  |
| `total` | integer | Yes | Total number of participants in the meeting |
| `nextCursor` | string | No | Present when more participants remain. Pass as `cursor` on the next request. Omitted on the last page.  |

**MeetingParticipant** (array item):

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | "member" | "guest" | Yes | Whether the participant is a workspace member or an external guest |
| `id` | string | Yes | The participant's address ID |
| `name` | string | Yes | Display name of the participant |
| `email` | string | No | Email address of the participant (requires `user:read.email` scope) |


#### Example Response

```json
{
  "ok": true,
  "participants": [
    {
      "type": "member",
      "id": "709b8a57-70bc-427a-b6f0-b16ba5297f8c",
      "name": "Alex Chen",
      "email": "alex.chen@example.com"
    },
    {
      "type": "guest",
      "id": "af6663d5-0f37-4105-95df-4fea20ef7c7c",
      "name": "Jordan Smith"
    }
  ],
  "total": 8,
  "nextCursor": "YzE6YWY2NjYzZDUtMGYzNy00MTA1LTk1ZGYtNGZlYTIwZWY3Yzdj"
}
```

### 400 - Bad request. Missing or invalid `id`, or invalid `cursor` (`invalid_cursor`).

### 401 - Presented invalid authentication credentials.

### 404 - Meeting not found.

### 405 - An unsupported method was requested.

### 500 - An internal error occurred.

---

*Machine-readable API documentation.*
*Full documentation: https://developer.ro.am/docs/api/meeting-participants*
