Create an appointment
Creates an appointment attached to one or more courses via courseIds (layer IDs from GET /courses). Supports multiple courses in one request. Requires Idempotency-Key. Creator is recorded as an institution admin/moderator.
/appointmentsAuthorizationBasic auth · headerrequiredBasic Auth with clientId as username and clientSecret as password
Idempotency-KeystringrequiredUnique key to ensure idempotent creation
application/jsontitlestringrequireddateTimestring<date-time>requiredStart time in ISO 8601. Must include a timezone offset (Z or ±HH:MM).
durationintegerrequiredDuration in minutes
isOnlinebooleanHint for online-only format. The server may recompute this from rooms, address, and onlineAddress.
isHybridbooleanHint for hybrid format. The server may recompute this from rooms, address, and onlineAddress.
addressstringPhysical address. May be taken from the first booked room's location.
onlineAddressstringOnline meeting URL (e.g. video link).
locationstringFree-text location label.
roomsAppointmentRoomInput[]v4 only — legacy roomId / roomIds fields are not accepted.
Show propertiesHide properties
AppointmentRoomInputroomIdstringrequiredInstitution room ID from Room Management.
setupIdstring | nullOptional room setup/version ID. Omit or pass null for the default setup.
courseIdsstring[]requiredLayer IDs of courses to attach (layerId from GET /courses, not the course entity id). Required on all create requests.
organizerIdsstring[]User IDs of organizers (must belong to the institution).
userIdsstring[]Additional participant user IDs (must belong to the institution).
userGroupIdsstring[]User group IDs to invite as participants.
appointmentTypeIdstring | nullInstitution appointment type ID. There is no public list endpoint — obtain IDs from your institution configuration in the dashboard.
notesstringAppointment created
dataAppointmentrequiredFull appointment from GET /appointments, GET /appointments/{id}, and create responses. Includes participants, creator, groups, and series when loaded.
Show propertiesHide properties
idstringrequiredtitlestringrequirednotesstringdateTimestring<date-time>requireddurationintegerrequiredDuration in minutes
isOnlinebooleanrequiredisHybridbooleanrequiredonlineAddressstringaddressstringlocationstring | nullproviderstringroomIdstring | nullDeprecated — use appointmentRooms.
appointmentRoomsAppointmentRoomBooking[]Show propertiesHide properties
AppointmentRoomBookingroomIdstringsetupIdstring | nullroomobjectsetupobject | nullappointmentLayersAppointmentLayer[]Show propertiesHide properties
AppointmentLayerlayerIdstringlayerobject | nullShow propertiesHide properties
idstringnamestringcourseobject | nullShow propertiesHide properties
idstringCourse entity ID
codestring | nullnamestringorganizerUsersAppointmentOrganizer[]Show propertiesHide properties
AppointmentOrganizerorganizerIdstringrequiredappointmentUsersAppointmentUserParticipant[]Show propertiesHide properties
AppointmentUserParticipantuserIdstringuserAppointmentSafeUserShow propertiesHide properties
idstringnamestringemailstringfirstNamestring | nulllastNamestring | nullimagestring | nullappointmentCreatorobject[]Institution admin/moderator used as creator for API-created appointments.
Show propertiesHide properties
objectuserIdstringuserAppointmentSafeUserShow propertiesHide properties
idstringnamestringemailstringfirstNamestring | nulllastNamestring | nullimagestring | nullappointmentUserGroupsobject[]Show propertiesHide properties
objectuserGroupIdstringuserGroupobjectappointmentTypeobject | nullseriesobject | nullmetaResponseMetarequiredShow propertiesHide properties
requestIdstringrequiredtimestampstring<date-time>requiredversionstringrequiredv4Bad Request
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringUnauthorized
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringForbidden
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringConflict
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringToo Many Requests
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringInternal Server Error
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestring