Skip to main content
The classes endpoint returns two kinds of event in one list. Read eventType to tell them apart:
  • class — a standalone event with no parent.
  • course_session — one session of a multi-session course. courseId holds the opaque ID of the parent course, and publicUrl links to the course rather than to the single session.
Only events the studio has published, marked visible in the public calendar, and not marked private are returned.

Cancellations

A canceled class can remain visible so clients can see that it will not take place. In that case, isCanceled is true. Do not present that event as bookable. Active classes and course sessions return isCanceled: false.

Times

start and end are UTC. localTimeStart and localTimeEnd are the same instants in the studio’s zone with a numeric offset, and timezone names that zone. See Dates and time zones.

References

A class points at its lecturers and location by ID rather than embedding them. lecturerIds holds opaque lecturer IDs — resolve them against GET /v1/lecturers. For a course session with a substitute lecturer, lecturerIds lists only the substitute: the assignment replaces the course’s main and additional lecturers for that session, and the lecturerIds filter follows the same rule. locationId holds an opaque place ID, or null — for an online class, and for one the studio left without a place. Read isOnline to tell the two apart rather than inferring it from locationId. Resolve a non-null value against GET /v1/places. For a course session this is the place set on that session. When a studio moves a single session to another room, both locationId and the placeIds filter follow that move rather than the course’s original place. tags is the one exception: tags are embedded inline, because they are small and change rarely. Each carries a numeric id you can feed back into the labelIds filter.
Fetch lecturers and places once and build a lookup map. Resolving per event will exhaust your rate limit on a busy schedule.

Pricing

pricingOptions lists every way a client can pay for this class. See Pricing option for how type, value, and currency fit together, and why currency is missing on some entries. Class pricing options carry an optional description; workshop ones do not.

Capacity

capacity appears only when you pass includeCapacity=true or includeCapacity=1. It is more expensive, so request it only where you show live availability.
max is the seat limit. Every class has one, so it is always a number. reserved counts active and completed reservations.
Unlike Workshop, a class capacity has no available field. Compute it as max - reserved, and clamp at zero — a studio can lower the capacity below the number of existing reservations.

A standalone class or one session of a course.

_id
string

Opaque event ID. Not a sequential database ID — treat it as a string and do not parse it.

Example:

"9b1c4f7a2e6d8035c1a94fb27de60381"

courseId
string | null

Opaque ID of the parent course when eventType is course_session, otherwise null.

eventType
enum<string>

class for a standalone event, course_session for one session of a multi-session course.

Available options:
class,
course_session
name
string
description
string | null
start
string<date-time> | null

Start in UTC, ISO 8601 with a Z suffix.

Example:

"2026-03-15T08:00:00Z"

end
string<date-time> | null

End in UTC.

localTimeStart
string | null

Start in the studio's time zone, ISO 8601 with a numeric offset.

Example:

"2026-03-15T09:00:00+01:00"

localTimeEnd
string | null

End in the studio's time zone.

timezone
string

IANA time zone of the studio. Falls back to UTC when unset.

Example:

"Europe/Prague"

lecturerIds
string[]

Opaque lecturer IDs. Resolve them against GET /v1/lecturers. For a course session with a substitute lecturer, only the substitute is listed.

locationId
string | null

Opaque place ID. null for an online class and for one with no place assigned — read isOnline to tell them apart. Resolve a non-null value against GET /v1/places.

isOnline
boolean
isCanceled
boolean

true when the studio canceled this occurrence but kept it visible in the public calendar. Do not present it as bookable.

pricingOptions
object[]
tags
object[]
publicUrl
string

Link to this class, or to the parent course, on the studio's public Zenamu page.

capacity
object

Present only when includeCapacity is requested.