Get a study program
Returns a study program with its versions, responsible users, connected curricula, and summary counts. Use GET /cohorts?studyProgramId={id} for cohort details. Same shape as list items. Scoped to your integration’s institution via Basic Auth credentials.
/study-programs/{id}AuthorizationBasic auth · headerrequiredBasic Auth with clientId as username and clientSecret as password
idstringrequiredStudy program detail
dataStudyProgramrequiredStudy program list, detail, create, and update response. Includes program versions, responsible users, connected curricula, and summary counts. Use GET /cohorts?studyProgramId={id} for cohort details.
Show propertiesHide properties
idstringrequirednamestringrequiredinstitutionIdstringrequiredobjectivestring | nullisArchivedbooleanrequiredcodestring | nullstatisticDataobject | nulldefaultStudyTimeintegerdefaultTuitionFeePlanIdstring | nullhasCohortsbooleanrequiredhasStatisticsbooleanrequiredtypestring | nullstudyProgramVersionStudyProgramVersion[]requiredProgram versions (cohorts are listed separately).
Show propertiesHide properties
StudyProgramVersionidstringrequirednamestringrequiredinstitutionIdstringrequiredstudyProgramIdstringrequiredisDefaultbooleanrequiredstatisticDataobject | nullresponsibleUsersSimpleUser[]requiredstudyProgramResponsibleUser[].user, sorted by name. The
Show propertiesHide properties
SimpleUseridstringrequirednamestringrequiredemailstring<email>requiredimagestring | nullrequiredconnectedCurriculaStudyProgramConnectedCurricula[]requiredFlattened curricula from studyProgramConnectedCurricula (see StudyProgramConnectedCurricula). The
Show propertiesHide properties
StudyProgramConnectedCurriculaidstringrequirednamestringrequiredinstitutionIdstringrequiredcreatedAtstring<date-time>requiredupdatedAtstring<date-time>requiredisCohortSpecificbooleanrequiredisArchivedbooleanrequiredcodestring | nullversionsCountintegerrequiredfirstVersionStudyProgramVersionrequiredThe first program version.
Show propertiesHide properties
idstringrequirednamestringrequiredinstitutionIdstringrequiredstudyProgramIdstringrequiredisDefaultbooleanrequiredstatisticDataobject | nulldefaultVersionStudyProgramVersion | nullThe default program version, if one is set.
Show propertiesHide properties
idstringrequirednamestringrequiredinstitutionIdstringrequiredstudyProgramIdstringrequiredisDefaultbooleanrequiredstatisticDataobject | nullnullversionsCountintegerrequiredTotal number of program versions.
cohortsCountintegerrequiredTotal cohort count across all versions.
studyProgramMetadataobject | nullrequiredAlways null on list and detail responses; use version-specific endpoints for metadata.
metaResponseMetarequiredShow 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.
Unauthorized
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> | nullrequiredNot Found
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