Create a cohort
Creates a cohort linked to a curricula version and study program version. Returns full cohort detail (same shape as GET /cohorts/{id}). studyProgramVersionId is required. startDate must be strictly before endDate at minute precision. Cohort dates are compared at minute precision (matching the dashboard). Returns 422 when both fall in the same minute (startDate and endDate must not be in the same minute) or when startDate is after endDate at minute level (startDate must be before endDate). Scoped to your integration’s institution via Basic Auth credentials.
/cohortsAuthorizationBasic auth · headerrequiredBasic Auth with clientId as username and clientSecret as password
Idempotency-Keystringrequiredapplication/jsonnamestringrequiredstartDatestring<date-time>requiredCohort start date. Compared at minute precision (seconds are ignored). Must be strictly before endDate at minute level. If in the same minute as endDate, returns 422 with startDate and endDate must not be in the same minute.
endDatestring<date-time>requiredCohort end date. Compared at minute precision (seconds are ignored). Must be strictly after startDate at minute level. If in the same minute as startDate, returns 422 with startDate and endDate must not be in the same minute.
curriculaVersionIdstringrequiredstudyProgramVersionIdstringrequiredisArchivedbooleanCohort created
dataCohortDetailrequiredCohort detail from GET /cohorts/{id}. Includes computed status, a sample of members in users (up to 5), totalUsersCount, and the linked curriculum version structure.
Show propertiesHide properties
idstringrequirednamestringrequiredstartDatestring<date-time>requiredstatusstringrequiredComputed from cohort start and end dates relative to the current date.
UPCOMINGACTIVECOMPLETEDendDatestring<date-time>requiredcurriculaVersionCurriculaVersionDetailrequiredFully expanded curricula version: terms, pathways, module clusters, module items, and parent curricula metadata.
Show propertiesHide properties
idstringrequiredversionstringrequirednamestringrequiredcreatedAtstring<date-time>requiredupdatedAtstring<date-time>requiredcurriculaIdstringrequiredelectionEndWeeksinteger | nullrequiredelectionModestring | nullrequiredELECT_WHENEVERELECT_BEFORE_TERMELECT_AFTER_TERMelectionStartWeeksinteger | nullrequiredisCohortVersionbooleanrequiredsourceCohortIdstring | nullrequiredsourceCohortobject | nullrequiredShow propertiesHide properties
idstringnamestringcurriculaVersionTermsCurriculaVersionTermInDetail[]requiredShow propertiesHide properties
CurriculaVersionTermInDetailidstringrequiredpositionintegerrequirednamestringrequiredcurriculaVersionIdstringrequiredcohortCurriculaVersionTermCohortCurriculaVersionTermInDetail[]requiredShow propertiesHide properties
CohortCurriculaVersionTermInDetailidstringrequiredcurriculaVersionTermIdstringrequiredorganizationTermIdstringrequiredcohortIdstringrequiredinstitutionIdstringrequiredcohortobjectrequiredShow propertiesHide properties
idstringrequirednamestringrequiredorganizationTermOrganizationTermrequiredAcademic term (semester) with optional module election and reassessment registration windows.
Show propertiesHide properties
idstringrequirednamestringrequiredtermEndstring<date-time>requiredEnd of the academic term.
institutionIdstringrequiredtermStartstring<date-time>requiredStart of the academic term.
codestring | nullelectionEndstring<date-time> | nullDeadline for module elections for this term.
electionStartstring<date-time> | nullWhen students may begin electing modules for this term.
reassessmentRegistrationEndstring<date-time> | nullWhen reassessment registration closes.
reassessmentRegistrationStartstring<date-time> | nullWhen reassessment registration opens.
curriculaVersionTermCurriculaVersionTermrequiredShow propertiesHide properties
idstringrequiredpositionintegerrequirednamestringrequiredcurriculaVersionIdstringrequiredcohortStudyTimelineStatusobject | nullcurriculaVersionPathwaysCurriculaVersionPathway[]requiredShow propertiesHide properties
CurriculaVersionPathwayidstringrequiredpositionintegerrequirednamestringrequiredtypestringrequiredFIXED = mandatory pathway; SELECTABLE_FOCUS = student chooses one focus.
FIXEDSELECTABLE_FOCUScurriculaVersionIdstringrequireddescriptionstring | nullcurriculaVersionModuleClusterobject[]requiredElective module clusters in this version.
isDefaultbooleanrequiredcurriculaobjectrequiredParent curriculum summary (institutionId omitted on GET /versions/{versionId}).
Show propertiesHide properties
idstringrequirednamestringrequiredisCohortSpecificbooleanrequiredcurriculaVersionItemsCurriculaVersionItemDetail[]requiredModule items with planning units.
Show propertiesHide properties
CurriculaVersionItemDetailidstringrequiredcurriculaVersionIdstringrequiredcourseModuleIdstringrequiredcourseModuleVersionIdstring | nullcurriculaVersionTermIdstring | nullcurriculaVersionModuleClusterIdstring | nullcurriculaVersionPathwayIdstring | nullparentIdstring | nullupdatedAtstring<date-time>requiredisCoreModulebooleanrequiredcourseModuleobject | nullwith nested courseModuleTags.
Show propertiesHide properties
idstringnamestringinstitutionIdstringcodestring | nullisArchivedboolean | nullnameTranslationsobject | nullcourseModuleTagsModuleTag[]Show propertiesHide properties
ModuleTagidstringrequiredcourseModuleIdstringrequiredtagIdstringrequiredtagobjectrequiredShow propertiesHide properties
idstringrequirednamestringrequiredinstitutionIdstringrequiredcolorstring | nulliconstring | nullcurriculaVersionTermCurriculaVersionTermInDetail | nullShow propertiesHide properties
CurriculaVersionTermInDetailnullcurriculaVersionPathwayCurriculaVersionPathway | nullShow propertiesHide properties
CurriculaVersionPathwaynullcurriculaVersionModuleClusterobject | nullmoduleGroupIdstring | nullrequiredmoduleGroupobject | nullrequiredShow propertiesHide properties
idstringnamestringcodestring | nullcolorstring | nullcourseModuleVersionCurriculaVersionItemModuleVersion | nullShow propertiesHide properties
examinationRequirementsobject[]requiredcourseModuleIdstringrequiredidstringrequiredparentConnectionsobject[]requiredNested childModuleVersion is the full
childConnectionsobject[]requiredNested parentModuleVersion may include the parent module.
namestringrequiredmoduleNamestring | nullversionstringrequiredectsPointsnumberrequiredECTS credit points. Halves only (0, 0.5, 1, 1.5, …). Breaking change: previously integer-only.
unitAmountnumberrequiredTotal scheduled units from time plan items that require appointments.
unitNamestringrequiredLesson unit name (from the version time plan or institution default).
unitMinuteEquivalentnumberrequiredLesson unit length in minutes (from the version time plan or institution default).
nullcurriculaobjectrequiredShow propertiesHide properties
idstringrequirednamestringrequiredisCohortSpecificbooleanrequiredisArchivedbooleanrequiredusersobject[]requiredSample of up to 5 cohort members. Use the members list endpoint for the full list.
Show propertiesHide properties
objectidstringrequirednamestringrequiredemailstring<email>requiredimagestring | nulltotalUsersCountintegerrequiredTotal number of members in the cohort.
hasDisconnectedFromCurriculabooleanrequiredmetaResponseMetarequiredShow propertiesHide properties
requestIdstringrequiredtimestampstring<date-time>requiredversionstringrequiredv4watermarkstring<date-time>Present on GET /users?updatedSince= pages. Taken at the first page minus a 60s overlap. Bound into pagination.next_cursor. Use it as the next updatedSince after deduping by user id. Delivery is inclusive >= and at-least-once.
Bad Request
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredUnauthorized
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredUnprocessable Entity — validation or business rule error
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredToo Many Requests — 1000 requests per minute per institution. Includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (ISO-8601), and Retry-After (seconds).
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequiredInternal Server Error
typestringrequirederrorcodestringrequiredbad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
objectfieldstringmessagestringexistingUserIdstringPresent on 409 email or membership-code conflicts. The user id that already holds the email or code.
activeSessionobjectPresent on time-tracking start 409 when a session is already running. Stop this session, then retry start.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredconflictingLogobjectPresent on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.
Show propertiesHide properties
idstringrequiredstartTimestring<date-time>requiredendTimestring<date-time> | nullrequired