---
title: "List Webinar Registrations"
method: GET
path: "/webinars/{webinarId}/registrations"
tags: ["Webinar Registrations"]
---

# List Webinar Registrations

`GET /webinars/{webinarId}/registrations`

## Request

- Base URL: `https://api.wistia.com/modern`
- URL: `https://api.wistia.com/modern/webinars/{webinarId}/registrations`
- Auth: HTTP bearer

Retrieve a paginated list of registrations for a webinar. Returns contact
information, attendance status, engagement metrics, and attribution data
for each registrant.

Pagination uses cursor-based pagination with a `page_info` object in the
response rather than per-record cursors. Use `page_info.end_cursor` as
the `cursor` parameter to fetch the next page.

## Requires api token with one of the following permissions
```
Read all data
```

Tokens with the "Act with a team member's permissions" permission
(`all:delegate_to_contact_permissions` scope) can also be used. Requests
made with such a token are authorized using the permissions of the
contact assigned to the token.

An [expiring access token](https://docs.wistia.com/reference/post_expiring-token)
created with the `all:delegate_to_contact_permissions` scope and an
authorization naming this webinar (any permission) can also be used; it
lists the webinar's registrations.

## Path parameters

- `webinarId` string, required: Hashed ID of the webinar (e.g., "abc123xyz")

## Query parameters

- `per_page` integer
- `cursor` string
- `sort_direction` 0 | 1
- `attendance` 'all' | 'attendees' | 'non_attendees'
- `restriction` 'all' | 'restricted' | 'allowed'
- `emails[]` string[]

## Headers

- `X-Wistia-API-Version` string, required

## Response `200`

Successful response with a paginated list of registrations.

- object
  - `registrations` object[]
    - `visitor_key` string, nullable: Unique visitor key for the registrant.
    - `email` string, nullable: Registrant's email address.
    - `first_name` string, nullable: Registrant's first name.
    - `last_name` string, nullable: Registrant's last name.
    - `phone_number` string, nullable: Registrant's phone number.
    - `company` string, nullable: Registrant's company name.
    - `job_title` string, nullable: Registrant's job title.
    - `country` string, nullable: Registrant's country.
    - `registered_at` string, date-time, nullable: When the person registered.
    - `attended_at` string, date-time, nullable: When the person first attended the webinar.
    - `restriction_status` 'restricted' | 'allowed' | 'null', nullable: Whether the registrant is restricted or allowed.
    - `origin_method` string, nullable: How the registrant was added (e.g., "form", "email").
    - `form_field_data` object[]: Custom form field responses submitted by the registrant.
      - `value` string: The registrant's response.
      - `label` string: The form field label.
    - `utm_campaign` string, nullable: UTM campaign parameter captured at registration.
    - `utm_source` string, nullable: UTM source parameter captured at registration.
    - `utm_medium` string, nullable: UTM medium parameter captured at registration.
    - `utm_content` string, nullable: UTM content parameter captured at registration.
    - `utm_term` string, nullable: UTM term parameter captured at registration.
    - `referrer_domain` string, nullable: HTTP referrer domain at time of registration.
    - `ip_region` string, nullable: Region derived from IP address.
    - `ip_country` string, nullable: Country derived from IP address.
    - `ip_city` string, nullable: City derived from IP address.
    - `engagement_rate` number, float, nullable: Engagement rate between 0.0 and 1.0.
    - `focused_rate` number, float, nullable: Focused engagement rate between 0.0 and 1.0.
    - `played_time` integer, nullable: Total seconds of video watched.
    - `focused_played_time` integer, nullable: Total seconds watched in focused state.
    - `chat_count` integer, nullable: Number of chat messages sent.
    - `chats` object[]: Chat messages sent by the registrant.
      - `rounded_player_position` integer: Video position in seconds (rounded).
      - `chats` string[]
    - `qa_questions` object[]: Q&A questions asked by the registrant.
      - `rounded_player_position` integer: Video position in seconds (rounded).
      - `qa_questions` object[]
        - `question_text` string
    - `qa_answers` integer, nullable: Number of Q&A answers.
    - `poll_responses` object[]: Poll responses submitted by the registrant.
      - `poll_question_text` string, nullable
      - `poll_option_text` string, nullable
    - `poll_responses_count` integer, nullable: Number of poll responses submitted.
    - `annotation_click_count` integer, nullable: Total number of annotation clicks.
    - `attendee_histogram` integer[], nullable: Per-bucket attendance data for this registrant.
    - `focused_attendee_histogram` integer[], nullable: Per-bucket focused attendance data for this registrant.
  - `page_info` object
    - `has_next_page` boolean: Whether there are more results after this page.
    - `has_previous_page` boolean: Whether there are results before this page.
    - `end_cursor` string, nullable: Cursor to use for fetching the next page.
    - `start_cursor` string, nullable: Cursor to use for fetching the previous page.

## Other responses

- `401`: Unauthorized, invalid or missing token
- `403`: Webinar feature not available
- `404`: Resource not found
- `500`: Internal server error

## Changes

- **2026-11-03** `b86cb2a7b420`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/wistia/apis/data-api/changes/webinars/:webinarId/registrations/get.md)

---

[API](https://skmtc.dev/wistia/apis/data-api.md) - [All operations](https://skmtc.dev/wistia/apis/data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wistia/apis/data-api/revisions/b86cb2a7b420?raw)
