---
title: "Show Webinar Analytics"
method: GET
path: "/analytics/webinars/{webinarId}"
tags: ["Analytics:Webinar"]
---

# Show Webinar Analytics

`GET /analytics/webinars/{webinarId}`

## Request

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

Retrieve aggregate analytics for a webinar. This endpoint provides
Bottler-powered analytics including registrations, attendance, engagement,
chat activity, and poll results.


## Requires api token with one of the following permissions
```
Read detailed stats
```

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 granting the `view-stats` permission on this webinar can also
be used.

## Path parameters

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

## Query parameters

- `include_post_event` boolean
- `post_event_start_date` string, date
- `post_event_end_date` string, date

## Headers

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

## Response `200`

Success response with aggregate analytics for the webinar.

- object
  - `registrations` integer, nullable: The total number of registrations for the webinar.
  - `imported_registrations` integer, nullable: The number of registrations imported from external sources.
  - `on_demand_registrations` integer, nullable: The number of registrations for on-demand viewing.
  - `imported_on_demand_registrations` integer, nullable: The number of on-demand registrations imported from external sources.
  - `total_watch_time` integer, nullable: Total watch time across all attendees in seconds.
  - `average_watch_time` integer, nullable: Average watch time per attendee in seconds.
  - `attendance` integer, nullable: The total number of attendees who joined the live event.
  - `chatted_attendees` integer, nullable: The number of attendees who sent at least one chat message.
  - `engagement_rate` number, float, nullable: The average engagement rate for attendees (between 0 and 1).
  - `chats` integer, nullable: The total number of chat messages sent during the event.
  - `currently_watching` integer, nullable: The number of viewers currently watching (0 for completed events).
  - `engaged_attendees` integer, nullable: The number of attendees who were actively engaged.
  - `impressions` integer, nullable: The total number of registration page impressions.
  - `on_demand_impressions` integer, nullable: The number of on-demand page impressions.
  - `on_demand_plays` integer, nullable: The number of on-demand video plays.
  - `on_demand_engagement_rate` number, float, nullable: The engagement rate for on-demand viewers (between 0 and 1).
  - `event_time` integer, nullable: The duration of the live event in seconds.
  - `qa_questions` integer, nullable: The total number of Q&A questions asked during the event.
  - `poll_questions` object[], nullable: Poll questions and their response data.
    - `id` integer: The poll question ID.
    - `poll_id` integer: The poll ID this question belongs to.
    - `text` string: The question text.
    - `response_count` integer: The total number of responses.
    - `options` object[], nullable: The available answer options and their response counts.
      - `id` integer: The option ID.
      - `text` string: The option text.
      - `count` integer: The number of times this option was selected.
      - `percent` number, float: The percentage of respondents who selected this option.

## Other responses

- `401`: Unauthorized, invalid or missing token
- `403`: Forbidden, token is valid but account does not have access to feature
- `404`: Webinar not found or does not belong to account
- `409`: The event has not yet reached a terminal state. Analytics are only available after the event has ended.
- `422`: Unprocessable entity
- `500`: Internal server error
- `503`: Analytics service is temporarily unavailable

---

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