How a live’s or an evergreen’s sessions are dated: fixed dates, or a recurrence — recurringStandardCrons, each a time of day on some days (0 15 * * *), and, on an evergreen, one recurringJustInTimeCron, a session every 15, 30 or 60 minutes, or on the hour, through a span of hours, every day (*/15 9-21 * * *, 0 9-21 * * *); null for none.
useWebinarRegistrationTimezone
On an evergreen, the schedule’s hours are read in each registrant’s own timezone instead of the webinar’s — 15:00 wherever they are. Always false on a live.
sessions
Its sessions, newest first — id, startsAt, status (scheduled, running, canceled, closed), closedAt and the rest.
timezone
The zone the schedule is written in, and read in unless useWebinarRegistrationTimezone.
organizationCustomDomainId
The watch domain of your own its pages open on (see Custom domains); absent, watch.sparkwebinar.io.
formFields
What the registration form asks, each with whether it is on and required.
enableTicket, ticket
Whether entry is paid for, and through which integration.
webinarRegistrationsCount
How many have registered.
enableReplay, replayExpirationSeconds
Whether a replay is offered after a session, and for how long.
archived
Put away from the lists: it stops nothing. Only a webinar with its sign-ups paused and everything over is archived.
lastPublishedAt, createdAt, updatedAt
Its instants.
registrationsClosed
Its sign-ups were paused from the dashboard: no new registration comes in, and the sessions there are go on. Always true on an archived webinar, and it stays so when the webinar is brought back.
The webinar’s sessions, in the order they start, a live’s and an
evergreen’s alike: the ones there are. None is made ahead — a session is
made by the first registration at a time of the
schedule, and the ones after it take a seat in it; a time
nobody registered for has no session.
Filter
Narrows to
status
scheduled, running, canceled or closed.
startsAtFrom, startsAtTo
Starting in the span.
GET /public/v1/webinars/12/sessions?status=scheduled&startsAtFrom=2026-11-02T00:00:00Z
A seat taken from your own system — the same as one taken through the
form: the registration is written with an access token of its own, said to
be created, and whatever that sets off — your automations, your
webhooks — follows.
The seat is a time of the webinar’s schedule — read from its
fixedDates, recurringStandardCrons and recurringJustInTimeCron, in its
timezone or, with useWebinarRegistrationTimezone on, the registrant’s —, sent
as sessionStartsAt: the session there is found — even once it has started,
where it is not canceled nor over — or made by this registration.
Sparkwebinar works out which entry of the schedule names the time and keeps it
on the registration as its selectedSchedule. The just-in-time cron offers only
its next time, counted from when the registration comes in, and that time is
always the just-in-time cron’s; its later times are no time of the schedule,
unless a date or a recurring cron names them, which they then go under.
Field
What it is
firstName
required
email
required
lastName
Empty where not sent.
phoneCc, phoneNumber
The calling code with its plus, +55, and the digits after it, 11987654321. Both or neither.
timezone
An IANA zone, America/Sao_Paulo: the clock their sessions are read in. The webinar’s own where not sent — and required where the webinar has useWebinarRegistrationTimezone on, since sessionStartsAt is read in it.
source, medium, campaign, content, term
UTM tags — whatever brought them. Empty where not sent.
sessionStartsAt
required
An instant, on a live as on an evergreen: a time of its schedule — still to come, unless a session not canceled nor closed is already there, and no more than 90 days from now, session there or not.
The answer is the registration, whole, their
accessToken with them. Nothing refuses a second seat with the same
e-mail: a registration is a seat, not a person. A webinar that
charges for entry is not charged here — your system is the organization,
seating whom it will.
Status
infoCode
Why
400
WEBINAR_SESSION_NOT_FOUND
The webinar’s schedule does not name sessionStartsAt — a later time of the just-in-time cron than its next among them — or the session there is canceled or over.
400
WEBINAR_SESSION_STARTED
A time of the schedule already past, with no session there.
400
WEBINAR_REGISTRATION_TOO_FAR_AHEAD
A time more than 90 days from now: Sparkwebinar does not accept registrations further ahead.
400
VALIDATION_FAILED
A field that does not fit: an e-mail that is none, a phone in one half, a zone the clock does not know — or no timezone where the webinar reads its schedule in each registrant’s own.
409
WEBINAR_REGISTRATIONS_CLOSED
The webinar’s sign-ups are paused (registrationsClosed), whatever the time sent: none comes in, in a session there already either.