Skip to main content
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: Query Parameters: Response: Paginated list of registrant objects for the specified event. Add include=poll_answers to also return each registrant’s poll answers. 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:
  1. Make the first request without a cursor parameter
  2. If page.next_cursor is not null, make another request with cursor set to that value
  3. Repeat until page.next_cursor is null
Status Codes:
  • 200 OK Registrants retrieved successfully.
  • 400 Bad Request Invalid query parameter, for example an unsupported include value.
  • 401 Unauthorized Authentication failed (missing or invalid API token).
  • 403 Forbidden Event does not belong to this account.
  • 404 Not Found Event not found.
  • 429 Too Many Requests Rate limit exceeded.
  • 500 Internal Server Error Unexpected server error.

On-Demand Webinars

The endpoint accepts an on-demand webinar ID in the eventId path parameter. The response schema, filters, sorting, pagination, authorization and rate limits are identical to live webinars, so existing integrations parse on-demand responses with no changes.
Notes:
  • participated is true once the registrant has watched more than 10 seconds of the recording — the same threshold as the “Watched” metric in on-demand analytics.
  • attendance_rate and duration report watch percentage and watch time. Both are null if the registrant has never watched.
  • join_url is the registrant’s personalized, tokenized watch URL.
  • approved is always true. On-demand webinars have no approval flow, and the field is kept for schema compatibility.
  • referrer returns "api" for registrants created through the Create Webinar Registrant endpoint.
  • Watch activity is reflected whenever it happens. A registrant who watches 30 days after registering returns updated participated, attendance_rate and duration values on subsequent calls.
  • updated_after filters by registration date only. Later watch activity does not change a registrant’s updated_after value, so an incremental sync will not surface registrants whose watch metrics changed after they registered. To keep watch data current, re-pull the full registrant list on a schedule.
  • While an on-demand webinar is unpublished, its public page and any issued join_url links return 404. Registrant data remains available through this endpoint, and the links work again once the webinar is republished.

Poll Answers

Add include=poll_answers to return each registrant’s answers to the polls launched during the webinar. It’s opt-in: without it, the response is unchanged.
Notes:
  • poll_answers has one entry per poll the registrant answered, in the order the polls were launched. A registrant who didn’t answer any poll gets [].
  • answers is always an array of the selected option texts. Polls are single choice, so it holds one value.
  • If a registrant changed their vote, only their latest answer is returned, and answered_at is the time of that vote.
  • Only polls that were launched and not deleted are included.
  • updated_after filters by registration date only. Answering a poll doesn’t change it, so an incremental sync won’t pick up new poll answers. Pull the full registrant list again after the webinar ends.

Sample Request

Sample Request with filters

Sample Request for incremental sync

Sample Request with cursor pagination

Sample Request with poll answers

Sample Response

Sample Response for an on-demand webinar

Sample Response with poll answers

Response Fields

Registrant Object Fields

Error Responses

Unauthorized (401)
Forbidden (403)
Event Not Found (404)