Groups
Learning · 4 operations
GET
List groups
/api/groupStudy groups with filters and pagination. studentsCount is the number of active students; studentsCountFrom/studentsCountTo filter by it (empty groups count as 0).
list_groups
Query parameters · 23
pagemin 1 · default 1pageSize1–250 · default 20sortByOne of: status nameOfGroup teacher levelOfKnowledgesortOrderOne of: ASC DESCgroupIds—statusOfGroupId—statusOfGroupIds—nameOfGrouplength max 150Show 15 more
description—teacherId—teacherIds—levelOfKnowledgeId—levelOfKnowledgeIds—classOfStudentIds—subjectIds—typeOfLessonIds—dateStartformat YYYY-MM-DDTHH:mm:ssdateEndformat YYYY-MM-DDTHH:mm:ssnote—isArchivaldefault falsestudentsCountFromAt least this many active students.studentsCountToAt most this many active students; empty groups included.cf—Response · 200
application/json
statusCodeexample 200message—data4 fields
total—totalPages—currentPage—groups14 fields
groupId—nameOfGroup—description—limitOfStudents—dateStartformat YYYY-MM-DDTHH:mm:ssdateEndformat YYYY-MM-DDTHH:mm:ssnote—avatarUrl—isArchival—updatedAtformat YYYY-MM-DDTHH:mm:sscreatedAtformat YYYY-MM-DDTHH:mm:ssregularLessons3 fields
dayOfWeek—timeStart—timeEnd—studentsCountActive students; absent when the role cannot see group students.customFieldsCustom field values; the table row shows the columns chosen in the preset.any keyscurl "https://your-school.rist.pro/api/group" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/group", {
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.get(
"https://your-school.rist.pro/api/group",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]Response example · 200
{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"total": 0,
"totalPages": 0,
"currentPage": 0,
"groups": [
{
"groupId": 1,
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 0,
"dateStart": "2026-11-09T14:30:00",
"dateEnd": "2026-11-09T14:30:00",
"note": "string",
"avatarUrl": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"regularLessons": [
{
"dayOfWeek": 0,
"timeStart": "string",
"timeEnd": "string"
}
],
"studentsCount": 0,
"customFields": {}
}
]
}
}GET
Get group
/api/group/{id}One study group with its students and teachers.
get_group
Path parameters · 1
id—Response · 200
application/json
statusCodeexample 200message—data12 fields
groupId—nameOfGroup—description—limitOfStudents—dateStartformat YYYY-MM-DDTHH:mm:ssdateEndformat YYYY-MM-DDTHH:mm:ssnote—avatarUrl—isArchival—updatedAtformat YYYY-MM-DDTHH:mm:sscreatedAtformat YYYY-MM-DDTHH:mm:sscustomFieldsany keyscurl "https://your-school.rist.pro/api/group/1" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/group/1", {
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.get(
"https://your-school.rist.pro/api/group/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]Response example · 200
{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"groupId": 1,
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 0,
"dateStart": "2026-11-09T14:30:00",
"dateEnd": "2026-11-09T14:30:00",
"note": "string",
"avatarUrl": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"customFields": {}
}
}POST
Create group
/api/groupCreate a study group with teachers, subjects, lesson types, level and dates.
create_group
Request body
application/json · object
nameOfGrouplength 1–150descriptionlength max 100limitOfStudentsmin 1dateStart—dateEnd—notelength max 1500statusOfGroupIdmin 1teacherIdsmin 1levelOfKnowledgeIdmin 1classOfStudentIdsmin 1subjectIdsmin 1typeOfLessonIdsmin 1customFieldsany keysResponse · 201
application/json
statusCodeexample 201message—data14 fields
groupId—nameOfGroup—description—limitOfStudents—dateStartformat YYYY-MM-DDTHH:mm:ssdateEndformat YYYY-MM-DDTHH:mm:ssnote—avatarUrl—isArchival—updatedAtformat YYYY-MM-DDTHH:mm:sscreatedAtformat YYYY-MM-DDTHH:mm:ssregularLessons3 fields
dayOfWeek—timeStart—timeEnd—studentsCountActive students; absent when the role cannot see group students.customFieldsCustom field values; the table row shows the columns chosen in the preset.any keyscurl -X POST "https://your-school.rist.pro/api/group" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 1,
"dateStart": "string",
"dateEnd": "string",
"note": "string",
"statusOfGroupId": 1,
"teacherIds": [
1
],
"levelOfKnowledgeId": 1,
"classOfStudentIds": [
1
],
"subjectIds": [
1
],
"typeOfLessonIds": [
1
],
"customFields": {}
}'const response = await fetch("https://your-school.rist.pro/api/group", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 1,
"dateStart": "string",
"dateEnd": "string",
"note": "string",
"statusOfGroupId": 1,
"teacherIds": [
1
],
"levelOfKnowledgeId": 1,
"classOfStudentIds": [
1
],
"subjectIds": [
1
],
"typeOfLessonIds": [
1
],
"customFields": {}
}),
});
const { data } = await response.json();import os
import requests
response = requests.post(
"https://your-school.rist.pro/api/group",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 1,
"dateStart": "string",
"dateEnd": "string",
"note": "string",
"statusOfGroupId": 1,
"teacherIds": [
1
],
"levelOfKnowledgeId": 1,
"classOfStudentIds": [
1
],
"subjectIds": [
1
],
"typeOfLessonIds": [
1
],
"customFields": {}
},
)
response.raise_for_status()
data = response.json()["data"]Response example · 201
{
"statusCode": 201,
"message": "Operation completed successfully",
"data": {
"groupId": 1,
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 0,
"dateStart": "2026-11-09T14:30:00",
"dateEnd": "2026-11-09T14:30:00",
"note": "string",
"avatarUrl": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"regularLessons": [
{
"dayOfWeek": 0,
"timeStart": "string",
"timeEnd": "string"
}
],
"studentsCount": 0,
"customFields": {}
}
}PATCH
Update group
/api/group/{id}Change fields of a study group. Send only the fields to change; list fields replace the whole list.
update_group
Path parameters · 1
id—Request body
application/json · object
nameOfGrouplength 1–150descriptionlength max 100limitOfStudentsmin 1dateStart—dateEnd—notelength max 1500statusOfGroupIdmin 1teacherIdsmin 1levelOfKnowledgeIdmin 1classOfStudentIdsmin 1subjectIdsmin 1typeOfLessonIdsmin 1customFieldsany keysResponse · 200
application/json
statusCodeexample 200message—data14 fields
groupId—nameOfGroup—description—limitOfStudents—dateStartformat YYYY-MM-DDTHH:mm:ssdateEndformat YYYY-MM-DDTHH:mm:ssnote—avatarUrl—isArchival—updatedAtformat YYYY-MM-DDTHH:mm:sscreatedAtformat YYYY-MM-DDTHH:mm:ssregularLessons3 fields
dayOfWeek—timeStart—timeEnd—studentsCountActive students; absent when the role cannot see group students.customFieldsCustom field values; the table row shows the columns chosen in the preset.any keyscurl -X PATCH "https://your-school.rist.pro/api/group/1" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 1,
"dateStart": "string",
"dateEnd": "string",
"note": "string",
"statusOfGroupId": 1,
"teacherIds": [
1
],
"levelOfKnowledgeId": 1,
"classOfStudentIds": [
1
],
"subjectIds": [
1
],
"typeOfLessonIds": [
1
],
"customFields": {}
}'const response = await fetch("https://your-school.rist.pro/api/group/1", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 1,
"dateStart": "string",
"dateEnd": "string",
"note": "string",
"statusOfGroupId": 1,
"teacherIds": [
1
],
"levelOfKnowledgeId": 1,
"classOfStudentIds": [
1
],
"subjectIds": [
1
],
"typeOfLessonIds": [
1
],
"customFields": {}
}),
});
const { data } = await response.json();import os
import requests
response = requests.patch(
"https://your-school.rist.pro/api/group/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 1,
"dateStart": "string",
"dateEnd": "string",
"note": "string",
"statusOfGroupId": 1,
"teacherIds": [
1
],
"levelOfKnowledgeId": 1,
"classOfStudentIds": [
1
],
"subjectIds": [
1
],
"typeOfLessonIds": [
1
],
"customFields": {}
},
)
response.raise_for_status()
data = response.json()["data"]Response example · 200
{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"groupId": 1,
"nameOfGroup": "string",
"description": "string",
"limitOfStudents": 0,
"dateStart": "2026-11-09T14:30:00",
"dateEnd": "2026-11-09T14:30:00",
"note": "string",
"avatarUrl": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"regularLessons": [
{
"dayOfWeek": 0,
"timeStart": "string",
"timeEnd": "string"
}
],
"studentsCount": 0,
"customFields": {}
}
}