Remove a student from a group identified by its external reference ID, without rewriting its membership. This endpoint never adds anyone. Same behaviour as DELETE /v3/groups/{id}/students, including the exhaustive list of cases where a student keeps their place on a course.
One student per call. Send studentIds or studentExternalReferenceIds, never both, with exactly one identifier. The field is an array so the limit can be raised later without breaking your integration. To replace a whole membership use PUT /v3/groups/{id}/students; to move a batch without touching courses use POST /v3/groups/students/batch-upsert.
Not idempotent, by design. Removing a student who is not a member of the group is rejected with STUDENT_NOT_IN_GROUP. Treat that code as benign if your events can be delivered more than once.
All or nothing. An unknown student identifier fails the whole call and writes nothing.
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.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||

