Documentation Index
Fetch the complete documentation index at: https://docs.riverside.fm/llms.txt
Use this file to discover all available pages before exploring further.
HTTP Method: GET
URL: /api/v3/events/{eventId}/registrants
Authentication: Requires API Key in the request header.
Authorization: The event must belong to the account associated with the API token. Returns 403 if the event belongs to a different account.
Path Parameters:
| Parameter | Type | Description |
|---|
eventId | string | ID of the webinar event. To find this value, visit the schedule page and click “Copy event ID” in the three dots menu. |
Query Parameters:
| Parameter | Type | Default | Description |
|---|
limit | integer | 100 | Number of items per page (1–500) |
cursor | string | — | Opaque cursor from page.next_cursor of a previous response. Used for pagination. |
sort | string | registeredAt | Field to sort by. Allowed values: registeredAt, email, name |
order | string | desc | Sort direction. Allowed values: asc, desc |
approved | boolean | — | Filter by approval status (true / false) |
participated | boolean | — | Filter by whether the registrant joined the live session |
search | string | — | Free-text search across email, name, and last name |
updated_after | string | — | Only return registrants registered after this date (ISO-8601). Useful for incremental syncing. Example: 2026-01-01T00:00:00Z |
Response: Paginated list of registrant objects for the specified event.
Rate limit: Once every 1 second for unique requests.
Pagination: This endpoint uses cursor-based pagination with a default page size of 100 registrants. To iterate through all results:
- Make the first request without a
cursor parameter
- If
page.next_cursor is not null, make another request with cursor set to that value
- Repeat until
page.next_cursor is null
Status Codes:
200 OK Registrants retrieved successfully.
401 Unauthorized Authentication failed (missing or invalid API token).
403 Forbidden Event does not belong to this account.
404 Not Found Event not found.
500 Internal Server Error Unexpected server error.
Sample Request
GET /api/v3/events/69b5f9f8788fcc3897fd60e8/registrants HTTP/1.1
Host: platform.riverside.fm
Authorization: Bearer YOUR_API_KEY
Sample Request with filters
GET /api/v3/events/69b5f9f8788fcc3897fd60e8/registrants?limit=50&approved=true&sort=email&order=asc HTTP/1.1
Host: platform.riverside.fm
Authorization: Bearer YOUR_API_KEY
Sample Request for incremental sync
GET /api/v3/events/69b5f9f8788fcc3897fd60e8/registrants?updated_after=2026-03-15T00:00:00Z HTTP/1.1
Host: platform.riverside.fm
Authorization: Bearer YOUR_API_KEY
GET /api/v3/events/69b5f9f8788fcc3897fd60e8/registrants?limit=50&cursor=MjAyNi0wMy0xNlQxNzo0Mzo1MC4wMDBaOjoxODYwNQ== HTTP/1.1
Host: platform.riverside.fm
Authorization: Bearer YOUR_API_KEY
Sample Response
{
"event_id": "69b5f9f8788fcc3897fd60e8",
"items": [
{
"first_name": "Ada",
"last_name": "Lovelace",
"email": "[email protected]",
"registered_at": "2026-01-12T10:15:30.000Z",
"approved": true,
"join_url": "https://riverside.fm/studio/my-studio?audienceToken=abc-123",
"participated": false,
"attendance_rate": 87.5,
"duration": "52:31",
"referrer": "https://www.linkedin.com",
"utm": {
"source": "google",
"medium": "cpc",
"campaign": "webinar_launch",
"term": "webinar",
"content": "banner"
},
"custom_fields": {
"Company": "Acme",
"Phone": { "countryCode": "+1", "phoneNumber": "555555555" }
}
}
],
"page": {
"limit": 100,
"next_cursor": "MjAyNi0wMy0xNlQxNzo0Mzo1MC4wMDBaOjoxODYwNQ==",
"total_items": 350
}
}
Response Fields
| Field | Type | Description |
|---|
event_id | string | The event ID from the request |
items | array | List of registrant objects for this page |
page | object | Pagination metadata |
page.limit | number | The page size used for this request |
page.next_cursor | string | null | Opaque cursor to pass as ?cursor= for the next page. null when there are no more pages. |
page.total_items | number | Total number of registrants matching the filters |
Registrant Object Fields
| Field | Type | Nullable | Description |
|---|
first_name | string | No | Registrant’s first name |
last_name | string | Yes | Registrant’s last name |
email | string | No | Registrant’s email address |
registered_at | string | No | Timestamp when the registrant signed up (ISO-8601) |
approved | boolean | No | Whether the registrant is approved to attend |
join_url | string | Yes | Unique join URL for this registrant |
participated | boolean | No | Whether the registrant actually joined the live session |
attendance_rate | number | Yes | Percentage of the event the registrant attended (0–100) |
duration | string | Yes | Time spent in the session, formatted as MM:SS |
referrer | string | Yes | Referrer URL if available |
utm | object | Yes | UTM tracking parameters (only present if any UTM value exists) |
utm.source | string | Yes | UTM source |
utm.medium | string | Yes | UTM medium |
utm.campaign | string | Yes | UTM campaign |
utm.term | string | Yes | UTM term |
utm.content | string | Yes | UTM content |
custom_fields | object | Yes | Key-value map of custom registration fields. Values can be string, boolean, or { countryCode, phoneNumber } |
Error Responses
Unauthorized (401)
{
"message": "Unauthorized"
}
Forbidden (403)
{
"message": "Event does not belong to this account"
}
Event Not Found (404)
{
"message": "Event not found"
}