Vidyst API
API referenceWebinars

Get a webinar

GET
/webinars/{webinarId}

One webinar the API key's account owns. Needs the webinars:read scope. A webinar that doesn't exist, or that the account doesn't own (even one it helps run), is 404 not_found.

Authorization

apiKey
headerAuthorizationBearer <vk_live_<public id>_<secret>>

An API key from the Vidyst studio (Developer → API keys), sent as Authorization: Bearer vk_live_….

Path Parameters

webinarId*string

The webinar's id.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid

Response Body

A webinar.

application/json
  1. response

A webinar.

id*string

The webinar's id.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
title*string

Its title.

description*|

Its plain-text description, or null.

status*string

draft (private), scheduled (published, not live), live (a session is on) or ended (no sessions left).

Value in"draft""scheduled""live""ended"
access*string

open or registration.

Value in"open""registration"
licenceKey*|

The key of the licence it runs on.

scheduledAt*|

When the first session starts (UTC), or null for a draft without a date.

timezone*string

The IANA time zone it's shown in.

durationMinutes*integer

Planned length of each session, in minutes.

Range-9007199254740991 <= value <= 9007199254740991
repeat*string

How the series repeats (none for a single session).

Value in"none""daily""weekly""monthly""custom"
repeatCount*integer

How many sessions it has (1 for a single session).

Range-9007199254740991 <= value <= 9007199254740991
repeatDays*array<>

The weekdays of a custom series (0 = Sunday); empty otherwise.

occurrences*array<>

Every session, in order.

nextSessionAt*|

The session on now or the next one (UTC); null when none is left.

sessionsLeft*integer

Sessions not over yet, the one on now included.

Range-9007199254740991 <= value <= 9007199254740991
registrationLimit*|

The most registrations it takes, or null for no limit of its own.

registrationCount*integer

How many people have registered.

Range-9007199254740991 <= value <= 9007199254740991
passcodeProtected*boolean

Whether attendees need a passcode to join.

reminders*array<>

The emails registrants get.

agenda*array<>

The agenda shown on its page.

faqs*array<>

The questions and answers shown on its page.

questions*array<>

The registration form's questions.

pageUrl*string

Its public page, where people register and join. Share this link.

Formaturi
startedAt*|

When its current or last session went live (UTC), or null.

endedAt*|

When it ended for good (UTC), or null.

createdAt*string

When it was created (UTC).

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
Formatdate-time
updatedAt*string

When it last changed (UTC).

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
Formatdate-time
Example Request
curl -X GET 'https://vapi.vidyst.com/public/v1/webinars/01929c5e-8f3a-7b21-9d4e-5a6b7c8d9e0f' \  -H 'Authorization: Bearer vk_live_…'
Example Response
{  "id": "01929c5e-8f3a-7b21-9d4e-5a6b7c8d9e0f",  "title": "Product launch: what's new in Q4",  "description": "A tour of everything we shipped this quarter, with live Q&A.",  "status": "scheduled",  "access": "registration",  "licenceKey": "VDL-M4A05-TKY9Q-0A5V6-WMR8H",  "scheduledAt": "2026-12-01T15:30:00.000Z",  "timezone": "Asia/Kolkata",  "durationMinutes": 45,  "repeat": "weekly",  "repeatCount": 6,  "repeatDays": [],  "occurrences": [    {      "index": 0,      "startsAt": "2026-12-01T15:30:00.000Z",      "done": false    }  ],  "nextSessionAt": "2026-12-01T15:30:00.000Z",  "sessionsLeft": 6,  "registrationLimit": 500,  "registrationCount": 0,  "passcodeProtected": true,  "reminders": [    "confirmation",    "day_before",    "hour_before"  ],  "agenda": [    {      "time": "10:00",      "title": "Welcome and introductions"    }  ],  "faqs": [    {      "question": "Will there be a replay?",      "answer": "Yes, registrants get the replay by email."    }  ],  "questions": [    {      "label": "What's your role?",      "type": "multiple_choice",      "required": true,      "options": [        "Marketing",        "Engineering",        "Other"      ]    }  ],  "pageUrl": "https://vidyst.live/w/4fQ9zK2mXp",  "startedAt": null,  "endedAt": null,  "createdAt": "2026-11-03T09:30:00.000Z",  "updatedAt": "2026-11-03T09:30:00.000Z"}