academics
Academics
Course categories, courses, teaching groups, weekly schedules, generated sessions, and enrollments.
28 endpoints
GET /api/v1/course-categories
The tenant’s course categories, nested as a tree under their parent.
curl example
curl -X GET "https://api.yourdomain.com/api/v1/course-categories" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
[
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"parentId": "06523528-0652-7652-8523-065235280652",
"name": "Algebra I",
"slug": "string",
"sortOrder": -9007199254740991,
"isActive": true,
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z",
"children": [
null
]
}
]Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Request body
| Name | Type | Constraints |
|---|---|---|
parentId | string (uuid) | — |
namerequired | string | 1–150 chars |
slugrequired | string | 1–150 chars |
sortOrder | integer | -9007199254740991–9007199254740991 · default: 0 |
isActive | boolean | default: true |
Example
{
"parentId": "06523528-0652-7652-8523-065235280652",
"name": "Algebra I",
"slug": "string",
"sortOrder": 0,
"isActive": true
}curl example
curl -X POST "https://api.yourdomain.com/api/v1/course-categories" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"parentId": "06523528-0652-7652-8523-065235280652",
"name": "Algebra I",
"slug": "string",
"sortOrder": 0,
"isActive": true
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
parentIdrequired | string (uuid) | null | — |
namerequired | string | — |
slugrequired | string | — |
sortOrderrequired | integer | -9007199254740991–9007199254740991 |
isActiverequired | boolean | — |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"parentId": "06523528-0652-7652-8523-065235280652",
"name": "Algebra I",
"slug": "string",
"sortOrder": -9007199254740991,
"isActive": true,
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
DELETE /api/v1/course-categories/{id}
Delete a course category. Fails with 409 if it has child categories or courses.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X DELETE "https://api.yourdomain.com/api/v1/course-categories/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
okrequired | enum: true | — |
{
"ok": true
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/course-categories/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
parentIdrequired | string (uuid) | null | — |
namerequired | string | — |
slugrequired | string | — |
sortOrderrequired | integer | -9007199254740991–9007199254740991 |
isActiverequired | boolean | — |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"parentId": "06523528-0652-7652-8523-065235280652",
"name": "Algebra I",
"slug": "string",
"sortOrder": -9007199254740991,
"isActive": true,
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
PATCH /api/v1/course-categories/{id}
Update a course category (name, parent, sort order, active flag).
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
Request body
| Name | Type | Constraints |
|---|---|---|
parentId | string (uuid) | null | — |
name | string | 1–150 chars |
slug | string | 1–150 chars |
sortOrder | integer | -9007199254740991–9007199254740991 · default: 0 |
isActive | boolean | default: true |
Example
{
"parentId": "06523528-0652-7652-8523-065235280652",
"name": "Algebra I",
"slug": "string",
"sortOrder": 0,
"isActive": true
}curl example
curl -X PATCH "https://api.yourdomain.com/api/v1/course-categories/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"parentId": "06523528-0652-7652-8523-065235280652",
"name": "Algebra I",
"slug": "string",
"sortOrder": 0,
"isActive": true
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
parentIdrequired | string (uuid) | null | — |
namerequired | string | — |
slugrequired | string | — |
sortOrderrequired | integer | -9007199254740991–9007199254740991 |
isActiverequired | boolean | — |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"parentId": "06523528-0652-7652-8523-065235280652",
"name": "Algebra I",
"slug": "string",
"sortOrder": -9007199254740991,
"isActive": true,
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
GET /api/v1/courses
List courses (cursor-paginated, filter by category/active).
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
categoryId | query | string (uuid) | — |
isActive | query | boolean | — |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/courses" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
datarequired | array<object> | — |
nextCursorrequired | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"categoryId": "786111a4-7861-7861-8611-786111a47861",
"code": "string",
"name": "Algebra I",
"description": "A short, human-readable description.",
"level": "string",
"defaultFeeMinor": -9007199254740991,
"currency": "ILS",
"defaultCapacity": -9007199254740991,
"color": "string",
"isActive": true,
"isPublic": true,
"language": "string",
"deliveryMode": "group",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}
],
"nextCursor": null
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Request body
| Name | Type | Constraints |
|---|---|---|
categoryId | string (uuid) | — |
code | string | string | — |
namerequired | string | 1–200 chars |
description | string | string | — |
level | string | string | — |
defaultFeeMinor | integer | 0–9007199254740991 |
currency | enum: "ILS" | "USD" | "EUR" | default: "ILS" |
defaultCapacity | integer | 1–9007199254740991 |
color | string | string | — |
isActive | boolean | default: true |
isPublic | boolean | default: false |
language | string | string | — |
deliveryMode | enum: "group" | "self_paced" | default: "group" |
Example
{
"categoryId": "786111a4-7861-7861-8611-786111a47861",
"code": "string",
"name": "Algebra I",
"description": "A short, human-readable description.",
"level": "string",
"defaultFeeMinor": 0,
"currency": "ILS",
"defaultCapacity": 1,
"color": "string",
"isActive": true,
"isPublic": false,
"language": "string",
"deliveryMode": "group"
}curl example
curl -X POST "https://api.yourdomain.com/api/v1/courses" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"categoryId": "786111a4-7861-7861-8611-786111a47861",
"code": "string",
"name": "Algebra I",
"description": "A short, human-readable description.",
"level": "string",
"defaultFeeMinor": 0,
"currency": "ILS",
"defaultCapacity": 1,
"color": "string",
"isActive": true,
"isPublic": false,
"language": "string",
"deliveryMode": "group"
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
categoryIdrequired | string (uuid) | null | — |
coderequired | string | null | ≥1 chars |
namerequired | string | — |
descriptionrequired | string | null | ≥1 chars |
levelrequired | string | null | ≥1 chars |
defaultFeeMinorrequired | integer | null | -9007199254740991–9007199254740991 |
currencyrequired | enum: "ILS" | "USD" | "EUR" | — |
defaultCapacityrequired | integer | null | -9007199254740991–9007199254740991 |
colorrequired | string | null | ≥1 chars |
isActiverequired | boolean | — |
isPublicrequired | boolean | — |
languagerequired | string | null | ≥1 chars |
deliveryModerequired | enum: "group" | "self_paced" | — |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"categoryId": "786111a4-7861-7861-8611-786111a47861",
"code": "string",
"name": "Algebra I",
"description": "A short, human-readable description.",
"level": "string",
"defaultFeeMinor": -9007199254740991,
"currency": "ILS",
"defaultCapacity": -9007199254740991,
"color": "string",
"isActive": true,
"isPublic": true,
"language": "string",
"deliveryMode": "group",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
DELETE /api/v1/courses/{id}
Delete a course. If any group references it, it is deactivated instead of deleted.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X DELETE "https://api.yourdomain.com/api/v1/courses/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
okrequired | enum: true | — |
deactivatedrequired | boolean | — |
{
"ok": true,
"deactivated": true
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/courses/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
categoryIdrequired | string (uuid) | null | — |
coderequired | string | null | ≥1 chars |
namerequired | string | — |
descriptionrequired | string | null | ≥1 chars |
levelrequired | string | null | ≥1 chars |
defaultFeeMinorrequired | integer | null | -9007199254740991–9007199254740991 |
currencyrequired | enum: "ILS" | "USD" | "EUR" | — |
defaultCapacityrequired | integer | null | -9007199254740991–9007199254740991 |
colorrequired | string | null | ≥1 chars |
isActiverequired | boolean | — |
isPublicrequired | boolean | — |
languagerequired | string | null | ≥1 chars |
deliveryModerequired | enum: "group" | "self_paced" | — |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"categoryId": "786111a4-7861-7861-8611-786111a47861",
"code": "string",
"name": "Algebra I",
"description": "A short, human-readable description.",
"level": "string",
"defaultFeeMinor": -9007199254740991,
"currency": "ILS",
"defaultCapacity": -9007199254740991,
"color": "string",
"isActive": true,
"isPublic": true,
"language": "string",
"deliveryMode": "group",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
Request body
| Name | Type | Constraints |
|---|---|---|
categoryId | string (uuid) | null | — |
code | enum: "" | string | null | — |
name | string | 1–200 chars |
description | enum: "" | string | null | — |
level | enum: "" | string | null | — |
defaultFeeMinor | integer | 0–9007199254740991 |
currency | enum: "ILS" | "USD" | "EUR" | default: "ILS" |
defaultCapacity | integer | 1–9007199254740991 |
color | enum: "" | string | null | — |
isActive | boolean | default: true |
isPublic | boolean | default: false |
language | enum: "" | string | null | — |
deliveryMode | enum: "group" | "self_paced" | default: "group" |
Example
{
"categoryId": "786111a4-7861-7861-8611-786111a47861",
"code": "",
"name": "Algebra I",
"description": "",
"level": "",
"defaultFeeMinor": 0,
"currency": "ILS",
"defaultCapacity": 1,
"color": "",
"isActive": true,
"isPublic": false,
"language": "",
"deliveryMode": "group"
}curl example
curl -X PATCH "https://api.yourdomain.com/api/v1/courses/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"categoryId": "786111a4-7861-7861-8611-786111a47861",
"code": "",
"name": "Algebra I",
"description": "",
"level": "",
"defaultFeeMinor": 0,
"currency": "ILS",
"defaultCapacity": 1,
"color": "",
"isActive": true,
"isPublic": false,
"language": "",
"deliveryMode": "group"
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
categoryIdrequired | string (uuid) | null | — |
coderequired | string | null | ≥1 chars |
namerequired | string | — |
descriptionrequired | string | null | ≥1 chars |
levelrequired | string | null | ≥1 chars |
defaultFeeMinorrequired | integer | null | -9007199254740991–9007199254740991 |
currencyrequired | enum: "ILS" | "USD" | "EUR" | — |
defaultCapacityrequired | integer | null | -9007199254740991–9007199254740991 |
colorrequired | string | null | ≥1 chars |
isActiverequired | boolean | — |
isPublicrequired | boolean | — |
languagerequired | string | null | ≥1 chars |
deliveryModerequired | enum: "group" | "self_paced" | — |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"categoryId": "786111a4-7861-7861-8611-786111a47861",
"code": "string",
"name": "Algebra I",
"description": "A short, human-readable description.",
"level": "string",
"defaultFeeMinor": -9007199254740991,
"currency": "ILS",
"defaultCapacity": -9007199254740991,
"color": "string",
"isActive": true,
"isPublic": true,
"language": "string",
"deliveryMode": "group",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
POST /api/v1/enrollments
Enroll a student into a group: capacity-checked, price snapshotted from the group/course fee, emits `enrollment.created`.
Request body
| Name | Type | Constraints |
|---|---|---|
studentIdrequired | string (uuid) | — |
groupIdrequired | string (uuid) | — |
priceMinor | integer | 0–9007199254740991 |
currency | enum: "ILS" | "USD" | "EUR" | — |
discountMinor | integer | 0–9007199254740991 · default: 0 |
discountReason | string | string | — |
Example
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"priceMinor": 12000,
"currency": "ILS",
"discountMinor": 0,
"discountReason": "string"
}curl example
curl -X POST "https://api.yourdomain.com/api/v1/enrollments" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"priceMinor": 12000,
"currency": "ILS",
"discountMinor": 0,
"discountReason": "string"
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
studentIdrequired | string (uuid) | — |
groupIdrequired | string (uuid) | — |
statusrequired | enum: "pending" | "active" | "completed" | "dropped" | — |
enrolledAtrequired | string (date-time) | — |
endedAtrequired | string (date-time) | null | — |
priceMinorrequired | integer | -9007199254740991–9007199254740991 |
currencyrequired | enum: "ILS" | "USD" | "EUR" | — |
discountMinorrequired | integer | -9007199254740991–9007199254740991 |
discountReasonrequired | string | null | ≥1 chars |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"status": "pending",
"enrolledAt": "2026-03-02T09:00:00.000Z",
"endedAt": "2026-03-02T09:00:00.000Z",
"priceMinor": 12000,
"currency": "ILS",
"discountMinor": -9007199254740991,
"discountReason": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
POST /api/v1/enrollments/{id}/complete
Mark an enrollment as completed.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X POST "https://api.yourdomain.com/api/v1/enrollments/37386ae0-3738-7738-8386-37386ae03738/complete" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
studentIdrequired | string (uuid) | — |
groupIdrequired | string (uuid) | — |
statusrequired | enum: "pending" | "active" | "completed" | "dropped" | — |
enrolledAtrequired | string (date-time) | — |
endedAtrequired | string (date-time) | null | — |
priceMinorrequired | integer | -9007199254740991–9007199254740991 |
currencyrequired | enum: "ILS" | "USD" | "EUR" | — |
discountMinorrequired | integer | -9007199254740991–9007199254740991 |
discountReasonrequired | string | null | ≥1 chars |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"status": "pending",
"enrolledAt": "2026-03-02T09:00:00.000Z",
"endedAt": "2026-03-02T09:00:00.000Z",
"priceMinor": 12000,
"currency": "ILS",
"discountMinor": -9007199254740991,
"discountReason": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
POST /api/v1/enrollments/{id}/drop
Drop an enrollment. Emits `enrollment.dropped`.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
Request body
| Name | Type | Constraints |
|---|---|---|
reason | string | 0–500 chars |
Example
{
"reason": "Requested by guardian."
}curl example
curl -X POST "https://api.yourdomain.com/api/v1/enrollments/37386ae0-3738-7738-8386-37386ae03738/drop" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"reason": "Requested by guardian."
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
studentIdrequired | string (uuid) | — |
groupIdrequired | string (uuid) | — |
statusrequired | enum: "pending" | "active" | "completed" | "dropped" | — |
enrolledAtrequired | string (date-time) | — |
endedAtrequired | string (date-time) | null | — |
priceMinorrequired | integer | -9007199254740991–9007199254740991 |
currencyrequired | enum: "ILS" | "USD" | "EUR" | — |
discountMinorrequired | integer | -9007199254740991–9007199254740991 |
discountReasonrequired | string | null | ≥1 chars |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"status": "pending",
"enrolledAt": "2026-03-02T09:00:00.000Z",
"endedAt": "2026-03-02T09:00:00.000Z",
"priceMinor": 12000,
"currency": "ILS",
"discountMinor": -9007199254740991,
"discountReason": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
POST /api/v1/enrollments/{id}/transfer
Transfer an enrollment to another group: drops the source and creates a new one, in one transaction.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
Request body
| Name | Type | Constraints |
|---|---|---|
toGroupIdrequired | string (uuid) | — |
Example
{
"toGroupId": "6d0ea93a-6d0e-7d0e-80ea-6d0ea93a6d0e"
}curl example
curl -X POST "https://api.yourdomain.com/api/v1/enrollments/37386ae0-3738-7738-8386-37386ae03738/transfer" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"toGroupId": "6d0ea93a-6d0e-7d0e-80ea-6d0ea93a6d0e"
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
studentIdrequired | string (uuid) | — |
groupIdrequired | string (uuid) | — |
statusrequired | enum: "pending" | "active" | "completed" | "dropped" | — |
enrolledAtrequired | string (date-time) | — |
endedAtrequired | string (date-time) | null | — |
priceMinorrequired | integer | -9007199254740991–9007199254740991 |
currencyrequired | enum: "ILS" | "USD" | "EUR" | — |
discountMinorrequired | integer | -9007199254740991–9007199254740991 |
discountReasonrequired | string | null | ≥1 chars |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"status": "pending",
"enrolledAt": "2026-03-02T09:00:00.000Z",
"endedAt": "2026-03-02T09:00:00.000Z",
"priceMinor": 12000,
"currency": "ILS",
"discountMinor": -9007199254740991,
"discountReason": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
GET /api/v1/groups
List groups (cursor-paginated). A `groups.write`-less caller (e.g. a teacher) only sees groups they teach.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
branchId | query | string (uuid) | — |
courseId | query | string (uuid) | — |
status | query | enum: "planned" | "active" | "completed" | "cancelled" | — |
teacherStaffId | query | string (uuid) | — |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/groups" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
datarequired | array<object> | — |
nextCursorrequired | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"name": "Algebra I",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"capacity": -9007199254740991,
"startDate": "2026-03-02",
"endDate": "2026-03-02",
"status": "planned",
"feeMinor": -9007199254740991,
"room": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}
],
"nextCursor": null
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
POST /api/v1/groups
Create a group, optionally with its initial weekly schedules.
Request body
| Name | Type | Constraints |
|---|---|---|
branchIdrequired | string (uuid) | — |
courseIdrequired | string (uuid) | — |
namerequired | string | 1–150 chars |
teacherStaffId | string (uuid) | — |
capacity | integer | 1–9007199254740991 |
startDaterequired | string (date) | — |
endDate | string | string (date) | — |
status | enum: "planned" | "active" | "completed" | "cancelled" | default: "planned" |
feeMinor | integer | 0–9007199254740991 |
room | string | string | — |
schedules | array<object> | — |
Example
{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"name": "Algebra I",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"capacity": 1,
"startDate": "2026-03-02",
"endDate": "string",
"status": "planned",
"feeMinor": 0,
"room": "string",
"schedules": [
{
"weekday": 0,
"startTime": "string",
"endTime": "string",
"validFrom": "2026-03-02",
"validTo": "string"
}
]
}curl example
curl -X POST "https://api.yourdomain.com/api/v1/groups" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"name": "Algebra I",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"capacity": 1,
"startDate": "2026-03-02",
"endDate": "string",
"status": "planned",
"feeMinor": 0,
"room": "string",
"schedules": [
{
"weekday": 0,
"startTime": "string",
"endTime": "string",
"validFrom": "2026-03-02",
"validTo": "string"
}
]
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
branchIdrequired | string (uuid) | — |
courseIdrequired | string (uuid) | — |
namerequired | string | — |
teacherStaffIdrequired | string (uuid) | null | — |
capacityrequired | integer | null | -9007199254740991–9007199254740991 |
startDaterequired | string (date) | — |
endDaterequired | string (date) | null | — |
statusrequired | enum: "planned" | "active" | "completed" | "cancelled" | — |
feeMinorrequired | integer | null | -9007199254740991–9007199254740991 |
roomrequired | string | null | ≥1 chars |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"name": "Algebra I",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"capacity": -9007199254740991,
"startDate": "2026-03-02",
"endDate": "2026-03-02",
"status": "planned",
"feeMinor": -9007199254740991,
"room": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
DELETE /api/v1/groups/{id}
Delete a group. Fails with 409 if it has enrollments or sessions.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X DELETE "https://api.yourdomain.com/api/v1/groups/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
okrequired | enum: true | — |
{
"ok": true
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/groups/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
branchIdrequired | string (uuid) | — |
courseIdrequired | string (uuid) | — |
namerequired | string | — |
teacherStaffIdrequired | string (uuid) | null | — |
capacityrequired | integer | null | -9007199254740991–9007199254740991 |
startDaterequired | string (date) | — |
endDaterequired | string (date) | null | — |
statusrequired | enum: "planned" | "active" | "completed" | "cancelled" | — |
feeMinorrequired | integer | null | -9007199254740991–9007199254740991 |
roomrequired | string | null | ≥1 chars |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"name": "Algebra I",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"capacity": -9007199254740991,
"startDate": "2026-03-02",
"endDate": "2026-03-02",
"status": "planned",
"feeMinor": -9007199254740991,
"room": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
PATCH /api/v1/groups/{id}
Update a group (including status transitions).
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
Request body
| Name | Type | Constraints |
|---|---|---|
branchId | string (uuid) | — |
courseId | string (uuid) | — |
name | string | 1–150 chars |
teacherStaffId | string (uuid) | null | — |
capacity | integer | 1–9007199254740991 |
startDate | string (date) | — |
endDate | string (date) | null | — |
status | enum: "planned" | "active" | "completed" | "cancelled" | default: "planned" |
feeMinor | integer | null | 0–9007199254740991 |
room | enum: "" | string | null | — |
Example
{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"name": "Algebra I",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"capacity": 1,
"startDate": "2026-03-02",
"endDate": "2026-03-02",
"status": "planned",
"feeMinor": 0,
"room": ""
}curl example
curl -X PATCH "https://api.yourdomain.com/api/v1/groups/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"name": "Algebra I",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"capacity": 1,
"startDate": "2026-03-02",
"endDate": "2026-03-02",
"status": "planned",
"feeMinor": 0,
"room": ""
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
branchIdrequired | string (uuid) | — |
courseIdrequired | string (uuid) | — |
namerequired | string | — |
teacherStaffIdrequired | string (uuid) | null | — |
capacityrequired | integer | null | -9007199254740991–9007199254740991 |
startDaterequired | string (date) | — |
endDaterequired | string (date) | null | — |
statusrequired | enum: "planned" | "active" | "completed" | "cancelled" | — |
feeMinorrequired | integer | null | -9007199254740991–9007199254740991 |
roomrequired | string | null | ≥1 chars |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"name": "Algebra I",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"capacity": -9007199254740991,
"startDate": "2026-03-02",
"endDate": "2026-03-02",
"status": "planned",
"feeMinor": -9007199254740991,
"room": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
GET /api/v1/groups/{id}/enrollments
List a group’s enrollments (cursor-paginated).
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/groups/37386ae0-3738-7738-8386-37386ae03738/enrollments" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
datarequired | array<object> | — |
nextCursorrequired | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"status": "pending",
"enrolledAt": "2026-03-02T09:00:00.000Z",
"endedAt": "2026-03-02T09:00:00.000Z",
"priceMinor": 12000,
"currency": "ILS",
"discountMinor": -9007199254740991,
"discountReason": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}
],
"nextCursor": null
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
GET /api/v1/groups/{id}/schedules
List a group’s weekly schedule rules.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/groups/37386ae0-3738-7738-8386-37386ae03738/schedules" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
[
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"weekday": 0,
"startTime": "string",
"endTime": "string",
"validFrom": "2026-03-02",
"validTo": "2026-03-02"
}
]Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
PUT /api/v1/groups/{id}/schedules
Replace a group’s weekly schedule rules and regenerate its upcoming sessions from them.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
Request body
| Name | Type | Constraints |
|---|---|---|
schedulesrequired | array<object> | — |
Example
{
"schedules": [
{
"weekday": 0,
"startTime": "string",
"endTime": "string",
"validFrom": "2026-03-02",
"validTo": "string"
}
]
}curl example
curl -X PUT "https://api.yourdomain.com/api/v1/groups/37386ae0-3738-7738-8386-37386ae03738/schedules" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"schedules": [
{
"weekday": 0,
"startTime": "string",
"endTime": "string",
"validFrom": "2026-03-02",
"validTo": "string"
}
]
}'Responses
[
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"weekday": 0,
"startTime": "string",
"endTime": "string",
"validFrom": "2026-03-02",
"validTo": "2026-03-02"
}
]Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
GET /api/v1/groups/{id}/sessions
List a group’s sessions (cursor-paginated, optional date range and status filter — `?status=scheduled` or repeated `status=` for several).
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
from | query | string (date-time) | — |
to | query | string (date-time) | — |
status | query | enum: "scheduled" | "held" | "cancelled" | array<enum: "scheduled" | "held" | "cancelled"> | — |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/groups/37386ae0-3738-7738-8386-37386ae03738/sessions" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
datarequired | array<object> | — |
nextCursorrequired | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"scheduledEnd": "2026-03-02T09:00:00.000Z",
"status": "scheduled",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"topic": "string",
"notes": "Prefers afternoon sessions.",
"lessonId": "3d477cf4-3d47-7d47-8477-3d477cf43d47",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}
],
"nextCursor": null
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
POST /api/v1/groups/{id}/sessions/generate
Materialize this group’s sessions from its schedule rules for the rolling window.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
Request body
| Name | Type | Constraints |
|---|---|---|
until | string (date) | — |
Example
{
"until": "2026-03-02"
}curl example
curl -X POST "https://api.yourdomain.com/api/v1/groups/37386ae0-3738-7738-8386-37386ae03738/sessions/generate" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"until": "2026-03-02"
}'Responses
| Name | Type | Constraints |
|---|---|---|
createdrequired | integer | 0–9007199254740991 |
totalrequired | integer | 0–9007199254740991 |
{
"created": 0,
"total": 0
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
GET /api/v1/me/schedule
The caller’s own weekly schedule: sessions of groups they teach, are enrolled in, or their children are enrolled in.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
fromrequired | query | string (date) | — |
torequired | query | string (date) | — |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/me/schedule?from=2026-03-02&to=2026-03-02" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
[
{
"sessionId": "736a51cd-736a-736a-86a5-736a51cd736a",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"scheduledEnd": "2026-03-02T09:00:00.000Z",
"status": "scheduled",
"relation": "teacher",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7"
}
]Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
GET /api/v1/me/teaching/today
Today’s sessions for the calling teacher, each with roster size, marked count and attendance state, plus a backlog of past held sessions with no attendance recorded.
curl example
curl -X GET "https://api.yourdomain.com/api/v1/me/teaching/today" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
daterequired | string (date) | — |
timezonerequired | string | — |
staffIdrequired | string (uuid) | null | — |
sessionsrequired | array<object> | — |
unmarkedBacklogrequired | array<object> | — |
{
"date": "2026-03-02",
"timezone": "string",
"staffId": "489fc644-489f-789f-89fc-489fc644489f",
"sessions": [
{
"sessionId": "736a51cd-736a-736a-86a5-736a51cd736a",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"scheduledEnd": "2026-03-02T09:00:00.000Z",
"status": "scheduled",
"rosterCount": 0,
"markedCount": 0,
"attendanceState": "unmarked"
}
],
"unmarkedBacklog": [
{
"sessionId": "736a51cd-736a-736a-86a5-736a51cd736a",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"scheduledEnd": "2026-03-02T09:00:00.000Z",
"rosterCount": 0
}
]
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
PATCH /api/v1/sessions/{id}
Update a session: cancel it (with a reason, emits `session.cancelled`), or set its topic/notes/substitute teacher.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
Request body
| Name | Type | Constraints |
|---|---|---|
status | enum: "cancelled" | — |
reason | string | 0–500 chars |
topic | enum: "" | string | null | — |
notes | enum: "" | string | null | — |
teacherStaffId | string (uuid) | null | — |
lessonId | string (uuid) | null | — |
Example
{
"status": "cancelled",
"reason": "Requested by guardian.",
"topic": "",
"notes": "",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"lessonId": "3d477cf4-3d47-7d47-8477-3d477cf43d47"
}curl example
curl -X PATCH "https://api.yourdomain.com/api/v1/sessions/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"status": "cancelled",
"reason": "Requested by guardian.",
"topic": "",
"notes": "",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"lessonId": "3d477cf4-3d47-7d47-8477-3d477cf43d47"
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
groupIdrequired | string (uuid) | — |
scheduledStartrequired | string (date-time) | — |
scheduledEndrequired | string (date-time) | — |
statusrequired | enum: "scheduled" | "held" | "cancelled" | — |
teacherStaffIdrequired | string (uuid) | null | — |
topicrequired | string | null | ≥1 chars |
notesrequired | string | null | ≥1 chars |
lessonIdrequired | string (uuid) | null | — |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"scheduledEnd": "2026-03-02T09:00:00.000Z",
"status": "scheduled",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"topic": "string",
"notes": "Prefers afternoon sessions.",
"lessonId": "3d477cf4-3d47-7d47-8477-3d477cf43d47",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
GET /api/v1/students/{id}/enrollments
List a student’s enrollments (cursor-paginated).
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
curl example
curl -X GET "https://api.yourdomain.com/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/enrollments" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
datarequired | array<object> | — |
nextCursorrequired | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"status": "pending",
"enrolledAt": "2026-03-02T09:00:00.000Z",
"endedAt": "2026-03-02T09:00:00.000Z",
"priceMinor": 12000,
"currency": "ILS",
"discountMinor": -9007199254740991,
"discountReason": "string",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}
],
"nextCursor": null
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.