Students and customersStudents

Students

Students and customers · 9 operations

GET

List students

/api/student

List students with filters: search, teacher, manager, status, balance range, debtors (isDebtor=true), lessons left (lessonsLeftTo, hasOneLessonLeft, hasNoLessonsLeft), enrolled range (enrolledStart/End: new students), subscription ending in a period (subscriptionEndStart/End: active subscriptions by end date), upcoming lessons in subjects (subjectIds), no lessons in a period (noLessonsStart/End), hasNoCustomer, hasDiscount, archived. Paginated with page/pageSize (max 250); "total" is the full count. Returns only students the current user may see.

list_students

Query parameters · 56

pagenumbermin 1 · default 1
pageSizenumber1–250 · default 20
sortBystringOne of: status name teacher manager emails phones messengers links
sortOrderstringOne of: ASC DESC
statusOfStudentIdnumberrequired—
statusOfStudentIdsnumber[]Any of these statuses; broadcast audiences pick several.
groupIdsnumber[]Active membership in any of these groups.
customerIdnumber—
Show 48 more
studentIdsnumber[]—
searchstringrequired—
firstNamestringrequired—
lastNamestringrequired—
middleNamestringrequired—
isChildstringrequired—
genderstringrequiredOne of: MALE FEMALE
teacherIdnumberrequired—
teacherIdsnumber[]—
managerIdnumberrequired—
managerIdsnumber[]—
reasonForRefusalIdnumberrequired—
reasonForRefusalIdsnumber[]—
teachingProgramIdsnumber[]—
classOfStudentIdsnumber[]—
subscriptionIdsnumber[]—
balanceFromnumber—
balanceTonumber—
lessonsLeftFromnumber—
lessonsLeftTonumber—
notestringrequired—
typesOfMessengerstring[]Channels where the student has a connected chat; several are OR-ed.One of: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
hasGroupbooleanrequired—
hasNoGroupbooleanrequired—
hasNoLessonsbooleanrequired—
isDebtorbooleanrequired—
hasNoLessonsLeftbooleanrequired—
hasOneLessonLeftbooleanrequired—
hasFreeLessonsbooleanrequired—
hasFreeTrialLessonsbooleanrequired—
hasNoSubscriptionbooleanrequired—
hasExpiredSubscriptionbooleanrequired—
isDuplicatebooleanrequired—
isBirthdayTodaybooleanrequired—
isArchivalobjectrequireddefault false
isEnrolledbooleandefault true
enrolledStartstringEnrolled (became a paying student) from, a school-local calendar day: "new students this month".
enrolledEndstringEnrolled until, inclusive: the end of that school-local day.
createdStartstringCard created from, a school-local calendar day.
createdEndstringCard created until, inclusive: the end of that school-local day.
subscriptionEndStartstringAn active subscription ends from this school-local day: "subscriptions ending this month".
subscriptionEndEndstringAn active subscription ends until this school-local day, inclusive.
subjectIdsnumber[]Students with upcoming scheduled lessons in these subjects.
hasNoCustomerbooleanNo paying customer (parent) linked.
hasDiscountbooleanHas a discount in effect today.
noLessonsStartstringNo lessons, except cancelled ones, from this school-local day; pair with noLessonsEnd.
noLessonsEndstringNo lessons until this school-local day, inclusive.
cfstring[]—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject4 fields
totalnumberrequired—
totalPagesnumberrequired—
currentPagenumberrequired—
studentsobject[]required23 fields
studentIdnumberrequired—
statusobjectrequirednullable3 fields
statusOfStudentIdnumberrequired—
nameOfStatusstringrequired—
isArchivalbooleanrequired—
teachersobject[]required—
managerobjectrequirednullable4 fields
idnumberrequired—
firstNamestringrequired—
lastNamestringrequirednullable—
isArchivalbooleanrequired—
chatsobject[]required4 fields
chatParticipantIdnumberrequired—
chatIdnumberrequired—
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
chatobjectAlways present at runtime; optional because card selects are built dynamically and TS cannot prove the nested object exists.5 fields
chatIdnumberrequired—
contactNamestringrequirednullable—
avatarstringrequirednullable—
lastMessageAtstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
messengerobjectrequired4 fields
messengerIdnumberrequired—
nameOfMessengerstringrequired—
typeOfMessengerstringrequiredOne of: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
capabilitiesobjectrequirednullableWhat the channel supports; null when its adapter is not registered, so the chat is read-only.
firstNamestringrequired—
lastNamestringrequirednullable—
middleNamestringrequirednullable—
contactsobject[]required3 fields
typestringrequired—
valuestringrequired—
labelstringrequirednullable—
dateOfBirthstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
timeZonestringrequirednullableStudent's own IANA time zone; null means the school time zone.
isChildbooleanrequired—
genderstringrequiredOne of: MALE FEMALE
notestringrequirednullable—
archivalNotestringnullable—
avatarUrlstringrequirednullable—
isArchivalbooleanrequired—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
subscriptionsobject[]required5 fields
balancenumberrequired—
studentSubscriptionIdnumberrequired—
typeOfBillstringrequiredOne of: BASE SEPARATE BURNED CASHBACK
subscriptionobjectnullable1 field
nameOfSubscriptionstring—
effectivePricePerLessonnumbernullableLesson price after the student's discounts; null for non-per-lesson subscriptions.
currentMonthLessonsobject3 fields
plannednumberrequired—
conductednumberrequired—
cancellednumberrequired—
nextMonthLessonsobject3 fields
plannednumberrequired—
conductednumberrequired—
cancellednumberrequired—
customFieldsobjectCustom field values for the columns selected in the table preset.any keys
Errors400401403429500
curl "https://your-school.rist.pro/api/student" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "total": 0,
    "totalPages": 0,
    "currentPage": 0,
    "students": [
      {
        "studentId": 1,
        "status": {
          "statusOfStudentId": 1,
          "nameOfStatus": "string",
          "isArchival": false
        },
        "teachers": [
          {}
        ],
        "manager": {
          "id": 1,
          "firstName": "string",
          "lastName": "string",
          "isArchival": false
        },
        "chats": [
          {
            "chatParticipantId": 1,
            "chatId": 1,
            "createdAt": "2026-11-09T14:30:00",
            "chat": {
              "chatId": 1,
              "contactName": "string",
              "avatar": "string",
              "lastMessageAt": "2026-11-09T14:30:00",
              "messenger": {
                "messengerId": 1,
                "nameOfMessenger": "string",
                "typeOfMessenger": "TELEGRAM_BOT",
                "capabilities": {}
              }
            }
          }
        ],
        "firstName": "string",
        "lastName": "string",
        "middleName": "string",
        "contacts": [
          {
            "type": "string",
            "value": "string",
            "label": "string"
          }
        ],
        "dateOfBirth": "2026-11-09T14:30:00",
        "timeZone": "string",
        "isChild": false,
        "gender": "MALE",
        "note": "string",
        "archivalNote": "string",
        "avatarUrl": "string",
        "isArchival": false,
        "updatedAt": "2026-11-09T14:30:00",
        "createdAt": "2026-11-09T14:30:00",
        "subscriptions": [
          {
            "balance": 0,
            "studentSubscriptionId": 1,
            "typeOfBill": "BASE",
            "subscription": {
              "nameOfSubscription": "string"
            },
            "effectivePricePerLesson": 0
          }
        ],
        "currentMonthLessons": {
          "planned": 0,
          "conducted": 0,
          "cancelled": 0
        },
        "nextMonthLessons": {
          "planned": 0,
          "conducted": 0,
          "cancelled": 0
        },
        "customFields": {}
      }
    ]
  }
}

How many students match the GET /api/student filters, per status, manager, class or teacher (groupBy); e.g. subscriptionEndStart/End counts students whose subscription ends in a period. For students per subject use GET /api/lesson/breakdown with countBy=students.

count_students

Query parameters · 53

cfstring[]—
statusOfStudentIdnumberrequired—
statusOfStudentIdsnumber[]Any of these statuses; broadcast audiences pick several.
groupIdsnumber[]Active membership in any of these groups.
customerIdnumber—
studentIdsnumber[]—
searchstringrequired—
firstNamestringrequired—
Show 45 more
lastNamestringrequired—
middleNamestringrequired—
isChildstringrequired—
genderstringrequiredOne of: MALE FEMALE
teacherIdnumberrequired—
teacherIdsnumber[]—
managerIdnumberrequired—
managerIdsnumber[]—
reasonForRefusalIdnumberrequired—
reasonForRefusalIdsnumber[]—
teachingProgramIdsnumber[]—
classOfStudentIdsnumber[]—
subscriptionIdsnumber[]—
balanceFromnumber—
balanceTonumber—
lessonsLeftFromnumber—
lessonsLeftTonumber—
notestringrequired—
typesOfMessengerstring[]Channels where the student has a connected chat; several are OR-ed.One of: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
hasGroupbooleanrequired—
hasNoGroupbooleanrequired—
hasNoLessonsbooleanrequired—
isDebtorbooleanrequired—
hasNoLessonsLeftbooleanrequired—
hasOneLessonLeftbooleanrequired—
hasFreeLessonsbooleanrequired—
hasFreeTrialLessonsbooleanrequired—
hasNoSubscriptionbooleanrequired—
hasExpiredSubscriptionbooleanrequired—
isDuplicatebooleanrequired—
isBirthdayTodaybooleanrequired—
isArchivalobjectrequireddefault false
isEnrolledbooleandefault true
enrolledStartstringEnrolled (became a paying student) from, a school-local calendar day: "new students this month".
enrolledEndstringEnrolled until, inclusive: the end of that school-local day.
createdStartstringCard created from, a school-local calendar day.
createdEndstringCard created until, inclusive: the end of that school-local day.
subscriptionEndStartstringAn active subscription ends from this school-local day: "subscriptions ending this month".
subscriptionEndEndstringAn active subscription ends until this school-local day, inclusive.
subjectIdsnumber[]Students with upcoming scheduled lessons in these subjects.
hasNoCustomerbooleanNo paying customer (parent) linked.
hasDiscountbooleanHas a discount in effect today.
noLessonsStartstringNo lessons, except cancelled ones, from this school-local day; pair with noLessonsEnd.
noLessonsEndstringNo lessons until this school-local day, inclusive.
groupBystringrequiredWhat to count students by; with teacher a student with two teachers counts in both rows.One of: status manager classOfStudent teacher

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject3 fields
omittedRowsnumberRows left out by the limit
totalnumberrequiredRecords matching the filters; a record counted in several rows (a student with two teachers) counts here once.
rowsobject[]required3 fields
idinteger | stringrequirednullableId of the grouped value (teacher id, stage id, weekday 1-7) or its code (lesson status); null means "no value".
namestringrequired—
countnumberrequired—
Errors400401403429500
curl "https://your-school.rist.pro/api/student/breakdown" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "omittedRows": 0,
    "total": 0,
    "rows": [
      {
        "id": 1,
        "name": "string",
        "count": 0
      }
    ]
  }
}
GET

Students most likely to leave

/api/student/churn-risk

Active students ranked by churn risk score (0-100, higher is riskier) with its factors: attendance, fewer lessons than before, lessons left, subscription ending, days since the last lesson, no regular schedule, late payment. limit and minScore narrow the list.

list_students_by_churn_risk

Query parameters · 2

limitnumberrequiredHow many students to return, riskiest first.1–100 · default 20
minScorenumberrequiredLowest risk score to include, 0-100.0–100 · default 0

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject[]—
Errors400401403429500
curl "https://your-school.rist.pro/api/student/churn-risk?limit=20&minScore=0" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": [
    {}
  ]
}
GET

Get student card

/api/student/{id}

Full student card: contacts, teachers, manager, custom fields. Balances are in GET /api/student/subscription.

get_student

Path parameters · 1

idnumberrequired—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject19 fields
studentIdnumberrequired—
firstNamestringrequired—
lastNamestringrequirednullable—
middleNamestringrequirednullable—
contactsobject[]required3 fields
typestringrequired—
valuestringrequired—
labelstringrequirednullable—
dateOfBirthstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
timeZonestringrequirednullableStudent's own IANA time zone; null means the school time zone.
isChildbooleanrequired—
genderstringrequiredOne of: MALE FEMALE
payerstringrequiredOne of: CUSTOMER STUDENT
notestringrequirednullable—
archivalNotestringnullable—
customFieldsobjectany keys
avatarUrlstringrequirednullable—
isArchivalbooleanrequired—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
teachersobject[]required—
chatsobject[]requiredConnected chats, used for channel icons.4 fields
chatParticipantIdnumberrequired—
chatIdnumberrequired—
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
chatobjectAlways present at runtime; optional because card selects are built dynamically and TS cannot prove the nested object exists.5 fields
chatIdnumberrequired—
contactNamestringrequirednullable—
avatarstringrequirednullable—
lastMessageAtstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
messengerobjectrequired4 fields
messengerIdnumberrequired—
nameOfMessengerstringrequired—
typeOfMessengerstringrequiredOne of: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
capabilitiesobjectrequirednullableWhat the channel supports; null when its adapter is not registered, so the chat is read-only.
Errors400401403429500
curl "https://your-school.rist.pro/api/student/1" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "studentId": 1,
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "string",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "payer": "CUSTOMER",
    "note": "string",
    "archivalNote": "string",
    "customFields": {},
    "avatarUrl": "string",
    "isArchival": false,
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00",
    "teachers": [
      {}
    ],
    "chats": [
      {
        "chatParticipantId": 1,
        "chatId": 1,
        "createdAt": "2026-11-09T14:30:00",
        "chat": {
          "chatId": 1,
          "contactName": "string",
          "avatar": "string",
          "lastMessageAt": "2026-11-09T14:30:00",
          "messenger": {
            "messengerId": 1,
            "nameOfMessenger": "string",
            "typeOfMessenger": "TELEGRAM_BOT",
            "capabilities": {}
          }
        }
      }
    ]
  }
}
GET

List groups of a student

/api/student/{id}/groups

Study groups the student belongs to.

list_student_groups

Path parameters · 1

idnumberrequired—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataanyThe fields of data are not described yet.
Errors400401403429500
curl "https://your-school.rist.pro/api/student/1/groups" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": …
}
GET

List leads of a student

/api/student/{id}/leads

Sales leads linked to the student, with their pipeline stage.

list_student_leads

Path parameters · 1

idnumberrequired—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataanyThe fields of data are not described yet.
Errors400401403429500
curl "https://your-school.rist.pro/api/student/1/leads" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": …
}
GET

Get student churn risk

/api/student/{id}/churn-risk

Churn risk score of a student with its factors (attendance, days since last lesson, lessons left). Returns null when the role has no access to churn risk or the student is not visible.

get_student_churn_risk

Path parameters · 1

idnumberrequired—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject—
Errors400401403429500
curl "https://your-school.rist.pro/api/student/1/churn-risk" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {}
}
POST

Create student

/api/student

Create a new student card. Look the student up with GET /api/student first to avoid duplicates.

create_student

Request body

application/json · object

statusOfStudentIdnumberrequirednullablemin 1
classOfStudentIdnumberrequirednullablemin 1
teacherIdsnumber[]requiredmin 1
managerIdnumberrequirednullablemin 1
customerIdnumberrequirednullablemin 1
firstNamestringrequiredlength 1–30
lastNamestringnullablelength max 30
middleNamestringrequirednullablelength max 30
contactsobject[]required3 fields
typestringrequiredOne of: PHONE EMAIL MESSENGER URL
valuestringrequiredlength 1–255
labelstringrequirednullablelength max 50
dateOfBirthstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
timeZonestringnullable—
isChildboolean—
genderstringrequiredOne of: MALE FEMALE
payerstringrequiredOne of: STUDENT CUSTOMER
notestringrequirednullablelength max 1500
customFieldsobjectany keys

Response · 201

application/json

statusCodenumberrequiredexample 201
messagestringrequired—
dataobject23 fields
studentIdnumberrequired—
statusobjectrequirednullable3 fields
statusOfStudentIdnumberrequired—
nameOfStatusstringrequired—
isArchivalbooleanrequired—
teachersobject[]required—
managerobjectrequirednullable4 fields
idnumberrequired—
firstNamestringrequired—
lastNamestringrequirednullable—
isArchivalbooleanrequired—
chatsobject[]required4 fields
chatParticipantIdnumberrequired—
chatIdnumberrequired—
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
chatobjectAlways present at runtime; optional because card selects are built dynamically and TS cannot prove the nested object exists.5 fields
chatIdnumberrequired—
contactNamestringrequirednullable—
avatarstringrequirednullable—
lastMessageAtstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
messengerobjectrequired4 fields
messengerIdnumberrequired—
nameOfMessengerstringrequired—
typeOfMessengerstringrequiredOne of: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
capabilitiesobjectrequirednullableWhat the channel supports; null when its adapter is not registered, so the chat is read-only.
firstNamestringrequired—
lastNamestringrequirednullable—
middleNamestringrequirednullable—
contactsobject[]required3 fields
typestringrequired—
valuestringrequired—
labelstringrequirednullable—
dateOfBirthstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
timeZonestringrequirednullableStudent's own IANA time zone; null means the school time zone.
isChildbooleanrequired—
genderstringrequiredOne of: MALE FEMALE
notestringrequirednullable—
archivalNotestringnullable—
avatarUrlstringrequirednullable—
isArchivalbooleanrequired—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
subscriptionsobject[]required5 fields
balancenumberrequired—
studentSubscriptionIdnumberrequired—
typeOfBillstringrequiredOne of: BASE SEPARATE BURNED CASHBACK
subscriptionobjectnullable1 field
nameOfSubscriptionstring—
effectivePricePerLessonnumbernullableLesson price after the student's discounts; null for non-per-lesson subscriptions.
currentMonthLessonsobject3 fields
plannednumberrequired—
conductednumberrequired—
cancellednumberrequired—
nextMonthLessonsobject3 fields
plannednumberrequired—
conductednumberrequired—
cancellednumberrequired—
customFieldsobjectCustom field values for the columns selected in the table preset.any keys
Errors400401403429500
curl -X POST "https://your-school.rist.pro/api/student" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "statusOfStudentId": 1,
    "classOfStudentId": 1,
    "teacherIds": [
      1
    ],
    "managerId": 1,
    "customerId": 1,
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "PHONE",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "payer": "STUDENT",
    "note": "string",
    "customFields": {}
  }'
Response example · 201
{
  "statusCode": 201,
  "message": "Operation completed successfully",
  "data": {
    "studentId": 1,
    "status": {
      "statusOfStudentId": 1,
      "nameOfStatus": "string",
      "isArchival": false
    },
    "teachers": [
      {}
    ],
    "manager": {
      "id": 1,
      "firstName": "string",
      "lastName": "string",
      "isArchival": false
    },
    "chats": [
      {
        "chatParticipantId": 1,
        "chatId": 1,
        "createdAt": "2026-11-09T14:30:00",
        "chat": {
          "chatId": 1,
          "contactName": "string",
          "avatar": "string",
          "lastMessageAt": "2026-11-09T14:30:00",
          "messenger": {
            "messengerId": 1,
            "nameOfMessenger": "string",
            "typeOfMessenger": "TELEGRAM_BOT",
            "capabilities": {}
          }
        }
      }
    ],
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "string",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "note": "string",
    "archivalNote": "string",
    "avatarUrl": "string",
    "isArchival": false,
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00",
    "subscriptions": [
      {
        "balance": 0,
        "studentSubscriptionId": 1,
        "typeOfBill": "BASE",
        "subscription": {
          "nameOfSubscription": "string"
        },
        "effectivePricePerLesson": 0
      }
    ],
    "currentMonthLessons": {
      "planned": 0,
      "conducted": 0,
      "cancelled": 0
    },
    "nextMonthLessons": {
      "planned": 0,
      "conducted": 0,
      "cancelled": 0
    },
    "customFields": {}
  }
}
PATCH

Update student

/api/student/{id}

Change fields of a student card. Send only the fields to change.

update_student

Path parameters · 1

idnumberrequired—

Request body

application/json · object

statusOfStudentIdnumbernullablemin 1
classOfStudentIdnumbernullablemin 1
teacherIdsnumber[]min 1
managerIdnumbernullablemin 1
firstNamestringlength 1–30
lastNamestringnullablelength max 30
middleNamestringnullablelength max 30
contactsobject[]3 fields
typestringrequiredOne of: PHONE EMAIL MESSENGER URL
valuestringrequiredlength 1–255
labelstringrequirednullablelength max 50
dateOfBirthstringnullableformat YYYY-MM-DDTHH:mm:ss
timeZonestringnullable—
isChildboolean—
genderstringOne of: MALE FEMALE
payerstringOne of: STUDENT CUSTOMER
notestringnullablelength max 1500
archivedAtstringnullableformat YYYY-MM-DDTHH:mm:ss
isEnrolledboolean—
customFieldsobjectany keys

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject23 fields
studentIdnumberrequired—
statusobjectrequirednullable3 fields
statusOfStudentIdnumberrequired—
nameOfStatusstringrequired—
isArchivalbooleanrequired—
teachersobject[]required—
managerobjectrequirednullable4 fields
idnumberrequired—
firstNamestringrequired—
lastNamestringrequirednullable—
isArchivalbooleanrequired—
chatsobject[]required4 fields
chatParticipantIdnumberrequired—
chatIdnumberrequired—
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
chatobjectAlways present at runtime; optional because card selects are built dynamically and TS cannot prove the nested object exists.5 fields
chatIdnumberrequired—
contactNamestringrequirednullable—
avatarstringrequirednullable—
lastMessageAtstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
messengerobjectrequired4 fields
messengerIdnumberrequired—
nameOfMessengerstringrequired—
typeOfMessengerstringrequiredOne of: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
capabilitiesobjectrequirednullableWhat the channel supports; null when its adapter is not registered, so the chat is read-only.
firstNamestringrequired—
lastNamestringrequirednullable—
middleNamestringrequirednullable—
contactsobject[]required3 fields
typestringrequired—
valuestringrequired—
labelstringrequirednullable—
dateOfBirthstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
timeZonestringrequirednullableStudent's own IANA time zone; null means the school time zone.
isChildbooleanrequired—
genderstringrequiredOne of: MALE FEMALE
notestringrequirednullable—
archivalNotestringnullable—
avatarUrlstringrequirednullable—
isArchivalbooleanrequired—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
subscriptionsobject[]required5 fields
balancenumberrequired—
studentSubscriptionIdnumberrequired—
typeOfBillstringrequiredOne of: BASE SEPARATE BURNED CASHBACK
subscriptionobjectnullable1 field
nameOfSubscriptionstring—
effectivePricePerLessonnumbernullableLesson price after the student's discounts; null for non-per-lesson subscriptions.
currentMonthLessonsobject3 fields
plannednumberrequired—
conductednumberrequired—
cancellednumberrequired—
nextMonthLessonsobject3 fields
plannednumberrequired—
conductednumberrequired—
cancellednumberrequired—
customFieldsobjectCustom field values for the columns selected in the table preset.any keys
Errors400401403429500
curl -X PATCH "https://your-school.rist.pro/api/student/1" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "statusOfStudentId": 1,
    "classOfStudentId": 1,
    "teacherIds": [
      1
    ],
    "managerId": 1,
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "PHONE",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "payer": "STUDENT",
    "note": "string",
    "archivedAt": "2026-11-09T14:30:00",
    "isEnrolled": false,
    "customFields": {}
  }'
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "studentId": 1,
    "status": {
      "statusOfStudentId": 1,
      "nameOfStatus": "string",
      "isArchival": false
    },
    "teachers": [
      {}
    ],
    "manager": {
      "id": 1,
      "firstName": "string",
      "lastName": "string",
      "isArchival": false
    },
    "chats": [
      {
        "chatParticipantId": 1,
        "chatId": 1,
        "createdAt": "2026-11-09T14:30:00",
        "chat": {
          "chatId": 1,
          "contactName": "string",
          "avatar": "string",
          "lastMessageAt": "2026-11-09T14:30:00",
          "messenger": {
            "messengerId": 1,
            "nameOfMessenger": "string",
            "typeOfMessenger": "TELEGRAM_BOT",
            "capabilities": {}
          }
        }
      }
    ],
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "string",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "note": "string",
    "archivalNote": "string",
    "avatarUrl": "string",
    "isArchival": false,
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00",
    "subscriptions": [
      {
        "balance": 0,
        "studentSubscriptionId": 1,
        "typeOfBill": "BASE",
        "subscription": {
          "nameOfSubscription": "string"
        },
        "effectivePricePerLesson": 0
      }
    ],
    "currentMonthLessons": {
      "planned": 0,
      "conducted": 0,
      "cancelled": 0
    },
    "nextMonthLessons": {
      "planned": 0,
      "conducted": 0,
      "cancelled": 0
    },
    "customFields": {}
  }
}