Enrolments

See who is on which course and run; add and withdraw learners.

  • Scopesenrolments:readenrolments:write

Data requests act inside the key’s centre as the person who created the key: each needs the scope and that person’s current EduMark permission. See auth and pagination.

List enrolments

GET/v1/enrolments

Learner enrolments, newest first. Filter by learner, course or run.

Scope enrolments:read

Parameters

List enrolments: parameters
FieldDetails
limitintegerItems per page, 1 to 100.1 to 100Default 25
cursorstring, optionalThe next_cursor from the previous page.Up to 512 characters
learner_idstring, optionalUp to 200 characters
course_idstring, optionalUp to 200 characters
run_idstring, optionalUp to 200 characters
statusenum, optionalOne of active, completed, withdrawn
updated_sincestring, optional

Headers

List enrolments: headers
FieldDetails
EduMark-VersionenumAPI version. Defaults to the latest.One of 2026-10-21

Responses

StatusMeaning
200Successful Response
400Request rejected. Inspect error.code and request_id; failed work is not billed.
401Request rejected. Inspect error.code and request_id; failed work is not billed.
403Request rejected. Inspect error.code and request_id; failed work is not billed.
404Request rejected. Inspect error.code and request_id; failed work is not billed.
409Request rejected. Inspect error.code and request_id; failed work is not billed.
410Request rejected. Inspect error.code and request_id; failed work is not billed.
413Request rejected. Inspect error.code and request_id; failed work is not billed.
415Request rejected. Inspect error.code and request_id; failed work is not billed.
422Validation Error
429Request rejected. Inspect error.code and request_id; failed work is not billed.
503Request rejected. Inspect error.code and request_id; failed work is not billed.

Enrol a learner

POST/v1/enrolments

Adds a learner to a course run (run_id), or enrols them directly on a published course (course_id). Adding someone to a run that has not started answers 202: they are enrolled when it starts.

Scope enrolments:write

Headers

Enrol a learner: headers
FieldDetails
Idempotency-KeystringRequiredA unique key per enrolment.
EduMark-VersionenumAPI version. Defaults to the latest.One of 2026-10-21

Request body

Enrol a learner: request body
FieldDetails
learner_idstringRequiredUp to 200 characters
course_idstring, optionalEnrol directly on the course's published version.Up to 200 characters
run_idstring, optionalAdd the learner to this course run (preferred).Up to 200 characters
starts_atstring (date-time), optionalDirect course enrolments only.
ends_atstring (date-time), optionalDirect course enrolments only.

Responses

StatusMeaning
201Successful Response
202Added to a run that has not started; enrolled when it starts
400Request rejected. Inspect error.code and request_id; failed work is not billed.
401Request rejected. Inspect error.code and request_id; failed work is not billed.
403Request rejected. Inspect error.code and request_id; failed work is not billed.
404Request rejected. Inspect error.code and request_id; failed work is not billed.
409Request rejected. Inspect error.code and request_id; failed work is not billed.
410Request rejected. Inspect error.code and request_id; failed work is not billed.
413Request rejected. Inspect error.code and request_id; failed work is not billed.
415Request rejected. Inspect error.code and request_id; failed work is not billed.
422Validation Error
429Request rejected. Inspect error.code and request_id; failed work is not billed.
503Request rejected. Inspect error.code and request_id; failed work is not billed.

Get an enrolment

GET/v1/enrolments/{enrolment_id}

Scope enrolments:read

Parameters

Get an enrolment: parameters
FieldDetails
enrolment_idstringRequired

Headers

Get an enrolment: headers
FieldDetails
EduMark-VersionenumAPI version. Defaults to the latest.One of 2026-10-21

Responses

StatusMeaning
200Successful Response
400Request rejected. Inspect error.code and request_id; failed work is not billed.
401Request rejected. Inspect error.code and request_id; failed work is not billed.
403Request rejected. Inspect error.code and request_id; failed work is not billed.
404Request rejected. Inspect error.code and request_id; failed work is not billed.
409Request rejected. Inspect error.code and request_id; failed work is not billed.
410Request rejected. Inspect error.code and request_id; failed work is not billed.
413Request rejected. Inspect error.code and request_id; failed work is not billed.
415Request rejected. Inspect error.code and request_id; failed work is not billed.
422Validation Error
429Request rejected. Inspect error.code and request_id; failed work is not billed.
503Request rejected. Inspect error.code and request_id; failed work is not billed.

Withdraw an enrolment

DELETE/v1/enrolments/{enrolment_id}

Withdraws the learner from the course. Their record and work are kept.

Scope enrolments:write

Parameters

Withdraw an enrolment: parameters
FieldDetails
enrolment_idstringRequired

Headers

Withdraw an enrolment: headers
FieldDetails
EduMark-VersionenumAPI version. Defaults to the latest.One of 2026-10-21

Responses

StatusMeaning
200Successful Response
400Request rejected. Inspect error.code and request_id; failed work is not billed.
401Request rejected. Inspect error.code and request_id; failed work is not billed.
403Request rejected. Inspect error.code and request_id; failed work is not billed.
404Request rejected. Inspect error.code and request_id; failed work is not billed.
409Request rejected. Inspect error.code and request_id; failed work is not billed.
410Request rejected. Inspect error.code and request_id; failed work is not billed.
413Request rejected. Inspect error.code and request_id; failed work is not billed.
415Request rejected. Inspect error.code and request_id; failed work is not billed.
422Validation Error
429Request rejected. Inspect error.code and request_id; failed work is not billed.
503Request rejected. Inspect error.code and request_id; failed work is not billed.