Add a student to a group identified by its external reference ID, without rewriting its membership. This endpoint never removes anyone. Same behaviour as POST /v3/groups/{id}/students.
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.
Safe to replay. A student already in the group is reported in unchangedCount — no error, no duplicate.
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… | |||

