Wistia Webinars API
The Webinars API from Wistia — 3 operation(s) for webinars.
The Webinars API from Wistia — 3 operation(s) for webinars.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/wistia-webinars-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Wistia Webinars API
version: '1.0'
description: 'Operations tagged Webinars across 3 of this provider''s published API definitions: wistia-data-api-2026-01-openapi.yml, wistia-data-api-modern-edge-openapi.yml, wistia-webinars-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.wistia.com/modern
- url: https://api.wistia.com/v1
description: Wistia Data API production server
tags:
- name: Webinars
x-displayName: Webinars
paths:
/webinars:
get:
summary: List Webinars
description: 'Lists webinars belonging to the account. This endpoint can also be used to
do a batch fetch based off of the hashed id.
<!--- HIDE-MCP -->
## Requires api token with one of the following permissions
```
Read all data
```
<!--- /HIDE-MCP -->
'
parameters:
- name: page
in: query
description: 'The page number to retrieve. This cannot be combined with `cursor`,
pagination.
'
required: false
schema:
type: integer
- name: per_page
in: query
description: The number of medias per page. Use this for both offset pagination and cursor pagination.
required: false
schema:
type: integer
- name: cursor
in: query
description: 'If `cursor[enabled]` is set to 1 than cursor pagination is enabled and the
first set of records are fetched up to the `per_page`. Cursor
pagination will also be turned on if `cursor[before]` or `cursor[after]`
are set. Records returned will have a `cursor` property set which can be used to fetch more records in the same `sort_by` ordering.
The cursor value of the last record can be used to fetch records after the current result set and
the cursor of the first record can be used to fetch records before the result set.
NOTE: a cursor value is only valid if the `sort_by` value hasn''t changed from the
last fetch. For example, you cannot fetch using `sort_by` id and than pass that
cursor value to a `sort_by` name.
'
required: false
schema:
unevaluatedProperties: false
type: object
properties:
enabled:
description: 'If `cursor[enabled]` is set to 1, the first result set will be fetched with cursor pagination enabled. This
values is ignored if `cursor[before]` or `cursor[after]` are set.
'
type: integer
enum:
- 0
- 1
before:
description: 'If `cursor[before]` is set than cursor pagination is enabled and all records
before the cursor up to the `per_page` are returned. This feature is useful for
fetching "new records", for example, in a "pull to refersh" feature when showing records in a descending
order.
'
type: string
after:
description: 'If `cursor[after]` is set than cursor pagination is enabled and all records
after the cursor up to the `per_page` are returned.
'
type: string
style: deepObject
- name: sort_by
in: query
description: 'Field to sort by. When using cursor pagination (see cursor param),
only `id` and `scheduled_for` are supported.
'
required: false
schema:
type: string
enum:
- scheduled_for
- id
- name: sort_direction
in: query
description: Sort direction (0 = desc, 1 = asc; default is 1)
required: false
schema:
type: integer
enum:
- 0
- 1
- name: hashed_ids[]
in: query
description: Filter by specific webinars IDs
required: false
schema:
type: array
items:
type: string
- name: started
in: query
description: Filter by whether the webinar has started. Use "true" for webinars that have started, "false" for webinars that have not started yet
required: false
schema:
type: string
enum:
- 'true'
- 'false'
responses:
'200':
description: Successful response with a list of webinars
content:
application/json:
schema:
type: array
items:
unevaluatedProperties: false
type: object
description: 'A webinar is an event which allows you to stream a video
to multiple participants. See our [Webinars Guide](https://support.wistia.com/en/articles/8288501-getting-started-with-webinars)
for more info.
'
properties:
id:
description: The hashed ID of the webinar
type: string
examples:
- abc123def456
title:
description: The title of the webinar
type: string
examples:
- 'Wellness Session: Coping with Outie Memories'
description:
description: The description of the webinar
type:
- string
- 'null'
examples:
- A comprehensive session on managing work-life balance
scheduled_for:
description: The scheduled start time in W3C format with timezone
type:
- string
- 'null'
format: date-time
examples:
- '2024-03-20T15:30:00-05:00'
event_duration:
description: Duration of the webinar in minutes
type:
- integer
- 'null'
examples:
- 60
lifecycle_status:
description: Current lifecycle status of the event
type: string
examples:
- scheduled
registration_status:
description: Registration status of the event
type: string
examples:
- published
created_at:
description: When the event was created (UTC)
type: string
format: date-time
examples:
- '2024-03-15T10:30:00Z'
updated_at:
description: When the event was last updated (UTC)
type: string
format: date-time
examples:
- '2024-03-15T10:30:00Z'
audience_link:
description: Link for the audience to join the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456
host_link:
description: Link for the host to manage the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456/onair
panelist_link:
description: Link for panelists to join the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456/onair/a1b2c3d4-e5f6-7890-abcd-ef1234567890
cursor:
description: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`.
type:
- string
- 'null'
required:
- id
- title
- lifecycle_status
- registration_status
- created_at
- updated_at
- audience_link
- host_link
- panelist_link
'400':
description: Bad request
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
description: Error message detailing the reason for the bad request.
type: string
examples:
- Bad request
errors:
description: Array of error messages detailing the reasons for the bad request.
type: array
items:
type: string
'401':
description: Unauthorized, invalid or missing token
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
code:
description: A machine-readable identifier for the specific authorization failure.
type: string
enum:
- unauthorized_credentials
- account_inactive
- unauthorized_scope
- unauthorized_params
error:
type: string
examples:
- Invalid credentials.
'403':
description: Webinar feature not available
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
type: string
examples:
- Webinars are not available on your current plan
'500':
description: Internal server error
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
type: string
examples:
- Internal server error
tags:
- Webinars
security:
- BearerAuth: []
post:
summary: Create Webinar
description: 'Creates a new webinar.
<!--- HIDE-MCP -->
## Requires api token with one of the following permissions
```
Read, update & delete anything
```
<!--- /HIDE-MCP -->
'
requestBody:
required: true
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
folder_id:
description: Hashed ID of the folder to place this webinar in. Defaults to the account's default webinar folder if not provided.
type: string
examples:
- abc123def456
time_zone:
description: The IANA time zone identifier the webinar is scheduled in.
type: string
examples:
- America/New_York
title:
description: The title of the webinar
type: string
examples:
- 'Wellness Session: Coping with Outie Memories'
description:
description: The description of the webinar
type: string
examples:
- A comprehensive session on managing work-life balance
scheduled_for:
description: The scheduled start time in W3C format with timezone
type: string
format: date-time
examples:
- '2024-03-20T15:30:00-05:00'
event_duration:
description: Duration of the event in minutes (minimum 15)
type: integer
examples:
- 60
minimum: 15
required:
- title
- scheduled_for
- event_duration
responses:
'201':
description: Webinar created successfully
content:
application/json:
schema:
unevaluatedProperties: false
type: object
description: 'A webinar is an event which allows you to stream a video
to multiple participants. See our [Webinars Guide](https://support.wistia.com/en/articles/8288501-getting-started-with-webinars)
for more info.
'
properties:
id:
description: The hashed ID of the webinar
type: string
examples:
- abc123def456
title:
description: The title of the webinar
type: string
examples:
- 'Wellness Session: Coping with Outie Memories'
description:
description: The description of the webinar
type:
- string
- 'null'
examples:
- A comprehensive session on managing work-life balance
scheduled_for:
description: The scheduled start time in W3C format with timezone
type:
- string
- 'null'
format: date-time
examples:
- '2024-03-20T15:30:00-05:00'
event_duration:
description: Duration of the webinar in minutes
type:
- integer
- 'null'
examples:
- 60
lifecycle_status:
description: Current lifecycle status of the event
type: string
examples:
- scheduled
registration_status:
description: Registration status of the event
type: string
examples:
- published
created_at:
description: When the event was created (UTC)
type: string
format: date-time
examples:
- '2024-03-15T10:30:00Z'
updated_at:
description: When the event was last updated (UTC)
type: string
format: date-time
examples:
- '2024-03-15T10:30:00Z'
audience_link:
description: Link for the audience to join the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456
host_link:
description: Link for the host to manage the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456/onair
panelist_link:
description: Link for panelists to join the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456/onair/a1b2c3d4-e5f6-7890-abcd-ef1234567890
cursor:
description: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`.
type:
- string
- 'null'
required:
- id
- title
- lifecycle_status
- registration_status
- created_at
- updated_at
- audience_link
- host_link
- panelist_link
'401':
description: Unauthorized, invalid or missing token
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
code:
description: A machine-readable identifier for the specific authorization failure.
type: string
enum:
- unauthorized_credentials
- account_inactive
- unauthorized_scope
- unauthorized_params
error:
type: string
examples:
- Invalid credentials.
'403':
description: Webinar feature not available
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
type: string
examples:
- Webinars are not available on your current plan
'422':
description: Validation errors
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
errors:
type: array
items:
type: string
examples:
- - Title is required
- Event duration must be at least 15 minutes
'429':
description: Rate limit exceeded
content:
text/plain:
schema:
type: string
examples:
- Rate limit exceeded
'500':
description: Internal server error during webinar creation
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
description: Error message describing the server-side failure.
type: string
errors:
type: array
items:
type: string
examples:
- - An error occurred while creating the webinar. Please try again.
tags:
- Webinars
security:
- BearerAuth: []
servers:
- url: https://api.wistia.com/modern
/webinars/{id}:
get:
summary: Show Webinar
description: 'Returns the webinar associated with the hashed id.
<!--- HIDE-MCP -->
## Requires api token with one of the following permissions
```
Read all data
```
<!--- /HIDE-MCP -->
'
parameters:
- name: id
in: path
description: The hashed ID of the webinar
required: true
schema:
type: string
responses:
'200':
description: Successful response with the webinar details
content:
application/json:
schema:
unevaluatedProperties: false
type: object
description: 'A webinar is an event which allows you to stream a video
to multiple participants. See our [Webinars Guide](https://support.wistia.com/en/articles/8288501-getting-started-with-webinars)
for more info.
'
properties:
id:
description: The hashed ID of the webinar
type: string
examples:
- abc123def456
title:
description: The title of the webinar
type: string
examples:
- 'Wellness Session: Coping with Outie Memories'
description:
description: The description of the webinar
type:
- string
- 'null'
examples:
- A comprehensive session on managing work-life balance
scheduled_for:
description: The scheduled start time in W3C format with timezone
type:
- string
- 'null'
format: date-time
examples:
- '2024-03-20T15:30:00-05:00'
event_duration:
description: Duration of the webinar in minutes
type:
- integer
- 'null'
examples:
- 60
lifecycle_status:
description: Current lifecycle status of the event
type: string
examples:
- scheduled
registration_status:
description: Registration status of the event
type: string
examples:
- published
created_at:
description: When the event was created (UTC)
type: string
format: date-time
examples:
- '2024-03-15T10:30:00Z'
updated_at:
description: When the event was last updated (UTC)
type: string
format: date-time
examples:
- '2024-03-15T10:30:00Z'
audience_link:
description: Link for the audience to join the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456
host_link:
description: Link for the host to manage the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456/onair
panelist_link:
description: Link for panelists to join the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456/onair/a1b2c3d4-e5f6-7890-abcd-ef1234567890
cursor:
description: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`.
type:
- string
- 'null'
required:
- id
- title
- lifecycle_status
- registration_status
- created_at
- updated_at
- audience_link
- host_link
- panelist_link
'401':
description: Unauthorized, invalid or missing token
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
code:
description: A machine-readable identifier for the specific authorization failure.
type: string
enum:
- unauthorized_credentials
- account_inactive
- unauthorized_scope
- unauthorized_params
error:
type: string
examples:
- Invalid credentials.
'403':
description: Webinar feature not available
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
type: string
examples:
- Webinars are not available on your current plan
'404':
description: Webinar not found
'500':
description: Internal server error
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
type: string
examples:
- Internal server error
tags:
- Webinars
security:
- BearerAuth: []
put:
summary: Update Webinar
description: 'Updates an existing webinar.
<!--- HIDE-MCP -->
## Requires api token with one of the following permissions
```
Read, update & delete anything
```
<!--- /HIDE-MCP -->
'
parameters:
- name: id
in: path
description: The hashed ID of the webinar
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
webinar:
unevaluatedProperties: false
type: object
properties:
folder_id:
description: Hashed ID of the folder to move this webinar to. Can only be changed before the webinar has started.
type: string
examples:
- abc123def456
time_zone:
description: The IANA time zone identifier the webinar is scheduled in.
type: string
examples:
- America/New_York
title:
description: The title of the webinar
type: string
examples:
- Updated Webinar Title
description:
description: The description of the webinar
type: string
examples:
- Updated webinar description
scheduled_for:
description: The scheduled start time in W3C format with timezone
type: string
format: date-time
examples:
- '2024-03-20T15:30:00-05:00'
event_duration:
description: Duration of the webinar in minutes (minimum 15)
type: integer
examples:
- 90
minimum: 15
responses:
'200':
description: Webinar updated successfully
content:
application/json:
schema:
unevaluatedProperties: false
type: object
description: 'A webinar is an event which allows you to stream a video
to multiple participants. See our [Webinars Guide](https://support.wistia.com/en/articles/8288501-getting-started-with-webinars)
for more info.
'
properties:
id:
description: The hashed ID of the webinar
type: string
examples:
- abc123def456
title:
description: The title of the webinar
type: string
examples:
- 'Wellness Session: Coping with Outie Memories'
description:
description: The description of the webinar
type:
- string
- 'null'
examples:
- A comprehensive session on managing work-life balance
scheduled_for:
description: The scheduled start time in W3C format with timezone
type:
- string
- 'null'
format: date-time
examples:
- '2024-03-20T15:30:00-05:00'
event_duration:
description: Duration of the webinar in minutes
type:
- integer
- 'null'
examples:
- 60
lifecycle_status:
description: Current lifecycle status of the event
type: string
examples:
- scheduled
registration_status:
description: Registration status of the event
type: string
examples:
- published
created_at:
description: When the event was created (UTC)
type: string
format: date-time
examples:
- '2024-03-15T10:30:00Z'
updated_at:
description: When the event was last updated (UTC)
type: string
format: date-time
examples:
- '2024-03-15T10:30:00Z'
audience_link:
description: Link for the audience to join the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456
host_link:
description: Link for the host to manage the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456/onair
panelist_link:
description: Link for panelists to join the event
type: string
examples:
- https://lumon-industries.wistia.com/live/events/abc123def456/onair/a1b2c3d4-e5f6-7890-abcd-ef1234567890
cursor:
description: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`.
type:
- string
- 'null'
required:
- id
- title
- lifecycle_status
- registration_status
- created_at
- updated_at
- audience_link
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wistia/refs/heads/main/openapi/wistia-webinars-api-openapi.yml