[BETA] Remove students from a group

Remove students from a group, without rewriting its membership. This endpoint never adds anyone. The identifiers travel in the request body, so they never appear in access logs.

Moving a section. Add the students to the new group with POST /v3/groups/{id}/students first, then remove them here: a student is never left without a group if one of the calls fails.

Up to 100 students per call. Send studentIds or studentExternalReferenceIds, never both, with 1 to 100 identifiers. The limit counts the identifiers sent, duplicates included; a student listed twice is processed once, so removedCount can be lower than the number of identifiers sent. To replace a whole membership use PUT /v3/groups/{id}/students.

Not idempotent, by design. Removing a student who is not a member of the group is rejected with STUDENT_NOT_IN_GROUP, and one such student refuses the whole list: nobody is removed, and the error names every non-member. Your view of the membership and ours disagree, and that deserves an error rather than a silent success. A successful removal therefore fails if you replay it — treat that code as benign if your events can be delivered more than once.

Who keeps their place on a course anyway, when cascadeToCourses is true: a student who also reaches that course through another group they still belong to. That is the only case, which is why coursesUpdatedCount can be lower than the number of upcoming courses of the group. A declared absence or an existing signature does not keep a student on the attendance; the absence itself is kept, and is applied again automatically if the student is added back to the group.

With cascadeToCourses=false nobody is taken off anything: only the group membership changes, and every student keeps their place on every course.

All or nothing. An unknown or archived student fails the whole call and writes nothing; the error names every one of them.

Rate limit: standard. Concurrency: two identical calls sent at the same moment share a single execution; a call replayed after the response has come back runs again in full.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required
length ≥ 1

The internal Edusign group ID

Query Params
boolean
Defaults to true

Optional, defaults to true. When true, the student is also removed from the attendance of the upcoming courses of the group, and the recipients of the surveys attached to those courses are updated. They stay on a course they also reach through another group they still belong to, which is why coursesUpdatedCount can be lower than the number of upcoming courses of the group. When false, only the group membership changes and the student stays on the course attendance - use this when your own system drives course attendance. Courses that have already started, and locked courses, are never affected either way.

Body Params
studentIds
array of strings

Internal Edusign student IDs to remove, 1 to 100 per call. Mutually exclusive with studentExternalReferenceIds.

studentIds
studentExternalReferenceIds
array of strings

External reference IDs of the students to remove, 1 to 100 per call. Mutually exclusive with studentIds.

studentExternalReferenceIds
Responses

Language
Credentials
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json